定时器实现时钟送数码管显示+独立键盘设置时间

更新时间:2024-06-09 12:27:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

定时器实现时钟送数码管显示+独立键盘设置时间

前言··························································································································2 任务书······················································································································3· 1.方案选择

1.1.键盘设计············································································································4 1.2.门电路设计·········································································································5 1.3.显示电路·············································································································5 2.硬件电路及参考程序

2.1基于proteus仿真的硬件电路···········································································7 2.2参考程序·············································································································8 3试验调试

3.1 硬件电路的连接·······························································································14 3.2.硬件电路的调试································································································14

4试验结论···········································································································14 5心得体会···········································································································15 6参考文献及元器件引脚图

6.1参考文献···········································································································20 6.2 元器件引脚图····································································································21 6.3 AT89C51的若干时序·······················································································23 6.4硬件电路图·········································································································24

6.5元器件清单·········································································································26

前 言

随着时代科技的迅猛发展,微电子学和计算机等现代电子技术的成就给传统的电子测量与仪器带来了巨大的冲击和革命性的影响。常规的测试仪器仪表和控制装置被更先进的智能仪器所取代,使得传统的电子测量仪器在远离、功能、精度及自动化水平定方面发生了巨大变化,并相应的出现了各种各样的智能仪器控制系统,使得科学实验和应用工程的自动化程度得以显著提高。

基于单片机课程的学习,本小组成员利用单片机实现时钟的显示,利用键盘和门电路控制时间的调整,充分利用单片机的资源和空间,较大限度的实现了功能。

在课程设计的过程中,我们发现了许多实际应用中所遇到的问题,在调试的过程中学到了更多的东西。让我们充分的认识道学以致用的价值!

任务书

电子时钟主要由显示模块、校时模块和时钟运算模块三大部分组成。其中校时模块和时钟运算模块要对时、分、秒的数值进行操作,并且秒计算到60时,要自己清零并向分进1;分计算到60时,要自己清零并向时进1;时计算到24时,要清零。这样,才能循环记时。

设计要求:

1) 2)

设计一款电子时钟,用共阴极七段数码管显示时间;

6个数码管分别显示时、分、秒;可以利用四个键盘调整时间,小时

键每次调整一小时,分钟用两个键调整十位和各位,秒钟键调整秒显示的十位;

3) 4)

硬件电路的调试; 写出详细的课设报告。

1方案的选择

1.1 键盘的设计

考虑到时间误差的存在以及调整时间的方便性,采用独立式键盘。 提高CPU的工作效率,采用中断工作方式

四个键盘接于P1口,用74ls21与门接于外部中断0,实现了调整时间的快速性,当四个键盘有中断发生,首先判断四个键哪个按下,向CPU发一个中断请求信号,然后调用相应的中断程序。参考电路如下:

键盘的工作过程可分为两步:第一步是CPU首先检测键盘上是否有按键被按下,第二步是识别哪一个减按下。检查键盘上有无键按下可采用查询工作方式、定时扫描工作方式和中断工作方式。

查询工作方式(例如用8155扩展I/O组成的行列式键盘):

键盘上有无键按下是有列线送出全扫描字,然后读入行线状态来识别的。其方法是PA口输出00H,即所有列线置成低电平,然后将行线电平状态读入累加

器A中,如果有键按下,总会有一根行线拉置低电平,从而使行输入状态不全为“1”。键盘中哪一个键按下是有列线逐列置低电平后,检查行输入状态,称为逐列扫描。方法是:从PC口读入行线状态,如果全为“1”,则所按下之键不在此列,如果不全为“1”,则在此列,并且是与“0”电平行线相交的交点上的那个键。

1.2 门电路的设计

为了达到调整时间的快速性与准确性,采用中断方式,四个键盘采用与门芯片74LS21。当四个键盘有一个按下后就会向CPU申请中断。 1.3显示电路

显示采用led动态显示方式,共阴极端由P2口线控制,分为段选线和位选线,利用人的视觉停留达到显示的效果,段选线控制字符选择,位选线控制显示位的亮或暗。从段选线I/O口上按位次分别送显示字符的段选码,在位选控制口也按相应的次序分别选通相应的显示位(共阴极送低电平,共阳极送高电平),选通位就显示相应字符,并保持几毫秒的延时,为选通不显示字符(保持熄灭)。这样,对各位显示就是一个循环过程。从计算机工作来看,在一个瞬间只有一位显示字符,而其他位都是熄灭的。但由于人的视觉停留,这种动态变化是察觉不到的。从效果上看,各位显示器能连续而稳定地显示不同的字符。

开始 Y 有键按下否? N 调用延时子程序 调用延时子程序 N

有键按下否? Y 判断闭合键,键码入栈保存

N 闭合键释放否? Y 键码 A 返回 键盘扫描子程序流图

2 硬件电路和参考程序

2.1基于proteus仿真的硬件电路

截屏视图如下

2.2 参考程序:

ORG 0000H

AJMP START ORG 0003H LJMP ST1 START: ORG 000BH AJMP TT0 ORG 0030H

MOV 30H,#00H MOV 31H,#00H MOV 32H,#00H MOV 33H,#00H MOV 34H,#00H MOV 35H,#00H MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H MOV R0,#30H MOV R5,#0FEH MOV R1,#20 MOV 36H,#00H MOV R3,#6 MOV R2, #6 MOV R4,#10 MOV 40H,#10

MOV IE, #81H SETB EA SETB ET0 ;秒个位内存单元 ;秒十位内存单元 ;分个位内存单元 ;分十位内存单元 ;时个位内存单元 ;时十位内存单元

;定时器T0,工作方式1, ;定时50MS ;

;指针指向显示单元 ;选中秒个位 ;

;时位键盘判断时用 ;秒十位判断时用 ;分十位判断时用 ; ; ;开中断 ;开T0中断

SETB TR0 ;记时开始 MAIN: LCALL DIS LJMP MAIN

;#################显示子程序################### DIS: MOV A,R5

;先位码

MOV DPTR,#7FFFH ;位码选择p2.7 MOVX @DPTR,A

MOV A,@R0 ;再段码 MOV DPTR,#TAB ;表地址 MOVC A,@A+DPTR ;查表 MOV DPTR,#0BFFFH ;段码选择p2.6 ;###############显示小数点###################

CJNE R0,#32H,GO111 ;小数点选择(R0)=/=32H转移 ORL A,#80H GO111: CJNE R0,#34H,MIN ORL A,#80H

MIN: MOVX @DPTR,A ;送出去显示 LCALL DELAY ;1MS延时 LCALL DELAY LCALL DELAY

INC R0 ;修改指针指向下一显示单元 MOV A,R5 ;也可写为XCH A,R5

JNB ACC.5,LH ;判断显示完否?? RL A ;也可写为XCH R5,A MOV R5,A

AJMP ENR ;返回循环显示 LH: MOV R0,#30H ;重心定义显示指针

MOV R5,#0FEH ;重设位码,形成循环ACC.0-ACC.3 ENR: RET

;###############定时中断########################### TT0:

MOV TH0,#3CH ; MOV TL0,#0B0H ;

DJNZ R1,FANHUI MOV R1,#20 INC 30H DJNZ R4,FANHUI MOV R4,#10 MOV 30H,#00H INC 31H DJNZ R3,FANHUI MOV R3,#6 MOV 31H,#00H INC 32H

DJNZ 40H,FANHUI MOV 40H,#10 MOV 32H,#00H INC 33H

DJNZ R2,FANHUI MOV R2,#6 MOV 33H,#00H

INC 36H MOV A,36H CJNE A,#24,JUMP

MOV 36H,#00H

JUMP: MOV A,36H MOV B,#10

;判断1秒到否?未到跳转 ;

;秒个位加一

;判断10秒到否?未到跳转 ; ; ; ; ; ; ; ;时位判断时用

DIV AB MOV 34H,B MOV 35H,A FANHUI: RETI

;*********键盘处理程序*********** ST1: CLR EX0 ;键盘1判断时用 PUSH B PUSH ACC JB P1.0,ST2 LCALL DELAY111 JNB P1.0,$ LCALL DELAY111 DJNZ R3,GO MOV R3,#6 GO: INC 31H MOV A,31H CJNE A,#6,$+3 JNB P1.0,$ JC ST2 MOV 31H,#00H MOV A,31H

ST2: JB P1.1,ST3 ;键盘2判断时用 LCALL DELAY111 JNB P1.1,$ LCALL DELAY111 DJNZ 40H,GO1 MOV 40H,#10 GO1: INC 32H

MOV A,32H CJNE A,#10,$+3 JNB P1.1,$ JC ST3 MOV 32H,#00H MOV A,32H

ST3: JB P1.2,ST4 LCALL DELAY111 JNB P1.2,$ LCALL DELAY111 DJNZ R2,GO2 MOV R2,#6 GO2: INC 33H MOV A,33H CJNE A,#6,$+3 JNB P1.2,$ JC ST4 MOV 33H,#00H MOV A,33H

ST4: JB P1.3,ST6 LCALL DELAY111 JNB P1.3,$ LCALL DELAY111 INC 36H MOV A,36H CJNE A,#24,JUMP1 MOV 36H,#00H JUMP1: MOV A,36H MOV B,#10

;键盘3判断时用;键盘4判断时用 DIV AB MOV 34H,B MOV 35H,A

ST6: POP ACC ;键盘中断返回 POP B SETB EX0 RETI

;##########延时1MS子程序########### DELAY: MOV R7,#02H DE1: MOV R6,#0FEH DE2: DJNZ R6,DE2 DJNZ R7,DE1 RET

;########键盘延时消抖程序#########

DELAY111:MOV 50H,#2 ;键盘消抖程序 DE1111: MOV 51H,#255 DJNZ 51H,$ DJNZ 50H,DE1111

TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H END

RET

3试验调试

3.1 硬件电路的连接

连接电路的时候要仔细小心,电路连好后要反复检查。连接时要分部分连接,切忌整体进行。 3.2 硬件电路的调试

将编写好的源程序输入电脑,编译后出现很多错误,这些错误有许多是平时的实验遇到过的,例如:输入的分号格式不正确,零和字母O弄混淆了,LOOP5出现了几次,CJNE写成了CJNZ等等,幸好这些错误在平时的实验中遇到了,所以改错误很容易,但同时也说明了,平时的错误现在还在犯,证明错误我还没有完全的改正,这点我们以后一定要注意了。争取错误犯了两次就不能在犯了。除了常见的错误外,还有几条错误时我从来没有遇到过的,如:LJMP跳转指令跳不回指定的位置,是因为跳转的长度大于LJMP跳转的长度,最后只好设置跳转两次后才能跳到指定的位置。

经过多次的修改和向别人请教,错误都排除了,编译通过了,但功能没有达到设计的要求,第一、小时加1键加到23时还可以向上加而不是回到00.第二、时钟走到235959时不能回到000000的状态。这两个错误都出现在小时的位置,说明小时键很特殊,的确,小时键当小于23时个位遇到10要进位,当大于23时个位遇到4时要进位,小时的十位也是一样,要判断两次,才能实现完整的功能。最后,经过几天在机房的努力,终于实现了时钟的全部要求。

在前期的程序编写和几天的上机调试,使我又获得了很多新的知识,因为前期编写程序时查了很多资料学到了很多知识,这几天的调试更时获得很新的知识,因为程序中又很多的错误,为了修改错误必须看书或向别人请教,在这个过程中无意识的获得了很多知识。同时也使我对单片机更感兴趣了,这点我觉得很重要,因为兴趣是最好的老师,相信在以后的单片机相关的学习中会表现的更好。

4 试验结论

本次课程设计是用AT89c51单片机CPU及接口电路设计一个数字时钟,经过一个星期的调试,结果满足设计要求,验证无误。通过单片机硬件电路的调试,实现了预先设定的功能,设计主要用到了多种芯片,程序也比较长比较麻烦,同时也遇到了不少困难,尤其是关于校时模块的设计实现。关于显示模块,在以前的实验中做过,所以问题很容易解决。

通过本次设计,我们系统的了解了实时时钟的设计流程,尤其是硬、软件的设计方法,掌握了键盘显示电路的基本功能及编程方法,掌握了键盘电路和显示电路的一般原理,也进一步掌握了89c51定时器的使用和中断处理器程序的编程方法。开拓了思路,锻炼了实践动手能力,提高了分工协作能力和分析问题,解决问题的能力,达到了本次课程设计的目的。在调试电路的过程中也积累了一些宝贵的经验,比如说,在I/O口要保证标准的高电平”1”的产生,一般要上拉电阻5.1k,在一些需要高电平的地方,不能用悬空来模拟,必须严格的按照“+5v”来连接,特别是调试过程中的分部分进行很重要。

5 心得体会

随着集成电路和计算机技术的迅速发展,使电子仪器的整体水平发生巨大变化,传统的仪器逐步的被智能仪器所取代。智能仪器的核心部件是单片机,因其极高的性价比得到广泛的应用与发展,从而加快了智能仪器的发展。而传感器作为测控系统中对象信息的入口,越来越受到人们的关注。传感器好比人体“五官”的工程模拟物,它是一种能将特定的被测量信息(物理量、化学量、生物量等)按一定规律转换成某种可用信号输出的器件或装置本次课设中的半桥电子秤就是在以上仪器的基础上设计而成的。因此,只有充分了解有关智能仪器、单片机、传感器以及各部分之间的关系才能达到要求。

单片机作为我们的主要专业课之一,虽然在大三开学初我对这门课并没有什么兴趣,觉得那些程序枯燥乏味,但在这次课程设计后我发现自己在一点一滴的努力中对单片机的兴趣也在逐渐增加。

这次单片机课程设计我们历时两个星期,在我们班里算是倒数几组完成的吧,但经过这两个星期的实践和体验下来,我们又怎么会去在乎那个先后问题呢,因为对我来说学到的不仅是那些知识,更多的是团队和合作。现在想来,也许学校安排的课程设计有着它更深层的意义吧,它不仅仅让我们综合那些理论知识来运用到设计和创新,还让我们知道了一个团队凝聚在一起时所能发挥出的巨大潜能!

两个星期前我们五个人还在为到底选那个课题而发生分歧,最后还是在王老师的耐心分析和指导下完成了课题的选定,但是随之而来的问题却远比我们想

本文来源:https://www.bwwdw.com/article/25o6.html

Top