1、湖州师范学院求真学院信息与工程系课程设计报告制作和调试(50分)设计报告(50分)评 定 等 级指 导 教 师湖州师范学院求真学院信息与工程系单片机应用系统设计总结报告题目:基于STC89C52的数字电子钟设计专 业 班 级 姓 名 学 号 指导教师 信息与工程系年月日一、 系统总体设计方案1系统原理框图如图(1)所示图(1)系统原理框图2方案论证与比较(1) 单片机的选型: 方案一: 选用AT89S51单片机。 方案二: 选用STC12C5A16S2单片机。 本系统采用方案二,AT89S51单片机的FlashRom为4K,程序存储量太小,若采用12M晶振,则机械周期为1us。而STC12C5
2、A16S2单片机FlashRom为16K,程序存储量大,若采用12M晶振,其机械周期可达(1/12)us。运行速度快12倍。(2) 显示方案 方案一: 选用1602液晶显示。 方案二: 选用4位数码管显示。 本系统采用方案二,1602液晶能显示16x2个字符,能很好的显示时间,但它与数码管相比成本太大。对于本系统要求的显示内容数码管完全能完成。成本大大降低。二、硬件系统分析与设计本系统由以下各个模块电路构成:1、单片机最小系统:包括复位电路、时钟晶振、STC12C5A60S2单片,为主控模块; 2、蜂鸣器电路:闹铃作用;在本次实验中整点报时以及闹钟闹铃,通过该电路模块实现; 3、矩阵键盘:按键
3、输入,软件程序通过功能键的设置,实现时钟/秒表等功能切换;4、数码管:显示作用,本次实验使用数码管动态扫描方式显示;键盘扫描原理: 本系统用到4个按键,是3*4矩阵键盘中的4个按键(这里对其定义为1号键,2号键,3号键,4号键)。由于是矩阵键盘因此键盘的扫描程序十分复杂,如果采用独立按键测编程比较简单,只需要将1至4号键盘的公共端清零,然后检测4个键盘即可;由于本系统采用普通按键,因此当按下按键时会产生机械振动,从而影响单片机对键盘的扫描,为了避免此种情况,本系统采用了软件延时消抖的方法。数码管显示原理:本系统时钟数值显示采用动态数码管显示,即4个是数码管依次显示不同的数值,然后重复上述动作通
4、过调试设计者。本系统使用4个共阳极数码管,并且后2个是倒着装的。因此在时钟程序显示时,可以定义2个不同的数码显示数组,一个专门为前2位数码管设置,另一组专门为后2位数码管设置。这样可以形象的显示出时间的跳动。 图2、系统电路图3、软件系统分析与设计程序流程图:主流程图: (1) 系统初始化流程图: (2) 按键扫描流程图: (3)定时器定时及数码管显示流程图四程序 ORG 0000HAJMP MAINORG 000BHAJMP IT0PDP BIT 22H.1-主函数MAIN: CLR DP MOV SP,#62H MOV 38H,#12H ;小时 MOV 39H,#01H ;分钟 MOV 3
5、6H,#12H ;闹钟小时 MOV 35H,#02H ;闹钟分钟 MOV TMOD,#01H ;定时器工作方式1 MOV 20H,#20 SETB ET0 ;允许T0中断 SETB EA ;开中断 MOV TH0,#3CH ;给T0设初值 MOV TL0,#0B0H SETB TR0 ;启动T0-跳转调用LOP: CLR P2.4 ;清零(开启) ACALL DATC ;调用DATC ACALL DISP ACALL KEYSCAN ACALL RING ACALL ZHENGD AJMP LOP-赋值DATC: JNB F0,LOOP11 ;F0如果是零 直接转移到LOOP11 MOV A,
6、36H AJMP LOOP12LOOP11:MOV A,38HLOOP12:ANL A,#0FH MOV 40H,A JNB F0,LOOP111 MOV A,36H AJMP LOOP122LOOP111:MOV A,38HLOOP122:ANL A,#0F0H SWAP A MOV 41H,A JNB F0,LOOP13 MOV A,35H AJMP LOOP14LOOP13:MOV A,39HLOOP14:ANL A,#0FH MOV 42H,A JNB F0,LOOP133 MOV A,35H AJMP LOOP144LOOP133:MOV A,39HLOOP144:ANL A,#0F
7、0H SWAP A MOV 43H,A RET-LED显示DISP: MOV DPTR,#TAB1 SETB P1.4 CLR P1.7 MOV A,41H MOVC A,A+DPTR MOV P0,A LCALL DELAY1MS SETB P1.7 MOV DPTR,#TAB1 CLR P1.6 MOV A,40H MOVC A,A+DPTR MOV C,DP MOV Acc.7,C MOV P0,A LCALL DELAY1MS SETB P1.6 MOV DPTR,#TAB2 CLR P1.5 MOV A,43H MOVC A,A+DPTR MOV C,DP MOV Acc.7,C M
8、OV P0,A LCALL DELAY1MS SETB P1.5 MOV DPTR,#TAB2 CLR P1.4 MOV A,42H MOVC A,A+DPTR MOV P0,A LCALL DELAY1MS RET-按键KEYSCAN: ACALL DATC ACALL DISP MOV A,P2 ANL A,#0FH CJNE A,#0FH,LOP1 AJMP LOP9LOP1: ACALL DELAY10MS MOV A,P2 ANL A,#0FH MOV R0,A CJNE A,#0FH,LOP2 ;0FH表示功能键 AJMP LOP9LOP2: ACALL DATC ACALL DI
9、SP MOV A,P2 ANL A,#0FH CJNE A,#0FH,LOP2 MOV A,R0 ;P2的初始值 CJNE A,#0EH,LOP4 ;如果A等于0EH的话功能键按下 MOV R1,46H ;功能标志寄存器中的值赋给R1 CJNE R1,#1,LOP5 ;功能标志是否为1 MOV 46H,#2 AJMP LOP6LOP5: MOV R1,46H CJNE R1,#2,LOOP1 ;功能标志是否为2 MOV 46H,#3 AJMP LOP6LOOP1: MOV R1,46H CJNE R1,#3,LOOP2 ;功能标志是否为3 MOV 46H,#4 AJMP LOP6LOOP2:
10、MOV 46H,#1 CLR F0 AJMP LOP6LOP4: MOV A,R0 CJNE A,#0BH,LOP7 ;0BH表示加键 MOV 47H,#1 AJMP LOP6LOP7: MOV A,R0 CJNE A,#7,LOP8 ;7H表示减键 MOV 48H,#1 AJMP LOP6LOP8: MOV 49H,#1LOP6: ACALL DATC ACALL DISP MOV R2,49H CJNE R2,#1,LOP9 MOV 49H,#0 ;确认标志位 MOV 46H,#0 ;功能标志位 MOV 47H,#0 ;加标志位 MOV 48H,#0 ;减标志位 CLR F0 AJMP L
11、OPRLOP9: MOV R2,46H CJNE R2,#1,LOP10 ;功能标志位是否为1 MOV R2,47H CJNE R2,#1,LOP12 ;加标志位是否为1 MOV A,38H ADD A,#1 DA A MOV 38H,A CJNE A,#24H,LOP00 MOV 38H,#00H MOV 47H,#0 AJMP KEYSCANLOP00: MOV 38H,A ;显示小时的加 MOV 47H,#0 AJMP KEYSCANLOP12: MOV R2,48H CJNE R2,#1,KEYSCAN1 ;减标志位是否为1 MOV A,38H CLR C SUBB A,#1 ACAL
12、L SUBBCD CJNE A,#99H,LOP02 MOV 38H,#23H MOV 48H,#0 AJMP KEYSCANLOP02: MOV 38H,A ;显示小时的减 MOV 48H,#0 AJMP KEYSCANLOP10: MOV R2,46H CJNE R2,#2,LOOP3 ;功能标志位是否为2 MOV R2,47H CJNE R2,#1,LOP13 ;加标志位是否为1 MOV A,39H ADD A,#1 DA A CJNE A,#60H,LOP01 MOV 39H,#00H MOV 47H,#0 AJMP KEYSCANLOP01: MOV 39H,A ;显示分钟的加 MO
13、V 47H,#0 AJMP KEYSCANLOP13: MOV R2,48H ;减标志位是否为1 CJNE R2,#1,KEYSCAN1 AJMP LOP133LOP133: MOV A,39H CLR C SUBB A,#1 ACALL SUBBCD CJNE A,#99H,LOP03 MOV 39H,#59H MOV 48H,#0 AJMP KEYSCANLOP03: MOV 39H,A ;显示分钟的减 MOV 48H,#0 AJMP KEYSCANLOOP3: MOV R2,46H CJNE R2,#3,LOOP5 ;功能标志位是否为3 SETB F0 MOV R2,47H CJNE R
14、2,#1,LOOP4 ;加标志位是否为1 MOV A,36H ADD A,#1 DA A MOV 36H,A CJNE A,#24H,LOP04 MOV 36H,#00H MOV 47H,#0 AJMP KEYSCANKEYSCAN1:AJMP KEYSCANLOP04: MOV 36H,A ;闹钟小时的加 MOV 47H,#0 AJMP KEYSCANLOOP4: MOV R2,48H CJNE R2,#1,KEYSCAN1 ;减标志位是否为1 MOV A,36H CLR C SUBB A,#1 ACALL SUBBCD CJNE A,#99H,LOP05 MOV 36H,#23H MOV
15、48H,#0 AJMP KEYSCANLOP05: MOV 36H,A ;闹钟小时的减 MOV 48H,#0 AJMP KEYSCANLOOP5: MOV R2,46H CJNE R2,#4,LOPR ;功能标志位是否为4 SETB F0 MOV R2,47H CJNE R2,#1,LOOP6 ;加标志位是否为1 MOV A,35H ADD A,#1 DA A CJNE A,#60H,LOP06 MOV 35H,#00H MOV 47H,#0 AJMP KEYSCANLOP06: MOV 35H,A ;闹钟分钟的加 MOV 47H,#0 AJMP KEYSCANLOOP6: MOV R2,48
16、H CJNE R2,#1,KEYSCAN1 ;减标志位是否为1 AJMP LOOP7LOOP7: MOV A,35H CLR C SUBB A,#1 ACALL SUBBCD CJNE A,#99H,LOP07 MOV 35H,#59H MOV 48H,#0 AJMP KEYSCANLOP07: MOV 35H,A ;闹钟分钟的减 MOV 48H,#0 AJMP KEYSCANSUBBCD:JNB AC,XY DEC A DEC A DEC A DEC A DEC A DEC AXY: JNC XYZ CLR C SUBB A,#60HXYZ: RETLOPR: RET-闹钟RING: MOV
17、 A,38H CJNE A,36H,EXIT2 MOV A,39H CJNE A,35H,EXIT2 MOV A,37H CJNE A,#0,EXIT2 CLR P3.2 MOV 50H,#1 ;蜂鸣器的标志位 AJMP EXIT1EXIT2: MOV 50H,#0 SETB P3.2 EXIT1: RET-整点报时ZHENGD: MOV A,39H CJNE A,#00H,NEXT1 MOV A,37H CJNE A,#0,NEXT2 CLR P3.2 AJMP NEXT2NEXT1: MOV A,50H CJNE A,#0,NEXT2 SETB P3.2NEXT2: RET-定时器中断IT
18、0P: PUSH PSW ;保护中断 PUSH Acc MOV TH0,#3CH MOV TL0,#0B0H MOV A,20H CJNE A,#10,NEXT CPL DPNEXT:DJNZ 20H,RETURN CPL DP MOV 20H,#20 MOV A,#01H ADD A,37H DA A MOV 37H,A CJNE A,#60H,RETURN MOV 37H,#00H MOV A,#01H ADD A,39H DA A MOV 39H,A CJNE A,#60H,RETURN MOV A,#01H MOV 39H,#00H ADD A,38H DA A MOV 38H,A C
19、JNE A,#24H,RETURN MOV 38H,#00HRETURN:POP Acc POP PSW ;保护中断 RETI-延时DELAY1MS:MOV R7,#4DEL1:MOV R6,#125DEL2:DJNZ R6,DEL2 DJNZ R7,DEL1 RETDELAY10MS:MOV R7,#250DEL11:MOV R6,#250DEL22:DJNZ R6,DEL22 DJNZ R7,DEL11 RET-段码表TAB1: DB 0C0H,0F9H,0A4H,0B0H ; 0 1 2 3 的段码表 DB 99H,92H,82H,0F8H ; 4 5 6 7 的段码表 DB 80H,9
20、0H,88H,83H ; 8 9 A B的 段码表 DB 0C6H,0A1H,86H,8EH ; C D E F DB 8CH, 0FFH ; P 全黑TAB2: DB 0C0H,0CFH,0A4H,86H,8BH,92H ; 0 1 2 3 4 5 倒置数码管段码表 DB 90H,0C7H,80H,82H ; 6 7 8 9 倒置数码管段码表 DB 81H, 98H,98H,98H,98H,98H ;a b b b b b 倒置数码管段码表 DB 0A1H, 0FFH ;p 全黑 倒置数码管段码表END 五、总结基于STC12C5A16S2单片机的电子时钟,具有时间设置、整点报时、闹铃设置及
21、秒表功能,由4位数码管显示时间。单片机在日常生活中应用广泛,结合这学期的学习,我们大概的了解了单片机的发展现状和发展趋势,以及在生活中的广泛应用,其实80C51只是我们所接触的一种简单的单片机,在实际应用中,有各个公司生产的不同型号的、针对不同功能设计的、以及根据用户的需要和发展自主研发设计的单片机还有很多,由此设计出来的嵌入式系统更是数不胜数。能够亲身的进行自我实践,并进行实际的应用,其实使我们对现行单片机的一次深入的了解,并能够提升我们将来在学习工作遇到的单片机设计问题。 在程序设计中,我们更加深入了解了中断的使用与本质,合理利用这些,会使程序简化而不会出错。比如开始我们把主程序写在中断里面,导致程序运行混乱,而后来发现,只在中断中做少量工作,比如改一下某一个标志,这样比较好。在这次课题设计过程中,我们合理的分工,适宜的规划进度的进展,不仅仅暗示完成了预先设计的内容。在这一过程中,我们充分发挥我们的主观能动性,想象创造性,攻克了很多之前都没有想过的难关,真的受益匪浅。我们理论和实验都有很大的提升,我想这些对于我们今后的学习生活都有很重要的意义,这将是我们在程序设计以及大学学习过程中的宝贵经验和财富。疑难问题程序中的软件按键去抖还是有点不稳定,时钟的精确度还不是很高,闹铃时间的长短还不能控制
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1