基于AT89C52LED点阵显示电子钟的制作课程设计报告书.docx
《基于AT89C52LED点阵显示电子钟的制作课程设计报告书.docx》由会员分享,可在线阅读,更多相关《基于AT89C52LED点阵显示电子钟的制作课程设计报告书.docx(34页珍藏版)》请在冰豆网上搜索。
基于AT89C52LED点阵显示电子钟的制作课程设计报告书
《单片机原理与应用技术》
课程设计报告书
题目:
基于AT89C52LED点阵显示电子钟的制作
摘要:
介绍了基于AT89C51为控制器的LED点阵显示屏的设计,包括硬件设计和软件设计两部分。
系统硬件部分由单片机、行驱动电路、列驱动电路、上位PC机,RS-232通讯接口等部分组成;软件设计采用动态显示模式的16×16点阵显示屏,LED点阵模块选用8×8基础模块,每4块排列构成一个16×16的点阵屏。
并且可以对其进行设置。
基于AT98C52单片机的LED点阵显示电子钟具有结构简单,性能靠,价格低和灵活等优点,因此得到了广泛应用。
利用单片机来设计的系统,既能实现系统所需的功能,也可以满足计数的准确性、迅速性,并且电路简单、操作简单、通用性强。
关键词:
单片机;LED点阵;电子钟
Abstract:
ThedesignofLEDdotmatrixdisplaybasedonAT89C51isintroduced,whichincludestwoparts,hardwaredesignandsoftwaredesign.Systemhardwareiscomposedofasinglechipcomputer,drivecircuit,acolumndrivercircuit,PC,RS-232communicationinterfaceparts;softwaredesignusingadynamicdisplay16*16dotmatrixdisplay,LEDdotmatrixmoduleselectionof8*8basicmoduleandarrangedineachoffourblocksconstitutea16*16dotmatrixscreen.Andcanbesetup.BasedonAT98C52microcontrollerLEDdotmatrixdisplayelectronicclockhastheadvantagesofsimplestructure,performance,lowpriceandflexible,soithasbeenwidelyused.Theuseofsingle-chipmicrocomputertodesignthesystem,bothtoachievethesystemfunctions,butalsotomeettheaccuracyofthecount,andfast,simpleoperation,simpleoperation,general.
目录:
1、绪论
1.1:
前言
数字时钟是为了满足人们对精确度的更高要求应运而生的。
数字时钟是真正实现了对时、分、秒进行数字显示的计时装置,并具有成本低、构造简单以及易于携带等多个优点。
本文介绍了单片机数字时钟的系统设计,包括软件设计与硬件设计等,并对系统进行了调试,以此为以后的相关研究提供借鉴。
数字钟是采用数字电路实现对月,日,时,分,秒.数字显示的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。
诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。
因此,研究数字钟及扩大其应用,有着非常现实的意义。
目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。
下面是单片机的主要发展趋势。
单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。
从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。
这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。
[1]
单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现月,日,时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。
数字钟已成为人们日常生活中:
必不可少的必需品,广泛用于个人家庭以及车站、码头、剧场、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。
由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点。
1.2:
设计任务和要求
采用STC89C52单片机和LED点阵显示;
能显示当前的月、日、时、分、秒,24小时制;
月、日、时、分、秒均可以单独设置,设置时该项目闪烁;
外接3个按键,一个用于选择需要设置的项目,一个增加、一个减少。
主要技术指标:
计时精度误差:
≤1秒/日;
LED显示清晰,不能有明显的残影、乱码;
电源:
DC5V、2A。
1.3:
工艺要求
印刷电路板布局合理、走线清晰整洁;
IC装在插座上,发热元、器件应考虑散热的方法;
在印制板上应留出定位孔及固定支架所占用的位置;
焊点大小适中、呈锥状、美观、结实、光亮、无虚焊;跳线整齐美观;
程序采用C51语言编写,适当注释,具备良好的编程风格;
在PCB版上应用记号笔明显标识作者姓名。
2、系统方案
2.1:
方案一
由中断产生的秒、分、小时、日、月数据,经转换子程序转换成适应LED点阵显示屏显示的数据,并通过单片机的输出功能输入到LED点阵显示屏,再通过显示扫描程序,显示出时钟的走时时间。
用计时程序来完成计时,数时功能,再通过单片机综合控制将数字显示出来。
由此可见,通过AT89C52单片机的控制功能,完全可以实现LED点阵显示电子钟。
2.1.1:
硬件结构:
根据项目的功能和要求,可采用AT89C52单片机作为核心控制器。
LED点钟电子钟系统组成包括:
晶振电路模块、复位电路模块、显示电路模块、显示行驱动电路模块、按键电路模块以及电源模块。
2.1.2:
控制思路:
LED点阵电子钟程序主要功能是屏幕显示时间稳定,精确。
所以按照分块设计的法可以把程序分为主程序、显示程序、计时程序。
主程序主要是用来初始化系统和控制各个子程序之间执行的顺序。
显示程序用来完成字在LED点阵上的显示,时钟的显示是使用5块8×8点阵显示屏。
计时程序用来完成计时,数时功能。
2.2:
方案二
由振荡器产生的稳定的高频时钟脉冲信号,作为数字钟的时钟标准,通过单片机对电路进行控制,输出标准秒脉冲。
秒计数器计满60后向分计数器进位,分计数器计满60后就向时计数器进位,小时计数器按照24进制规律计数。
而计数器的输出则分别经译码后,传送到通过LED七段显示器显示出来。
[2]闹钟电路来完成闹钟功能,温度显示电路完成实时温度检测并通过数码管显示出来。
整机电路原理框图如图所示:
3、器件介绍
3.1:
STC89C52
STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
具有以下标准功能:
8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。
另外STC89X52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
最高运作频率35MHz,6T/12T可选。
STC89C52的引脚分布图和实物图如下:
3.2:
LED点阵
LED点阵模块是LED电子显示屏的基本组成单元,以发光二极管为像素,用高亮度发光二极管芯阵组合后,经环氧树脂和塑模封装而成。
常见的LED点阵模块有5×7、5×8、8×8、16×16等,根据像素颜色的数目可分为单色、双基色、三基色等。
像素颜色不同,所显示的文字、图像等内容的颜色也不同。
单色点阵只能显示固定色彩(如红、绿、黄等单色),双基色和三基色点阵显示内容的颜色由像素内不同颜色发光二极管点亮组合方式决定,如红、绿都亮是可显示黄色。
[3]
本次课程设计采用单红色点阵模块显示字符。
人眼的亮度感觉不会因光源的消失而立即消失,要有一个延迟时间,这就是视觉的惰性。
视觉惰性可以理解为光线对人眼视觉的作用、传输、处理等过程都需要时间,因而使视觉具有一定的低通性。
实验表明,当外界光源突然消失时,人眼的亮度感觉是按指数规律逐渐减小的。
这样当一个光源反复通断,在通断频率较低时,人眼可以发现亮度的变化;而通断频率增高时,视觉就逐渐不能发现相应的亮度变化了。
不致于引起闪烁感觉的最低反复通断频率称为临界闪烁频率。
通过实验证明临界闪烁频率大约为24Hz。
因此采用每秒24幅画面的电影,在人看起来就是连续活动的图象了。
同样的原理,日光灯每秒通断50次,而人看起来却是一直亮的。
由于视觉具有惰性,人们在观察高于临界闪烁频率的反复通断的光线时,所得到的主观亮度感受实际上是客观亮度的平均值。
视觉惰性可以说是LED显示屏得以广泛应用的生理基础。
首先,在LED显示屏中可以利用视觉惰性,改善驱动电路的设计,形成了目前广为采用的扫描驱动方式。
扫描驱动方式的优点在于LED显示屏不必对每个发光灯提供单独的驱动电路,而是若干个发光灯为一组共用一个驱动电路,通过扫描的方法,使各组发光灯依次点燃,只要扫描频率高于临界闪烁频率,人眼看起来各组灯都在发光。
由于LED显示屏所使用的发光灯数量很大,一般在几千只到几十万只的范围,所以节约驱动电路的效益是十分可观的。
[4]
一个8×8的点阵是由64个发光二极管按一个规律组成的如下图所示的发光二极管,行接低电平,列接高电平,发光二极管导通发光。
以简单的8X8点阵为例,它共由64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一行置1电平,某一列置0电平,则相应的二极管就亮;如要将第一个点点亮,则9脚接高电平13脚接低电平,则第一个点就亮了;如果要将第一行点亮,则第9脚要接高电平,而(13、3、4、10、6、11、15、16)这些引脚接低电平,那么第一行就会点亮;如要将第一列点亮,则第13脚接低电平,而(9、14、8、12、1、7、2、5)接高电平,那么第一列就会点亮.
LED点阵的引脚分布图和实物图如下:
3.3:
74LS373
74LS373为三态输出的八D锁存器。
其引脚分布如下:
当三态允许控制端OE为低电平时,Q0~Q7为正常逻辑状态,可用来驱动负载或总线。
当OE为高电平时,Q0~Q7呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响。
当锁存允许端LE为高电平时,Q随数据D而变。
当LE为低电平时,D被锁存在已建立的数据电平。
当LE端施密特触发器的输入滞后作用,使交流和直流噪声抗扰度被改善400mV。
74LS373的真值表如下:
D0~7
LE
OE
Q0~7
H
H
L
H
L
H
L
L
×
L
L
Q0
×
×
H
高阻态
3.4:
74LS245
74LS245用来驱动LED或者其他的设备,它是8路同相三态双向总线收发器,可双向传输数据。
当8051单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动器。
当片选端/CE低电平有效时,DIR=“0”,信号由B向A传输;(接收)DIR=“1”,信号由A向B传输;(发送)当CE为高电平时,A、B均为高阻态。
由于P2口始终输出地址的高8位,接口时74LS245的三态控制端1G和2G接地,P2口与驱动器输入线对应相连。
P0口与74LS245输入端相连,E端接地,保证数据线畅通。
74LS245的引脚分布和真值表如下:
3.5:
74LS138
74LS138引脚如下:
74LS138为3线-8线译码器,其工作原理如下:
当一个选通端(S1)为高电平,另两个选通端(
)和(
))为低电平时,可将地址端(A、B、C)的二进制编码在一个对应的输出端以低电平译出。
74LS138真值表如下:
3.6:
74LS04
74LS04是高速的硅栅CMOS器件并兼容低功耗肖特基的TTL(LSTTL)非门(逆变器)。
其引脚图和真值表如下:
输入
输出
A
Y
H
L
L
H
3.7:
74LS30
74LS30是八输入与非门。
4、系统的硬件设计
STC89C52单片机LED显示时钟的设计原理图如下图所示,该电路由晶振电路,复位电路,按键电路,显示电路四大模块组成。
数据由P1口送出,P0口作为74LS373的片选口,P2口作为LED8*8点阵的片选口,此电路的点阵为行输入列选择。
电路原理图如下:
4.1:
晶振电路
在电气上它可以等效成一个电容和一个电阻并联再串联一个电容的二端网络,电工学上这个网络有两个谐振点,以频率的高低分其中较低的频率是串联谐振,较高的频率是并联谐振。
由于晶体自身的特性致使这两个频率的距离相当的接近,在这个极窄的频率范围内,晶振等效为一个电感,所以只要晶振的两端并联上合适的电容它就会组成并联谐振电路。
这个并联谐振电路加到一个负反馈电路中就可以构成正弦波振荡电路,也就是晶振电路图。
晶振是给单片机提供工作信号脉冲的。
这个脉冲就是单片机的工作速度。
比如12M晶振。
单片机工作速度就是每秒12M。
和电脑的CPU概念一样。
当然。
单片机的工作频率是有范围的。
不能太大。
一般24M就不上去了。
不然不稳定。
接地的话数字电路弄的来乱一点也无所谓。
看板子上有没有模拟电路。
接地方式也是不固定的。
一般串联式接地。
从小信号到大信号依次接。
然后小信号连到电源处。
有变压器就连到变压器旁。
数模地分开。
分别拉到电源处。
不可形成回路。
这个是因为晶振与单片机的脚XTAL0和脚XTAL1构成的振荡电路中会产生偕波(也就是不希望存在的其他频率的波),这个波对电路的影响不大,但会降低电路的时钟振荡器的稳定性。
为了电路的稳定性起见,ATMEL公司只是建议在晶振的两引脚处接入两个10pf-50pf的瓷片电容接地来削减偕波对电路的稳定性的影响,所以晶振所配的电容在10pf-50pf之间都可以的,没有什么计算公式。
4.2:
复位电路
(1)复位电路的作用
在上电或复位过程中,控制CPU的复位状态:
这段时间保持复位状态,而不是一上电或刚复位完毕CPU发出错误的指令、执行错误操作,也可以提高电磁兼容性能。
无论用户使用哪种类型的单片机,总要涉及到单片机复位电路的设计。
而单片机复位电路设计的好坏,直接影响到整个系统工作的可靠性。
许多用户在设计完单片机系统,并在实验室调试成功后,在现场却出现了“死机”、“程序走飞”等现象,这主要是单片机的复位电路设计不可靠引起的。
[5]
(2)基本的复位方式
单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。
89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。
当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。
单片机系统的复位方式有:
手动按钮复位和上电复位。
4.3:
按键电路
(1)组成
本系统的按键电路由一个与非门和三个独立按键,三个上拉电阻组成。
(2)作用
按键电路的三个独立开关分别控制P3.5、P3.6、P3.7来控制时间的调整,P3.5选择,P3.6加,P3.7减。
4.4:
显示电路
系统的显示电路由5个LED8×8点阵组成
,点阵式LED显示器采用逐行扫描式工作。
要使点阵显示出一个的字符的编程方法是:
首先向字形行扫描码锁存器输出行扫描码,选通第一行,同时向字符锁存器列写入该行的字型码,完成一行的扫描。
74LS373用来锁存行扫描代码,P0.0~P0.7行扫描代码。
列代码通过P2.0、P2.1、P2.2输出,通过74LS130译码器转换之后送到74LS245进行列扫。
5、软件设计及程序分析
5.1:
Keil软件历史发展
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
用过汇编语言后再使用C来开发,体会更加深刻。
KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
1.主程序
主程序主要作用是负责实时显示时间,打开各个所需寄存器的中断,并给定时器T0以及月日时分秒赋初值。
2.外中断程序
外中断程序主要实现如下的功能:
开关1(P3.5)可以实现选择秒、分、时、日、秒的作用,按键次数分别对应1、2、3、4、5;开关2(P3.6)可以实现数字的加,每按一下开关可以实现相应电子屏的数字加一;开关3(P3.7)可以实现数字的减,每按一下开关可以实现相应的电子屏的数字减一。
3.时间计数程序
时间计数程序主要是用来进行时间的加法计数,当秒够六十向分进一,分够六十向时进一,时够二十四向天进一,天够三十向月进一,当月够十二时,秒、分、时清零,日和月置1重新计数。
6、仿真与测试
仿真图的设计和仿真测试采用Proteus软件进行。
Proteus软件是英国LabCenterElectronics公司出版的EDA工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
Proteus从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
它是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
该软件的特点是:
(1)实现了单片机仿真和SPICE电路仿真相结合,具有模拟电路仿真、数字电路仿真、各种单片机组成的系统仿真。
(2)提供了多种虚拟仪器。
如示波器、信号发生器等,调试非常方便。
(3)提供软件调试,同时支持第三方的软件编译和调试环境,如Keil等软件。
(4)具有强大的原理图绘制功能。
Proteus与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。
在Proteus绘制好原理图后,调入已编译好的目标代码文件:
*.hex,可以在Proteus的原理图中看到模拟的实物运行状态和过程。
点击界面右下角的“
”按钮,软件启动,开始仿真测试。
在程序中写入开机时的初始值:
开机显示图形如下:
0303030310
界面右下角三个开关用来调整时间,开关S1(P3.5)可以实现选择秒、分、时、日、秒的作用,按键次数分别对应1、2、3、4、5;开关S2(P3.6)可以实现数字的加,每按一下开关可以实现相应电子屏的数字加一;开关S3(P3.7)可以实现数字的减,每按一下开关可以实现相应的电子屏的数字减一。
以上的Proteus仿真证明本设计正确,能满足显示时钟要求。
7、实验
下面是完成后的实物图,上面显示的时间为:
03月03日03时03分19秒
在制作实物的时候,要注意电解电容、发光二极管、芯片等的方向,如果发生错误,则LED点阵不会亮或不能正确显示数字。
8、结论
通过这一周的实习设计,对单片机的编程软件KEIL51有了进一步的熟悉,学会了自己分析,修改程序,以完成不同功能程序的编程,这次实验做的是数字钟,最后基本完成老师要求的功能,时间显示和调整,日期显示和调整及闹铃等功能。
由于大家做的功能都差不多,所以自己就多添加了时间秒设置及闹钟秒设置功能,虽然在实际生活中用的数字钟没必要做到这个功能,但毕竟自己有去想,有去做,并且能够得到实现,也是对自己的进步的一个肯定。
实习过程中知道了不只是要求做到什么结果,更重要的是从中学到了什么,这才能达到锻炼自己的目的,以及和同学们一起讨论,共同分析,学会吸取他人好的观点改正自己的不足,以及同他人的合作精神。
通过实习这个平台特别让我们工科的学生学会了如何将所学的知识与实践相结合在一起,使得我们在以后的学习、工作中才会学以致用,学懂所用
9、感谢
感谢在这次课程设计中黎老师以及余刚同学对我在论文和实物制作方面的帮助,使我的编程能力以及动手能力的大大提高。
在这次实践中收获良多。
谢谢!
!
参考文献:
[1]:
杨清林.基于AT89C51单片机的数字钟设计[J].实验科学与技术,2013,11
(2):
80-90.
[2]:
董伟.简易时钟电路的设计与实现[J].科技资讯,2012,90(24):
111-112.
[3]:
许雷翔、单片机开发入门与典型设计实例[M].安徽:
工业工业出版社,2013.
[4]:
张新.Avr单片机动应用开发24例[M].北京电子工业出版社:
2014.
[5]:
王大山.基于ATM的液晶显示控制设计[D].江苏:
南京理工大学,2007.
附件一:
C51源代码
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitP3_5=P3^5;
sbitP3_6=P3^6;
sbitP3_7=P3^7;
ucharint_time;
ucharmonth;day;hour;minute;second;
ucharw=0;
voiddelay(uinti)
{uintj;
while(i--)
for(j=0;j<10;j++);
}
/*延时函数*/
unsignedcodedianzhen[][8]={
{0xff,0x81,0x81,0xff,0x00,0x00,0x00,0x00},//00
{0x80,0xff,0x82,0x84,0x00,0x00,0x00,0x00},//01
{0x9f,0x91,0x91,0xf