基于单片机的花样电子时钟设计与制作Word文件下载.docx
《基于单片机的花样电子时钟设计与制作Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于单片机的花样电子时钟设计与制作Word文件下载.docx(33页珍藏版)》请在冰豆网上搜索。
4.2点阵式LED花样显示的软件设计…………………………………………21
4.2.1点阵式LED花样显示软件系统设计………………………………21
5.花样电子时钟各模块之间的数据通信…………………………………………20
5.1AT89C52单片机并行接口的结构与特点……………………………………23
5.2时钟信号的串行通信…………………………………………………………23
5.3各模块之间数据通信的流程图………………………………………………23
5.3.1LED数码管时钟通信设置流程图……………………………………23
5.3.2点阵LED灯通信设置流程图…………………………………………24
6.设计特点与效果分析……………………………………………………………26
6.1设计功能介绍…………………………………………………………………26
6.2设计包含的技术要点…………………………………………………………26
6.3设计的特色……………………………………………………………………26
6.4设计总结………………………………………………………………………26
附录………………………………………………………………………………………28参考文献………………………………………………………………………………………43
致谢………………………………………………………………………………………44
中文摘要
单片机从20世纪70年代问世开始,以其极高的性价比,受到人们的重视和青睐,应用很广、发展也很迅速。
单片机体积小、重量轻、抗干扰能力强、环境要求不高、可靠性高、灵活性好、价格低廉、开发比较简单容易。
由于具有以上优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、家用电器、电力电子、智能仪器仪表、机电一体化设备等各个方面,而51单片机是各单片机中最有代表性和最为典型的一种。
这次毕业设计通过对它的学习、应用,以AT89C52芯片为核心,加以必要的电路,设计了一个简单的花样电子时钟,它由5.0V直流稳压电源供电,通过数码管能够准确显示时间,调整时间,同时通过LED显示出相应的图案,从而到达学习、设计、开发软、硬件的能力。
关键词:
单片机,定时器中断,串口通信,数码管,8*8点阵式LED
Abstract
SCMbeganthe20th70'
scentury,beingimportancedbypeoplewithhighlycost-effectiveandapplicationisverybroad,veryrapiddevelopment.Singledevelopedrelativelyeasybecauseofsmallsize,lightweight,stronganti-interference,theenvironmentlessdemanding,highreliability,goodflexibilityandlowcost.Becauseoftheseadvantages,inourcountry,SCMhasbeenwidelyusedinindustrialautomationcontrol,automatedtesting,householdappliances,powerelectronics,intelligentinstrumentsandmeters,electromechanicalintegrationequipmentandotherareas,and51single-chipmicrocontrolleristhemostrepresentativeandthemosttypicalone.Thegraduationprojectthroughitslearning,applicationstoAT89C52chipasthecore,tothenecessarycircuitry,designedasimplepatternofelectronicclock,whichconsistsof5.0VDCpowersupply,bydigitalcontroltoaccuratelydisplaythetimeadjustthetimeandthroughtheLEDdisplaypatterncorrespondingtoarriveatlearning,design,developmenthardwareandsoftwarecapabilities.
KeyWords:
SCM,timerinterrupt,serialcommunication,digitaltube,8*8dotmatrixLED
引言
基于单片机的定时和控制装置在许多行业有广泛的应用,而电子时钟是其中最基本,也是最具有代表性的一个例子。
在基于单片机系统的电子时钟电路中,除了基本的单片机系统和外围电路外,还需要外部的控制和显示装置。
花样电子时钟,输入装置是按键开关,显示装置是LED七段数码管和点阵式。
单片机系统的定时和中断是单片机最重要的资源,也是应用最为广泛的功能。
花样电子时钟程序主要就是利用定时器和中断实现计时和现实功能。
1.绪论
1.1花样电子时钟的背景及意义
花样电子时钟是采用数字电路实现对时、分、秒显示的计时装置,同时添加了花样LED显示,广泛用于个人家庭、车站、码头、办公室等公共场所,成为人们日常生活中必不可少的必需品。
由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得电子时钟的精确度,远远超过老式钟表,而且大大地扩展了钟表的报时功能。
诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启动等,所有这些,都是也钟表数字化为基础的。
因此,研究电子时钟及扩大其应用,有着非常显示的意义。
整个设计包括两大部分:
硬件部分和软件部分。
硬件是整个系统的基础,软件部分则是合理、充分地支持和使用系统的硬件,从而完成系统所要完成的任务。
2.整体设计方案
2.1总体设计
2.1.1花样电子时钟的功能需求
实现可以同时显示小时、分钟和秒,设有四个按键K0、K1、K2和K3;
K1键按一次调分钟,K1键连续按两下调小时,K0键是复位,K2键加1,K3键减1;
到整点通过蜂鸣器发出响声的次数来报时,同时点阵式LED显示不同的图案。
如图2-1所示:
图2-1功能需求流程图
2.1.2花样电子时钟总体设计方案
一、本系统的总体设计方案可用以下框图表示,如图2-2所示。
图2-2总体设计框图
二、本系统以52单片机组成的主控电路,以LED数码管来显示时、分、秒,以独立按键方式对时、分进行调整,以LED点阵模块来实现整点报时的花样显示。
主控电路选用美国Atmel公司生产的与MCS-51系列单片机完全兼容的AT89C52芯片作为电路核心。
它是Atmel微控制器家族中廉价的成员,内部集成了2kb的Flash闪存,不需外扩程序存储器,大大简化了电路结构。
由于要实现数码管时钟显示与点阵式LED花样显示同步,并且AT89C52端口资源较少(仅有P1、P2、P3口),所以需要两个主控电路即两个AT89C52芯片分别控制数码管时钟显示与点阵式LED花样显示。
两个主控电路利用串口通信实现通信。
电路采用8个共阳LED数码管作为电子时钟的显示器件,其中每两位分别用来显示时钟的时、分、秒,两位分别显示两条斜杠。
采用8*8点阵式LED作为时钟花样的显示器件。
按键由4个按键组成,分别用来进行电子时钟复位、时间调整等。
由于要用到8*8点阵式LED显示花样图案,所以要用到扩展板电路。
单片机时钟信号采用11.0592MHz晶振产生。
电源电路由三端集成稳压块LM7805提供稳定的+5V电压。
3.花样电子时钟的硬件设计
3.1数码管电子时钟的硬件设计
3.1.1数码管电子时钟的硬件原理图
电子时钟的计时方案是利用单片机内部的定时/计数器进行中断定时,配合软件延时实现对时、分、秒的计时,它处理过程如下:
首先设定单片机内部的一个定时器/计数器工作于定时方式,对机器周期计数形成基准时间(如10ms),然后用另一个定时器/计数器或软件计数的方法对基准时间计数形成秒(对10ms计数100次),秒计60次形成分,分计60次形成小时,小时计24次则计满一天。
然后通过数码管把它们的内容在相应位置显示出来既可。
数码管显示可以采用静态显示方法或动态显示方法。
静态显示方法需要数据锁存器等硬件,接口复杂,时钟显示一般用6个或8个数码管。
由于系统没有其他的复杂的任务处理,而且显示的时钟信息随时都可能变化,一般采用动态显示方法。
动态显示方法,线路相对简单,但须动态扫描,扫描频率要大于人眼视觉暂时频率(每秒24次),信息看起来才稳定。
译码方式可分为软件译码和硬件译码,软件译码通过译码程序查得显示信息的字段码;
硬件译码通过硬件译码器得到显示信息的字段码,实际中通常采用软件译码。
在具体处理时,定时器/计数器采用中断方式工作,对时钟的形成在中断服务程序中实现。
在主程序中只需对定时器/计数器初始化、调用显示子程序和控制子程序。
另外,为了使用方便,设计了简单的按键,可以通过按键实现时、分的调整,这样在主程序中就加入了键盘设置子程序。
整个系统的控制方案是:
上电后系统自动进入时间显示,从00—00—00开始计时;
通过按下时间设定/启动计时键,系统停止计时,进入到时间设定状态,系统保持原有的显示,等待键入当时时间,根据需要按相应的按键可以顺序设置时、分、秒,并在相应的数码管上显示设计值,设置完毕后,系统将从设定后的时间开始计时显示;
到整点时,蜂鸣器就鸣叫相应的次数(如3:
00am就鸣叫三次)。
基于系统上述的控制要求,设计出如下图所示的硬件电路,主要包括:
AT89C52单片机主控电路、扩展板电路、8位数码管显示电路、电源电路等,具体说明如下图所示:
图3-1单片机模块硬件原理图
图3-2数码管显示模块硬件原理图
一、主控电路
U1、C1、C2、Y1、C9、R9、S6构成主控电路的最小系统。
C1、C2、Y1是单片机时钟源产生电路,Y1选用11.0592MHz的晶振。
C1、R9是系统上电复位电路,S6为电路硬复位按钮。
二、扩展板电路
扩展板电路通过主控电路AT89C52的端口(P1、P2)与主控电路相连,它由点阵LED灯显示模块和数码管显示模块两部分组成;
点阵LED灯显示模块由8*8点阵式LED灯组成,数码管显示模块由是8位七段数码管组成。
三、显示电路
显示电路由U2、U3、Q1~Q7和8个共阳极七段式数码管组成(两位一组分别显示时、分、秒,剩余两位分别显示时、分、秒之间的短横线间隔)。
主控电路AT89C52的P1口为段选码输出端,通过74HC573与数码管相连,P2口为位选码输出端,分别通过三极管驱动与数码管阳极相连,三极管能对P2输入信号取反。
按键开关设定了4个,通过P1口相连。
四、蜂鸣器报时电路
由AT89C52的P3.6控制蜂鸣器(低电平有效)的驱动。
五、电源电路
电源电路由三端集成稳压块LM7805提供稳定的+5V电压。
3.2点阵式LED花样显示的硬件设计
3.2.1点阵式LED花样显示的硬件原理图
LED点阵显示模块实现的功能有:
通过AT89C52单片机的I2C接口接收显示数据;
用行扫描的方式进行显示,将行扫描串行数据和行显示串行数据分别发送给74LS04芯片进行显示。
LED为发光二极管的简称,是一种能将电能转换成光能的器件,当电流通过的时候可以产生可视的光。
每个LED点阵显示模块由16个8*8点阵LED组成。
LED点阵显示的工作原理是,共有16个管脚,0-7为阳极管脚,分别对应LED点阵从上到下的8行,A-H为阴极管脚,分别对应从左到右的8列,当对应的某一列置1电平,某一行置0电平时,则相应的二极管就亮。
LED显示器常用的工作方式有静态显示方式和动态显示方式。
所谓静态显示,就是当显示器显示一个字符时,相应的发光二极管始终保持导通或截止,在显示的这个过程中,其状态是静止不变的,直到一个字符显示完毕,要显示下个字符,其状态才改变。
而动态显示方式则不同,,,它在显示每一个字符的过程中,都是一位一位的轮流点亮要显示的各个位,这样发福循环。
动态显示方式利用了人眼的视觉残留性质。
由于8*8点阵LED管脚设计的上述特点,使得要同时显示,只能采用动态显示方式。
LED点阵显示硬件原理图如下:
图3-3点阵模块硬件原理图
4.花样电子时钟的软件设计
4.1数码管电子时钟的软件设计
4.1.1数码管电子时钟软件系统设计
电子时钟的系统软件程序由主程序和子程序组成,主程序包含初始化参数设置、按键处理、数码管显示模块,蜂鸣器报时模块等,在设计时各个模块都要采用子程序结构设计,在主程序中调用。
由于定时器/计数器采用中断方式处理,因此还要编写定时器/中断服务子程序,在定时器/计数器中断服务程序中对时钟进行调整。
一、主程序
主程序执行流程如下图所示,主程序先对显示单元和定时器/计数器初始化,然后重复调用数码管显示模块和按键处理模块,当有键按下,则转入相应的功能程序。
图4-1主程序流程图
C语言源程序如下:
main()
{
while
(1)
{
fenkai(m,f,s)。
heng()。
xmiao()。
xfen()。
xshi()。
keyscan()。
if(kk==1)
fenm()。
}
二、数码管显示模块
本系统共有8个数码管,从右到左依次显示秒个位、秒十位、横线、分个位、横线、时个位和时十位。
数码管显示的信息用8个内存单元存放,这8个内存单元称为显示缓冲区,其中秒个位和秒十位、分个位和分十位、时个位和时十位分别由秒数据、分数据和时数据分拆得到。
在本系统中数码管显示采用软件译码动态显示。
在存储器中首先建立一张显示信息的字段码表,显示时,先从显示缓冲区中取出显示的信息,然后通过查表程序在字段码表中查出所显示的信息的字段码,从P1口输出,同时在P2口将对应的位选码输出,选中显示的数码管,就能在相应的数码管上显示缓冲区的内容。
共阳极是8个发光二极管的阳极连在一起,为一个公共端,若公共端接高电平,当某发光二极管的阴极为低电平时,此发光二极管点亮。
在单片机系统中,如要使LED正常显示数字或字符时,不能直接将数字送到LED显示器,而是将要显示的数字通过查表方式,查到相应的显示子模再送到LED显示器显示。
如G端接高电平,段码各位定义如下:
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
Dp
g
f
e
d
c
b
a
如要显示“7”字,对应a、b、c应送入低电平,才能使该字段发光二极管点亮,段码为11111000B,即F8H。
voidtishif()//分钟调试的显示
D2=0。
P1=tab[gfen]。
delay(50)。
P1=0xff。
D2=1。
D3=0。
P1=tab[sfen]。
D3=1。
voidtishis()//小时调试的显示
D4=0。
P1=tab[gshi]。
D4=1。
D5=0。
P1=tab[sshi]。
D5=1。
voidfenkai(ucharmm,ucharff,ucharss)//秒、分、时个位、十位的设置
gmiao=mm%10。
smiao=mm/10。
gfen=ff%10。
sfen=ff/10。
gshi=ss%10。
sshi=ss/10。
voidxmiao()//数码管上显示秒
D0=0。
P1=tab[gmiao]。
delay
(1)。
D0=1。
D1=0。
P1=tab[smiao]。
D1=1。
voidxfen()//数码管上显示分
voidxshi()//数码管上显示时
三、定时器/计数器T0中断服务程序
定时器/计数器T0用于时间计时。
选择方式1,先对定时器赋初值,CPU响应中断后进入中断服务子程序。
中断服务子程序以100ms、1s、1min、1hour对时钟计时,每产生一次中断,100ms计数单元加1,当该单元内容累计到10时,秒计数单元加1,并将100ms单元清0;
秒累计到60时,分计数单元加1,并将秒计数单元清0;
当分计数单元累计到60时,时计数单元加1,并将分计数单元清0;
时计数单元满24后,所有单元内容清0。
定时器计数单元的内容为十六进制数,需把该数调整为压缩BCD码,并通过程序拆分成单字节BCD码后,送入显示缓冲区,进行输出显示。
该定时中断子程序用于实现定时功能,同时刷新计时缓冲区,其流程如图4-2所示。
图4-2中断服务程序流程图
voidtime0()interrupt1//定时器0的中断
TH0=(255-100)。
TL0=(255-100)。
aa++。
if(aa==1&
&
d==1)
ct++。
kk=1。
}
if(aa==155)
kk=0。
D6=1。
if(aa==310)
aa=0。
m++。
if(m==60)
m=0。
f++。
if(f==60)
f=0。
d=1。
s++。
pp=1。
if(s==24)
s=0。
四、蜂鸣器报时子程序
当分计数单元累计到60,时计数单元加1时,就启动蜂鸣器,起到报时的功能。
voidfenm()//蜂鸣器启动
D6=0。
五、按键处理模块
按键处理设置为:
如没有按键,则时钟正常走时。
当按下K0按键时,即复位,时钟从零开始计时;
当按下K1按键,进入调分状态,时钟停止走动;
按K2和K3按键可以进行加1或减1操作;
继续按K1按键,可以分别进行分和小时的调整;
最后按K2按键将退出调整状态,时钟开始计时运行。
voidkeyscan()
EA=0。
if(k1==0)
delay(10)。
count++。
TR0=0。
ET0=0。
while(!
k1)。
if(count>
=3)
fashu(s)。
count=0。
TR0=1。
ET0=1。
t1=0。
t2=0。
if(count==1)
t1=1。
if(k2==0)
delay(10)。
if(k2==0)
if(f==60)
{
f=0。
}
k2)。
if(k3==0)
if(f==0)
f=59。
else
f--。
k3)。
if(count==2)
t2=1。
s++。
if(s==24)
s=0。
}
while(!
if(s==0)
s=23。
s--。
EA=1。
4.2点阵式LED花样显示的软件设计
4.2.1点阵式LED花样显示软件系统设计
8*8点阵式LED灯共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置1电平,某一行置0电平,则相应的二极管就亮。
如要实现一根柱形的亮法。
对应的一列为一根竖柱,亮法如下:
一根竖柱:
对应的列置1,而行则采用扫描的方法来实现;
一根横柱:
对应的行置0,而列则采用扫描的方法来实现。
unsignedcharcodetaba[]={0xfe,0xfd,