1、摘要随着单片机技术的飞速发展,在其推动下,现代的电子产品几乎渗透到了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高。时间对于人们来说总是那么的宝贵,可以说时间和金钱是划上了等号。准确的掌握时间和分配时间对人们来说至关重要。因此采用单片机为主的数码管为显示器的电子时钟就体现出了很大的优势。电子钟的设计方法有很多种,但利用单片机制作的电子时钟更具有编程灵活、便于电子功能的扩充、精确度高、便于携带、显示直观等特点。 通过利用MCS-51单片机内部的定时器/计数器功能来实现电子时钟的计时方法。主要由AT89S51芯片和LED数码显示管为核心,构成
2、了一个单片机电子时钟。关键词:单片机,AT89S51,电子时钟,LEDAbstractWith the rapid development of microcomputer technology in its promotion, modern electronics into almost all areas of society, a strong impetus to the development of social productive forces and social improvement in the level of information, but also to fur
3、ther improve the performance of modern electronic products.Time is always so valuable for people who can say that time and money is the equal sign. Accurate grasp of time and allocation of time is crucial to people. Therefore, the digital control based on microcomputer-based electronic clock on the
4、display reflects a great advantage. Clock Design There are many ways, however, produced by single chip electronic clock is more flexible programming, and easy expansion of electronic capabilities, high accuracy, easy to carry, display visual and so on. In this paper, through the use of MCS-51 microc
5、ontrollers internal timer / counter function to implement the electronic clock timing method. Mainly by the AT89S51 chip and LED digital display tube as the core, forming a single chip electronic clock. Key word: Monolithic integrated circuit,AT89S51,Electronic clock,LED目录1 前言11.1 概述11.2 研究目的12 单片机概
6、述22.1 单片机的概念22.2 单片机的发展史和发展趋势22.2.1 单片机的发展历史22.2.2 单片机的发展趋势32.3 单片机的特点32.4 MCS-51单片机的基本结构32.4.1 MCS-51单片机的基本组成32.4.2 AT89S51单片机的引脚53 系统设计63.1 设计方法及原理63.1.1 设计方法63.1.2 电子时钟原理63.1.3 数码管显示原理63.2 总体设计73.2.1 系统说明73.2.2 系统框图73.3 模块设计83.3.1 电源部分83.3.2 复位电路83.3.3 数码管的连接电路93.3.4 控制部分104 软件设计114.1 程序流程图114.2
7、源程序134.2.1 中断入口程序144.2.2 主 程 序154.2.3 1秒计时程序154.2.4 闪动调时程序174.2.5 加1子程序184.2.6 清零程序194.2.7 时钟调整程序194.2.8 显示程序224.2.9 延时程序235 总结24致谢25参考文献26河南农业大学华豫学院本科毕业论文(设计)1 前言1.1 概述时间,对人们来说是非常宝贵的,准确的掌握时间和分配时间对人们来说至关重要。因此自从时钟发明的那刻起,就成为人类的好朋友。随着时间的流逝,科学技术的不断发展和提高,人们对时间计量的精度要求越来越高,应用越来越广。怎样让时钟更好、更方便、更精确的显示时间,这就要求人
8、们不断设计研发出新型的时钟。高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校1。数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。在单片机的应用系统中,时钟有两个方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,
9、即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时器/计数器来实现;二是用专门的时钟芯片实现2。由于51系列单片机的内部具有定时器/计数器的功能,因此采用51系列单片机里的AT89S51和LED数码管为核心,加以必要的电路,来构成了一个单片机电子时钟。1.2 研究目的通过利用MCS-51单片机内部的定时器/计数器功能、中断系统功能、以及外围的按键和LED显示器等部件,设计一个基于单片机的电子时钟。设计的电子时钟通过数码管显示,并能通过按键对时间进行设置。2 单片机概述2.1 单片机的概念 单片机(MCU)可以定义为:一种把微处理器(CPU)、随机存储器(RAM)、只读
10、存储器(ROM)、输入/输出(I/O)接口电路、定时器/计数器、串行通信接口及中断系统等部件集成在同一块芯片上的,具有完整功能的微型计算机。这块芯片就是硬件,而软件程序则存放在片内的只读存储器中。2.2 单片机的发展史和发展趋势2.2.1 单片机的发展历史1974年12月,美国著名的仙童(Fairchild)公司推出了世界上第一台单片机F8。该机有两块集成电路芯片组成,具有与众不同的指令系统,结构奇特,深受民用电器和仪器仪表领域的欢迎和重视。从此单片机开始迅速发展,应用范围也在不断扩大,现已成为微型计算机的重要分支。单片机的发展大致经历了外围集成、总线完善、功能集成、全方位发展等技术发展阶段,
11、至今已走过了四代的历程3。(1) 第一代单片机(1974 1976)这是单片机的起步阶段,以Fairchild公司的F8为代表。在这个时期生产的单片机特点是,字长为四位,内部结构简单,制造工艺落后和集成度低。(2) 第二代单片机(1976 1980)这是单片机的技术成熟阶段。8位单片机已经出现,以Intel公司的MCS-48为代表。该系列的单片机在片内已经集成了8位CPU、并行I/O接口、8位定时器/计数器、RAM和ROM等功能部件,但无串行I/O接口,寻址范围不大于4KB。它性能低、品种少,应用范围也不广。(3) 第三代单片机(1980 1983)这是8位单片机技术走向成熟的阶段。其技术特点
12、是完善了外部总线,确立了单片机的基本控制功能,以Intel公司的MCS-51为代表。该阶段的单片机均带有串行I/O口,且具有多级中断处理系统,定时器/计数器为16位,片内的RAM和ROM容量相对较大,寻址范围可达64KB。这一代单片机结束了计算机单片机集成的简单形式,真正开创了单片机作为微控制器的发展道路。而这个时期的单片机由于其优良的性价比和极其广泛的应用领域,特别适合我国的国情,故在我国得到广泛的应用。(4) 第四代单片机(1983 至今)这是8位高性能单片机和16位单片机并行发展的阶段。16位单片机除了CPU为16位以外,片内的RAM和ROM容量进一步增大了。以Intel公司的MCS-9
13、6系列为代表,其片内的RAM增加为232B,ROM为8KB,且片内集成有高速I/O部件、多通道10位模/数(A/D)转换器等。2.2.2 单片机的发展趋势 当前,单片机正朝着高性能和多品种方向发展。预计,单片机将进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方向发展。2.3 单片机的特点 根据其结构形式和所采用的半导体工艺,单片机具有以下主要特点:(1) 性价比高。(2) 集成度高、体积小、可靠性高。由于单片机将各个功能部件集成在一块芯片上,且内部采用总线结构,减少了各个芯片之间的连线,从而大大提高了单片机的可靠性与抗干扰能力。(3) 控制功能强。单片机中的
14、指令系统中均有极丰富的转移指令、I/O接口的逻辑操作及位处理功能。(4) 低功耗、低电压,便于生产便携式产品。 (5) 外部总线增加了串行总线方式,进一步缩小了体积,简化了结构。 (6) 单片机的系统扩展和系统配置较典型、规范,易于构成各种规模的应用系统。2.4 MCS-51单片机的基本结构2.4.1 MCS-51单片机的基本组成MCS-51单片机的基本组成如图2.1所示。振荡与定时电路CPU4KB/8KB程序存储器21B特殊功能寄存器128B数据存储器总线控制四个8位并行串口一个串型端口两个16位定时器/计数器时钟源计数输入内部总线内部中断信号外部中断信号控制P0P1P2P3串行输入并行输出
15、图2.1 MCS-51单片机的基本组成 从图2.1中可以看出,MCS-51单片机内部主要包括以下几部分。(1) 一个8位CPUMCS-51单片机有一个8位CPU,包括运算器和控制器,并且具有面向控制的处理功能,不仅可以处理字节数据还可以进行位变量的处理,如位处理、查表、状态检测、中断处理等。(2) 数据RAM和特殊功能寄存器SFRMCS-51单片机片内具有128B的数据RAM,片外最多可以扩展到64KB。数据RAM用来存储单片机运行期间的工作变量、运算的中间结果、数据暂存和缓冲、标志位等。(3) 内部程序ROMMCS-51单片机内部具有4KB的程序ROM,片外最多可以扩展到64KB。可以用来存
16、储用户程序。(4) 两个定时器/计数器MCS-51单片机内部具有两个16位的定时器/计数器,具有四种工作方式。可以进行精确地计时,又可以对外部事件进行计数。(5) 四个8位可编程的I/O并行端口四个8位的I/O并行端口,其中P0口为双向口,P1P3口为准双向口。(6) 一个串行通信端口串行口用来进行串行异步通信,与PC机或者多个单片机实现主从通信或者构成多机系统以实现更强的的功能。(7) 中断控制系统MCS-51单片机具有五个固定的可屏蔽中断源,三个在片内,两个在片外,它们在程序存储器中有各自的固定中断入口地址,由此可以进入中断服务程序。(8) 内部时钟电路单片机的时钟信号用来提供单片机内各种
17、微操作的时间基准,有两种方法可以得到时钟信号:一种是内部振荡方式;另一种是外部振荡方式。2.4.2 AT89S51单片机的引脚 AT89S51单片机芯片采用40个引脚、双列直插封装(DIP)方式,引脚排列如图2.2所图2.2 MCS-51单片机的引脚排列263 系统设计3.1 设计方法及原理3.1.1 设计方法(1) 电子时钟的显示为XX(时):XX(分):XX(秒)(2) 电子时钟的时间可调整,且调整方法为:按下调整键(S2)的时间小于1秒时(t0.5s)分钟位闪亮,此时按下S2键(t0.5s)时钟位闪亮,此时按下S2键(t0.5s),返回到正常显示状态。3.1.2 电子时钟原理在单片机内部
18、存储器设三个字节分别存放时钟的时、分、秒信息。利用定时器和相关软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将时字节清零。3.1.3 数码管显示原理数码管的显示采用动态显示。动态显示就是指轮流的一位一位的点亮各个显示位,对显示器的每一位,采用每隔一段时间点亮一次。利用人的视觉暂留特点能够看到整个显示,但必须保证扫描速度够快,字符才能不闪烁。显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。调整参数可以实现较高稳定度的显示4。因此采用动态显示节省
19、了I/O口,更降低了能量的消耗。3.2 总体设计3.2.1 系统说明利用单片机(AT89S51)制作电子时钟,由六个LED数码管分别显示小时的十位、小时的个位、分钟的十位、分钟的个位、秒钟的十位、秒钟的个位。6个PNP管分别控制六个数码管的亮灭,采用一个按键用于时间调整。3.2.2 系统框图 系统框图如图3.1所示。电源部分直流电源4.5V控制部分单片机(AT89S51)复位电路按键S2位选部分6个PNP三极管6个七段共阴极数码管显示秒、分、及小时位图3.1 系统框图3.3 模块设计3.3.1 电源部分 图3.2 电源部分如图3.2所示,从外部引入4.5V的直流电,为单片机、复位电路提供电源。
20、3.3.2 复位电路图3.3 复位电路如图3.3所示,复位电路主要由1N4148型的二极管, 10UF/16V型的电解电容, 104型的瓷片电容,10K的电阻以及按键S1构成,S1接芯片的相应引脚RST,当开关按下时引脚RST为高电平1,断开时引脚为低电平0。3.3.3 数码管的连接电路图3.4 数码管连接电路图3.4为LED数码管的连接电路,每位的段码线(a,b,c,d,e,f,g,dp)分别与1个8位的锁存器输出相连,由AT89S51控制组合09十个数据,如令其显示1则b,c引脚(即2,3引脚)送高电平,此时数码管显示1。由于各位的段码线并联,8位I/O口输出段码对各个显示位来说都是相同的
21、。3.3.4 控制部分 如图3.5所示。图3.5 控制电路4 软件设计4.1 程序流程图图4.1描述的是主程序的流程图,程序开始运行,首先初始化定时器的常数,设置好T0中断入口,然后进入一个循环,等待中断T0的到来。图4.2描述的是一次T0中断的过程。进入中断,首先现场保护,然后重新设定定时器初值;然后判断本轮中断的次数是否满20次,如果不是,则还没增加到1秒,如果满20次,然后时间增加1秒,分钟和时钟的变化也按相应规则随之改变。做完上面操作之后,恢复进入中断前的现场,退出中断,到此一次中断结束。图4.3描述的是时钟调整的程序的执行过程。这个过程,根据按键S2的时间去判断执行何种操作。T0中断
22、现场保护重装定时器初值满20次否秒值加1Y满60秒否秒缓冲单元清零Y分值加1满60分否分缓冲单元清零Y时值加1满24小时否时缓冲单元清零Y恢复现场结束NNNN主程序开始设定定时器常数开中断到1秒?显示时间YN图4.1 主程序流程图 图4.2 T0流程图时钟调整程序按键S2时间t1Y分钟闪烁,调时状态按键S2时间t0.5Y分值加1分值=60?Y分值清零N关闭显示(省电)时钟闪烁,调时状态NN时值加1时值=24时值清零YY显示返回YNNS2是否按下按键S2时间t0.5图4.3 时钟调整的程序流程图 4.2 源程序表4.1 P1口对应段码及数值显示数字P1.7P1.6P1.5P1.4P1.3P1.2
23、P1.1P1.016进制代码dpgfedcba0001111113FH10000011006H2010110115BH3010011114FH40110011066H5011011016DH6011111017DH70000011107H8011111117FH9011011116FH4.2.1 中断入口程序ORG 0000H;程序执行开始地址LJMP START;跳到标号START执行ORG 0003H;外中断0中断程序入口RETI ;外中断0中断返回ORG 000BH;定时器T0中断程序入口LJMP INTT0;跳至INTTO执行ORG 0013H;外中断1中断程序入口RETI ;外中断1
24、中断返回ORG 001BH;定时器T1中断程序入口LJMP INTT1;跳至INTT1执行ORG 0023H;串行中断程序入口地址RETI ;串行中断程序返回4.2.2 主程序 START: MOV R0, # 70H ;清70H-7AH共11个内存单元 MOV R7, # 0BH CLR P3.7CLEARDISP: MOV R0, # 00H INC R0 DJNZ R7, CLEARDISP MOV 20H, # 00H ;清20H(标志用) MOV 7AH, # 0AH ;放入熄灭符数据 MOV TMOD, # 11H ;设T0、T1为16位定时器 MOV TL0, # 0B0H ;5
25、0MS定时初值(T0计时用) MOV TH0, # 3CH ;50MS定时初值MOV TL1, # 0B0H ;50MS定时初值(T1闪烁定时用)MOV TH1, # 3CH ;50MS定时初值 SETB EA ;总中断开放 SETB ET0 ;允许T0中断 SETB TR0 ;开启T0定时器 MOV R4, # 14H ;1秒定时用初值(50MS20) START1: LCALL DISPLAY ;调用显示子程序 JNB P3.7, SETMM1 ;P3.7口为0时转时间调整程序 SJMP START1 ;P3.7口为1时跳回START1 SETMM1: LJMP SETMM ;转到时间调整
26、程序SETMM4.2.3 1秒计时程序 INTT0: PUSH ACC ;累加器入栈保护 PUSH PSW ;状态字入栈保护 CLR ET0 ;关T0中断允许 CLR TR0 ;关闭定时器T0 MOV A, # 0B7H ;中断响应时间同步修正 ADD A, TL0 ;低8位初值修正 MOV TL0, A ;重装初值(低8位修正值) MOV A, # 3CH ;高8位初值修正 ADDC A, TH0 MOV TH0, A ;重装初值(高8位修正值) SETB TR0 ;开启定时器T0 DJNZ R4, OUTT0 ;20次中断未到中断退出 ADDSS: MOV R4, # 14H ;20次中断
27、到(1秒)重赋初值 MOV R0, # 71H ;指向秒计时单元(71H-72H) ACALL ADD1 ;调用加1程序(加1秒操作) MOV A, R3 ;秒数据放入A(R3为2位十进制数组合) CLR C ;清进位标志 CJNE A, # 60H, ADDMM ADDMM: JC OUTT0 ;小于60秒时中断退出 ACALL CLR0 ;大于或等于60秒时对秒计时单元清0 MOV R0, # 77H ;指向分计时单元(76H-77H) ACALL ADD1 ;分计时单元加1分钟 MOV A, R3 ;分数据放入A CLR C ;清进位标志 CJNE A, # 60H, ADDHH ADD
28、HH: JC OUTT0 ;小于60分时中断退出 ACALL CLR0 ;大于或等于60分时分计时单元清0 MOV R0, # 79H ;指向小时计时单(78H-79H) ACALL ADD1 ;小时计时单元加1小时 MOV A, R3 ;时数据放入A CLR C ;清进位标志 CJNE A, # 24H, HOUR HOUR: JC OUTT0 ;小于24小时中断退出 ACALL CLR0 ;大于或等于24小时小时计时单元清0 OUTT0: MOV 72H, 76H ;中断退出时将分、时计时单元数据移 MOV 73H, 77H ;入对应显示单元 MOV 74H, 78H MOV 75H, 7
29、9H POP PSW ;恢复状态字(出栈) POP ACC ;恢复累加器 SETB ET0 ;开放T0中断 RETI ;中断返回4.2.4 闪动调时程序T1中断服务程序,用作时间调整时调整单元闪烁指示INTT1: PUSH ACC ;中断现场保护 PUSH PSW MOV TL1, #0B0H ;装定时器T1定时初值 MOV TH1, #3CH DJNZ R2,INTT1OUT ;0.3秒未到退出中断(50MS中断6次) MOV R2, #06H ;重装0.3秒定时用初值 CPL 02H ;0.3秒定时到对闪烁标志取反 JB 02H, FLASH1 ;02H位为1时显示单元熄灭 MOV 72H
30、, 76H ;02H位为0时正常显示 MOV 73H, 77H MOV 74H, 78H MOV 75H, 79H INTT1OUT: POP PSW ;恢复现场 POP ACC RETI ;中断退出FLASH1: JB 01H, FLASH2 ;01H位为1时,转小时熄灭控制 MOV 72H, 7AH ;01H位为0时,熄灭符数据放入分 MOV 73H, 7AH ;显示单元(72H-73H),将不显示分数据 MOV 74H, 78H MOV 75H, 79H AJMP INTT1OUT ;转中断退出FLASH2: MOV 72H, 76H ;01H位为1时,熄灭符数据放入小时 MOV 73H
31、, 77H ;显示单元(74H-75H),小时数据将不显示 MOV 74H, 7AH MOV 75H, 7AH AJMP INTT1OUT ;转中断退出4.2.5 加1子程序 ADD1: MOV A, R0 ;取当前计时单元数据到A DEC R0 ;指向前一地址 SWAP A ;A中数据高四位与低四位交换 ORL A, R0 ;前一地址中数据放入A中低四位 ADD A, #01H ;A加1操作 DA A ;十进制调整 MOV R3,A ;移入R3寄存器 ANL A, #0FH ;高四位变0 MOV R0,A ;放回前一地址单元 MOV A, R3 ;取回R3中暂存数据 INC R0 ;指向当前
32、地址单元 SWAP A ;A中数据高四位与低四位交换 ANL A, #0FH ;高四位变0 MOV R0,A ;数据放入当削地址单元中 RET ;子程序返回4.2.6 清零程序 对计时单元清零用 CLR0: CLR A ;清累加器 MOV R0,A ;清当前地址单元 DEC R0 ;指向前一地址 MOV R0,A ;前一地址单元清0 RET ;子程序返回4.2.7 时钟调整程序当调时按键按下时进入此程序 SETMM: CLR ET0 ;关定时器T0中断 CLR TR0 ;关闭定时器T0 LCALL DL1S ;调用1秒延时程序 JB P3.7,CLOSEDIS ;键按下时间小于1秒,关闭显示
33、MOV R2, #06H ;进入调时状态,赋闪烁定时初值 SETB ET1 ;允许T1中断 SETB TR1 ;开启定时器T1 SET2: JNB P3.7,SET1 ;P3.7口为0(键未释放),等待 SETB 00H ;键释放,分调整闪烁标志置1 SET4: JB P3.7,SET3 ;等待键按下 LCALL DL05S ;有键按下,延时0.5秒 JNB P3.7,SETHH ;按下时间大于0.5秒转调小时状态 MOV R0, #77H ;按下时间小于0.5秒加1分钟操作 LCALL ADD1 ;调用加1子程序 MOV A,R3 ;取调整单元数据 CLR C ;清进位标志 CJNE A, #60H,HHH ;调整单元数据与60比较 HHH: JC SET4 ;调整单元数据小于60转SET4循环 LCALL CLR0 ;调整单元数据大于或等于60时清0 CLR C ;清进位标志 AJMP SET4 ;跳转到SET4循环CLOSEDIS: SETB ET0 ;省电状态。开T0中断 SETB TR0 ;开启T0定时器(开时钟) CLOSE: JB P3.7,CLOSE ;无按键按下,等待。 LCALL DISPLAY ;有键按下,调显示子程序延时削抖
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922