单片机数字时钟设计实训报告系别专业姓名学号摘要单片机是把中央处理器CPU,随即存取存储器RAM,只读存储器ROM,定时器/计数器以及输入/输出即I/O接口电路等主要计算机部件,集成在一块集成电路上的微机。
虽然只是一个芯片,但从组成和功能上来看,已具备微型系统的属性。
单片机的发展经历了4个阶段,其向着低功耗CMOS化,微型单片化,主流与多品种共存的方向发展。
单片机在工业自动化,仪器仪表,家用电器,信息和通讯产品及军事方面得到了广泛应用。
另外,其发展前景不错。
本次实训以设计制作数字时钟为例,来加深我们对单片机特性和功能的了解,加强我们的编程思想。
为今后从事单片机程序产品的开发,打下了良好的理论与实践基础。
理论服务于实践,将知识转化为能力,也是本次试训的另一个重要目的。
目录一、整体设计方案 (3)1. 方案设计要求 (3)2. 方案设计与论证 (3)3. 整体设计框图 (4)二、数字时钟的硬件设计 (4)1. 最小系统设计 (4)2. LED显示电路 (8)3. 键盘控制电路 (9)4. 数字时钟的原理图 (10)三、数字时钟的软件设计 (11)1. 系统软件设计流程图 (11)2. 数字时钟主程序 (14)四、调试与仿真 (18)1. 数字时钟系统PROTUES仿真 (18)2. 软件与硬件调试 (19)3. 系统性能测试与功能说明 (19)4. 出现问题及解决 (19)五、实验结论 (20)六、心得体会 (21)附录:1.原器件清单 (22)2.参考文献 (22)一、整体方案设计1. 方案设计要求设计制作一个数字时钟,要求能实现基本走时,并以数字形式显示时、分、秒;采用24小时制;能校时、校分、校秒;也可以添加其他功能.2. 方案设计与论证方案一:采用各种纯数字芯片实现数字时钟的设计。
优点:各个模块功能清晰,电路易于理解实现。
缺点:各个模块功能已定不能进行智能化调整,整体电路太庞大。
方案二:采用 FPGA模块用硬件语言实现功能。
优点:运算速度快,走时精度高,算法简单。
缺点:成本高,大材小用。
方案三:采用单片机最小系统实现功能。
优点:电路简单,能通过程序进行随机调整并扩展功能,成本低,易于实现。
缺点:走时有一定的误差。
经过综合考虑成本问题以及他人接受程度,选择第三种方案实现设计要求。
3.整体设计框图数字时钟整体框图二、数字时钟的硬件设计1. 最小系统设计∴AT89C51的介绍:AT89C51单片机是在一块芯片中集成了CPU、RAM、ROM、定时器/计数器和多种功能的I/O接口电路等一台计算机所需要的基本功能部件,AT89C51单片机内包含下列几个部件:(1)一个8位CPU;(2)一个片内振荡器及时钟电路;(3)4K字节ROM程序存储器;(4)128字节RAM数据存储器;(5)两个16位定时器/计数器;(6)可寻址64K外部数据存储器和64K外部程序存储器空间的控制电路;(7)32条可编程的I/O线(四个8位并行I/O端口);(8)一个可编程全双工串行口;(9)具有五个中断源、两个优先级嵌套中断结构。
其内部结构框图如下图所示:∴AT89C51单片机的部分管脚说明:AT89C51单片机采用40条引脚双列直插式器件,引脚除5V(40脚)和电源地(20脚)外,其功能分为时钟电路、控制信号、输入/输出三大部分,引脚图如下图:最小系统:单片机最小系统的结构图单片机的最小系统是由电源、复位、晶振、/EA=1组成,下面介绍各个组成部分。
①Vcc40 电源端;GND20 接地端。
工作电压为5V 。
②外接晶振引脚晶振连接的内部、外部方式图XTAL119 ;XTAL218。
XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。
内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。
晶振的频率可以在1MHz-24MHz内选择。
电容取30PF左右。
系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路。
③复位RST9常用复位电路图在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在此引腿时,将使单片机复位,只要这个脚保持高电平,51芯片便循环复位。
复位后P0-P3口均置1引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。
④/EA=1 31脚当/EA=1时,访问内部程序存储器,当PC值超过内ROM范围时,自动转执行外部程序存储器的程序;当/EA=0时,只访问外部程序存储器。
另外介绍一下输入输出引脚(本系统只用到P0、P1、P2口):(1) P0端口[P0.0-P0.7] 是一个8位漏极开路型双向I/O端口,端口置1(对端口写1)时作高阻抗输入端。
作为输出口时能驱动8个TTL。
对内部Flash程序存储器编程时,接收指令字节;校验程序时输出指令字节,要求外接上拉电阻。
在访问外部程序和外部数据存储器时,P0口是分时转换的地址(低8位)/数据总线,访问期间内部的上拉电阻起作用。
(2) P1端口[P1.0-P1.7]是一个带有内部上拉电阻的8位双向I/0端口。
输出时可驱动4个TTL。
端口置1时,内部上拉电阻将端口拉到高电平,作输入用。
对内部Flash程序存储器编程时,接收低8位地址信息。
(3) P2端口[P2.0-P2.7]是一个带有内部上拉电阻的8位双向I/0端口。
输出时可驱动4个TTL。
端口置1时,内部上拉电阻将端口拉到高电平,作输入用。
对内部Flash程序存储器编程时,接收高8位地址和控制信息。
在访问外部程序和16位外部数据存储器时,P2口送出高8位地址。
而在访问8位地址的外部数据存储器时其引脚上的内容在此期间不会改变。
2. LED显示电路本实训用到四位一体共阳极数码管和一位共阳极数码管,通过其引脚图,便可顺利完成其连接。
3. 键盘控制电路该设计需要校对时间,所以用三个按键来实现。
按S3来调节小时的时间,按S2来调节分针的时间,按S1来调节秒的时间。
下图是按键硬件连接图。
当用手按下一个键时,往往按键在闭合位置和断开位置之间跳几下才稳定到闭合状态的情况;在释放一个键时,也会出现类似的情况,这就是抖动。
抖动的持续时间随键盘材料和操作员而异,不过通常总是不大于10ms。
很容易想到,抖动问题不解决就会引起对闭合键的识别。
用软件方法可以很容易地解决抖动问题,这就是通过延迟10ms来等待抖动消失,这之后,再读入键盘码。
4. 数字时钟的原理图根据要求画出数字时钟的原理图如下所示:数字时钟的原理图数字时钟的工作原理:数字时钟是一个将“时”,“分”,“秒”显示于人的视觉器官的计时装置。
它的计时周期为24小时,显示满刻度为23时59分59秒,另外还有校时功能。
因此,一个基本的数字时钟电路主要由显示器“时”,“分”,“秒”和单片机,及复位校时部分组成。
6位一体数码管的段选接到单片机的P0口,位选接到单片机的P2口。
数码管按照数码管动态显示的工作原理工作,将标准秒信号送入“秒单元”,“秒单元”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分单元”的时钟脉冲。
“分单元”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时单元”。
“时单元”采用24进制计时器,可实现对一天24小时的累计。
显示电路将“时”、“分”、“秒”通过七段显示器显示出来。
校时电路是用来对“时”、“分”、“秒”显示数字进行校对调整,按一下S1,秒单元就加1 ,按一下S2,分就加1,按一下S3,时就加1。
三、数字时钟的软件设计1. 系统软件设计流程图主程序是先开始,然后启动定时器,定时器启动后再进行按键检测,检测完后,就可以显示时间。
主程序流程图时间设置:时间设置流程图按键处理是先检测秒按键是否按下,秒按键如果按下,秒就加1;如果没有按下,就检测分按键是否按下,分按键如果按下,分就加1;如果没有按下,就检测时按键是否按下,时按键如果按下,时就加1;如果没有按下,就把时间显示出来。
定时器中断:定时器中断流程图时间显示是从左到右依次是时十位显示、分十位显示、秒十位显示。
2. 数字时钟主程序SCAN EQU 28HORG 0000HLJMP STARTORG 0BHLJMP TIM0ORG 0030H START: MOV SP,#70HMOV 2AH,#12MOV 2BH,#00HMOV 2CH,#00HMOV 20H,#00HMOV 21H,#00HMOV 22H,#00HMOV 23H,#00HMOV 24H,#00HMOV 25H,#00HMOV TMOD,#01HMOV TH0,#3CHMOV TL0,#0B0HMOV IE,#10000010BMOV 41H,#20SETB TR0START_0:LCALL DISPLAYLCALL SCAN_1LJMP START_0SCAN_1:JB P0.0,N2LCALL DELAYJB P0.0,N2LOP1:CLR EALCALL DATA2LCALL DATA1LCALL DISPLAYJNB P0.0,LOP1MOV A,2CHINC AMOV 2CH,ACJNE A,#60,N6MOV 2CH,#00N2:JB P0.1,N4LCALL DELAYJB P0.1,N4 LOP_2:CLR EALCALL DATA2LCALL DATA1LCALL DISPLAYJNB P0.1,LOP_2MOV A,2BHINC AMOV 2BH,ACJNE A,#60,N6MOV 2BH,#00N4:JB P0.2,N6LCALL DELAYJB P0.2,N6 LOP_3:CLR EALCALL DATA2LCALL DATA1LCALL DISPLAYJNB P0.2,LOP_3MOV A,2AHINC AMOV 2AH,ACJNE A,#24,N6MOV 2AH,#00N6:SETB EARETTIM0: MOV TH0,#3CHMOV TL0,#0B0HPUSH ACCPUSH BPUSH PSWSETB RS0DJNZ 41H,X2MOV 41H,#20LCALL CLOCK1LCALL CLOCK2X2: POP PSWPOP BPOP ACCRETICLOCK1:MOV A,2CHINC AMOV 2CH,ACJNE A,#60,X4MOV 2CH,#00MOV A,2BHINC AMOV 2BH,ACJNE A,#60,X4MOV 2BH,#00MOV A,2AHINC AMOV 2AH,ACJNE A,#24,X4MOV 2AH,#00X4: RETCLOCK2:MOV A,2CHMOV B,#10DIV ABMOV 20H,BMOV 21H,AMOV A,2BHMOV B,#10DIV ABMOV 22H,BMOV 23H,AMOV A,2AHMOV B,#10DIV ABMOV 24H,BMOV 25H,ARETDISPLAY:MOV R0,#20HMOV SCAN,#0FEHMOV A,SCANLD0: MOV P2,AMOV A,@R0MOV DPTR,#TABMOVC A,@A+DPTRMOV P1,AACALL DL1MSINC R0MOV A,SCANJNB ACC.5,LD1RL AMOV SCAN,AAJMP LD0LD1: RETDA TA1:MOV A,2CHMOV 2CH,ACJNE A,#60,K4MOV 2CH,#00MOV A,2BHMOV 2BH,ACJNE A,#60,K4MOV 2BH,#00MOV A,2AHMOV 2AH,ACJNE A,#24,K4MOV 2AH,#00K4: RETDA TA2:MOV A,2CHMOV B,#10DIV ABMOV 20H,BMOV 21H,AMOV A,2BHMOV B,#10DIV ABMOV 22H,BMOV 23H,AMOV A,2AHMOV B,#10DIV ABMOV 24H,BMOV 25H,ARETTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92HDB 82H,0F8H,80H,90H,88H,0FFHDL1MS: MOV R6,#14HDL1: MOV R7,#19HDL2: DJNZ R7,DL2DJNZ R6,DL1RETDELAY: MOV R6,#20D1: MOV R7,#248DJNZ R7,$DJNZ R6,D1RETEND四、调试与仿真1.数字时钟系统PROTUES仿真用ISIS软件,根据数字时钟的原理图,画出仿真图,得到的图如下所示:将Keil编译程序产生的HEX文件下载至AT89C51中,通过控制按键来进行仿真测试。