ImageVerifierCode 换一换
格式:DOCX , 页数:49 ,大小:1.75MB ,
资源ID:6360544      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-6360544.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机课程设计校园作息时间系统Word文档下载推荐.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

单片机课程设计校园作息时间系统Word文档下载推荐.docx

1、P3。2接用户自设定报时/作息时间报时的选择开关,开关闭合(P3。2为低电平)时,仅对用户自设定的时间点进行报时;开关断开时,则进行固定的作息时间表报时。 P3。3端口接夏令/冬令作息时间表,P3。3=1时选择择冬令作息时间表。4端口外接光电隔离器,驱动扩音机电源的控制开关,低电平有效。 图2.1 单片机原理框图2.2系统工作流程本单片机报时控制系统具备以下功能:时钟显示。5位LED从左到右依次显示时、分,采用24H计时。 图2.2 时间显示图(4) 键盘功能。采用4个独立按键,包括:移位键、加1键、减1键、校时置入键。(5) 移位键:(P1。0=0)每按动移位键一次,小数点从左向右移动1位。

2、(6) 加1键:1=0)对小数点所在位的数什进行十进制加1。(7) 减1键:( P1。2=0)对小数点所在位的数值进行十进制减1。(8) 校时置入键:3=0)将显示的时间值置入实时时钟的计时缓冲区。 图2.3 键盘功能(9) 扬声器驱动电路: 图2.4 扬声器驱动电路 2.3 系统的使用说明(1) 时间显示。通电后,系统自动进入时钟显示,从00:00:开始计时,此时可以设定当前时间。(2) 时间校对。按下“移位”键,小数点从左向右移动,每按动1次,小数点便移动1位;要修改设置哪一位,只需将小数点移到该位,便可用“加1键”或“减1键”对该位进行数字设定;时间的校对设定一共有5位,从左到右依次为星

3、期、小时十位、小时个位、他的十位、分的个位。设置正确后“校时置入键”,时间校正便设置完成,报时钟开始按新设置的时间值开始走时和显示。(3) 用户报时时间设置/显示。用户可以自行设定10组报时时间点,这时LED显示的最高位定义为组编号其他位定义不变;按下“报时设定键”,系统根据“组编号”将用记设定的报时时间点(小时和分)存入内部RAM相应存储单元中,用户如需修改和检查这些报时时间。如需修改,可用“移位键”、“加1键”,“减1 键”来重新设定,然后用“报时设定键”来转入并结束显示。(4) 报时输出的驱动过程。在报时处理程序上中,一旦当前时间与作息时间表中的某一时间点(时、分值)相同时,则建立F0报

4、时标志,建立F1放音标志,扩音机播放报时音乐,并在26H中设置放音时间,放音时间到,则关闭驱动及清除F1标志位,完成1次报时驱动.第3章 软件设计3.1系统资源分配 (1)为方便阅读程序,先对系统的资源分配加以说明。1) 定时器。定时器0用作时钟定时,按方式1工作,每隔100MS溢出中断1次。2) 片内RAM及标志位的分配与定义见表1表1:地址功能名称初始化值2FH2BH显示缓冲区,星期、小时、分(高位在前)DISP0DISP400H24H20H计时缓冲区,星期、时、分、秒、100msWEEK,HOUR,MIN,SEC,MSEC40H53H用户报时时间值寄存区(时、分)AHOUR、AMIN61

5、H7FH堆栈区F0H报时开始标志位F1H放音开始标志位F3H分钟值变更标志位F4H键处理标志位25H扩音机预热时间26H播放报时音乐时间(2)软件流程。根据上述工作流程,软件设计可分为以下几个功能模块:1) 主程序:初始化与键盘监控。2) 计时:为定时器0中断服务子程序,完成刷新计时缓冲区的功能。3) 时间设置与报时设置:由键盘输入设置当前时间与定时启闭时间。4) 显示:完成5位LED动态显示。5) 键盘扫描:判断是否有键按下,并求取键号。6) 定时比较:判断报时时间到否,如时间到,则启动报时处理程序。7) 其他辅助功能程序,如键盘设置、拆字、合字、冬季或夏季时间表选择及假日停止报时等。第4章

6、 程序模块设计程序的模块设计非常重要,有很多功能的程序,列表如表2表2 :主程序程序的主体,调用其他子程序定时中断服务程序进行秒,分,时的累计计数,到时间到时,驱动蜂鸣器及继电器显示模块P0口作为段码,P2口作为位码输出,控制数码管。键扫描子程序检测P1口,判断是否有键按下,如有键按下,进进行延时去抖动并读取键值,存入A中键值处理子程序判断A中的值,根据A来选择调用哪个子程序4.1 主程序模块(MAIN)在主程序模块中,先对各端口进行初始化,对内部RAM区清零,设置堆栈和定时器初值,关闭显示器,启动定时及其中断。然后检测时钟分值变更标志位F3是否建立,如果已建立,则进行报时处理,否则再检测有无

7、按键按下,若有则进行按键处理,无则返回循环点。 ORG 0000H START: AJMP MAIN ;跳转入主程序0030H ORG 000BH AJMP CTCINT ;跳转到定时器T0的中断服务程序入口 ORG 0030HMAIN: NOP ;主程序入口地址:0030H NOP MOV A,#OFFH ;关闭各输出口MOV P0,A ;P0口为字形口,低电平有效MOV P1,A ;P1口作为6个键输入口MOV P2,A ;P2口是字位口,低电平有效MOV P3,A ;P3口报时方式控制和驱动输出口SETB T0 ;关闭报时音乐输出(T0=1)SETB T1 ;关闭报时扩音机电源(T1=1

8、)CJNE SP,#07H,NOT1 MOV R0,#7FHMOV R1,#7DH ;否则RAM清零初始化CLR ALOOP0: MOV R0,A DEC R0DJNZ R1, LOOP0 ;从内部RAM区03H到7FH均清零NOT1: MOV SP,#60H ;设置栈指针MOV IP,#02H ;设置定时器T0为最高中断优先级MOV IE,#82H;定时器T0开中断MOV TMOD,#01H;设置定时器T0为方式1MOV TL0,#0B0H;设置定时器T0初值MOV TH0,#3CHSETB TR0;启动定时NOPNEXTT:重置堆栈底位置LCALL DISP ;调用显示子程序NOP ;检测

9、标志是否出现,F3为定时分钟值变化的标志位JNB 0F3H,NEXT1 ;F3=0,则转键扫描,判断有无键按下F3=1,调用报时处理子程序SETB INT0JNB INT0 , USERS;如INTO=0,则调用用户自设定报时点LCALL TIMERA;INTO=1,调用TIMERA,按作息时间表报时USERS:LCALL TIMERB;TIMERB为用户自设定报时点报时NEXT1:LCALL CHECKEY;调用按键扫描子程序,判断有无键按下JZ NEXTT;无键按下,返回重新扫描LCALL KEYACC;有键按下,调用按键处理子程序SJMP NEXTT4.2定时中断服务程序模块该多好模块完

10、成下述工作:对100毫秒(20H)、秒(21H)、分(22H)、小时(23H)进行累计计数,如果分值有计数变化并且无键按下,则将小时和分钟送显示缓冲区更新显示目录;如有报是处理标志,则对报时扩音机电源和报时音乐输出分别进行定时控制。CTCINT:NOP;T0的中断服务子程序MOV TL0,#0B4H;PUSH ACC;保护主程序现场数据PUSH PSWSETB RS0;选择新的工作寄存器区(1区)CLR RS1;SELECT 1 AREAINC 20H;0.1S单元加1MOV A,20HJB OF4H,LCA;(F4H)为键处理标志位,在键处理过程中不显示秒点CJNE A,#05H,CTNUC

11、CTNUC: JC LC2;小于0.4S则秒点闪亮,大于0.4S则秒点熄灭CLR 6CHSJMP LCALC2: SETB 6CHLCA: CJNE A,#0EH,RTNH;未计满1S则退出中断MOV 20H,#00H;毫秒计数单元清零JNB 0F0H,NEXTE;F0H=1为报时扩音机预热延时标志位MOV A,25H;(25H)中存放报时扩音机预热延时时间值JNZ NEXTFCLR OFOHSETB OF1HMOV 26H,#1OH ;(26H)中存放报时放音的延时时间值CLR TONEXTE: JNB OF1H,NEXTF ;(F1H=1)为报时放音的延时标志位MOV A,26HDEC A

12、MOV 26H,AJNZ NEXTF ;判断报时放音延时是否结束CLR OF1H ;延时时间到,清除报时放音标志位,关闭报时电源SETB T1SETB T2SETB TONEXTF:MOV A,21H ;对秒计数单元(21H)进行累计计数ADD A,#01HDA AMOV 21H,ACJNE A,#06H,RTNH ;判断分计数是否计满SETB 0F3H ;(F3H)为分值有变更标志位NEXT: MOV A,22H ;对分(22H)进行累计计数ADD A,#01H;MOV 22H,ACJNE A,#60H,RTDNMOV 22H,#00HMOV A,23HADD A,#01H ;时单元加1MO

13、V 23H,A ;对时(23H)进行累计计数CJNE A,#24H,TRNDMOV 23H,#00HMOV A,24H星期计数单元(24H)加1MOV 24H,ACJNE A,#07H,RTDNMOV 24H,#00HRTDN:JNB OF3H,RTDH ;确认(F3=0)分值无变更,则返回JB OF4H,RTNH ;确认(F4=0)正在键处理,则返回LDDA: NOP ;将当前的时间值显示缓冲区MOV R0,#24H ;(24H、23H、22H、)送(2FH2BH)MOV R1,#2FHMOV R2,#02H MOV A,R0 ANL A,#0FHMOV R1,ADEC R0DEC R1LD

14、1: MOV A,R0 ;将1字节压缩的BCD码拆成两个字节,数数值存放在低字节内ANL A,#OF0HSWAP AMOV R1,AMOV A,R0ANL A,#0FHDJNZ R2,LD1RTNH:中断返回,并恢复现场数据POP PSWPOP ACCRETI4.3扫描显示模块该模块为5位LED扫描显示模块。P0口为字形码输出口,低电平有效;P2口为字位码输出口,高电平有。显示缓冲区为2FH2BH等5个字节,2FH存放显示的星期数,2EH、2DH存放显示的小时数,2CH、2BH存放显示的分钟数,其数值范围在00H0FH内时不显示该位的小数点,在10H1FH时则显示小数点。DISP:DISP为显

15、示子程序NOP MOV A,#00H ;关闭显示MOV P2,A ;P2口为字位码输出口 MOV A,#0FFH P0口为字形码输出口MOV R0,#2FH ;显示子程序MOV R1,#10H ;位控制字LOOP1: MOV A,R1输出位控制字MOV P2,AMOV DPTR,#TABLEMOV A,R0 ;取显示缓冲区中的显示字符数MOVC A,A+DPTR ;查表转换成字型代码CPL AMOV P0,A ;输出字形码MOV R2,#00HLOOP2: DJNZ R2,LOOP2 ;延时2MSDEC R0 ;显示下一个字符MOV A,R1CLR CRRC AMOV R1,AJNZ LOOP

16、1 ;判断5位扫描显示一遍是否完成RET TABLE:DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H ;带小数点时的字符显示字形表DB 0FFH,0EFH、0F7H,0FCH,0B9H,0F9H,0F1H4.4键扫描子程序 检测P1口,判断是否有键按下,如有键按下,进进行延时去抖动并读取键值,存入A中。CHECKEYA:MOV P1,#0FFHMOV A,P1 ;判断是否有键按下ANL A,#3FHJZ RETXLCALL DISP ;延时去抖动LCALL DISPMOV A,P1MOV R

17、6,A ;当前值存放在R6中K1: LCALL DISP ;等待释放按键JNZ K1MOV A,R6RETX:RETi. 用户自设定报时时间点置入键程序模块。将显示缓冲区2FH2BH中的内容压缩后存入40H为首地址的片内RAM中,其中2FH为定时时间点的编号,2EH、2DH为小时值,2CH、2BH为分钟数值。USESET:MOV R0,#2FHMOV R1,#40H ;本次用户设定报时点首址为40HANL A,#OFHRL AADD A,R1 ;报时点编号乘2加首址,为本次存放的实际地址定时设定时间置入子程序LDD:MOV R7,AADD A,R7INC R1DJNZ R2,LDDCLR 0F

18、4Hii. 减1键处理。在小数点点亮的对应位上进行十进制减1处理。 SUBONE:JNB 7CH,SCH74SJMP SUB1SCH74:JNB 74H,SCH6CMOV R0,#2EHSCH6C: JNB 6CH,SCH64MOV R0,#2DHSCH5C: NOP JNB 64H,SCH5CMOV RO,#2CHJNB 5CH,ERR1MOV R0,#2BHERR1:SUB1:ADD A,#99HXCHD A,R0iii. 用户自设定报时时间点显示键处理模块。由(2FH)指定的用户自设定报时点编号,计算其在RAM中存放的地址,再根据此地址找出该报时时间点的2个字节码,将其4个半字节分别存入

19、2EH2BH单元低半字中。DSPUSE:自设定报时点编号由(2FH)指定MOV R1,#40H ;用户设定报时点首址为40HADD A,R1 ;报时点编号乘2加首址,为其存放的实际地址取定时设定时间并置入显示缓冲区LDR: MOV A,R1 ;将小时和分钟值解压缩后装入相应显示单元中DJNZ R2,LDR4.5键值处理子程序 KEYACC:按键处理子程序JB ACC0,SHIFTP ;是移位功能键转SHIFTPJB ACC1,ADDONE ;是加1键,转ADDONEJB ACC2,SUBONE ;是减1键,转SUBONEJB ACC3, TIMSET ;是时钟校对键转TIMSETJB ACC,

20、USESET ;设置用户定时时间点JB ACC5,DSPUSE ;显示用户定时时间点iv. 加1键处理程序。在小数点点亮的对应位上进行十进制加1处理。ADDONE:JNB 7CH,SECH74SJMP ADD1SECH74:JNB 74H,SECH6CSECH64C:JNP 6CH,SECH64ERR2: RETADD1:v. 校时时间置入程序模块。将设定的时间值置入相应的时间计数单元,并以该时间为起点开始计时。TIMSET:校时时间置入程序段MOV R1,#24H MOV A,R0ANL A,0FHMOV 21H,#00H4.6移位键处理程序模块 将小数点从左向右依次移动1位。 小数点移动哪一位,那一位便可用加1或减1键进行修改数值。小数点如移到最右边1位,若再按1次移位键,小数点自动返回到最左边一位上。SHIFTP:JB 0F4H,NXTERR:SETB 0F4HSETB 5CHNXT:JNB 7CH,CHK74CLR 7CHSETB 74H

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2