1、工作的忙碌性和繁杂性容易使人们忘记当前的时间。但随着时间的推移,科学技术的不段发展,人们对时间的计量的精度要求也越来越高,应用越来越广。20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有利地推动了社会生产力的发展,也是现代电子产品性能进一步提高。钟表的数字化给人们生产生活带来了极大的方便,而且也大大扩展了钟表原先的报时功能,诸如定时自动报警,按时自动打铃,定时起停电路甚至各种定时电气的自动启用等,都是以钟表的数字化为基础的。因此研究数字钟及扩大其应用,有着非常现实的意义。现今,高精度的计时工具大多采用石英晶体振荡器,它走时精度高,稳定性好,使用方便,不需
2、要经常调校,数字式电子钟使用集成电路计时,译码代替机械传动,LED显示器代替指针显示,减小了计时误差。本设计基于单片机的技术原理,以单片机89C51作为核心控制器,通过硬件电路的制作及软件程序的编程,设计出一个多功能数字时钟系统。由于系统所用元器件较少,单片机所被占用的I/O口不多,所以系统具有一定的可扩展性。系统界面清晰简单,稳定性高。功耗小,成本低,具有很强的实用性。关键词:AT89C51单片机,多功能钟,键盘输入,动态显示,LED第1章 前言单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。单片机体积小、重量轻、抗干扰能力强、环境要求不高、
3、价格低廉、可靠性高、灵活性好、开发较为容易。由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习、应用,以AT89C51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,通过数码管能够准确显示。数字时钟是现代社会应用广泛的计时工具,在航天、电子等科研单位,工厂、医院、学校等企事业单位,各种体育赛事及至我们每个人的日常生活中都发挥着重要的作用。本系统是基于AT80C51单片机设计的一个具有六位LED显示的数字时实时钟,采用独立式按键进行
4、时间调整。该系统同时具有硬件设计简单、工作稳定性高、价格低廉等优点。利用AT89C51单片机内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时。该方案节省硬件成本,且能使读者在定时/计数器的使用、中断及程序设计方面得到锻炼与提高,对单片机的指令系统能有更深入的了解,从而对学好单片机技术这门课程起到一定的作用。第2章 总体方案的确定2.1.1电路组成及工作原理本文数字时钟设计原理主要利用AT89C51单片机,由单片机的P0口控制数码管的位显示, P2口控制数码管的段显示,P1口与按键相接用于时间的校正。整个系统工作时,秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,将标
5、准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。“时计数器”采用24进制计时器,可实现对一天24小时的累计。显示电路将“时”、“分”、“秒”计数器的输出,通过六个七段LED显示器显示出来。校时电路是直接加一个脉冲信号到时计数器或者分计数器或者秒计数器来对“时”、“分”、“秒”显示数字进行校对调整。2.1.2设计原理及其框图一.数字钟的构成数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路。由于计数的起始时间
6、不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路,同时标准的1HZ时间信号必须做到准确稳定。通常使用石英晶体振荡器电路构成数字钟。图 2-1所示为数字钟的一般构成框图。图2-1 数字钟的组成框图晶体振荡器电路 晶体振荡器电路给数字钟提供一个频率稳定准确的方波信号,可保证数字钟的走时准确及稳定。不管是指针式的电子钟还是数字显示的电子钟都使用了晶体振荡器电路。分频器电路 分频器电路将高频方波信号经分频后得到的方波信号供秒计数器进行计数。分频器实际上也就是计数器。时间计数器电路 时间计数电路由秒个位和秒十位计数器、分个位和分十位计数器及时个位和时十位计数器电路构成,其中秒个位和秒十位
7、计数器、分个位和分十位计数器为60进制计数器,而根据设计要求,时个位和时十位计数器为12进制计数器。 译码驱动电路 译码驱动电路将计数器输出的8421BCD码转换为数码管需要的逻辑状态,并且为保证数码管正常工作提供足够的工作电流。 数码管 数码管通常有发光二极管(LED)数码管和液晶(LCD)数码管,本设计提供的为数码管。2.2 硬件部分2.2.1 单片机系统2.2.1.1单片机的选择 单片机是一种集成电路芯片,采用超大规模技术把具有数据处理能力(如算术运算,逻辑运算、数据传送、中断处理)的微处理器(CPU),随机存取数据存储器(RAM),只读程序存储器(ROM),输入输出电路(I/O口),可
8、能还包括定时计数器,串行通信口(SCI),显示驱动电路(LCD或LED驱动电路),脉宽调制电路(PWM),模拟多路转换器及A/D转换器等电路集成到一块单块芯片上,构成一个最小然而完善的计算机系统。这些电路能在软件的控制下准确、迅速、高效地完成程序设计者事先规定的任务。本文采用的单片机为AT89C51,它是一种低功耗、高性能的片内含有4K字节可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。它的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易
9、失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案.2.2.1.2 AT89C51的主要性能参数与MCS-51产品指令系统完全兼容4k 字节可重擦写FLASH闪速存储器1000次擦写周期全静态操作:0Hz24MHz三级加密程序存储器1288字节内部RAM32个可编程I/O口线2个16位定时/计数器5个中断源可编程串行URAR通道低功耗空闲和掉电模式AT80C51提供以下标准功能:4k 字节FLASH闪速存储器,1
10、28字节内部RAM,32个I/O口线,2个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51降至0Hz的静态逻辑操作,并支持两种可选的节电工作模式。空闲方式体制CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器体制工作并禁止其他所有不见工作直到下一个硬件复位。2.2.2 显示部分单片机应用系统中使用的显示器主要有发光二极管显示器,简称LED(Light Emitting Diode);液晶显示器LCD(Liquid Crystal Display);近几年也有配置CRT显示器的。
11、而目前在单片机系统中,通常用LED数码显示器来显示各种数字或符号。由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。2.2.2.1 LED显示结构与原理单片机中通常用七段LED构成字型“8”,另外,还有一个小数点发光二极管以显示小数位!这种显示器有共阴和共阳两种!发光二极管的阳极连在一起的(公共端)称为共阳极显示器,阴极连在一起的称为共阴极显示器。一位显示器由8个发光二极管组成,其中,7个发光二极管构成字型“8”的各个笔划(段) a_g,另一个小数点为dp发光二极管。当在某段发光二极管上施加一定的正向电压时,该段笔画即亮;不加电压则暗。为了保护各段LED不被损坏,需外加限
12、流电阻。由于共阴极连接需加驱动,故在这里我采用的是共阳阳极连接。共阴极7段LED显示数字0 F、文字、符号及小数点的编码(a段为最地位,dp点为最高位)如(图2-1)所示。 共阴极7 段LED显示字型编码表 显示字符 共阴极段选码 显示字符 共阴极段选码 0 3FH 5 6DH 1 06H 6 7DH 2 5BH 7 07H 3 4FH 8 7FH 4 66H 9 6FH“灭”(黑) 00HLED显示器有静态显示方式和动态显示方式两种。静态显示就是当显示器显示某个字符时,相应的段恒定的导通或截止,直到显示另一个字符为止。LED显示器工作于静态显示方式时,各位的共阴极接地;若为共阳极则接+5V电
13、源。每位的段选线分别与一个8位锁存器的输出口相连,显示器中的各位相互独立,而且各位的显示字符一经确定,相应锁存的输出将维持不变。正因为如此,静态显示器的亮度较高。这种显示方式编程容易,管理也较简单,但占用I/O口线资源较多。因此,在显示位数较多的情况下,一般都采用动态显示方式。由于所有6位段皆由一个I/O口控制,因此,在每一瞬间,6位LED会显示相 同的字符。要想每位显示不同的字符,就必须采用扫描方法流点亮各位LED,即在每一瞬间只使某一位显示字符。在此瞬间,段选控制I/O口输出相应字符段选码(字型码),而位选则控制I/O口在该显示位送入选通电平(因为LED为共阴,故应送低电平),以保证该位显
14、示相应字符。如此轮流,使每位分时显示该位应显示字符。在多位LED显示时,为了简化电路,降低成本,将所有位的段选线并联在一起,由一个8位I/O口控制。而共阴(共阳)极公共端分别由相应的I/O口线控制,实现各位的分时选通。段选码,位选码每送入一次后延时2MS,因人的视觉暂留时间为0.1S(100MS),所以每位显示的时间不能超过20MS,并保持延时一段时间,以造成视觉暂留效果,给人看上去每个数码管总在亮。这种方式称为软件扫描方式。2.2.3 键盘工作模块 按键按照结构原理可分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点式开关按键,如电气式按键,磁感应按键等。前者造价
15、低,后者寿命长。目前,微机系统中最常见的是触点式开关按键。 按键按照接口原理可分为编码键盘与非编码键盘两类,这两类键盘的主要区别是识别键符及给出相应键码的方法。编码键盘主要是用硬件来实现对键的识别,非编码键盘主要是由软件来实现键盘的定义与识别。 全编码键盘能够由硬件逻辑自动提供与键对应的编码,此外,一般还具有去抖动和多键、窜键保护电路。这种键盘使用方便,但需要较多的硬件,价格较贵,一般的单片机应用系统较少采用。非编码键盘只简单地提供行和列的矩阵,其它工作均由软件完成。由于其经济实用,较多地应用于单片机系统中。在本套设计中由于只需要几个功能键,此时,可采用独立式按键结构独立式按键是直接用I/O口
16、线构成的单个按键电路,其特点是每个按键单独占用一根I/O口线,每个按键的工作不会影响其它I/O口线的状态。 独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口线,因此,在按键较多时,I/O口线浪费较大,不建议采用。2.2.3.2 独立式按键的软件结构独立式按键的软件常采用查询式结构。先逐位查询每根I/O口线的输入状态,如某一根I/O口线输入为低电平,则可确认该I/O口线所对应的按键已按下,然后,再转向该键的功能处理程序。2.2.7相关参数计算关于驱动电路中的限流电阻R,通常根据LED的工作电流计算而得到的。例如:(1.) R1=(VCC-V0)/I0 其中VCC=+5V, V
17、0的压降为+1.4v, I0的工作电流为10mA 所以R1=(5V-1.4V)/10mA=360,要想得到10mA的工作电流必须使限流电阻大于360,故在电路中我选用了390的电阻(2) 对于连接位选显信号的电阻选用上,由Ic0.1 mA,根据R2=(VCC-Vbc)/Ib=(5v-0.7v)/0.1 mA=4.3k,若要Ib0.1 mA则必须使R24.3 k,因此选用了比较接近的4.7 k第3章 软件设计 监于C语言的复杂性,这里选择了汇编语言3.2 程序语言的编写(附录) 介绍一些基本术语系统寄存器: A:累加器 B:乘除运算/暂存 C:进位标志/位累加器 DPTR:16位数据指针,访问R
18、OM/XRAM PC:程序计数器 PSW:程序状态字 R0:8位数据指针,访问IRAM R1:IRAM堆指针,可用来分配IRAM局部数组 R2,R3:XRAM堆指针,可用来分配XRAM局部数组 SP:栈指针 A、B、C、DPTR、R0、PSW等是自动的,除了ISR外,不必入栈保护寄存器变量和寄存器参数: 在子程序调用过程中可以使用R4R7这4个寄存器作为变量或参数 寄存器变量按照R4-R7的顺序分配 寄存器参数按照R7-R4的顺序分配 如果变量或参数超过4个时,则超出的从10H1FH分配子程序返回值: 返回bit型,保存在C中 返回byte型,保存在R7中 返回word型,保存在(R6,R7)
19、中IRAM内存分配: 0007:工作寄存器 080F:块中断专用 101F:存储器变量和函数参数 202F:bit、bdata 30FF:全局变量、栈、堆第4章 系统调试4.1 硬件调试:主要检查了电路板有无虚焊、短路、连线是否正常,尤其是单片机的各使能端的接线,I/O接口连线是否有误。由于我们采用了六个数码管并联接入P2口的段选端,因此接线较多,经常容易出现管脚间短路现象。这是硬件设计不足之处,今后将注意元件的选配使设计更简洁实用。4.2 软件调试:在LCA51仿真机上,对定时中断程序、显示子程序、按键中断子程序进行了分段调试,结果功能正常。4.3 时钟计时检测:通过与其它计时器对比观察发现
20、数字时钟走时过快,检查定时中断程序发现T0的初始值设定有误,因此重新设置:根据T0选择工作模式1,定时时间为50ms, focs=12MHz, 由 T=(216-T0初始值) 振荡周期12设T0的初始值为X,则:(216-X)1/12106s12=50msX=15625, 转化二进制值为:X=0011110010111010, 即TH=#3CH,TL=#0BAH第5章 致谢经过了两个多月的学习和工作,我终于完成了单片机时钟课程设计。从开始接到论文要求到时钟的实现,再到论文文章的完成,每走一步对我来说都是新的尝试与挑战,这也是我在学校期间独立完成的最大的项目。在这段时间里,我学到了很多知识也有很
21、多感受,我开始了独立的学习和试验,查看相关的资料和书籍,让自己头脑中模糊的概念逐渐清晰,使自己非常稚嫩作品一步步完善起来,每一次改进都是我学习的收获,每一次试验的成功都会让我兴奋好一段时间。当看着自己的程序,自己成天相伴的系统能够健康的运行,真是莫大的幸福和欣慰。在这次课程设计的调试过程中,我遇到很多问题,如:由于跳转指令出错,导致整个程序在运行时进入死循环,修改时没有根据流程盲目查找原因浪费许多时间,又由于考虑不周,时钟显示29:89。该电路缺少整点报时及闹钟功能,由于能力和时间问题只能到此为止,很是遗憾,但在查找资料的过程中学到了许多,同时在协作过程中增进同学间的友谊。这次对AT89C51
22、有了一个全面的认识,在此基础上结合以前所学的专业知识,从而把我所学的知识贯穿到一起,对电子专业有了一个更全面的认识!总之这次毕业设计让我把理论设计和工程实践相结合、巩固基础知识与培养创新意识相结合、个人作用和集体协作相结合等方面全面的培养学生的全面素质。这些在我今后的学习和工作当中都会有很大的帮助。最后,我要感谢我的指导老师,在这次毕业设计中给了我许多的帮助。同时也祝愿山东技师学院明天更美好!第6章 参考文献1 实用单片机电子钟的设计/丁辉、姚庆文 无线电2003年合订本(下) 2 于海生微型计算机控制技术M 清华大学出版社1999-63 孙涵芳MCS-51系列单片机原理及应用M 北京航空航天
23、大学出版社1996-44 黄正谨综合电子设计与实践M 东南大学出版社2002-35 杨欣等电子设计从零开始M 清华大学出版社2005-106 谢嘉奎电子线路M 高等教育出版社2003-27 夏路易,石宗义电路原理图与电路设计教程Protel 99SEM 北京希望电子出版社2002附录(一) DEF RAM HOUR EQU 20H ;存放时信息的单元 MIN EQU 21H ;存放分信息的单元SEC EQU 22H ;存放秒信息的单元SEC01 EQU 23H ;秒信号产生其单元KEYFL EQU 24H ;KEYREG EQU 25HTMINTFL EQU 26HSETFL EQU 27HD
24、SPDAT1 EQU 28HDSPDAT2 EQU 29HDSPDAT3 EQU 2AHDSPDAT4 EQU 2BHDSPDAT5 EQU 2CHDSPDAT6 EQU 2DHSHFL EQU 2EHSMFL EQU 2FHSSFL EQU 30H; MAIN ; ORG 0000H ;主程序起始地址 LJMP START ;跳至主程序 ORG 000BH ;TIMEINT中断入口地址 LJMP TIMEINT ;转移ORG 0100H ;主程序首地址START: MOV R7,#250;LOOP: NOP DJNZ R7,LOOP ;R7-10转移 MOV IE,#00H ;关中断 MOV
25、 P0,#0FFH MOV P1,#0FFH MOV P2,#0FFH MOV P3,#0FFH MOV SETFL,#00H MOV KEYFL,#00H MOV KEYREG,#00H MOV TMINTFL,#00H MOV SHFL,#00H MOV SMFL,#00H MOV SSFL,#00H MOV TMOD,#01H ;设T0工作于方式1,用于计时 MOV TCON,#00H ; MOV TH0,#3CH ;)设置T0初始值 MOV TL0,#0BAH ;) MOV IE,#82H ;开启定时器T0 MOV TCON,#10H ;MAIN: MOV A,SETFL ; JNZ
26、MAIN1 ;A0转移 MOV TMINTFL,#00H ; MOV R0,HOUR ; MOV A,TMINTFL ; JNZ MAIN2 ; MOV R1,MIN MOV A,TMINTFL MOV R2,SEC ; MOV C,P1.7 ;电压检测低电平有效,C=P1.7=1计时显示;C=P1.7=0单片机进入空闲状态 JNC MAIN3 ;C=0程序转移 LCALL CODECHA ;调用MAIN1:电压检测C=0转移 LCALL DISP ; MOV A,P1 ;读P1口 ANL A,#1FH ;P1.0P1.2清零 MOV KEYREG,A CLR C ;累加器清零 SUBB A,
27、#1FH ;相减,A恢复初值 JZ MAIN1A ;A=0程序跳转 MOV A,KEYFL ; LCALL KEY ; LJMP MAIN2 ;MAIN1A:相减 MOV KEYFL,#00H ;MAIN2: NOP ; JC MAIN ;C=1转移MAIN3: MOV PCON,#01H ; TIMEINT SUB ;计时单元TIMEINT:设置T0初值 开起定时器T0 PUSH PSW ; PUSH ACC ;保护现场 INC SEC01 ;加1 MOV A,#19 ;(是否有用? SUBB A,SEC01 ; JC TIMEINT1 ;(C=1转移?是否该改为JZ,A=0转移? LJMP TIMEINT4 ;跳转TIMEINT1: MOV SEC01,#00H ;1秒信号产生器 MOV TMINTFL,#0FFH ; MOV A,SEC ;读秒信号单元 ADD A,#1 ;A+1 DA A ;BCD码调整 MOV SEC,A ;存秒信息单元 SUBB A,#60H ; JNC TIMEINT2 ;(C=0转移,是否该改为JZ,A=0转移? LJMP TIMEINT4 ;TIMEINT2:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1