单片机键盘可调时钟显示

上传人:痛*** 文档编号:41369804 上传时间:2021-11-20 格式:DOC 页数:26 大小:772KB
返回 下载 相关 举报
单片机键盘可调时钟显示_第1页
第1页 / 共26页
单片机键盘可调时钟显示_第2页
第2页 / 共26页
单片机键盘可调时钟显示_第3页
第3页 / 共26页
点击查看更多>>
资源描述
数字时钟 陕西理工学院电气工程系目录前言2任务书31.方案选择1.1.键盘设计41.2.门电路设计51.3.显示电路52.硬件电路及参考程序2.1基于proteus仿真的硬件电路72.2参考程序8 3试验调试3.1 硬件电路的连接143.2.硬件电路的调试144试验结论145心得体会156参考文献及元器件引脚图6.1参考文献206.2 元器件引脚图216.3 AT89C51的若干时序236.4硬件电路图246.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口上按位次分别送显示字符的段选码,在位选控制口也按相应的次序分别选通相应的显示位(共阴极送低电平,共阳极送高电平),选通位就显示相应字符,并保持几毫秒的延时,为选通不显示字符(保持熄灭)。这样,对各位显示就是一个循环过程。从计算机工作来看,在一个瞬间只有一位显示字符,而其他位都是熄灭的。但由于人的视觉停留,这种动态变化是察觉不到的。从效果上看,各位显示器能连续而稳定地显示不同的字符。闭合键释放否?YYN返回开始键码 A判断闭合键,键码入栈保存有键按下否?有键按下否?调用延时子程序调用延时子程序NNY键盘扫描子程序流图2 硬件电路和参考程序2.1基于proteus仿真的硬件电路截屏视图如下:2.2 参考程序: ORG 0000H AJMP START ORG 0003H LJMP ST1 ORG 000BH AJMP TT0 ORG 0030HSTART: MOV 30H,#00H ;秒个位内存单元 MOV 31H,#00H ;秒十位内存单元 MOV 32H,#00H ;分个位内存单元 MOV 33H,#00H ;分十位内存单元 MOV 34H,#00H ;时个位内存单元 MOV 35H,#00H ;时十位内存单元 MOV TMOD,#01H ;定时器T0,工作方式1, MOV TH0,#3CH ;定时50MS 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中断 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,#80HMIN: 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.3ENR: RET;#定时中断#TT0: MOV TH0,#3CH ; MOV TL0,#0B0H ; DJNZ R1,FANHUI ;判断1秒到否?未到跳转 MOV R1,#20 ; INC 30H ;秒个位加一 DJNZ R4,FANHUI ;判断10秒到否?未到跳转 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,36HCJNE A,#24,JUMPMOV 36H,#00HJUMP: MOV A,36H MOV B,#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,#6GO: INC 31H MOV A,31H CJNE A,#6,$+3 JNB P1.0,$ JC ST2 MOV 31H,#00H MOV A,31HST2: JB P1.1,ST3 ;键盘2判断时用 LCALL DELAY111 JNB P1.1,$ LCALL DELAY111 DJNZ 40H,GO1 MOV 40H,#10GO1: INC 32H MOV A,32H CJNE A,#10,$+3 JNB P1.1,$ JC ST3 MOV 32H,#00H MOV A,32HST3: JB P1.2,ST4 ;键盘3判断时用 LCALL DELAY111 JNB P1.2,$ LCALL DELAY111 DJNZ R2,GO2 MOV R2,#6GO2: INC 33H MOV A,33H CJNE A,#6,$+3 JNB P1.2,$ JC ST4 MOV 33H,#00H MOV A,33HST4: JB P1.3,ST6 ;键盘4判断时用 LCALL DELAY111 JNB P1.3,$ LCALL DELAY111 INC 36H MOV A,36H CJNE A,#24,JUMP1 MOV 36H,#00HJUMP1: MOV A,36H MOV B,#10 DIV AB MOV 34H,B MOV 35H,AST6: POP ACC ;键盘中断返回 POP B SETB EX0 RETI;#延时1MS子程序#DELAY: MOV R7,#02HDE1: MOV R6,#0FEHDE2: DJNZ R6,DE2 DJNZ R7,DE1 RET;#键盘延时消抖程序#DELAY111:MOV 50H,#2 ;键盘消抖程序DE1111: MOV 51H,#255 DJNZ 51H,$ DJNZ 50H,DE1111 RETTAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H END3试验调试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 心得体会随着集成电路和计算机技术的迅速发展,使电子仪器的整体水平发生巨大变化,传统的仪器逐步的被智能仪器所取代。智能仪器的核心部件是单片机,因其极高的性价比得到广泛的应用与发展,从而加快了智能仪器的发展。而传感器作为测控系统中对象信息的入口,越来越受到人们的关注。传感器好比人体“五官”的工程模拟物,它是一种能将特定的被测量信息(物理量、化学量、生物量等)按一定规律转换成某种可用信号输出的器件或装置本次课设中的半桥电子秤就是在以上仪器的基础上设计而成的。因此,只有充分了解有关智能仪器、单片机、传感器以及各部分之间的关系才能达到要求。单片机作为我们的主要专业课之一,虽然在大三开学初我对这门课并没有什么兴趣,觉得那些程序枯燥乏味,但在这次课程设计后我发现自己在一点一滴的努力中对单片机的兴趣也在逐渐增加。这次单片机课程设计我们历时两个星期,在我们班里算是倒数几组完成的吧,但经过这两个星期的实践和体验下来,我们又怎么会去在乎那个先后问题呢,因为对我来说学到的不仅是那些知识,更多的是团队和合作。现在想来,也许学校安排的课程设计有着它更深层的意义吧,它不仅仅让我们综合那些理论知识来运用到设计和创新,还让我们知道了一个团队凝聚在一起时所能发挥出的巨大潜能!两个星期前我们五个人还在为到底选那个课题而发生分歧,最后还是在王老师的耐心分析和指导下完成了课题的选定,但是随之而来的问题却远比我们想想的要困难的多。作为一个团队,分工就显得尤为重要,在我们的讨论下我得到了连接硬件电路的任务,不过没想到这项看起来不需要多少技术的工作却是非常需要耐心和精力,最后在我们组员的帮助下也算是很好的完成了这项任务,在其他组员纷纷完成了初步的工作后,我们自信满满的来到了实验室准备调试,但第一次就给了我们致命的打击,设计的功能不能全部实现出来,只有秒位变化正常,电机却不会转动,于是我们就拿着程序反复分析和修改,还对部分芯片进行了更换,经过一次次的尝试之后我们把问题锁定在了驱动程序那部分,然后我们就针对这部分程序进行了深入思索,并在张老师和其他同学的帮助下完成了程序的修改.此时我忽然发现我们几个在开始时的分歧已全然化解,留给我们的是互相信任和帮助!当然在这我们也要谢谢帮助过我们的人,其中要感谢龚老师的鼓励和耐心的指导,这给了我们很大的动力,最后我还要谢的就是一直在我身边的四个组员,只有大家的共同努力和互相信任我们才能完成这次的课程设计!在三个星期后的今天我已明白课程设计对我来说的意义,它不仅仅是让我们把所学的理论知识与实践相结合起来,提高自己的实际动手能力和独立思考的能力,更重要的是同学间的团结,虽然我们这次花去的时间比别人多,但我相信我们得到的也会更多!作为一名自动化专业的大三学生,我觉得做单片机课程设计是十分有意义的,而且是十分必要的。在已度过的大学时间里,我们大多数接触的是专业课。我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?如何把我们所学的专业基础课理论知识运用到实践中去呢?我想做类似的课程设计就为我们提供了良好的实践平台。在做本次课程设计的过程中,我感触最深的当属查阅大量的设计资料了。为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。我们是在做单片机课程设计,但我们不是艺术家,他们可以抛开实际尽情在幻想的世界里翱翔,而我们一切都要有据可依,有理可寻,不切实际的构想永远只能是构想,永远无法升级为设计。其次,在这次课程设计中,我们运用到了以前所学的专业课知识,如:CAD制图、汇编语言、模拟和数字电路知识等。虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。最后,要做好一个课程设计,就必须做到:在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常德,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。另外,这次课程设计让我感到了团队合作的重要性。在团队中,我们互帮互助,对整个课程设计来说,这是至关重要的,缺少每一个人都会对我们的设计产生影响。还有要感谢指导老师在我们遇到困难时,给予我们的建议与鼓励。3周的课程设计结束了,但是从中学到的知识会让我受益终身。发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。短短两周的课程设计已经结束了,通过这次的课程设计锻炼了我们的实践能力,也是对我们以后的实际工作能力的具体训练和考察过程。现在是一个高科技的时代,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说是无处不在的。因此对于我们这一专业的同学来说,学好单片机,并正确应用单片机是非常重要的。此次单片机课程设计,从选题到定稿,从理论到实践,在整整两个星期里,学到了很多的东西。同时不仅巩固了以前所学过的知识,而且还学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。这次的课程设计还让我学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。更重要的是,我在这一设计过程中,学会了坚持不懈,不轻言放弃。设计过程,好比是我们人类成长的历程,常有一些不如意,但毕竟这是第一次做,难免会遇到各种各样的问题。在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。我们通过查阅大量有关资料,并在小组中互相讨论,交流经验和自学,若遇到实在搞不明白的问题就会及时请教老师,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。在整个设计中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。虽然这个设计做的也不太好,但是在设计过程中所学到的东西是这次课程设计的最大收获和财富。单片机课程设计虽然结束了,但通过设计所学到的东西将长久存在。相信这次设计带给我们的严谨的学习态度和一丝不苟的科学作风将会给我们未来的工作和学习打下一个更坚实的基础。单片机课程设计,是对单片机知识的验证,可以帮助我们理解巩固所学知识,激发我们对单片机课程的兴趣,更锻炼了我们独立思考、开拓创新的能力。经过两个星期的努力,课程设计终于大告成功了。整个设计通过了软件和硬件上的调试、仿真。我想这对于自己以后的学习和工作都会有很大的帮助。在这次设计中遇到了很多实际性的问题,在实际设计中才发现,书本上理论性的东西与在实际运用中的还是有一定的出入的,所以有些问题不但要深入地理解,而且要不断地更正以前的错误思维。一切问题必须要靠自己一点一滴的解决,而在解决的过程当中你会发现自己在飞速的提升。对于单片机设计,其硬件电路是比较简单的,主要是解决程序设计中的问题,而程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新能力,它才是一个设计的灵魂所在。因此在整个设计过程中大部分时间是用在程序上面的。很多子程序是可以借鉴书本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对单片机的结构很熟悉。因此可以说单片机的设计是软件和硬件的结合,二者是密不可分的。通过这次课程设计我也发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。这也激发了我今后努力学习的兴趣,我想这将对我以后的学习产生积极的影响。其次,这次课程设计让我充分认识到团队合作的重要性,只有分工协作才能保证整个项目的有条不絮。另外在课程设计的过程中,当我们碰到不明白的问题时,指导老师总是耐心的讲解,给我们的设计以极大的帮助,使我们获益匪浅。因此非常感谢老师的教导。通过这次设计,我懂得了学习的重要性,了解到理论知识与实践相结合的重要意义,学会了坚持、耐心和努力,这将为自己今后的学习和工作做出了最好的榜样。通过10多天的努力,我们小组终于完成了单片机的课程设计。我觉得作为一名自动化专业的学生,单片机的课程设计是很有意义的。更重要的是如何把自己平时所学的东西应用到实际中。虽然自己对于这门课懂的并不多,很多基础的东西都还没有很好的掌握,觉得很难,也没有很有效的办法通过自身去理解,但是靠着这一个多礼拜的“学习”,在小组同学的帮助和讲解下,渐渐对这门课逐渐产生了些许的兴趣,自己开始主动学习并逐步从基础慢慢开始弄懂它。我认为这个收获应该说是相当大的。一开始我们从参考书上找来了课题,但是毕竟是参考书,做到后来发现很多程序都是不完整的,这让我们伤透了脑筋。看着别的小组都弄得有模有样了,可是我们连一个课题都还没有定好。好不容易又找到了课题,可是结果还是很不尽人意。程序接线什么的都弄好了,调试也没有问题,可是就是无法达到预期想要的结果。眼看2个礼拜就快结束了,别的小组都准备要答辩了。无奈下我们不得不第三次改了课题。参考书毕竟只是一个参考,设计这种东西最后还是要靠自己动脑筋。然后我们大家一起齐心协力,从平时做的实验老师上课的举例书本上的知识以及老师的辅导和其他同学的帮助下终于完成了。应该说这是通过我们小组成员的共同努力和动脑完成的,虽然内容并不是很复杂,但是我们觉得设计的过程相当重要,学到了很多,收获了很多。我觉得课程设计反映的是一个从理论到实际应用的过程,但是更远一点可以联系到以后毕业之后从学校转到踏上社会的一个过程。小组人员的配合相处,以及自身的动脑和努力,都是以后工作中需要的。所以我认为这次的课程设计意义很深,和其他4位同学的共同学习配合努力的过程也很愉快,另外还要感谢老师的耐心辅导。6 参考文献及元器件引脚图 6.1 参考文献李建忠编著,单片机原理及应用西安电子科技大学出版社,2008。胡汉才编著,单片机原理及其接口技术清华大学出版社,2004。贾金铃等编著,微型计算原理及应用重庆大学出版社,2006。吴清秀,周荷琴编著,微型计算机原理与接口技术中国科学技术大学出版社,2004。吴向军、罗源明等编著汇编语言程序设计高等教育出版社,2001。 6.2 元器件引脚图AT89C51 74LS37374LS0274LS216.3 AT89C51的若干时序:6.4硬件电路图6.5元器件清单作者: 第 26 页 共 26 页
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!