首页 > 范文大全 > 正文

一种基于单片机的校园打铃系统的实现

开篇:润墨网以专业的文秘视角,为您筛选了一篇一种基于单片机的校园打铃系统的实现范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:单片机的控制性和适应性强的特点使得单片机当今被越来越广泛的使用。针对目前的打铃系统的缺陷,该文使用AT89S51单片机为核心模块,设计出一种基于单片机的打铃系统,并给出了该系统的主要部件电路图和软件程序。该系统打铃精准,操作方便,可靠性高。

关键词:单片机;AT89S51;打铃系统;高效性

中图分类号:TP338 文献标识码:A 文章编号:1009-3044(2013)32-7236-04

单片机是单个芯片上集成了微处理器、内存、外存、I/O接口、总线等设备的一种单片微型计算机。它有两大特点:控制性能和可靠性高,体积小、价格低、易于产品化。正是这两大特点使得单片机的使用领域越来越广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,变成智能化的数字产品。

众所周知,铃声作为学校教师和学生同步的信号显得尤为重要。自动打铃系统不断影响着我们的学习和生活,它已被广泛应用于各个学校中,它能够实现学校的办公自动化,便于学校的管理。自动打铃器是控制铃声的一种电子设备,既可以根据具体情况精准的设置不同的打铃时间点,也可以对广大师生的作息时间做更好的管理。就目前情况而言,市场上打铃器多为小规模集成电路构成,其性能单一,可扩展性和实用性不强。随着日新月异的计算机技术的发展,尤其是可靠性高,体积小、价格低、易于产品化的单片机技术的应用,使的基于单片机的校园打铃系统不但功能强大,时间点精准,而且用户操作起来非常方便。

1 AT89S51单片机介绍

AT89S51单片机[1]是MCS-51系列单片机的典型代表,是在一个高性能CMOS8位单片机,芯片内集成了通用8位中央处理器,片内含4KB的可反复擦写1000次的FLASH只读程序存储器(ROM),支持ISP功能。AT89S51内部还有128字节的随机存取数据存取器(RAM)、5个中断源、2层中断优先级、2个16位可编程定时计数器、2个全双工串行通信口、片内时钟振荡器,兼容标准MCS-51指令系统及80C51引脚结构。AT89S51共有40个引脚,其中32个双向输入/输出端,8个特殊控制引脚。

AT89S51单片机设计和配置了振荡频率可为 0HZ并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直到外部中断激活或者硬件复位。同时该单片机还具有PDIP、TQFP、PLCC等三种封装形式以适应不同产品的需求[2]。

2 基于AT89S51单片机的自动打铃控制系统

设计基于单片机的校园打铃系统,就是要实现利用单片机驱动打铃器。由于大多数情况下单片机的驱动能力有限,因而需要适当加上硬件将单片机的高、低电平变成控制电铃通断的电路。因此采用将单片机输出信号放大后驱动继电器,用继电器的触头控制电铃电路的断开与接通[3]。另外要保证设置的打铃时间数据在掉电的时候也不会丢失,同时实现在系统运行时能修改打铃时间,经考虑采用外部储存芯片存储打铃数据。在具体电路中,该文采用具有代表性实用芯片和I2C总线,显示器件使用LED数码管,其驱动电路采用动态显示的驱动电路。

整个系统以AT89S51为控制核心,它由单片机复位电路、振荡电路、控键电路、报警电路和显示电路6部分模块组成,电路的原理框图如图1所示。

其工作原理:控制电路模块和控键电路模块把一些控制命令和预设数据输入到单片机中,单片机工作进行数据处理,输出数据一方面在显示电路模块中用来显示时间,一方面在报警电路模块中用于定点响铃用,当系统故障或者用户需要时可以通过复位电路模块进行系统复位。

3 单片机打铃系统主要硬件电路

下面就本系统简单的介绍下主要模块功能:

3.1 控件电路模块

控制电路如图2所示,是用户对打铃控制器操作的重要部分,也是学校管理时间节点的关键,具体实现是通过按键来实现各功能。此电路的设计主要实现对打铃时间的调整与设定,当系统显示的时间与实际时间有误差时,可以通过人工操作进行调整。具体操作如下:按下K2键可以对个位秒数值进行0—9之间的调整,如果对十位秒进行调整,则先按下K3键,再按K2键对十位秒数值进行0—9之间的调整,对其他位调整同以上步骤。最后当对时间调整完毕,则按下K1键则系统恢复到正常运行状态[4]。

3.2 显示电路模块

显示驱动电路模块从单片机AT89S51的21-26端口获取信号,让电路所接到的信号经过显示驱动电路进行放大,根据设定的程序轮流来点亮这6位数码管,显示不同的时间[5]。因为电路设计过程中本身并没有显示驱动电路来点亮数码管,所以单片机AT89S51的P0端口来传送数据8位数据线则要加上拉电阻,才能点亮显示出数据。

4 系统主要软件框架及部分程序

经过分析设计,整个系统程序设计框架图4如下,由于C语言具有可靠性和通用移植性,因此本系统核心程序使用C语言表述。

4.1 系统时间的设置

设置打铃时间实际上就是将要打铃的时间所对应的数字写入串行存储器,因而应分为两部分,即数据的输入和数据的写入[6]。按下“修改时间”按键时,将显示的数字作为系统时间的小时和分。显示的数据在time[1]和time[0]两个单元中,具体调整函数如下;

void ChangeTime( )

{

Write_DS1302( 0x8e,0x00); //WP=0

Write_DS1302( 0x80,0x00); //second=0

Write_DS1302( 0x82,time[0]); //minute=time[0]

Write_DS1302( 0x84,time[1]); //hour=time[1]

Write_DS1302( 0x8e,0x80); //WP=1

}

4.2 打铃时间的设置

当按下“打铃时间”按键时,将显示的数字作为打铃的小时和分,并写串行存储器中。如果按下“清除”按键时,将所有打铃时间清除。作为本系统的打铃时间,在串行存储于从OxA002开始的单元中,每两个单元为一组数据,分别表示小时和分,打铃时间的个数以整型数据存储于OxA000开始的两个单元中。因而,“清除”操作可通过将OxA000开始的两个单元写入数据0来实现[7]。而写入打铃时间时,需要先从该单元读出数据个数,计算写入数据的地址,再写入数据,并将打铃个数加1后再次写入。具体函数如下:

Void SetBellTime( uchar dHour,uchar dMinute)

{

Uchar dhigh,dlow;

Int num,dAddres;

num=I2CReadByte(0xa0,0x00)*256+I2CReadByte( 0xa0,0x01);

dAddres=0XA002+num+num;

num++;

I2CSendByte(0xa0,0x00,num/256);

I2CSendByte(0xa0,0x01,num%256);

Adhigh=dAddres/256;

Adlow= dAddres%256;

I2CSendByte(adhigh,adlow,dHour);

I2CSendByte(adhigh,adlow+1,dMinute);

}

4.3 打铃驱动程序的设置

本系统中,规定打铃时间长度为10秒,并且为每分钟的前10秒[8]。当有打铃时间与当前系统时间相同且小于10秒时,让电铃通电,即让P1.0输出高电平;否则,让P1.0输出低电平。为了控制打铃,需要将当前时间和所有设置的时间进行比较,若有相同的时间,再比较秒,都符合要求时,控制输入为1。也就是将所有存储于外存中的时间搜索一遍,每读出一个数据,就比较一次,如果相同,就是打铃的时间,如果不相同,继续搜索比较,直到结束为止,具体打铃控制函数如下:

void Bell( )

{

Uchar dhigh=0xa0,dlow=0x02,Belltime=0;

Int i ,num;

num=I2CReadByte(0xa0,0x00)*256+I2CReadByte( 0xa0,0x01); //打铃次数

for( i=0;i

{

if((hour==12CReadByte(dhigh,dlow))&&(minute==I2CReadByte(dhigh,dlow+1)))

{ Belltime=1;break; } // 是否是打铃时间

dlow=dlow+2; //下一个地址

if(dlow==0) dhigh=dhigh+2;

}

if ((Belltime==1)&&( second

else Bell=0;

}

5 结束语

在本系统中,我们以89s51单片机为核心部件,加之复位电路、晶振电路、控键电路、报警电路、显示电路等协同控制,一起完成高效的打铃系统,与别的系统相比,打铃时间更精准,用户操作起来更方便,并且系统掉电时候,时间能够继续,数据能够保持。通过对单片机89s51的设计和应用,使我对单片机的工作原理及功能有了更加深刻的了解,并且对单片机程序语言设计有了进一步的认识。

参考文献:

[1] 陈宝江.MCS单片机应用系统实用指南[M].北京:机械工业出版社,1997.

[2] 孙育才.MCS-51 系列单片微型计算机及其应用[M].南京:东南大学出版社,1997.

[3] 佟云峰.单片机原理及应用[M].北京:机械工业出版社,2007.

[4] 李广弟.单片机基础[M].北京:北京航空航天大学出版社,1994:81-82.

[5] 冯立杰,刘长泉.谈8031单片机中断系统的增强方法[J].武警工程学院学报, 2000(2):28-29.

[6] 秦志强.C51单片机应用与C语言程序设计[M].北京:电子工业出版社, 2007.

[7] 程继兴.单片机原理及应用[M].北京:中国传媒大学出版社,2007:5-12.

[8] 朱永金,成有才.单片机应用技术[M].北京:中国劳动社会保障出版社,2006.