单片机课程设计之自动打铃系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机课程设计之自动打铃系统
这是我们本学期的单片机课程设计题目,程序就是在昨天的数字钟的基础上增加了一些内容,不想继续做了,还有一门考试要复习。
设计一台自动打铃系统
一、设计任务
用单片机器件为主体,设计一台自动打铃系统。
(1)按照设计标准,画出系统框图和系统硬件电路图。
(2)完成该课题的程序设计,提交程序设计框图及程序设计清单。
(3)提交课程设计报告
二、设计要求
(一)基本要求
(1)基本计时和显示功能(用12小时制显示)。包括上下午标志,时、分的数字显示,秒信号指示。
(2)能设置当前时间(含上、下午,时,分)
(3)能实现基本打铃功能,规定:
上午6:00起床铃:打铃5秒、停2秒、再打铃5秒。
下午10:30熄灯铃:打铃5秒、停2秒、再打铃5秒。
铃声可用小喇叭播放,凡是用到铃声功能的均按此处理
(二)发挥部分
(1)增加整点报时功能,整点时响铃5秒,要求有控制启动和关闭功能。
(2)增加调整起床铃、熄灯铃时间的功能。
(3)增设上午4节课的上下课打铃功能,规定如下:
7.30 上课,8.20下课:8.30上课,9.20下课;9.40 上课,10.30下课;10.40上课,11.30下课;每次铃声5秒。
(4)特色和创新自选。
三、设计步骤
(1)设计能正常工作的一个单片机最小硬件系统,外围电路包括设置键盘,LCD或LED的显示屏;
(2)进行软件设计,利用单片机系统时钟先设计一个高精度的内部时钟系统,最小精确时间为期1秒;
(3)在秒计数器的基础上设计一个24小时时钟,并设计若干定时功能;
(4)设计打铃执行机构,完成自动打铃功能。
四、课程设计说明书要求
后面略......
公开我的主要设计资料:
主程序流程图:
汇编程序清单:
/***************************************************************
程序名称:51单片机自动打铃系统
简要说明:实现24小时制电子钟,8位数码管显示,显示时分秒显示格式:23-59-59(小时十位如果为0则不显示)
到预定时间启动蜂鸣器模拟打铃,蜂鸣器BEEP:P3.7
打铃方式分起床、熄灯铃和上、下课铃两种
系统使用4只按键,3只按键用来调整时间,fpc连接器,防水连接器,连接器论坛,供应另一只为强制打铃按钮
调整选择键SET_KEY:P1.0;通过选择键选择调整位,选中位闪烁
增加键ADD_KEY:P1.1;按一次使选中位加1
减少键DEC_KEY;P1.2;按一次使选中位减1
如果长按ADD_KEY或DEC_KEY,识别后则进行调时快进,此时停止闪烁如果选中位是秒,则按增加键或减少键都是将秒清零
强制打铃键DALING_KEY:P1.3;用来强制打铃或强制关闭铃声
P0口输出数码管段选信号,P2口输出数码管位选信号。晶振12M
编写:
最后更新:09/1/2晚
***************************************************************/ BEEP EQU P3.7;定义蜂鸣器(电铃)控制信号输出口
ORG 0000H;程序入口地址
LJMP START
ORG 000BH;定时器0中断入口地址
LJMP TIMER_0
ORG 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;用于控制调时闪烁的基准时钟的产生
MOV IP,#02H;IP,IE初始化
MOV IE,#82H
MOV TMOD,#01H;设定定时器0工作方式1
MOV 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;调用响铃方式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 TH0,#3CH
MOV TL0,#0B0H ;重新赋定时初值
CPL 47H;产生脉冲用于调时快进时基
INC 24H
MOV A,24H
CJNE A,#10,ADD_TIME;产生0.5秒基准时钟,用于调时闪烁
CPL 48H;取反调时闪烁标志位
MOV 24H,#00H