1、基于单片机控制的电铃控制器单片机原理与应用技术题目:基于单片机控制的电铃控制器基于单片机控制的电铃控制器一 设计要求(一)基本功能1.显示: 可以显示 星期、时、分和秒2.1-99打铃:每天可设置 20 次,打铃持续时间每次 1-90 秒可调,每次打铃的间隔时间 分钟可调。3.铃声: 内置蜂鸣器可以发出监控声音(二)性能 时间日误差 1星期调整I I小时调整I 分钟调整一1调用闪烁子程序 图5校时程序流程图4.4时钟打铃程序流程图时钟打铃程序使用单片机 TO、T1两个定时器中断,两个定时器均为方式一,初值为 10ms 当定时器TO溢出时响应中断,使毫秒单元加 1,当毫秒单元满100时分单元加1
2、,依此类推。当定时器T1溢出时响应中断,依次比较存储的打铃点,条件符合就输出打铃信号。中断均需保 护现场,返回时恢复现场。H调用显示程序,恢复现场中断返回 II图6时钟打铃中断程序流程图5 心得与体会在此次将近三周的单片机实习,在指导老师和同学的帮助下,我确实学到了不少平时在课 堂上所学不到的知识。这样的实习不论是对我们的理论知识还是实践能力都有很大的帮助,经 过这些实习可以使我们能更快更准确的掌握专业方面的理论知识。总之,通过这次实习,我真正学到了很多东西,体会到了理论联系实际的重要性。充分认 识到实践的重要性,只有在实践中才能更好的验证理论知识。虽然也遇到一些问题,但在老师 及同学的帮助下
3、,各种问题迎刃而解。最后,衷心感谢辅导老师的指导和同学的帮助!参考文献1周航慈.单片机应用程序设计基础 M .北京:电子工业出版社 ,1997 年 7月2朱承高. 电工及电子技术手册 M. 北京:高等教育出版社 ,19903阎石.数字电子技术基础(第三版)M.北京:高等教育出版社,19894廖常初 . 现场总线概述 J. 电工技术 ,1999.65李朝青. 单片机原理及接口技术(第三版) M. 北京;北京航空航天大学出版社 ,2005 年 10月附录1 程序分为五部分1.初始化程序, 2. 键值处理程序, 3.中断程序, 4. 显示程序, 5. 延时程序2 程序清单ORG 0000H LJMP
4、 MAINORG 000BHLJMP TOINTORG 001BHLJMP DLBJ*主程序*ORG 30H;开 T0,T1 中断;定时器方式 1;初值MAIN:MOV IE,#8AHMOV TMOD,#11HMOV TH0,#0D8HMOV TL0,#0F0HMOV A,#0MOV 59H,AMOV 60H,AMOV 61H,AMOV 62H,AMOV 63H,AMOV 64H,AMOV 65H,AMOV 66H,A; 清零m_sec EQU20H;毫秒单元sec EQU21H;秒单元min EQU22H;分单元hour EQU23H;时单元week EQU24H;星期单元SETB TR0S
5、ETB TR1CLR P1.0CLR AMOV R0,AMOV R1,AMOV R2,AMOV R3,AMOV R5,AMOV R6,AMOV R7,AMOV m_sec,#00;毫秒单元清零MOV sec,#00;秒单元清零MOV min,#00;分单元清零MOV hour,#00;时单元清零MOV week,#00;星期单元清零MOV 70H,AMOV 71H,AMOV 72H,AMOV 73H,AMOV 74H,ALCALL xs;调用显示程序* J数字钟按键程序 *调时钟按键 *NET1:JB P0.0,NET2LCALL YS10MSJB P0.0,NET2CLR p2.2JNB P
6、0.0,$SETB p2.2CLR P1.1SETB P1.0;开中断SETB TR0;正常运行SETB TR1CLR P1.0SETB P1.1SETB P1.2SETB P1.3CJNEA,#00 ,NET3JB P0.1,NET9 ;数字钟调整时间部分切换键LCALLYS10MsJBP0.1,NET9CLRp2.2INC59HJNBP0.1,$SETBp2.2INCR7CLRTR0CLRTR1SJMPNET4JBP0.1,NET4LCALL YS10msJBP0.1,NET4CLRp2.2INC59HJNBP0.1,$SETBp2.2INCR7CJNER7,#1 ,NET5ANET3:N
7、ET4:;秒闪烁LCALLSSHNET5:SJMPCJNENET9R7LCALLMSH,#2 ;分闪烁,NET6SJMPNET9NET6:CJNELCALLR7HSH,#3 ;时闪烁,NET7SJMPNET9NET7:MOVLCALLR7WSH,#0;星期闪烁SJMPNET9NET8:LCALLXS* J调整时间加 1 键 *NET9:JBP0.2,NET115 ;数字钟调整时间键LCALLYS10msJBP0.2,NET13CLRp2.2CLRP1.2CJNER7,#1,NET10SETBp2.2SETBP1.3LCALLYS200msINCsec;秒单元加1MOVA,secCJNEA,#6
8、0,NET8 ;不等 60 时跳转显示,等60 时将秒单元清零MOVsec,#00LCALLXSJBP0.2,NET13LJMPNET9NET115:LJMPNET15NET10:CJNER7,#2,NET11SETBp2.2SETBP1.3LCALLYS200msINCmin;分单元加1MOVA,minCJNEA,#60,NET8 ;不等 60 时跳转显示,等60 时将分单元清零MOVmin,#00LCALLXSJBP0.2,NET13LJMPNET9NET11:CJNER7,#3,NET12SETBp2.2SETBP1.3LCALLYS200msINChour;时单元加1MOVA,hour
9、CJNEA,#24,NET8 ;不等 24 时跳转显示,等24 时将时单元清零MOVhour,#00LCALLXSJBP0.2,NET13LJMPNET9NET12:SETBp2.2SETBP1.3JBLCALLP0.3 ,NET19YS10ms;数字钟调整时间键JBP0.3 ,NET19CLRP2.2CLRP1.3CJNER7 ,#1,NET16SETBP2.2SETBP1.2LCALLYS200msDECsec ;秒单元减1MOVA ,secCJNEA ,#0FFH,NET14 ;不等 60 时跳转显示,等MOVsec ,#59LCALLNET14JBP0.3 ,NET19LJMPNET1
10、5CJNER7 ,#2,NET17SETBP2.2SETBP1.2LCALLYS200msDECmin ;分单元减1MOVA ,minCJNEA ,#0FFH,NET14 ;不等 60 时跳转显示,等MOVmin ,#59LCALLNET14JBP0.3 ,NET19LJMPNET15CJNER7 ,#3,NET18SETBP2.2SETBP1.2LCALLYS200msDEChour ;时单元减1NET15:NET16:NET17:60 时将秒单元清零60 时将分单元清零调整时间减 1 键 *MOVA ,hourCJNEA ,#0FFH ,NET14 ; 不等 24 时跳转显示MOVhour
11、 ,#23LCALLNET14JBP0.3 ,NET19LJMPNET15NET18:SETBP2.2SETBP1.2LCALLYS200msDECweek ;星期单元减 1MOVA ,weekCJNEA ,#00 ,NET14 ; 不等 7 时跳转显示,等MOVweek ,#07LCALLNET14JBP0.3 ,NET19LJMPNET15NET19:LJMPDSH* J定时程序 *DSH:MOVR2,#00等 24 时将时单元清零7 时将星期单元清 1JB P0.4 ,NT11LCALL YS10msJB P0.4 ,NT11CLR P2.2CLR P1.4JNB P0.4,$SETB
12、P2.2INC R2CJNE R2,#01,NTA ;第 1 个打铃点MOV R1,#30HLCALL CUNNT11:LJMP NT1NTA:CJNE R2,#02,NTB ;第 2 个打铃点LCALL CUNNTB:CJNE R2,#03,NTC ;第 3 个打铃点LCALL CUNNTC:CJNE R2,#04,NTD ;第 4 个打铃点LCALL CUNNTD:CJNE R2,#05,NTE ;第 5 个打铃点LCALL CUNNTE:CJNE R2,#06,NTF ;第 6 个打铃点LCALL CUNNTF:CJNE R2,#07,NTG ;第 7 个打铃点LCALL CUNNTG:
13、CJNE R2,#08,NTHLCALL CUN;第 8 个打铃点NTH:CJNE R2,#09,NTILCALL CUN;第 9 个打铃点NTI:CJNE R2,#10,NTJLCALL CUN; 第 10 个打铃点NTJ:CJNE R2,#11,NTKLCALL CUN;第 11 个打铃点NTK:CJNE R2,#12,NTLLCALL CUN;第 12 个打铃点NTL:CJNE R2,#13,NTMLCALL CUN;第 13 个打铃点NTM:CJNE R2,#14,NTNLCALL CUN; 第 14 个打铃点NTN:CJNE R2,#15,NTOLCALL CUN;第 15 个打铃点
14、NTO:CJNE R2,#16,NTPLCALL CUN;第 16 个打铃点NTP:CJNE R2,#17,NTQLCALL CUN;第 17 个打铃点NTQ:CJNE R2,#18,NTRLCALL CUN;第 18 个打铃点NTR:CJNE R2,#19,NTSLCALL CUN;第 19 个打铃点NTS:CJNE R2,#20,NT1LCALL CUN;第 20 个打铃点NT1:LJMP NET1*打铃点存储子程序*CUN:MOV R1,hourINC R1MOV R1,minINC R1*时钟中断程序*TOINT:PUSHPSWPUSHACC;保护现场MOVTH0,#0D8HMOVTL
15、0,#0F0H;重新赋计数初值INCm_sec; 毫秒单元加 1MOVA,m_secCJNEA,#100,NEXT1MOVm_sec,#00INCsec;秒单元加 1MOVA,secCJNEA,#60,NEXT1MOVsec,#00INCminJMOVA,minCJNEA,#60,NEXT1MOVmin,#00INChourJMOVA,hourCJNEA,#24,NEXT1MOVhour,#00INCweekMOVA,weekCJNEA,#08,NEXT1MOVweek,#01LCALLXSPOPACCPOPPSW;恢复现场RETI;中断返回NEXT1:打铃中断程序*DLBJ:PUSH PSW
16、PUSH ACC MOV TH0,#0D8H MOV TL0,#0F0H MOV R0,#30HFH: MOV A,R0CJNE A,hour,LOP1 INC R0 MOV A,R0 CJNE A,min,LOP2 CLR P2.2 CLR P1.4 LCALL YS1min SETB P2.2 SETB P1.4 CLR A MOV 7FH,A AJMP LOP2;铃声响;延时 1 分钟;铃声停LOP1: INC R0LOP2: INC R0CJNE R0,#58H,FHLOP3: LCALL XSPOP PSWPOP ACCRETIXS:MOVA,sec; 将秒送 AMOVB,#10DI
17、VABMOV60H,B;秒的个位MOV61H,A;秒的十位MOVA,min;将分送 AMOVB,#10DIVABMOV62H,B;分的个位MOV63H,A;分的十位MOVA,hour ; 将时送 AMOVB,#10DIVABMOV64H,B;时的个位MOV65H,A;时的十位MOVA,week;星期的送 AMOVB,#10DIVABMOV66H,B;星期的个位LCP:MOVR1,#60HMOVR5,#7MOVDPTR,#TABBK:MOVA,R1MOVCA,A+DPTRMOVSBUF,AJNBTI,$CLRTIINCR1DJNZR5,BKRETTAB:DB 11H,0D7H,32H,92H ,0D4H,98H,18H,0D3H,10H,90H*
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1