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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

设计一台自动打铃系统

一、设计任务

用单片机器件为主体,设计一台自动打铃系统。

(1)按照设计标准,画出系统框图和系统硬件电路图。

(2)完成该课题的程序设计,提交程序设计框图及程序设计清单。

(3)提交课程设计报告

二、设计要求

(一)基本要求

(1)基本计时和显示功能(用12小时制显示)。包括上下午标志,时、分的数字显示,秒信号指示。

(2)能设置当前时间(含上、下午,时,分)

(3)能实现基本打铃功能,规定:

上午6:00起床铃:打铃5秒、停2秒、再打铃5秒。

下午10:30熄灯铃:打铃5秒、停2秒、再打铃5秒。

铃声可用小喇叭播放,凡是用到铃声功能的均按此处理

(4) 每天8节课的上下课打铃功能,规定如下:

8:00 上课,8:45下课,8:55上课,9:40下课;10:00 上课,10:45下课;10: 55上课,11:40下课;

2:00上课,2:45下课,2:55上课,3:40下课,4:00上课,4:45下课,4:55上课,5:40下课

每次铃声5秒。

(二)发挥部分

(1)增加整点报时功能,整点时响铃5秒,要求有控制启动和关闭功能。

(2)增加调整起床铃、熄灯铃时间的功能。

(3)特色和创新自选。

三、设计步骤

(1)设计能正常工作的一个单片机最小硬件系统,外围电路包括设置键盘,LCD或LED的显示屏;

(2)进行软件设计,利用单片机系统时钟先设计一个高精度的内部时钟系统,最小精确时间为期1秒;

(3)在秒计数器的基础上设计一个24小时时钟,并设计若干定时功能;

(4)设计打铃执行机构,完成自动打铃功能。

四、课程设计说明书要求

后面略......

公开我的主要设计资料:

主程序流程图:

汇编程序清单:

/***************************************************************

程序名称:51单片机自动打铃系统

简要说明:实现24小时制电子钟,8位数码管显示,显示时分秒显示格式:23-59-59(小时十位如果为0则不显示)

到预定时间启动蜂鸣器模拟打铃,蜂鸣器BEEP:P3.7

打铃方式分起床、熄灯铃和上、下课铃两种

系统使用4只按键,3只按键用来调整时间,另一只为强制打铃按钮

调整选择键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

ADD_TIME:

INC 20H

MOV A,20H

CJNE A,#20,RETI1 ;产生1秒基准时钟

相关文档
最新文档