单片机课程设计之自动打铃系统

合集下载
  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秒。

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

(二)发挥部分

(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

相关文档
最新文档