基于单片机的花样电子时钟设计与制作.docx
《基于单片机的花样电子时钟设计与制作.docx》由会员分享,可在线阅读,更多相关《基于单片机的花样电子时钟设计与制作.docx(33页珍藏版)》请在冰豆网上搜索。
基于单片机的花样电子时钟设计与制作
华南师范大学增城学院
本科毕业论文(设计)
题目:
基于51单片机的花样电子时钟设计与制作
姓名:
骆莹
学号:
060664120
系别:
计算机系
专业班级:
政务信息管理
指导教师:
李忠金
2010年4月20日
中文摘要……………………………………………………………………………1
Abstract……………………………………………………………………………2
1.绪论…………………………………………………………………………………………3
1.1花样电子时钟的背景及意义…………………………………………………3
2.整体设计方案………………………………………………………………………4
2.1总体设计……………………………………………………………………4
2.1.1花样电子时钟的功能需求……………………………………………4
2.1.2花样电子时钟总体设计方案…………………………………………4
3.花样电子时钟的硬件设计…………………………………………………………6
3.1数码管电子时钟的硬件设计…………………………………………………6
3.1.1数码管电子时钟的硬件原理图………………………………………6
3.2点阵式LED花样显示的硬件设计……………………………………………9
3.2.1点阵式LED花样显示的硬件原理图…………………………………9
4.花样电子时钟的软件设计………………………………………………………11
4.1数码管电子时钟的软件设计………………………………………………11
4.1.1数码管电子时钟软件系统设计………………………………………11
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。
C语言源程序如下:
voidtishif()//分钟调试的显示
{
D2=0。
P1=tab[gfen]。
delay(50)。
P1=0xff。
D2=1。
D3=0。
P1=tab[sfen]。
delay(50)。
P1=0xff。
D3=1。
}
voidtishis()//小时调试的显示
{
D4=0。
P1=tab[gshi]。
delay(50)。
P1=0xff。
D4=1。
D5=0。
P1=tab[sshi]。
delay(50)。
P1=0xff。
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)。
P1=0xff。
D0=1。
D1=0。
P1=tab[smiao]。
delay
(1)。
P1=0xff。
D1=1。
}
voidxfen()//数码管上显示分
{
D2=0。
P1=tab[gfen]。
delay
(1)。
P1=0xff。
D2=1。
D3=0。
P1=tab[sfen]。
delay
(1)。
P1=0xff。
D3=1。
}
voidxshi()//数码管上显示时
{
D4=0。
P1=tab[gshi]。
delay
(1)。
P1=0xff。
D4=1。
D5=0。
P1=tab[sshi]。
delay
(1)。
P1=0xff。
D5=1。
}
三、定时器/计数器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中断服务程序流程图
C语言源程序如下:
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时,就启动蜂鸣器,起到报时的功能。
C语言源程序如下:
voidfenm()//蜂鸣器启动
{
D6=0。
}
五、按键处理模块
按键处理设置为:
如没有按键,则时钟正常走时。
当按下K0按键时,即复位,时钟从零开始计时;当按下K1按键,进入调分状态,时钟停止走动;按K2和K3按键可以进行加1或减1操作;继续按K1按键,可以分别进行分和小时的调整;最后按K2按键将退出调整状态,时钟开始计时运行。
C语言源程序如下:
voidkeyscan()
{
EA=0。
if(k1==0)
{
delay(10)。
if(k1==0)
{
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)
{
f++。
if(f==60)
{
f=0。
}
}
}
while(!
k2)。
}
if(count==1)
{
t1=1。
if(k3==0)
{
delay(10)。
if(k3==0)
if(f==0)
{
f=59。
}
else
f--。
while(!
k3)。
}
}
if(count==2)
{
t2=1。
t1=0。
if(k2==0)
{
delay(10)。
if(k2==0)
{
s++。
if(s==24)
{
s=0。
}
}
}
while(!
k2)。
}
if(count==2)
{
t1=0。
t2=1。
if(k3==0)
{
delay(10)。
if(k3==0)
{
if(s==0)
{
s=23。
}
else
s--。
}
while(!
k3)。
}
}
EA=1。
}
4.2点阵式LED花样显示的软件设计
4.2.1点阵式LED花样显示软件系统设计
8*8点阵式LED灯共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置1电平,某一行置0电平,则相应的二极管就亮。
如要实现一根柱形的亮法。
对应的一列为一根竖柱,亮法如下:
一根竖柱:
对应的列置1,而行则采用扫描的方法来实现;
一根横柱:
对应的行置0,而列则采用扫描的方法来实现。
C语言源程序如下:
unsignedcharcodetaba[]={0xfe,0xfd,