单片机课程设计— LED电子钟的制作_第1页
单片机课程设计— LED电子钟的制作_第2页
单片机课程设计— LED电子钟的制作_第3页
单片机课程设计— LED电子钟的制作_第4页
单片机课程设计— LED电子钟的制作_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、郑州轻工业学院计算机与通信工程学院单片机原理与应用技术课程设计总设计题目:学生姓名:系别:专业:班级:学号:指导老师:结报告 LED电子钟的制作2011年12月16日郑州轻工业学院课程设计任务书题目 LED电子钟的制作专业、班级学号姓名主要内容、基本要求、主要参考资料等:1.主要内容:以89C51单片机为核心,制作一个LED显示的智能电子钟。2.设计要求如下:.计时:秒,分,时,天,周,月,年.闰年自动判别。.五路定时输出,可任意关断(最大可到16路)。.时间,月,日交替显示。.自定任意时刻自动开关屏。.计时精度:误差<=1秒/月(具有微调设置)。.键盘采用动态扫描方式查询。所有的查询、

2、设置功能均由K1,K2完成。3.参考文献1、谢自美,电子线路设计、实验、测试武汉:华中理工大学出版社,20002、何书森、何华斌实用数字电路原理与设计速成福州:福建科学技术出版社,2000.63、白驹衍,单片计算机及应用北京:电子工业出版社, 1999.2目录一 绪论二 设计方案三 硬件原理图四 软件系统结构图和流程图五 原程序清单六 主要函数说明七 设计一览表八 实验心得九 参考文献一 绪论单片计算机即单片微型计算机。(Single-Chip Microcomputer ),是集CPU ,RAM ,ROM ,定时,计数和多种接口于一体的微控制器。他体积小,成本低,功能强,广泛应用于智能产品和

3、工业自动化上。而51 单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。电子钟具有走时准时和性能稳定等优点,已成为人们生活不可缺少的物品,广泛应用于各种公共场合,给人们的生活、学习、工作和娱乐带来了极大方便。电子时钟,既能作为一般的时间显示器,同时还可以根据需要衍生出其他功能。因此,研究使用电子钟有着非常现实的意义,具有很大的实用价值。二 设计方案1.系统由AT89C51、LED 数码管、按键、发光二极管等部分构成,能实现时间的调整定时时间的设定,输出等功能。系统的功能选择由SB0、SB1、SB2、SB3、SB4 完成。其中S

4、B0为时间校对,定时器调整功能键,按SB 0 进入调整状态。SB1 为功能切换键。第一轮按动SB1 依次进入一路、二路、三路定时时间设置提示程序,按SB3 进入各路定时调整状态。定时时间到,二极管发亮。到了关断时间后灭掉。如果不进入继续按SB1 键,依次进入时间年位校对,月位校对、日位校对、时位校对,分位校对,秒位校对状态。不管是进入那种状态,按动SB2 皆可以使被调整位进行不进位增量加1 变化。各预置量设置完成后,系统将所有的设置存入RAM 中,按SB1 退出调整状态。上电后,系统自动进入计时状态,起始于¡ 00¡时¡ 00¡分。SB4 为年月日显示转

5、换键,可使原来显示时分秒转换显示年月日。三、电路原理分析1. 显示原理由6 个共阴极的数码管组成时、分、秒的显示。P0 口的8 条数据线P0.0 至P0.7 分别与两个CD4511 译码的ABCD 口相接,P2 口的 P2.0 至P2.2 分别通过电阻R10 至R13 与VT1 至VT3 的基极相连接。这样通过P0 口送出一个存储单元的高位、低位BCD显示代码,通过P2 口送出扫描选通代码轮流点亮LED1 至LED6,就会将要显示的数据在数码管中显示出来。从P0 口输出的代码是BCD 码,从P2 口输出的就是位选码。这是扫描显示原理。2 键盘及读数原理键盘是人与微机打交道的主要设备,按键的读取

6、容易引起误动作。可采用软件去抖动的方法处理,软件的触点在闭合和断开的时候会产生抖动,这时触点的逻辑电平是不稳定的,如不采取妥善处理的话,将引起按键命令错误或重复执行,在这里采用软件延时的方法来避开抖动,延时时间20ms.3 连击功能的实现按下某键时,对应的功能键解释程序得到执行,如操作者没有释放按键,则对应的功能会反复执行,好象连续执行,在这里我们采用软件延时250ms,当按键没释放则执行下一条对应程序。利用连击功能,能实现快速调时操作。四、程序设计思想和相关指令介绍本系统的主程序主要完成时间显示和定时输出判断功能。而年月日显示和各时间单元进位,时间设定时,调定时间设定时等功能全部在中断服务程

7、序中完成。1数据与代码转换。由前述可知,从P2 口输出位选码,从P0 口输出段选码,LED 就会显示出数字来。但P0口的输出的数据是要BCD 码,各存储单元存储的是二进制数,也就是和要显示出的字符表达的含义是不一致的。可见,将要显示的存储单元的数据直接送到P0 口去驱动LED 数码管显示是不能正确表达的,必须在系统内部将要显示的数据经过BCD 码行转换后,将各个单元数据的段选代码送入P0 口,给CD4511 译码后去驱动数码管显示。具体转换过程如下:我们先将要显示的数据装入累加器A 中,再将A 中的数据转换成高低两位的BCD 码,再放回A 中,然后将A 中的值输出。如:有一个单元存储了45 这

8、样一位数,则需转换成四位的BCD 码:(0100)(0101)然后放入A 中。 A 中BCD 码,高位四位代表¡4¡低四位代表¡5¡同时送给两个译码器中,译码后¡ 45¡字就在两个LED 中显示出来。2计时功能的实现与中断服务程序时间的运行依靠定时中断子程序对时钟单元数值进位调整来实现的。计数器T0 打开后,进入计时,满100 毫秒后,重装定时。中断一次,满一秒后秒进位,满60 秒后即为1 分钟,分钟单元进位,60 分到了后,时单元进位,24 小时满后,天单元进位。这样然后根据进率,得到年、月、日、时、分、秒存储单元的值,并经译码后,

9、通过扫描程序送LED 中显示出来,实现时钟计时功能。累加是用指令INC 来实现的。进入中断服务程序以后,执行PUSH PSW 和PUSH A 将程序状态寄存器PSW 的内容和累加器A 中的数据保存起来,这便是所谓的¡保护现场¡ . 以保护现场和恢复现场时存取关键数据的存储区叫做堆栈。在软件的控制之下,堆栈可在片内RAM 中的任一区间设定,而堆栈的数据存取与一般的RAM 存取又有区别,对它的操作,要遵循后进先出的原则。3 时间控制功能系统的另一功能就是实现对执行设备的定时开关控制,其主要控制思想是这样的:先将执行设备开启的时间和关闭时间置入RAM 某一单元,在计时主程序当中执

10、行几条比较指令,如果当前计时时间与执行设备的设定开启时间相等,就执行一条 CLR 指令,将对应的那路P3 置为高电位,开启;如果当前计时时间与执行设备设定的关闭时间相等,就执行SETB对应的P3 置低电位,二极管截止。4.采用动态显示的方式三 软件系统结构图和流程图流程图1:实验主程序流程图流程图2:定时中断程序流程图(由于篇幅问题,此处只写时分秒的终端程序流程,年月日的添加到流程图中即可,原理跟时分秒的一样)。四:硬件原理图五,源程序清单:#include<reg52.h> /头文件#define uint unsigned int#define uchar unsigned c

11、harsbitwela=P27; /位选sbitdula=P26; /段选sbit be=P23; /蜂鸣器sbit key1=P34;sbit key2=P35;sbit key3=P36;sbit key4=P37;uchar s1,s2,s3,s4,s5,s6;uchar day=22,month=12,year=11,days,k;uint t;uchar code table=0xed,0x81,0xf4,0xb5,0x99,0x3d,0x7d,0x85,0xfd,0xbd; /不带小数点uchar code table1=0xef,0x83,0xf6,0xb7,0x9b,0x3f,

12、0x7f,0x87,0xff,0xbf; /带小数点/初始化voidinit()TMOD=0x02; /定时器0定时方式1TH0=6; /装初值高八位TL0=6; /低八位EA=1; /开总中断ET0=1; /定时器0中断TR0=1; /启动定时器/延时void delay(uint x)uinti,j;for(i=x;i-;i>0);for(j=110;j-;j>0);/显示时间void display1()wela=1; /打开位选P0=0xfe;wela=0; /锁存dula=1; /打开段选 P0=tables6; dula=0; /锁存 delay(5); /延时5ms,

13、消隐 wela=1; P0=0xfd; wela=0; dula=1; P0=table1s5; dula=0; delay(5); wela=1; P0=0xfb; wela=0; dula=1; P0=tables4; dula=0; delay(5); wela=1; P0=0xf7; wela=0; dula=1; P0=table1s3; dula=0; delay(5); wela=1; P0=0xef; wela=0; dula=1; P0=tables2; dula=0; delay(5); wela=1; P0=0xdf; wela=0; dula=1; P0=tables1

14、; dula=0; delay(5);/显示年月日void display2()switch(month)case 1:case 3:case 5:case 7:case 8:case 10:case 12: days=31; break; case 2:days=28+k; break;case 4:case 6:case 9:case 11: days=30;break;if(day>days)day=1;month+;if(month=13)month=1;year+;if(year%4=0)k=1;elsek=0;wela=1; /打开位选P0=0xfe;wela=0; /锁存d

15、ula=1; /打开段选P0=tableyear/10;dula=0; /锁存delay(5);wela=1;P0=0xfd;wela=0;dula=1;P0=table1year%10;dula=0;delay(5);wela=1;P0=0xfb;wela=0;dula=1;P0=tablemonth/10; dula=0;delay(5);wela=1;P0=0xf7;wela=0;dula=1;P0=table1month%10; dula=0;delay(5);wela=1;P0=0xef;wela=0;dula=1;P0=tableday/10; dula=0;delay(5);we

16、la=1;P0=0xdf;wela=0;dula=1;P0=tableday%10; dula=0;delay(5);/显示计数值void display3()P1=0xfe;delay(1000);P1=0xfd;delay(1000);P1=0xfb;delay(1000);P1=0xf7;delay(1000);P1=0xef;delay(1000);P1=0xdf;delay(1000);P1=0xff;void main()void display3();init(); /初始化while(1) /循环 display1while(key1!=0)display1();display

17、2();void time0() interrupt 1 /定时器中断t+;if(t=4000) /当t=4000时,相当于1秒t=0;s1+;if(s1=10) /第一个数码管最大值是十,相当于秒的个位 s1=0;s2+;if(s2=6) /秒的十位s2=0;s3+;if(s3=10) /分的个位s3=0;s4+;if(s4=6) /分的十位s4=0;s5+;be=0;delay(5); be=1;if(s5=10) /时的个位s5=0;s6+;if(s6=2&&s5=4) /重新开始s5=0;s6=0;day+; 六,主要函数说明的管脚被外部拉低,将输出电流。这是由于内部上

18、拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示: 口管脚备选功能P3.0 RXD(串行输入口)P3.1

19、 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或

20、用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持

21、高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。振荡器特性XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。由于输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。芯片擦除整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操

22、作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。结构特点8位CPU;片内振荡器和时钟电路;32根I/O线;晶振是单片机系统里的一个部分,全称为晶体震荡器。晶振结合单片机内部的电路,产生单片机所必须的时钟频率,为单片机指令的执行提供了基础。晶振的提供的时钟频率越高,单片机的运行速度也就越快。晶振用一种

23、能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定、精确的单频振荡。在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十。有些晶振还可以由外加电压在一定范围内调整频率,称为压控振荡器(VCO)。晶振的作用是为系统提供基本的时钟信号。通常一个系统共用一个晶振,以便于各部分保持同步。有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。晶振通常与锁相环电路配合使用,以提供系统所需的时钟频率。如果不同子系统需要不同频率的时钟信号,可以用与同一个晶振相连的不同锁相环来提供。总之,没有晶振,就没有时钟周期,没有时钟周期,就无法执行程序代码,单片机就无法工作。课程设计感想

24、:众所周知,学贵以致用,通过几天的数字钟设计过程,我们将从书本上学到的知识应用于实践,学会了初步的电子设计,虽然过程中遇到了一些困难,但是在解决这些问题的过程无疑也是对自己自身专业素质的一种提高。当最终调试成功的时候也是对自己的一种肯定。在当前金融危机大的社会背景下,能够增加自身砝码的不仅仅是一纸文凭证书,更为重要的是毕业生是否能够适应社会大潮流的需要,契合企业的要求即又较硬的动手操作及设计能力。此次的设计作业不仅增强了自己在专业设计方面的信心,鼓舞了自己,更是一次兴趣的培养,为自己以后的学习方向的明确了重点。另外在这次实验中我们遇到了不少的问题针对不同的问题我们采取不同的解决方法,最终一一解决设计中遇到的问题。还有在实验设计中我们曾遇到多块芯片以及数码管损坏的情况造成了数字钟的显示没有达到预期的效果,或是根本不显示,通过错误排除最终确认是元件问题,并向老师咨询跟换元件最终的到解决。在我们曾经遇到不懂的问题时,利用网上的资源,搜索查找得到需要的信息。通过学期的课程设计,我们真正体会到什么是团队协作,真正的了解到团队合作的有利之处,真正感受到团队成员为了共同的目标联合在一起时的强大的力量。我们主要有以下心得体会:(1) 要有奉献精神,不要怕自己多做了,不要怕自己承担的任务有多重,而其他成员做的很少。多去做一点又不

温馨提示

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

评论

0/150

提交评论