单片机计数器设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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中断服务程序流程图如图所示: