基于单片机的打铃系统设计.docx

上传人:b****5 文档编号:7426272 上传时间:2023-01-23 格式:DOCX 页数:30 大小:1.48MB
下载 相关 举报
基于单片机的打铃系统设计.docx_第1页
第1页 / 共30页
基于单片机的打铃系统设计.docx_第2页
第2页 / 共30页
基于单片机的打铃系统设计.docx_第3页
第3页 / 共30页
基于单片机的打铃系统设计.docx_第4页
第4页 / 共30页
基于单片机的打铃系统设计.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

基于单片机的打铃系统设计.docx

《基于单片机的打铃系统设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的打铃系统设计.docx(30页珍藏版)》请在冰豆网上搜索。

基于单片机的打铃系统设计.docx

基于单片机的打铃系统设计

天津大学网络教育学院

专科毕业论文

 

题目:

基于单片机的打铃系统设计

完成期限:

2016年1月8日至2016年4月20日

 

学习中心:

专业名称:

电气自动化技术

学生:

陆华

学生学号:

2

指导教师:

伯颖

基于单片机的打铃系统设计

引言

随着科技的不断发展,各种芯片都得到了很好的发展,80C51同样如此,从开始的无人问津到现在的随处可见,红绿灯,记分牌,电子秒表,遥控器,电饭煲,电视等只要是电子产品,都会和芯片有关,其实芯片并不是什么神秘的高科技,它只是里面装了一些己编好的程序而己.而这里要介绍的是用汇编语言来编程的一个系统,它能够让一个学校或企业集团实现打铃自动化,总之,一个需要时间系统的机构实现自动提醒功能。

当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未有的速度被单片机智能控制系统所取代。

单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。

目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。

而本文是用AT89C51单片机设计的一个自动打铃系统。

 

第一章设计方案论证

1.1设计要求

它可以作为时钟电路来显示时间,进行设置,定时打铃。

按照自顶向下设计方法划分自动打铃系统的功能。

可分为:

时间设置电路,计时电路,显示电路和定时打铃控制电路等。

以信息职业技术学院的打铃情况设计

时间

起床

6:

30

早自习

7:

30-8:

10

第一节课

8:

20-9:

00

第二节课

9:

10-9:

50

第三节课

10:

00-10:

40

第四节课

10:

50-11:

30

第五节课

13:

30-14:

10

第六节课

14:

20-15:

00

第七节课

15:

20-16:

00

第八节课

16:

10-16:

50

晚自习

19:

00-20:

30

熄灯

22:

30

1.2设计方案选择

1.2.1方案一:

数字电路设计的自动打铃系统

利用函数信号发生器来进行脉冲信号输出,利用74160N来设置十进制和六进制的进位输出。

利用数码显示器来显示时间,利用或门、与门、非门、与非门、等电路元件进行组合实现打铃的控制。

1.2.2方案二:

基于单片机的自动打铃系统设计

单片机部存储器设三个字节分别存放时钟的时、分、秒信息。

利用定时器与软件结合实现1秒定时中断,没产生一次中断,存储器相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将时字节清零。

建立完一个实时时钟后接下来进行定时处理和打铃输出,当主程序检测到有分进位标志时,便开始比较当前时间与信息时间表上的作息时间是否相同,相同者,则进行报时处理并控制打铃,不相同则返回主程序。

1.2.3方案确定

方案一的设计只能事先设定打铃时间不能完全自动打铃,且在修改打铃时间上存在一定的困难。

而方案二中的设计能完全实现自动化,诠释了我们这次毕业设计的主题。

并在修改打铃时间上有了很大的方便,只需修改一部分程序便能实现不同的需要。

因此我选择方案二进行设计。

1.3基本方案

1.3.1设计课题简要概述

自动打铃装置用于工厂、学校等地的时间控制,本设计是按照学校作息时问设定的,模拟了电了钟显示时、分、秒。

还根据学校的作息时间按时打铃,本系统有4个按钮,分别用来调时、调分、秒和强制打铃及强制关铃,以保证始终与标准时间相吻合。

首先设计出本系统的硬件基本框图,根据框图设计电气原理图,简要概述基本原理,按照设计技术参数设计出各部分程序。

1.3.2系统软硬件划分

由于需要最小系统设计,因此,极介于系统的硬件成本,所有能用软件实现的功能都用软件完成,如按键的去抖,采用延时,显示部分用动态显示等,这样硬件部分的设计可以采用单片机最小系统,所谓最小系统时仅有程序存储器和时钟及复位电路的单片机系统。

1.3.3单片机选型

根据课题的具体容,任务要求,计时、校时、定时、键盘显示等功能,经多方面考虑,所选系统选项用.与MSC-51单片机完全兼容的AT89C51低功耗单片机。

1.4总体设计框图

图一整体框图

 

第二章硬件电路设计

2.1基本原理概述

本系统主要由主控模块,时钟模块,显示模块,键盘接口模块等4部分构成。

通过部定时产生中断,从而使驱动电铃打铃。

设定51单片机工作在定时器工作方式1,每100ms产生一次中断,利用软件将基准100ms单元进行累加,当定时器产生10次中断就产生lS信号,这是秒单元加1。

同理,对分单元和时单元计数从而产生秒,分,时的值,通过六位七段显示器进行显示。

由于动态显示法需要数据所存等硬件,接口较复杂,考虑显示只有六位,且系统没有其他浮躁的处理程序,所有采用动态扫描LED的显示。

本系统采用四个按键,当时钟时间和设置时间一直时,驱动程序动作,进行打铃,每次打铃30S

2.2主要原件参数及功能简介

2.2.1主控器AT89C51

AT89C51公司生产的AT89C51单片机用高性能的静态89C51设计,由先进工艺制造,并带有非易失性FLASH程序存储器,它是·种高性能、低功耗的8位CMOS微处理芯片,市场应用最多,主要特点有:

有4K的FLASH程序存储器

256字节部RAM

电源控制模式:

时钟可停止和恢复,空闲模式,掉电模式

6个中断源

4个中断优先级

4个8位I/O口

全双工增强型UART

2个16位定时、计数器

图二AT89C51

2.2.2DS1302时钟电路DS1302

(1)性能特性

实时时钟可对秒,分,时等进行计数,存在高速数据暂存的31*8位RAM,最少引脚的串行I/O口;2.5~~5.5V电压工作围;2.5V耗电小于300nA;用于时钟或RAM数据读/写的单字节或多字节数据传送方式;简单的3线接口;可选的慢速充电的能力。

DS1302时钟芯片包括实时时钟和31字节的静态RAM,它经过一个简单的串行接口与微处理器通信,实时时钟提供秒,分,时等信息,时钟运行可以采用24H,或带AM/PM的12H格式,采用三线接口与CPU进行同眇通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。

DS1302有主电源/后备电源双电源引脚;

1)性能特性

DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需用到三个口线:

1.RSE复位,2.I/O数据线,3.SCLK串行时钟。

时钟/RAM的读/写数据以一个字节或多达31个字节的字符组方式通信。

DS1302工作时功耗很低,保持数据和时钟信息时功率小十1mW。

提供秒分时日日期。

月年的信息,每月的天数和闰年的天数可自动调整时钟,操作可通过AM/PM指示决定采用24或12小时格式。

2)管脚描述

XIXZ32.768KHz晶振管脚

GND接地

RST复位脚

I/O数据输入/输出引脚

SCLK串行时钟

Vcc1,Vcc2电源供电管脚

DS1302串行时钟芯片8脚DIP

DS1302S串行时钟芯片8脚SOIC200mil

DS1302Z串行时钟芯片8脚SOIC150mil

图三DS1302

2.3单元电路的设计

2.3.1时钟电路设计

(2)工作原理

DS1302在任何数据传送时必须先初始化,把RST引脚置为高电平,然后把8位地址和命令装入移位寄存器,数据在SCLK的上升沿被输入,无论是读周期还是写周期开始8位指定40个寄存器中哪个将被访问到,在开始8个时钟周期,把命令字节装入揿位寄存器之后,另外的时钟周期在闱时操作时输出数据,在写操作时写入数据,时钟脉冲的个数在单位字节下为8加8,在多字节方式下为8加字节数,最大可达248字节数。

为了提高对32个地址的寻址能力,可以把时钟或RAM寄存器规定为多字节方式,在多字节方式中,读或写从地址0的位0开始,必须管按数据传送的次序电先的8个寄存器。

但是当以多个字节写RAM时,为了传送数据不必写所有31字节,不管是否写了全部31字节,所写的每个字节都将传送至RAM。

时钟暂停:

秒寄存器的位7定义位时钟暂停位,当它为1时,DS1302停止振荡,进入低功耗的备份方式,通常在对DS1302进行写操作时,停止振荡,当它为0时时钟将开始启动。

8051通过串口向DS1302写数据的程序框图如图3.2,其中,Px可以是8051单片机的任何一位I/O口,注意因为DS1302的数据发送或接收时序和8051的串行口不完全一致,因此,需要在TXD的输出端加反相器,另外,接收数据时,不能以串行口的接收方式接收,必须将串行口当作普通I/O口进行数据接收.

DS1302的晶振选用32.768KHZ,电容推荐值为6PF,因为振荡频率较低,也可以不接电容,对计时精度影响不大。

图3.2DS1302写数据的程序框图

2.3.1显示电路设计

显示部分采用普通的共阳数码管显示,采用动态扫描,以减少硬件电路,数码管分别为十时,时,十分,分,十秒,秒显示,显示时采用串行口输出段码,用74LS164来驱动数码管扫描只需7ms。

4LS164部位8个D触发器,用以实现数据的串行移位,74LS164位TTL单向8位移位寄存器,可实现串行输入并行输出,CPU位时钟输入端,可接到串行口TXD端。

每个时钟信号的上升沿加到CP端时,移位寄存器移一位,8个时钟脉冲过后,8为二进制数个部移入74LS164中,MR为复位端,当该位为低电平时,移位寄存器各位复O。

当它为高电平时时钟脉冲才起作用。

图四显示电路

2.3.2键盘接口电路设计

由于键盘只有四个,采用独立式按钮,分别与8051的P1.0,P1.1,P1.2相连,用普通按钮10K上拉电阻,用查询法完成读健功能。

图五按键电路

2.3.3响铃电路设计

响铃电路用到了蜂鸣器、三极管、1K电阻。

蜂鸣器两端分别接地和三极管。

三极管一段电源另一端与电阻相连并接入AT89C51的P3.7接口。

图六响铃电路

2.4总体运行进程

首先实现24小时制电子钟,在8位数码管显示,显示为时分秒,实现的格式为:

23-59-59。

到达预定时间启动蜂鸣器开始打铃,打铃的方式分为起床、熄灯和上下课铃两种。

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

通过选择键选择调整位,选中位闪烁,按增加键为选中位加1,按减少键为选中位减1。

按强制打铃按钮是实现强制打铃或者强制关闭打铃。

 

第三章软件电路设计及流程图

3.1基本原理概述

主程序首先是初始化部分,主要是计时单元清零,中断初始化,堆栈指针初始化,启动定时器工作,然后是调用显示子程序。

主程序的起始存储地址是0000H单元,但由于本系统用了定时器T0的中断,中断服务程序入口地址为000BH,因此从0000H单元起存放一条短调转指令AJMP,使真正的主程序从0300H单元开始存放。

3.1.1中断服务程序设计

单片机部的定时/计数器T0定时100ms,即0.1s,10次中断即为1秒,60秒为1分,60分为1小时,24小时为一天,如此循环,从而实现计时功能。

编写中断服务程序关键要注意:

1.现场保护,本系统中是累加器A和程序状态字PSW值的保护。

2.计时处理时采用的确十进制,因此时,分,秒单元加1后要进行十进制调整,即要执行DAA指令,还要注意的是时计到24就回零,分和秒计到60就回零。

3.中断返回前的现场恢复。

3.1.2显示程序设计和按键判断与按键处理程序设计

显示采用的是动态显示,段控和位控都经过反相器,显示的字形代码是共阳的显示代码,位控信号输出时是高电平有效,在校时时,采用的是点亮小数点信位调节器标志,哪位小数点亮表示调整的是该为的值。

显示子程序的第一部分是拆字,显示缓冲区是2FH—2AH;第二部分是查字型码,输出段控和位控信号,由于采用的是动态显示,所以每出输出一位的段控和位控信号要延时一定的时间,使LED显示器显示的字符时稳定的。

按键判断程序有编写时应注意按键的去抖动,该系统采用的是延时去抖动的方法,延时是通过调用子程序来实现的,每个按键按下后都要等待释放后再返回。

按键处理程序中的按键式校时的,所以进入按键处理程序后就关闭定时中断,对于动能键注意设置显示标志。

3.2流程图

3.2.1系统主程序流程图

3.2.2系统定时中断流程图

第四章系统程序设计

4.1程序设计概要

程序名称:

51单片机自动扫铃机控制系统

说明:

实现24小时制电子钟,8位数码管显示,显示时分秒显示格式:

23-59-59(小时十位如果为0则不显示)。

到预定时问启动蜂鸣器模拟打铃,蜂鸣器BEEP:

P3.7。

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

系统使用4只按键,3只按键用来调整时间,另一只为闹钟按钮即定时扫铃。

键SET_KFY:

PI.0;通过选择键选择调整位,选中位闪烁。

增加键ADD_KEY:

PI.1;按一次使选中位加1。

减少键DEC_KEY:

PI.2;按一次使选中位位。

1

如果长按ADD_KEY或DEC_KEY,识别后则进行调时快进,此时停止闪烁。

如果选中位是秒,则按增加键或减少键都是将秒清零。

定时扫铃键DALING_KEY:

P1.3;用来强制打铃或强制关闭铃声PO口输出数码管段选信号,P2口输出数码管位选信号。

晶振12M

 

4.2源程序清单

根据以上流程图思想,现设计系统程序思路描写如下系统的主程序如下所示:

BEEPEQUP3.7;定义蜂l鸣器(电铃)控制信号输出口

ORG0000H;程序入日地址

LJMPSTART

ORG000BH;定时器0中断入日地址

LJMPTIMER_O

ORG0300H

/*****程序开始,初始化*****/

START:

SETBBEEP;关闭蜂鸣器(电铃)

SETB48H;使用一个bit位用于调时闪烁标志

SETB47H;使用一个bit位用十产生脉冲用十调时快进时基

CLR45H;关闭响铃方式标志

MOVRI,#0调整选择键功能标志:

0正常走时、1调时、2调分、3调秒

MOV20H,#00H;用于控制秒基准时钟源的产生

MOV21H,#00H;清零秒寄存器

MOV22H,#00H;清零分寄存器

MOV23H,#00H;清零时寄存器

MOV24H,#00H;用于控制调时闪烁的基准时钟的产生

MOVIP,#02H;IP,IE初始化

MOVIE,#82H

MOVTMOD,#olH;设定定时器01作方式1

MOVTHO,#3CH

MOVTLO,#oBoH;赋定时初值,定时50ms

SETBTRO;启动定时器0

MOVSP,#4OH;重设堆栈指针

/*****主程序*****/

MAIN:

CJNER1,#00H,MAINl;是否为正常走时状态

LCALLBIJIAO1;调用起床、熄灯打铃比较子程序

LCALLBIJIAO2;调用上、下课少打铃比较子程序

LCALLDALING;调用响铃方式执行子程序

MAIN1:

LCALLDlSPLAY;调用显示子程序

LCALLKEY_SCAN;调用按键检测子程序

JZMAIN;无键按下则返回重新循环

LCALLSET_KEY;调用选择键处理子程序

JB46H,MAIN;如果已进行长按调招(调时快进),则不再执行下面的单步调整

LCALLADD_KEY;调用增加键处理子程序

LCALLDEC_KEY;躺用减少键处理子程序

LCALLDALING_KEY;处理强制打铃/强制关闭铃声键

LJMPMAIN;重新循环

程序结束

(主程序中引用到的字程序如下)

/*****定时中断服务程序*****/

TIMER_O:

PUCHACC

PUCHPSW;保护现场

MOVTHO,#3CH

MOVTLO,#0B0H;重新赋定时初值

CPL47H;产生脉冲用于调时快进时基

INC24H

MOVA,24H

CJNEA,#l0,ADD_TIME;产0.5秒基准时钟,用于调时闪烁

CPL48H;取反调时闪烁标志位

MOV24IJ,#00H

ADD_TIME:

INC20H

MOVA,20H

CJNEA,#20,RETI1;产生l秒基准时钟

MOV20H,#O0H;一秒钟时间到,清零20H

MOVA,21H

ADDA,#01H

DAA;做十进制调整

MOV21H,A

CJNEA,#60H,RETIl

MOV21H,#00H;一分钟到

MOVA,22H

ADDA,#01H

DAA

MOV22H,A

CJNEA,#60H,RETI1

MOV22H,#00H;一小时到

MOVA,23H

ADDA,#01H

DAA

MOV23H,A

CJNEA,#24H,RETI1

MOV23H,#00H;到24点,清零小时

RETI1:

POPPSW

POPACC;恢复现场

RET1;中断返回

/*****显示处理*****/

DISPLAY:

MOVA,#21H;秒

ANLA,#0FH

MOV2FH,A;转换出秒个位,存入2FH

MOVA,21H

ANLA,#OFOH

SWAPA

MOV2EH,A;转换出秒十位,存入2EH

JB46H,MIN;如果长按按键(调时快进),则跳过闪烁处理

CJNER1,#3,MIN;如果R1为3,闪烁秒位待调整

JB48H,MIN

MOVZFH,#OAH;使该位为10,查表得到使该位不显示的输出

MOV2EH,#0AH

MIN:

MOVA,#22H;分

ANLA,#0FH

MOV2DH,A;转换出分个位,存入2DH

MOVA,22H

ANLA,#OFOH

SWAPA

MOV2CH,A;转换出分十位,存入2CH

JB46H,HOUR;如果长按按键(调时快进),则跳过闪烁处理

CJNER1,#2,HOUR;如果R1为2,闪烁秒位待调整

JB48H,HOUR

MOVZDH,#OAH;使该位为10,查表得到使该位不显示的输出

MOV2CH,#0AH

HOUR:

MOVA,#23H;时

ANLA,#0FH

MOV2BH,A;转换出时个位,存入2BH

MOVA,23H

ANLA,#OFOH

SWAPA

MOV2AH,A;转换出时十位,存入2AH

JB46H,DISP;如果长按按键(调时快进),则跳过闪烁处理

CJNER1,#1,DISP;如果R1为1,闪烁秒位待调整

JB48H,DISP

MOVZBH,#OAH;使该位为10,查表得到使该位不显示的输出

MOV2AH,#0AH

/*****数码管动态扫描显示*****/

DISP:

MOVDPTR,#TABLE

MOVA,2FH

MOVCA,A+DPTR

MOVP0,A

CLRP2.7

LCALLDELAY

SETBP2.7;显示秒个位

MOVA,2EH

MOVCA,A+DPTR

MOVP0,A

CLRP2.6

LCALLDELAY

SETBP2.6;显示秒十位

MOVA,#0BFH

MOVP0,A

CLRP2.5

LCALLDELAY

SETBP2.5;显示“-”

MOVA,2DH

MOVCA,A+DPTR

MOVP0,A

CLRP2.4

LCALLDELAY

SETBP2.4;显示分个位

MOVA,2CH

MOVCA,A+DPTR

MOVP0,A

CLRP2.3

LCALLDELAY

SETBP2.3;显示分十位

MOVA,#0BFH

MOVP0,A

CLRP2.2

LCALLDELAY

SETBP2.2;显示“-”

MOVA,2BH

MOVCA,A+DPTR

MOVP0,A

CLRP2.1

LCALLDELAY

SETBP2.1;显示时个位

MOVDPTR,#TABLE1;该位使用TABLE1以消除前置0

MOVA,2AH

MOVCA,A+DPTR

MOVP0,A

CLRP2.0

LCALLDELAY

SETBP2.0;显示时十位

RET

/*****按键检测子程序*****/

KEY_SCAN:

CLR46H;关闭长按调整(调时快进)标志

MOVP1,#OFFH;将P1口设置成输入状态

MOVA,P1

CPLA

ANLA,#OFH;P1口低4位连接4个按键,只判断该4位

JZFXIT_KFY;无键按下则返回

LCALLDELAY;延时去抖动

MOVA,P1;重新判断

CPLA

ANLA,#OFH

JZEXIT_KEY;键盘去抖动

MOVR5,A;临时将键值存入R5

MOVR4,#0OH;用于控制调时快进速度

;设置为OOH是为了在进入长按处理前加长延时区分用户的长按与短按,防止误快进

LOOP:

;进入长按处理

LCALLDISPLAY;使长按时显示正常

MOVA,Pl

CPLA

ANLA,#OFH

JB47H,LOOP1

INCR4;调时快进间隔时间基准加l

LOOP1:

CJNER1,#03H,LOOP2;如果调秒时长按,则不处理

LJMPLOOP3

LOOP2:

CJNER4,#99H,LOOP3

MOVR4,#7OH;确认用户长按后,重新设定起始值,加快调时快进速度

SETB46H;长按调整〔调时快进)标志

LCALLADDKEY

LCALLDECKEY

LOOP3:

JNZLOOP;等待键释放

MOVA,R5;输出键值

RET

EXIT_KEY;

RET

/*****延时子程序*****/

DELAY:

MOVR7,#150

DJNZR7,$

RET

/*****选择键处理子程序*****/

SET_KEY:

CJNER5,#01H,EXIT;选择键键值

INCR1;调整选择功能标识加一

SETBBEEP

CJNER1,#4,EXIT

MOVR1,#0

MOV24H,#00H;调时闪烁基准清零

RET

/*****增加键处理子程序*****/

ADD_KEY:

CJNER5,#02H,EXIT;增加键键值

CJNER1,#01H,NEXT1;选择键功能标志为l,调时,否则跳出

MOVA,23H

ADDA,#01H

DAA

MOV23H,A

CJNEA,#24H,EXIT

MOV23H,#00H

NEXT1:

CJNER1,#02H,NEXT2;选择键功能标志为2,调分,否则跳出

MOVA,22H

ADDA,#01H

DAA

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1