单片机计数器设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机系统课程设计报告

学院(部):电气与信息工程学院专业:电气工程及其自动化学生姓名:

指导老师:

班级:学号

2013年12月

单片机系统课程设计报告

一:系统设计要求:

1.最大计数值为:99时59分59秒9/10秒,约100小时。

2.系统采用2个按键控制输入,其中一个按键用作系统清0,另一个按键用作秒表的启动/停止。

3. 系统采用7个LED数码管实现计时显示。

4.电路原理图:使用protel或visio或proteus 绘制。

5. 编程思路,用visio画程序设计流程图,且用文字描述

二:系统设计:

1:总体方案的设计

数字秒表具有显示直观、读取方便、精度高等优点,在计时中广泛应用。本设计中用单片机和数码管组成数字秒表,力求结构简单。

设计中包括硬件电路的设计和系统程序的设计。硬件电路主要有主控制器、控制按钮与显示电路组成。主控制器采用单片机AT89C51,显示电路采用七位共阳极数码管显示计时时间。

2.硬件设计

2.1.:输出设计:

设计要求在数码管上进行数据显示,,输出硬件设计可以采用1个BCD七段译码器74LS47驱动数码管的段选端,输出字形信息,采用3—8译码器输出作为动态扫描时数码管的位选痛信号。这样在一定程度上节约了单片机的硬件资源,也简化了软件设计时的任务量。在硬件设计时还应当注意一下问题:

(1)数码管接口方法与动态扫描原理;

(2)时、分、秒计数单元地址的分配及BCD码的调整方法;

(3)按键识别与消除抖动的方法。

2.2:显示设计:

数码管显示可以分为静态显示和动态显示两种。由于本设计需要采用数码管显示时间,如果静态显示则占用的口线多,硬件电路复杂,所以采用动态显示。

秒表设计原理图如图1.0所示。单片机采用通用的AT89C51芯片,显示器为7个共阳极LED数码管,用1个BCD七段译码器74LS47驱动数码管(74LS47的输入为BCD码,其输出级为集电极开路输出,可直接驱动七段数码管,具有首尾消零等特点),用3—8译码器74LS138的输出作为动态扫描时数码管的选通信号。因为采用了上述两个芯片,所以在对数码管进行扫描显示时,只需要单片机的7条I/O线就能完成显示功能。

电路图中采用P1.0~P1.3作为显示数据值的输出,连接在BCD 七段译码器74LSs4的13~10管脚上(译码器74LS47的BCD 码输入端);P1.4~P1.6作为扫描值的输出端连接在3—874LS138译码器的输入端(74LS138的A,B,C)。因此,写程序应将P1口的高四位为扫描值,低四位为显示数据值(分离BCD 码)。单片机的P0.0~P0.1分别接在两个开关上,以控制启动/停止和清零。 秒表系统功能如下:

(1)开机时,秒表显示从00:00:00:0开始计时。 (2)按键S1控制秒表的启动/停止。 (3)按键S2控制秒表的清零。 硬件电路按总体框图进行设计:

图1:硬件电路总体框图

三:系统总体电路的设计

AT89C51单片机为主电路的核心部分,各个电路均与单片机相连,由单片机统筹协调各个电路的运行工作。

开始键和暂停键使用了检测的方法,所以需要连到单片机的P0.0和P0.1引脚上,对这两个I/O 口进行循环扫描,检测是否按下。

显示电路由七位数码管组成,采用动态显示方式,因此有8位段控制和7位位控制,并且通过74LS47译码器进行控制8位段控制,接P1口,P1.0~P1.3分别控制数码管的a b c d e f g 显示,位控制有3—8段译码器74LS138进行位控制接在P1.4~P1.6的I/O 口上,对数码管实现位控制。

系统总体电路如下图所示:

控制开

AT89C51

单片机

74LS47

74LS13

8

七位数码管

图2:总体电路图

四:软件设计

4.1主程序设计

本系统程序主要模块由主程序、定时中断服务程序、显示子程序和扫描子程序组成。其中主程序是整个程序的主体。可以对各个中断程序进行调用。协调各个子程序之间的关系。

主程序:首先进行初始化。设置秒表的计时初值为00:00:00:0,设置T0高低位初值,且允许T0中断。然后检测S1~S2是否按下,当S1按下时,启动T0进行4ms定时,开始进

行计时。系统主程序流程图:

主程序

置显示初值:00.00.00.0

置T0为4ms定时

开T0中断

N

S1~S2按下

Y

启动,停止,清零

图3:主程序流程图

4.2:定时器T0中断服务子程序:

中断服务子程序的作用是进行“时”、“分”、“秒”的计时与显示。定时器T0用于定时,定时周期设为4ms,中断累计25次(即0.1秒),对0.1秒计数单元进行加1操作。时间计数值分别存放在2DH(0.1秒)、2CH(秒)、2BH(分)、2AH(时)内存单元中。在计数单元中采用组合BCD码计数,0.1秒是满10进位,时、分、秒满60进位。

0.1S计时采用内部中断方式计时,通过内部中断设置4ms的定时溢出中断,单片机的频率为12MHz,则机器周期为1us,要实现4ms的定时,在4ms内需要计数N次:

①:N=4ms÷1us=4000次

令定时器/计数器0工作方式1下,此时计数初值X为:

②:X=最大计数值M-计数次数N

=65536-4000=61536=0F060H

即向TH0写入计数初值0F0H,向TL0写入计数计数初值60H。

TMOD初始化:TMOD=00000001B=01H。GATE=0,C/T=0,M1=0,M0=1.

TCON初始化:TR0=1,启动T0。

IE初始化:开放中断EA=1,允许定时器T0中断ET0=1。

定时器T0中断服务程序流程图如图所示:

相关文档
最新文档