自己设计的单片机打铃系统

上传人:kms****20 文档编号:40841575 上传时间:2018-05-27 格式:DOC 页数:16 大小:151.50KB
返回 下载 相关 举报
自己设计的单片机打铃系统_第1页
第1页 / 共16页
自己设计的单片机打铃系统_第2页
第2页 / 共16页
自己设计的单片机打铃系统_第3页
第3页 / 共16页
自己设计的单片机打铃系统_第4页
第4页 / 共16页
自己设计的单片机打铃系统_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《自己设计的单片机打铃系统》由会员分享,可在线阅读,更多相关《自己设计的单片机打铃系统(16页珍藏版)》请在金锄头文库上搜索。

1、设计一台自动打铃系统设计一台自动打铃系统一、设计任务用单片机器件为主体,设计一台自动打铃系统。(1)按照设计标准,画出系统框图和系统硬件电路图。(2)完成该课题的程序设计,提交程序设计框图及程序设计清单。(3)提交课程设计报告二、设计要求(一)基本要求(1)基本计时和显示功能(用 12 小时制显示)。包括上下午标志,时、分的数字显示,秒信号指示。(2)能设置当前时间(含上、下午,时,分)(3)能实现基本打铃功能,规定:上午 6:00 起床铃:打铃 5 秒、停 2 秒、再打铃 5 秒。下午 10:30 熄灯铃:打铃 5 秒、停 2 秒、再打铃 5 秒。铃声可用小喇叭播放,凡是用到铃声功能的均按此

2、处理(二)发挥部分(1)增加整点报时功能,整点时响铃 5 秒,要求有控制启动和关闭功能。(2)增加调整起床铃、熄灯铃时间的功能。(3)增设上午 4 节课的上下课打铃功能,规定如下:730 上课,820 下课:830 上课,920 下课;940 上课,1030下课;1040 上课,1130 下课;每次铃声 5 秒。(4)特色和创新自选。三、设计步骤(1)设计能正常工作的一个单片机最小硬件系统,外围电路包括设置键盘,LCD 或 LED 的显示屏;(2)进行软件设计,利用单片机系统时钟先设计一个高精度的内部时钟系统,最小精确时间为期 1 秒;(3)在秒计数器的基础上设计一个 24 小时时钟,并设计若

3、干定时功能;(4)设计打铃执行机构,完成自动打铃功能。四、课程设计说明书要求后面略.公开我的主要设计资料:公开我的主要设计资料:主程序流程图:主程序流程图:汇编程序清单:汇编程序清单:/*程序名称:51 单片机自动打铃系统简要说明:实现 24 小时制电子钟,8 位数码管显示,显示时分秒显示格式:23-59-59(小时十位如果为 0 则不显示)到预定时间启动蜂鸣器模拟打铃,蜂鸣器 BEEP:P3.7打铃方式分起床、熄灯铃和上、下课铃两种系统使用 4 只按键,3 只按键用来调整时间,另一只为强制打铃按钮调整选择键 SET_KEY:P1.0;通过选择键选择调整位,选中位闪烁增加键 ADD_KEY:P

4、1.1;按一次使选中位加 1减少键 DEC_KEY;P1.2;按一次使选中位减 1如果长按 ADD_KEY 或 DEC_KEY,识别后则进行调时快进,此时停止闪烁如果选中位是秒,则按增加键或减少键都是将秒清零强制打铃键 DALING_KEY:P1.3;用来强制打铃或强制关闭铃声P0 口输出数码管段选信号,P2 口输出数码管位选信号。晶振 12M编 写:JiangX.net最后更新:09/1/2 晚*/BEEP EQU P3.7 ;定义蜂鸣器(电铃)控制信号输出口ORG 0000H ;程序入口地址 LJMP START ORG 000BH ;定时器 0 中断入口地址 LJMP TIMER_0OR

5、G 0300H/*程序开始,初始化*/ START: SETB BEEP ;关闭蜂鸣器(电铃)SETB 48H ;使用一个 bit 位用于调时闪烁标志SETB 47H ;使用一个 bit 位用于产生脉冲用于调时快进时基CLR 45H ;关闭响铃方式 1 标志CLR 44H ;关闭响铃方式 2 标志MOV R1,#0 ;调整选择键功能标志:0 正常走时、1 调时、2 调分、3 调秒MOV 20H,#00H ;用于控制秒基准时钟源的产生 MOV 21H,#00H ;清零秒寄存器MOV 22H,#00H ;清零分寄存器MOV 23H,#00H ;清零时寄存器MOV 24H,#00H ;用于控制调时闪

6、烁的基准时钟的产生MOV IP,#02H ;IP,IE 初始化 MOV IE,#82H MOV TMOD,#01H ;设定定时器 0 工作方式 1MOV TH0,#3CH MOV TL0,#0B0H ;赋定时初值,定时 50ms SETB TR0 ;启动定时器 0 MOV SP,#40H ;重设堆栈指针/*主程序*/ MAIN:CJNE R1,#00H,MAIN1 ;是否为正常走时状态LCALL BIJIAO1 ;调用起床、熄灯打铃比较子程序LCALL BIJIAO2 ;调用上、下课打铃比较子程序LCALL DALING1 ;调用响铃方式 1 执行子程序LCALL DALING2 ;调用响铃方

7、式 2 执行子程序MAIN1: LCALL DISPLAY ;调用显示子程序LCALL KEY_SCAN ;调用按键检测子程序 JZ MAIN ;无键按下则返回重新循环LCALL SET_KEY ;调用选择键处理子程序JB 46H,MAIN ;如果已进行长按调整(调时快进),则不再执行下面的单步调整LCALL ADD_KEY ;调用增加键处理子程序LCALL DEC_KEY ;调用减少键处理子程序LCALL DALING_KEY ;处理强制打铃/强制关闭铃声键 LJMP MAIN ;重新循环 /*定时中断服务程序*/ TIMER_0: PUSH ACC PUSH PSW ;保护现场MOV TH

8、0,#3CHMOV TL0,#0B0H ;重新赋定时初值 CPL 47H ;产生脉冲用于调时快进时基INC 24HMOV A,24H CJNE A,#10,ADD_TIME ;产生 0.5 秒基准时钟,用于调时闪烁CPL 48H ;取反调时闪烁标志位MOV 24H,#00HADD_TIME:INC 20H MOV A,20H CJNE A,#20,RETI1 ;产生 1 秒基准时钟 MOV 20H,#00H ;一秒钟时间到,清零 20H MOV A,21HADD A,#01HDA A ;作十进制调整 MOV 21H,A CJNE A,#60H,RETI1 MOV 21H,#00H ;一分钟到

9、MOV A,22H ADD A,#01H DA A MOV 22H,A CJNE A,#60H,RETI1 MOV 22H,#00H ;一小时到 MOV A,23H ADD A,#01H DA A MOV 23H,A CJNE A,#24H,RETI1 MOV 23H,#00H ;到 24 点,清零小时RETI1: POP PSW POP ACC ;恢复现场RETI ;中断返回/*显示处理*/ DISPLAY:MOV A,21H ;秒ANL A,#0FH MOV 2FH,A ;转换出秒个位,存入 2FH MOV A,21H ANL A,#0F0H SWAP A MOV 2EH,A ;转换出秒十

10、位,存入 2EHJB 46H,MIN ;如果长按按键(调时快进),则跳过闪烁处理CJNE R1,#3,MIN ;如果 R1 为 3,闪烁秒位待调整JB 48H,MINMOV 2FH,#0AH ;使该位为 10,查表得到使该位不显示的输出MOV 2EH,#0AHMIN:MOV A,22H ;分 ANL A,#0FH MOV 2DH,A ;转换出分个位,存入 2DH MOV A,22H ANL A,#0F0H SWAP A MOV 2CH,A ;转换出分十位,存入 2CHJB 46H,HOUR ;如果长按按键(调时快进),则跳过闪烁处理CJNE R1,#2,HOUR ;如果 R1 为 2,闪烁分位

11、待调整 JB 48H,HOURMOV 2DH,#0AH ;使该位为 10,查表得到使该位不显示的输出MOV 2CH,#0AHHOUR:MOV A,23H ;时 ANL A,#0FH MOV 2BH,A ;转换出时个位,存入 2BH MOV A,23H ANL A,#0F0H SWAP A MOV 2AH,A ;转换出时十位,存入 2AHJB 46H,DISP ;如果长按按键(调时快进),则跳过闪烁处理CJNE R1,#1,DISP ;如果 R1 为 1,闪烁时位待调整JB 48H,DISPMOV 2BH,#0AH ;使该位为 10,查表得到使该位不显示的输出MOV 2AH,#0AH/*数码管动

12、态扫描显示*/DISP:MOV DPTR,#TABLEMOV A,2FHMOVC A,A+DPTRMOV P0,ACLR P2.7LCALL DELAYSETB P2.7 ;显示秒个位MOV A,2EHMOVC A,A+DPTRMOV P0,ACLR P2.6LCALL DELAYSETB P2.6 ;显示秒十位MOV A,#0BFHMOV P0,ACLR P2.5LCALL DELAYSETB P2.5 ;显示“-”MOV A,2DHMOVC A,A+DPTRMOV P0,ACLR P2.4LCALL DELAYSETB P2.4 ;显示分个位MOV A,2CHMOVC A,A+DPTRMO

13、V P0,ACLR P2.3LCALL DELAYSETB P2.3 ;显示分十位MOV A,#0BFHMOV P0,ACLR P2.2LCALL DELAYSETB P2.2 ;显示“-”MOV A,2BHMOVC A,A+DPTRMOV P0,ACLR P2.1LCALL DELAYSETB P2.1 ;显示时个位MOV DPTR,#TABLE1 ;该位使用 TABLE1 以消除前置 0MOV A,2AHMOVC A,A+DPTRMOV P0,ACLR P2.0LCALL DELAYSETB P2.0 ;显示时十位RET/*按键检测子程序*/ KEY_SCAN: CLR 46H ;关闭长按

14、调整(调时快进)标志MOV P1,#0FFH ;将 P1 口设置成输入状态 MOV A,P1 CPL A ANL A,#0FH ;P1 口低 4 位连接 4 个按键,只判断该 4 位JZ EXIT_KEY ;无键按下则返回 LCALL DELAY ;延时去抖动MOV A,P1 ;重新判断 CPL A ANL A,#0FH JZ EXIT_KEY ;键盘去抖动 MOV R5,A ;临时将键值存入 R5MOV R4,#00H ;用于控制调时快进速度;设置为 00H 是为了在进入长按处理前加长延时区分用户的长按与短按,防止误快进LOOP: ;进入长按处理LCALL DISPLAY ;使长按时显示正常

15、 MOV A,P1 CPL A ANL A,#0FHJB 47H,LOOP1INC R4 ;调时快进间隔时间基准加 1LOOP1:CJNE R1,#03H,LOOP2 ;如果调秒时长按,则不处理LJMP LOOP3LOOP2:CJNE R4,#99H,LOOP3 MOV R4,#70H ;确认用户长按后,重新设定起始值,加快调时快进速度SETB 46H ;长按调整(调时快进)标志 LCALL ADD_KEYLCALL DEC_KEYLOOP3:JNZ LOOP ;等待键释放MOV A,R5 ;输出键值RET EXIT_KEY:RET/*延时子程序*/DELAY: MOV R7,#150 DJNZ R7,$RET/*选择键处理子程序*/ SET_KEY: CJNE R5,#01H,EXIT ;选择键键值INC R1 ;调整选择功能标志加一SETB BEEPCJ

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号