毕业论文-LED显示电子钟_第1页
毕业论文-LED显示电子钟_第2页
毕业论文-LED显示电子钟_第3页
毕业论文-LED显示电子钟_第4页
毕业论文-LED显示电子钟_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、编号淮安信息职业技术学院毕业论文LED显示电子钟学生姓名丁华军学 号47082009系 部电气系专 业电子设备与运行管理班 级479820指导教师朱静顾问教师二0一0年七月摘要随着半导体技术的飞速发展,以及移动通信、网络技术、多媒体技术在嵌 入式系统设计中的应用,单片机从4位、8位、16位到32位,其发展历程一直 受到广大电子爱好者的极大关注。单片机功能越来越强大,价格却不断下降的优 势无疑成为嵌入式系统方案设计的首选,同时单片机应用领域的扩大也使得更多 人加入到基于单片机系统的开发行列中,推动着单片机技术的创新进步。然而传统的单片机系统开发除了需要购置诸如仿真器、编程器、示波器等价 格不菲的

2、电子设备外,开发过程也较繁琐。来自英国Labcerrter Electronics公 司的Proteus软件很好地诠释了利用现代EDA工具方便快捷开发单片机系统的优 势。它包括 PROTEUS VSM (Virtual System Modelling)、PROTEUS PCB DESIGN 两大组成部分,在PC机上就能实现原理图电路设计、电路分析与仿真、单片机 代码级调试与仿真、系统测试与功能验证以及形成PCB文件的完整嵌入式系统设 计与研发过程。单片机系统作为一种典型的嵌入式系统,其系统设计包括硬件电路设计和软 件编程设计两个方面,其调试过程一般分为软件调试、硬件测试、系统调试3个 过程。

3、如果采用单片机系统的虚拟仿真软件一一Proteus,则不用制作具体的电 路板也能够完成以上工作。关键词:数字电子钟;AT89C2051 ; LED;电子钟;第一章前言11.2基本参数1L3注意事项1第二章模块特性简介22. 1 AT89C2051 单片机22. 2 LED简介32. 2.1LED 概述32. 2. 2LED优势32. 2. 3LED显示屏32. 3系统总体方案介绍3第三章系统硬件设计53. 1 Proteus电路图设计5第四章系统软件设计64. 1软件的结构65. 2概述64. 2.1主程序64. 2. 2中断服务程序64. 2. 3调时程序7第五章程序设计115. 1部分程序

4、一览11第六章结论1314参考文献致谢附录一软件编写程序151617附录二主要元器件清单第一章前后1.1 系统功能此课程设计要求用单片机AT89c2051定时功能,中断系统,按键及LED数码管显示, 设计一个能显示时、分、秒的数字时钟。数字时钟通过数码管显示,使用按键开关来实现调 时功能。1.2 基本参数1 .工作电压:4. 5V (3节干电池);2 .日期显示范围:2001-2100年;3 .时间采用24小时制。1.3注意事项2 .在安装电池时注意正负极,否则容易烧坏芯片;3 .在印制电路板上的焊接元器件前要认真对照原理图,仔细查看印制电路 板,找到对应的元器件功能区;4 .在电源测试期间请

5、勿将单片机芯片插入座中,以免电源部分有问题造成芯 片烧坏。第二章模块特性简介2.1 AT89C2051 单片机AT89C2051单片机是51系列单片机的一个成员,是8051单片机的简化版。 内部自带2K字节可编程FLASH存储器的低电压、高性能COMS八位微处理器,与 Intel MCS-51系列单片机的指令和输出管脚相兼容。由于将多功能八位CPU和闪 速存储器结合在单个芯片中,因此,AT89C2051构成的单片机系统是具有结构最 简单、造价最低廉、效率最高的微控制系统,省去了外部的RAM、ROM和接口器 件,减少了硬件开销,节省了成本,提高了系统的性价比。AT89c2051是一个有20个引脚

6、的芯片,引脚配置如图2-1所示。与8051相 比,AT89c205c减少了两个对外端口 (即P0、比口),使它最大可能地减少了对 外引脚下,因而芯片尺寸有所减小。PDIP/S01CRTCl (RXD)P3.Ot2 (TXD)P3.1C3XTAL2E4XTAL1 匚 5(INTO睁2匚(INT1)P3.3 匚(T0)P3.4E (T1)P3.5 匚GNDC78910201918171615141211JVCC 3 Pl.7 3P1.6 JP1.5 JPL4 JP1.3 JP1.2JPLOfAlNO) JP3.7图2-1 AT89C2051引脚配置AT89C2051芯片的20个引脚功能为:VCC电

7、源电压。GND接地。RST 复位输入。当RST变为高电平并保持2个机器周期时,所有1/0引脚 复位至“ 1:XTAL1反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2来自反向振荡放大器的输出。Pl n 8位双向I/O 口。引脚PL 2PL 7提供内部上拉,当作为输入并被 外部下拉为低电平时,它们将输出电流,这是因内部上拉的缘故。P1.0和P1. 1 需要外部上拉,可用作片内精确模拟比较器的正向输入(AINO)和反向输入 (AIN1), P1 口输出缓冲器能接收20mA电流,并能直接驱动LED显示器;P1 口 引脚写入“1”后,可用作输入。在闪速编程与编程校验期间,P1 口也可接收编 码

8、数据。P3 口 引脚P3. 0P3. 5与P3.7为7个带内部上拉的双向1/0引脚。P3. 6 在内部已与片内比较器输出相连,不能作为通用I/O引脚访问。P3 口的输出缓冲 器能接收20mA的灌电流;P3 口写入“1”后,内部上拉,可用输入。P3 口也可 用作特殊功能口,其功能见表1。P3 口同时也可为闪速存储器编程和编程校验接 收控制信号。2.2 LED简介在某些半导体材料的PN结中,注入的少数载流子与多数载流子复合时会把 多余的能量以光的形式释放出来,从而把电能直接转换为光能。PN结加反向电压, 少数载流子难以注入,故不发光。这种利用注入式电致发光原理制作的二极管叫 发光二极管,通称LED

9、。2.2.1 LED 优势资料显示,LED光源比白炽灯节电87%、比荧光灯节电50%,而寿命比白炽 灯长2030倍、比荧光灯长10倍。LED光源因具有节能、环保、长寿命、安全、响应快、体积小、色彩丰富、 可控等系列独特优点,被认为是节电降能耗的最佳实现途径。2.2.2 LED显示屏LED 显示屏(LED panel): LED 就是 light emitting diode ,发光二极管的 英文缩写,简称LED。它是一种通过控制半导体发光二极管的显示方式,用来显 示文字、图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕。2.3 系统总体方案介绍电脑钟的原理框图如图1所示。它由以下几个

10、部件组成:单片机89c2051、 电源、时分显示部件。时分显示采用动态扫描,以降低对单片机端口数的要求,同时也降低系统的 功耗°时分显示模块以及显示驱动都通过89C2051的I/O 口控制。电源部分:电源部分有二部分组成。一部分是由220V的市电通过变压、整 流稳压来得到+5V电压,维持系统的正常工作。ATSC2051图3电子钟基本部分参考电路原理图图2电子钟系统原理框图第三章硬件电路设计3.2 Proteus电路图设计运行Proteus的ISIS后出现程序主窗口界面,鼠标左键单击窗口左侧的元器 件工具栏的component.按钮,接着再点击窗口左侧的元器件选择区的Pick Divi

11、ces.按钮,弹出如图1所示的Pick Devices窗口,再在Categ栏里点击 MicroprocessorlCs项后,在Results栏里会出现各种类型的CPU器件,找到 AT89C51后双击,AT89C51就被添加到当前窗口左侧的元器件列表区了。用同样的方法依次把DS130. MAX7219.数码管、晶振以及多个电阻、电容也 添加到器件列表区里。然后再依次点击列表区里的器件,单击左键把他们放到绘图区,右.键选中元件, 并编辑其属性,合理布局后,进行连线。连线时当鼠标的指针靠近一个对象的引 脚时,跟着鼠标的指针r ICs就会出现一个“X”提示符号,点击鼠标左键即可 画线了,需要拐弯时点击

12、一下即可,在终点再点击确认一下就画出了一段导线, 所有导线画完后,点击工具栏的Inter-sheeTerminaL按钮,添加上电源和接地 符号,原理图的绘制就完成了。f?4TWP2." "“陷 pzien肘MWwjht 灯,的 pj*t,PJ"V7 PJ.但字?:至扣后5=芈带图4 Proteus中设计的电子时钟系统原理图第四章系统软件设计4.1软件的结构4.2概述本系统的软件系统主要可分为主程序和定时器中断程序两大模块。在程序过 程中,加入了抗干扰措施。下面对部分模块作介绍。4.2.1主程序主程序的功能是完成系统的初始化,程序流程如图4所示。4.2.2中断服务程

13、序中断程序(如图6所示)完成时间计数,时间调整,误差消除等功能。中 断采用AT89C2051内部TO中断实现,定时时间为125ms,当时间到达125msX8, 即1分钟时,分计数缓冲器MINBUFFER增加1,到达1小时,则时计数缓冲器 HOURBUFFER增加1,并将分、时的个位、十位放入显示缓冲器。当分计数缓冲器 和时计数缓冲器分别到达60min. 24h时,则对它们清零,以便从新计数。在中 断设计中,还通过软件实现了累计误差消除功能,使整个系统时间的精确度得到 保证。图5系统主程序流程图图6定时中断程序4. 2. 3调时程序给三个按键,当P2.0 口的按键K0按下,则进入调时状态,按KI

14、, K2加1减1操作,再按 K0,调分,再按K0,调秒,再按K0,则退出调时功能,进行正常计数运行.4.2.5 LED显示模组显示数字由于系统要显示的内容较简单,显示量不多,所以选用数码管既方便乂经济。 LED有共阴极和共阳极两种。如图7所示。二极管的阴极连接在一起,通常此公共阴极接地,而共阳极则将发光二极管 的阳极连接在一起,接入+5V的电压。一位显示器由8个发光二极管组成,其中 7个发光二极管构成字型“8”的各个笔划(段)ag,另一个小数点为dp发光 二极管。当在某段发光二极管施加一定的正向电压时,该段笔划即完;不加电压 则暗。为了保护各段LED不被损坏,需外加限流电阻。g f com a

15、 bI I I I Ie d com c dp符号和引脚»5V-4TTTKx88 °I 1b o()-c OCZ3co_cn foC21go 1 F dpo F 低电平磨动共阳极图7 LED数码管结构原理图众所周知,LED显示数码管通常由硬件7段译码集成电路,完成从数字到显 示码的译码驱动。本系统采用软件译码,以减小体积,降低成本和功耗,软件译 码的另一优势还在于比硬件译码有更大的灵活性。所谓软件译码,即由单片机软 件完成从数字到显示码的转换。从LED数码管结构原理可知,为了显示字符,要 为LED显示数码管提供显示段码,组成一个“8”字形字符的7段,再加上1个 小数点位,共

16、计8段,因此提供给LED数码管的显示段码为1个字节。各段码位 与显示段的对应关系如表1。表1各段码位的对应关系段码位D7D6D5D4D3D2DIDO显示段dpgfedcba需说明的是当用数据口连接LED数码管adp引脚时,不同的连接方法,各 段码位与显示段有不同的对应关系。通常数据口的DO位与a段连接,D1位与b 段连接,D7位与dp段连接,如表1所示,表2为用于LED数码管显示的十六 进制数和空白字符与P的显示段码。表2 LED显示段码字型共阳极段码共阴极段码字型共阳极段码共阴极段码0COH3FH990H6FH1F9H06HA88H77H2A4H5BHB83H7CH3BOH4FHCC6H39

17、H499H66HDA1H5EH592H6DHE86H79H682H7DHF84H71H7F8H07H空白FFHOOH8SOH7FHpSCH73H注:(1)本表所列各字符的显示段码均为小数点不亮的情况。(2) “空白”字符即没有任何显示。根据AT89c2051单片机灌电流能力强,拉电流能力弱的特点,我们选用共阳 数码管。将AT89C2051的P1. 0P1. 7分别与共阳数码管的ag及dp相连,高 电平的位对应的LED数码管的段暗,低电平的位对应的LED数码管的段亮,这样, 当P0 口输出不同的段码,就可以控制数码管显示不同的字符。例如:当P0 口输 出的段码为1100 0000,数码管显示的字

18、符为0。数码管显示器有二种工作方式,即静态显示方式和动态扫描显示方式。为节省端口及降低功耗,本系统采用动态扫描显示方式。动态扫描显示方式需解 决多位LED数码管的“段控”和“位控”问题,本电路的“段控”(即要显示的 段码的控制)通过P0 口实现;而每一位的公共端,即LED数码管的“位控”,则 由P3 口控制。这种连接方式由于多位字段线连在一起,因此,要想显示不同的 内容,必然要采取轮流显示的方式,即在某一瞬间,只让其中的某一位的字位线 处于选通状态,其它各位的字位线处于断开状态,同时字段线上输出这一位相应 要显示字符的字段码。在这一瞬时,只有这一位在显示,其他儿位则暗。在本系 统中,字位线的选

19、通与否是通过PNP三极管的导通与截止来控制,即三极管处于 “开关”状态。系统的时分显示部件由4只7段共阳LED数码管构成,前两只用于时的显示, 后两只用于分的显示。值得一提的是,在设计中需要实现时与分之间的两个闪烁 点,为此,将笫三只LED数码管倒置摆放,这样就形成了两个很自然的闪烁点。 与此同时.,为了能使两点显示能够形象的表示时钟“秒”的变化,设计时,将两 个点由Pl.7单独控制,每隔一秒使PL 7发送一个正脉冲,从而实现了两个点的 闪烁显示,闪烁周期为一秒。第五章程序设计5.1 部分程序预览以下为部分源程序:include "AT89X51. Hinclude delay. h

20、include max7219. c”include "music, c”#define uchar unsigned char#define uint unsigned int idatasbit ADD二Pl;sbit SUB二P0;sbit ACCO = ACC-O;sbit ACC7 = ACC"7;void showDay (void);显示时间void showData(void);显示日期void showDishi (void);显示定时void int_0(void);/中断 0void int_l (void);中断 1void f lash_max72

21、19 (unsigned char n);闪一个位 max7219f */*实时时钟模块时钟芯片型号:DS1302 */*/、/JQJQJQJQJQ */sbit T_CLK = P2"3; /*实时时钟时钟线引脚*/sbit T_I0 = P24 /*实时时钟数据线引脚*/sbit T_RST = P25 /*实时时钟复位线引脚*/、,1、,1、,1、,1、,1、,1、,1、,1、J / / < / /,, J / * 9 4 w * 1 / , * A J / / J/. JJ/ * A 4 J / / J' J 4, * 4 * / /J Z / , * A ,/

22、 / / * 4 w * 4 / , * A Z / / * Z 1 / ,,,,/ / / * 4 * ,卜/ ,,, / / / * 4 */void v_RTInputByte (uchar ucDa); /往 DS13O2 写入 IByte 数据uchar uc_RT0ut put Byte (void) ;/ 从 DS1302 读取 IByte 数据void v_W1302 (uchar ucAddr, uchar ucDa);往 DS1302 写入数据uchar uc_R 1302 (uchar ucAddr);读取 DS1302 某地址的数据/void v_BurstW1302T

23、 (uchar *pSecDa);往 DS1302 写入时钟数据(多字节方 式)/void v_BurstR1302T (uchar 求pSecDa);读取 DS1302 时钟数据/void v_BurstW1302R(uchar *pReDa);往 DS1302 寄存器数写入数据(多字 节方式)/void v_BurstR1302R (uchar 水pReDa);读取 DS1302 寄存器数据void v_Setl302 (uchar *pSecDa);设置初始时间,,输入:pSecDa:初始时 间地址。而始时间格式为:秒 分时日月 星期年void v_Getl302(uchar ucCur

24、timeEl);读取 DS13O2 当前时间uchar showTime8 = 0, 0, 10, 0, 0, 10, 0, 0):/显示的时间»- , 夕 1. . i-Tw Tw TvTw Tw TvTw Tw TvTw Tw TvTw Tw TvTw Tw Tw . j f r f II.» |uchar uchar年uchar void :setTime2=0, 0;定时的设定time7=0, 0x59, 0x19, 0x24, 0x7, 0x01, 0x08;秒 分 时日月 星期Tmod=7;此时的调节模式 main()delay_ms(200);/sound (

25、);initMAX7219();初始化 max7219cls() ;/清屏 max7219/v_Getl302(& time);/v_Setl302(& time);EXO=1;EX1=1;口1二1;下降沿触发 "0=1;EA=1;开中断v_Getl302(& time); showDay ();/int_l ();/int_0 ();while (1)v_Getl302(& time);showDay ();if (setTime0=time2)&&(setTimel=timel) sound();)3 J - .一 “、 I q I

26、*R *R *R*|* *R *R *R*|* *R *R *R*|* *R *R *R*|* *R *R *R*|* *R *R *R | 1/ / I V | I I | Ivoid showDay(void)将数据转化为显示格式showTime 7 =time 0 & OxOf; 个位showTime 6=time 0 >>4 ;十位showTime4=time Ll & 0x0f;showTime 3=time 1»4;showTime Ll=time L2 & 0x0f;show! ime 0 =t ime 2»4;showT

27、ime L2 =showT ime L5 =10;disp_88(& showTime);)/* 显示 日 期void showData(void)(show!ime7=time L3 & OxOf;showTime 6=time 3»4;showTime4=time4 & OxOf;showTime L3=time 4»4;showTime Ll=time16 & OxOf;show! ime 0 =t ime 6»4;showT ime L2 =showT ime L5 =10;disp_88(& showTime);)

28、一J/*也 H、Jvoid showDishi(void)(showTimel=setTime0 & OxOf;showTime 0 =setTime 0 »4;showTime4=setTimeLl & OxOf;showTime 3=setTimel »4;showTime6=12;showTime7=13;showTime2=showTime5=10;disp_88(& showTime);)结论此实验利用protues仿真软件实现,基本实现了要求的功能。为了校准时钟 增加了按键,便于调节。在本次实验中对单片机内部结构有一定了解.,熟悉了各 个

29、引脚的功能,同时熟知了 LED数码管的使用及各种电路的功能。通过此次课程设计,无论是从软件方面还是硬件方面,都进一步学习和巩固 了程序的总体设计。在软件方面,进一步熟悉了各条指令的功能及用法,定时, 中断的用法,更深一步学习了用汇编语言编写实现数字时钟功能。在硬件方面, 了解并学习使用keil软件和proteus软件,在keil中编程,调试,运行,在Proteus 中进行硬件设计、仿真。在整一个设计过程中,从设计到实现,从编程到调试, 每一步都是自己亲力亲为,虽然从中遇到各种问题,有时叫人很烦,但在发现问 题后去解决,并成功了,此时会有一种快乐和成就感。只有自己亲自去操作,才 能将学习的知识变成自己的。程序不要光看不写,一定要自己写一次。最开始的时候,啥都不懂,可以抄 人家的程序过来,看看每一句是干什么用的,达到什么目的,运行后有什么后果, 看明白了之后,就要自己写一次,你会发现,原来看明白别人的程序很容易,但 到自己写的时候却一句也写不出来,这就是差距。单片机提高重在实践,想要学好单片机,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论