单片机系统课程设计课程设计名称:基于89C51的倒计时牌设计专业班级:学生姓名:学号:指导教师:课程设计地点:课程设计时间:2013-12-16~2013-12-27单片机系统课程设计任务书目录1 概述 (1)1.1 研究背景 (1)1.2 设计思想及基本功能 (1)2 总体方案设计 (2)2.1 方案选取 (2)2.2 系统框图 (3)2.3 总体方案设计 (3)3 硬件电路设计 (4)3.1 电源电路设计 (4)3.2 晶振电路 (5)3.3 复位电路 (6)3.4 键盘电路 (7)3.5 显示电路 (7)3.6 蜂鸣器及LED电路 (12)4 系统软件设计 (12)4.1 主程序软件设计 (12)4.2 键盘程序设计 (13)4.3 定时程序设计 (13)4.4 报警程序设计 (15)5 Proteus仿真 (15)6 总结 (18)参考文献 (19)附录A系统原理图 (19)附录B程序清单 (181)附录C机器码清单 (23)1概述1.1研究背景随着2014年新年钟声的临近,一年一度的全球华人文化盛宴春节联欢晚会也正式进入了紧张的倒计时。
诚如你所发现的那样,各式各样的倒计时牌开始逐渐的走进人们的视野。
我们现实的工作学习中也不可避免的接触到形形色色的倒计时牌,作为学生的我们记忆犹新的恐怕非高考百天倒计时牌莫属了,而最让国人觉得自豪的就是1997年香港回归的倒计时了,当倒计时牌归零的那一刻,冉冉升起的中国国旗再一次点燃国人沸腾的热血。
诸如此类的倒计时牌不胜枚举:2008北京奥运会倒计时、2010上海世博会倒计时牌等等。
日常生活中,我们不可避免的接触到各式各样的倒计时牌,当你开车时红路灯的短暂倒计时,当你玩游戏时游戏时间结束的倒计时…..,而这些不同功能不同含义的倒计时牌引起了我极大的兴趣,学完单片机后,让做出一个属于自己的倒计时牌成为可能。
在智能化产品中,单片机的应用已经越来越广泛,单片机以它体积小、质量轻、耗电省、可靠性高、价格低等优点,开始不断发展,AT89C51单片机是一款非常典型且实用的51单片机,网上资源和参考书比较多,所以我此次采用此型号的单片机作为倒计时牌的控制器件。
1.2设计思想及基本功能该倒计时牌采用廉价可靠的LED数码管显示,能够根据使用者的要求,结合实际情况设置不同时间长度的倒计时,在设定的倒计时时间结束时能够自动启动报警装置,并且显示恢复到初始状态。
利用专业的单片机仿真软件Proteus7.8来进行仿真,以验证设计的正确性同时达到降低设计周期的目的。
可设设置倒计时时间的倒计时牌系统具有以下几个基本功能:(1)利用8位数码管能够显示日、时、分、秒倒计时。
(2)通过按键来实现倒计时时间的设定。
(3)倒计时时间到时,蜂鸣器报警并使LED点亮。
2总体方案设计2.1方案选取单片机在各种电子产品中的应用已经越来越广泛,很多的电子产品利用单片机所取得的便利得到了人们的好评,针对单片机控制的倒计时牌要求,实现其功能的设计方案有三种:方案(一)传统纸质倒计时牌,通过人工手动翻页实现倒记作用。
方案(儿)采用单片机内部的16位定时器,并通过LCD液晶显示屏显示倒计时时间。
方案(三)同样采用单片机内部的16位定时器实现定时,并通过LED数码管显示出倒计时时间。
以上三种方案均能实现简单的倒计时功能,方案(一)与其他两种方案的主要不同在于倒计时的实现必须有人全程参与,方案(二)与方案(三)的主要区别在显示模块的选型问题上。
方案(一)虽然简单容易实现,并不依靠电力。
但全程必须人为参与费时费力且不符合自动控制的思想。
方案(二)采用单片机设计能够实现基本的自动控制,但采用技术上较为复杂的LCD液晶显示模块,操作上不易实现且LCD液晶显示器价格相对较高。
方案(三)与方案(二)的区别仅在于显示模块,此方案采用8位数码管显示模块,功能上容易实现、显示清晰而且价格相对较低。
目前小型倒计时牌大多采用这种形式。
在本次设计中我们采用简单易于实现的方案(三)。
在此方案中,使用性能优异的AT89C51单片机,具有体积小、质量轻、功能强大、可靠性较高、价格低等优点。
显示模块我们采用简单的数码管显示,倒计时牌只需要显示0~9个数字,因此LED数码管完全能够胜任且数码管功耗低、工作电流小、价格低廉便于实现等优点。
方案(二)虽然显示功能相对强大,但LCD液晶显示操作上相对难以实现,而且价格相对较高,更重要的是LCD液晶显示字体较小,远距离上对视觉上的观察有一定的困难。
基于以上原因,本次设计我们采用方案(三)。
下面图2.1a、b所示是方案(二)显示模块的实物图;图2.2是方案(三)的显示模块的实物图:图2.1a 方案(二)LCD1602液晶显示器图2.1b方案(二)12864液晶显示器图2.2 方案(三)LED数码管实物图2.2系统框图方案(三)的系统框图如图2.5。
图2.4 系统框图2.3总体方案设计随着越来越多的不同形式不同功能的倒计时牌的广泛应用,我们的日常生活中随处可见各式各样倒计时牌,本节我们将对基于89C51的倒记牌进行总体方案设计。
传统的纸质倒计时牌由于功能单一,必须有人全程参与等原因已经越来越不能满足人们的需求。
日前,随着单片机在日常生活,消费电子产品的广泛应用,各类电子倒计时产品也数见不鲜。
单片机控制的自动倒计时牌等电子产品给人们的生产生活带来了极大的便利。
基于89C51的倒计时牌系统能够满足一下几种简单的功能:(1)利用8位数码管能够显示日、时、分、秒倒计时。
(2)通过按键来实现倒计时时间的设定。
(3)倒计时时间到时,蜂鸣器报警并使LED点亮。
基于89C51的倒计时牌系统设计的总体框图如图2.6所示。
图2.6 倒计时牌结构框图3硬件电路设计3.1电源电路设计本设计是基于Proteus7.8仿真设计,而在Proteus硬件电路中,单片机是不需要额外电源的,电源有系统提供。
但在实际工程中电源电路是构成单片机最小系统的必不可少的组成部分,在此,我们依然给出电源的设计电路。
目前,很多单片机开发板上采用USB供电系统,单片机正常工作电压为5V,因此设计的电源电路主要是提供单片机工作电压。
图3.1是为单片机提供电压的电源电路。
在这个电路中采用了USB,可以输出5V的直流电压以供给单片机。
图3.1 电源电路图3.2晶振电路电路中的晶振即石英晶体震荡器,是利用石英晶体(二氧化硅的结晶体)的压电效应制成的一种谐振器件,石英晶体的压电效应:若在石英晶体的两个电极上加一电场,晶片就会产生机械变形。
反之,若在晶片的两侧施加机械压力,则在晶片相应的方向上将产生电场,这种物理现象称为压电效应。
由于石英谐振器具有体积小、重量轻、可靠性高、频率稳定度高等优点,被应用于家用电器和通信设备中。
石英谐振器因具有极高的频率稳定性,故主要用在要求频率十分稳定的振荡电路中作谐振元件。
图3.2是单片机的晶振电路。
片内电路与片外器件就构成一个时钟产生电路,CPU 的所有操作均在时钟脉冲同步下进行。
片内振荡器的振荡频率非常接近晶振频率,一般多在1.2MHz ~24MHz 之间选取。
C1、C2是反馈电容,其值在20pF ~100pF 之间选取,典型值为30pF 。
本电路选用的电容为22pF ,晶振频率为12MHz 。
振荡周期=s μ121,机器周期s S m μ1=,指令周期=s μ4~1。
图3.2 单片机晶振电路图XTAL1接外部晶体的一个引脚,XTAL2接外晶体的另一端。
在单片机内部,接至上述振荡器的反相放大器的输出端。
采用外部振荡器时,对HMOS单片机,该引脚接外部振。
在石英晶体的两个管脚加交变电场时,它将会产生一定频率的机械变形,而这种机械振动又会产生交变电场,上述物理现象称为压电效应。
一般情况下,无论是机械振动的振幅,还是交变电场的振幅都非常小。
但是,当交变电场的频率为某一特定值时,振幅骤然增大,产生共振,称之为压电振荡。
这一特定频率就是石英晶体的固有频率,也称谐振频率。
石英晶振起振后要能在XTAL2线上输出一个3V左右的正弦波,以便使MCS-51片内的OSC电路按石英晶振相同频率自激振荡。
通常,OSC的输出时钟频率fOSC为0.5MHz-16MHz,典型值为12MHz或者11.0592MHz。
电容C1和C2可以帮助起振,典型值为20pF -30pF,调节它们可以达到微调fOSC的目的。
3.3复位电路复位电路的主要功能是使单片机进行初始化,在初始化的过程中需要在复位引脚上加大于2个机器周期的高电平。
复位后的单片机地址初始化为0000H,然后继续从0000H单元开始执行程序。
在复位电路中提供复位信号,等到系统电源稳定后,再撤销复位信号。
但是为了在复位按键稳定的前提下,电源稳定后还要经一定的延时才撤销复位信号,以防在按键过程中引起的抖动而影响复位。
图3.3所示的复位电路可以实现上述基本功能。
图3.3 复位电路图3.4键盘电路键盘在由单片机控制的窗帘自动控制系统中的主要作用是通过按键向单片机输入指令,其中主要包括设定时间功能,是人工控制单片机的主要手段。
在倒计时牌设计中的键盘采用的2个独立键盘键盘。
这3个按键分别为:K1键设定键主要是用来设定切换时间位设定,即:时间的天,时、分、秒之间的切换,以及定时器的启动。
K2键,其作用主要是用于时间调整;复位键主要应用在程序出错以及误操作的时候使单片机复位,从而重新设定如图3.5所示。
图3.5 键盘接口电路3.5显示电路显示电路主要是用于显示时间。
采用LED数码管进行显示是因为LED数码管具有以下几个优点:(1)能在低电压、小电流条件下驱动发光,能与CMOS、ITL 电路兼容。
(2)发光响应时间极短(<0.1μs),高频特性好,单色性好,亮度高。
(3)体积小,重量轻,抗冲击性能好。
(1)我们都知道数码管有共阴极和共阳极两种类型,因此在使用上也有所区别,一般共阳极数码管必须外接电阻,共阴极不一定外接电阻。
共阴极数码管的发光二极管阴极必须接低电平,当某个发光二极管的阳极为高电平(一般+5V)时,此二极管点亮;共阳极数码管的发光二极管并接到高电平,对于需要点亮的发光二极管使其阴极接低电平即可。
显然,要显示某字形就应使次字形的相应字段点亮,实际就是送一个用不同电平组合代表的数据至数码管。
这种装入数码管中显示字形的数据称为字形码。
如图3.6和图3.7分别给出了LED数码管显示原理图和倒计时牌显示电路:图3.6 LED数码管显示原理图(2)MAX7219串行驱动LED数码管MAX7219是MAXIM公司生产的串行输入/输出共阴极数码管显示驱动芯片,一片MAX7219可驱动8个7段(包括小数点共8段)数字LED、LED条线图形显示器、或64个分立的LED发光二级管。