单片机原理及应用课程设计报告LED数字显示电子时钟

上传人:仙*** 文档编号:35962370 上传时间:2021-10-29 格式:DOC 页数:18 大小:170.50KB
收藏 版权申诉 举报 下载
单片机原理及应用课程设计报告LED数字显示电子时钟_第1页
第1页 / 共18页
单片机原理及应用课程设计报告LED数字显示电子时钟_第2页
第2页 / 共18页
单片机原理及应用课程设计报告LED数字显示电子时钟_第3页
第3页 / 共18页
资源描述:

《单片机原理及应用课程设计报告LED数字显示电子时钟》由会员分享,可在线阅读,更多相关《单片机原理及应用课程设计报告LED数字显示电子时钟(18页珍藏版)》请在装配图网上搜索。

1、单片机原理及应用课程设计报告专 业: 电子信息工程 班 级: 0901 姓 名:指导教师: 二0 XX年 XX 月 XX 日任务书:一、设计题目LED数字显示电子时钟二、设计要求 1、方案论证,确定总体电路原理图。 2、元器件选择,设计PCB图(或用万能电路实验板搭线)。3、绘制程序流程图,编写汇编语言源程序(或C语言源程序)。4、安装调试,实现数字时钟的基本功能,即能正确显示时、分、秒;可调整时间;秒闪功能。 目录一 电路原理图和设计程序流程图11. 单片机芯片选择方案12. 时钟主程序流程图23. 按键扫描程序流程图24. 时钟程序流程图3二 设计方案分析31. 时钟电路32. 复位电路4

2、3. 按键电路44. 显示电路55. LED的结构与原理5三 程序仿真6四 心得体会7附一:参考书目9附二:源程序9一 电路原理图和设计程序流程图 单片机模块驱动模块按键模块LED显示模块时钟模块电源模块 图一流程图系统由51系列单片机AT89C51、按键、数码管显示、电源等部分构成。单片机部分包括时钟电路、复位电路;按键部分能够实现对时间的调整、设定。三个按键的功能分别为:小时的调整,分钟的调整,复位。电源部分(USB充电器)可输出5V电压,给系统供电。1. 单片机芯片选择方案方案一:AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system

3、programmable)的可反复擦写1000次的Flash只读程序存储器。主要性能有:与MCS-51单片机产品兼容、全静态操作:0Hz33Hz、 三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器、八个中断源、全双工UART串行通道、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符、易编程。方案二:AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM)。主要性能有:兼容MCS51指令系统、32个双向I/O口、256x8bit内部RAM、3个16位可编程定时/

4、计数器中断、时钟频率0-24MHz、2个串行中断、可编程UART串行通道、2个外部中断源、6个中断源、2个读写中断口线、3级加密位、低功耗空闲和掉电模式、软件设置睡眠和唤醒功能。从单片机芯片主要性能角度出发,本数字电子钟单片机芯片选择设计采用方案一。2. 时钟主程序流程图时钟主程序流程图如图二所示。进入系统后首先实现程序的初始化,然后进入主程序,定时器开始计时,当定时器发生中断时刷新数码管同时显示,之后实现中断与显示的循环。图二时钟主程序流程图3. 按键扫描程序流程图 按键扫描程序流程图如图三所示。主程序进入键盘扫描程序后判断是否按下了P1.0。若是按下了P1.0为了去除抖动再进行确认是否按下

5、P1.0,当确认按下了P1.0后判断按下P1.0的次数,若按了一次则进行秒调整,若按了两次则进行分调整,若按了三次则进行时调整。然后进入显示程序段进行显示刷新。图三按键扫描流程图4. 时钟程序流程图时钟程序流程如图四所示。设计中,采用51单片机的定时器的方式一定时,所以如图所示,当程序产生定时溢出中断时要重新赋初值。然后进行是否到一秒的判断,若到一秒则秒加一,若未到则直接退出中断。一秒到了加一以后进行是否秒到六十的判断,若秒到六十则秒清零,同时分加一,若秒未到六十则退出中断。分加一以后进行分是否到六十的判断,若未到六十则退出中断,若分到六十则分清零,同时小时加一。小时加一后进行小时是否到二十四

6、的判断,若未到二十四则退出中断,若到二十四则清零,然后退出中断。图四时钟程序流程图二 设计方案分析1. 时钟电路 时钟电路由外接谐振器的时钟振荡器、时钟发生器及关断控制信号等组成。时钟振荡器是单片机的时钟源,时钟发生器对振荡器的输出信号进行二分频。 CPU 的时钟振荡信号有两个来源:一是采用内部振荡器,此时需要在 XTAL1 和XTAL2 脚连接一只频率范围为033MHZ 的晶体振荡或陶瓷振荡器及两只 30pf 电容。二是采用外部振荡,此时应将外部振荡器的输出信号接至 XTAL1 脚,将XTAL2 脚浮空。 利用单片机内部的定时功能来实现时钟的走时,通过编程实现每 50 毫秒产生一次中断,中断

7、20 次后,秒单元加1,秒单元加到60 时,跳回到零再继续加,同时分单元加1;当分单元加到60 时,跳到零再继续加,同时时单元的个位加1,以次类推,从而实现秒、分、小时的走时。 本次设计中采用的是内部振荡器,频率为 12MHZ 的晶体振荡器及 30pf 瓷片电容 。2. 复位电路 复位是指在规定的条件下,单片机自动将CPU 以及与程序运行相关的主要功能部件、I/O 口等设置为确定初始状态的过程。如果电路参数不符合规定的条件或干扰导致单片机不能正确的复位,系统将无法进行正常的工作,因此,复位电路除了要符合厂家规定的参数外,还要滤除可能的干扰。AT89S51 单片机内部有一个由施密特触发器等组成的

8、复位电路。复位信号是从其9 脚,即RST 脚输入的。AT89S51单片机规定,当其处于正常工作基于51 单片机的数字时钟的设计状态,且振荡器工作稳定后,在RST 端有从高电平到低电平,且高电平时间大于两个机器周期的复位信号时,CPU 将完成对系统的复位。有两点需要注意:一、复位信号是高电平有效,二、高电平的保持时间必须大于两个机器周期,可见高电平保持时间与振荡频率有关。 上电复位是指在系统上电时,RST 端自动产生复位所需要的信号将单片机复位。上电时,RST 端高电平的维持时间取决于R(1k)和C(22uF)的值。要使单片机可靠的复位,设计中使其维持的时间足够长。 3. 按键电路 方案一:采用

9、阵列式键盘 此类键盘是采用行列扫描方式,当按键较多时可以减少占用单片机的 I/O口数目。方案二:采用独立式按键电路 每个键单独占有一根I/O接口线,每个I/O口的工作状态互不影响,此类键盘采用端口直接扫描方式。但是当按键较多时占用单片机的I/O数目较多。 本系统只需三个按键,因此选择方案二。 如果按键采用中断的话,可以使单片机工作更加灵活、效率更高。由于该系统要用到 3 个按键,考虑到单片机的中断资源不够,所以就只用P1.0及P1.2 和P1.3 口。 4. 显示电路方案一:采用动态显示 这种工作方式是分时轮流选通数码管的公共端,使得各个数码管轮流导通。当所有数码管依次显示一遍后,软件控制循环

10、,使每位显示器分时点亮,外接7407组成显示电路。这种方式不但能提高数码管的发光效率,并且由于各个数码管的字段线是并联使用的,因而大大简化了硬件线路。 各个数码管虽然是分时轮流通电,但由于发光数码管具有余辉特性及人眼具有视觉暂留作用,所以适当选取循环扫描频率时,看上去所有数码管是同时点亮的,察觉不出有闪烁现象。方案二:采用静态显示 数码管工作在静态显示方式下,共阴极或共阳极点连接在一起接地或高电平。每位的段选线与一个8 位并行口相连。只要在该位的段选线上保持段选码电平,该位就能保持相应的显示字符。该工作方式常采用串行口设定方式0 输出,外接74LS164 移位寄存器构成显示电路。 综合考虑,采

11、用动态显示,采用一片7407芯片作为缓冲,分时选中三片数码管,从编程和提供的硬件等方面综合考虑后,决定采用动态显示的方法, 图五显示电路 LED 显示器的结构与原理5. LED的结构与原理一般数码管内部有共阴和共阳两种连接方式。共阴就是将各个发光二极管的阴极接地,共阴极数码管如图 所示。图中一个发光二极管就相当于一个数码段。若给某段加上高电平,那么相对的段就会亮。根据要想显示的数值给各段数码管加上相应的高电平就可以显示不同的数值了。 共阳就是将各个发光二极管的阴极一起接在高电平上。 从图 中可以看出共阳的显示器与共阴的显示器有一点区别,就是它将阳极连接在一起接到高电平上。这样在想显示某个数的时

12、候,各个发光二极管赋低电平而不是在共阴时的高电平了,这就是共阴共阳的区别。 图六LED的引脚图由于它内部构造不同,在显示时代码也有所不同,共阴七段LED 段选码表 。 共阴七段LED段选码显示字符数显代码显示字符数显代码00x3f50x6d 1 0x06 60x7d 2 0x5b 70x07 30x4f 80x7f 4 0x66 90x6f三程序仿真在proteus中画出原理图导入.hex文件,画出原理电路图。图七proteus仿真电路图四 心得体会在程序调试过程当中,出现了以下几个问题:首先在做本次课程设计的过程中,我感触最深的当属查阅大量的设计资料了。为了让自己的设计更加完善,查阅这方面的

13、设计资料是十分必要的,同时也是必不可少的。我们是在做单片机实习,我们一切都要有据可依,有理可寻,不切实际的构想永远只能是构想,永远无法升级为设计。 其次,在这次课程设计中,我们运用到了以前所学的专业课知识,如:C语言、模拟和数字电路知识等。虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。 最后,在设计之前,我们要对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的

14、完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在实习过程中遇到问题是很正常的,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。但是从中学到的知识会让我受益终身。发现、提出、分析、解决问题和实践能力提高都会受益于我在以后的学习、工作和生活中。附一: 参考书目1 刘同法,单片机基础与最小系统实践,北京,北京航空航天大学出版社,20072 蒋辉平,单片机原理与应用设计,北京,北京航空航天大学出版社,20073 谭丙煜,怎样撰写科学论文M,2版,沈阳,辽宁人民出版社,1982 4 陈正义,单片机控制实习D附二:源程序#inclu

15、de unsigned char led12=0x3f,0x09,0xb3,0x9b,0x8d,0x9e,0xbe,0x0b,0xbf,0x9f,0x80,0x00; /用一维数组定义0-9、横杠、全灭unsigned char a6; unsigned char second=0,minute=0,hour=12;/初始值unsigned char hour1=0,minute1=0;/闹钟初始值unsigned char b6=0xfe,0xfd,0xfb,0xf7,0xef,0xdf;/扫描unsigned char k=0;unsigned int temp; / 记录毫秒为秒的变量u

16、nsigned char M,Shanshuo;/M模式、Shanshuo闪烁标志sbit Miaoshan=P10;sbit K1=P32;sbit K2=P33;sbit K3=P35;sbit Beep=P36;void delay(unsigned n) /延时,可根据n调节int x,y; for(x=0;xn;x+) for(y=0;y24;y+); void init() M=0; Miaoshan=0; /秒闪标志位 Shanshuo=0; /闪烁标志Beep=0; /整点报时 TMOD=0x10; /定时器以方式1定时 TH1=0xfd; TL1=0xff; EA=1; /打

17、开总中断 ET1=1; /允许定时器中断 TR1=1; /开启定时器void time1() interrupt 3 /定时器中断函数 TH1=0xfe; /定时ms TL1=0x0c; temp+; if(temp=500) Miaoshan=!Miaoshan; if(temp=1000) /配合定时器定时s temp=0; second+; Miaoshan=!Miaoshan; if(second=59) second=0; if(minute7&hour23&minute=0&second1)|(hour1=hour&minute1=minute&second10&temp%500=

18、0)Beep=!Beep; /整点报时 、闹钟响铃 if(k=6) k=0; P0=ak; P2=bk+; delay(1); P2=0x3f; void display()switch(M)case 0:a0=ledhour/10;a1=ledhour%10;a2=ledminute/10; a3=ledsecond%10;a4=ledsecond/10;a5=ledminute%10;break;case 1:if(Shanshuo=1)a0=ledhour/10;a1=ledhour%10;elsea0=led11;a1=led11;a2=ledminute/10;a5=ledminut

19、e%10;a4=ledsecond/10;a3=ledsecond%10;break;case 2:a0=ledhour/10;a1=ledhour%10;if(Shanshuo=1)a2=ledminute/10;a5=ledminute%10;elsea2=led11;a5=led11;a4=ledsecond/10;a3=ledsecond%10;break;case 3: a0=ledhour/10;a1=ledhour%10;a2=ledminute/10;a5=ledminute%10;if(Shanshuo=1)a4=ledsecond/10;a3=ledsecond%10;el

20、sea4=led11;a3=led11;break;case 4:if(Shanshuo=1)a0=ledhour1/10;a1=ledhour1%10;elsea0=led10;a1=led10;a2=ledminute1/10;a5=ledminute1%10;break;case 5:a0=ledhour1/10;a1=ledhour1%10;if(Shanshuo=1)a2=ledminute1/10;a5=ledminute1%10;elsea2=led10;a5=led10;break;void key_prc()/按键扫描模块 if(K1=0) delay(10);/延时去抖 i

21、f(K1=0) /按K1进行模式切换 M+;if(M=6) M=0;while(!K1); /等待按键释放 if(M!=0) switch(M) case 1: /模式-调时 if(K2=0)delay(10);/延时去抖 if(K2=0) /加键按下 if(hour 0) hour-;else hour=23; while(!K3); break;case 2: /模式-调分 if(K2=0)delay(10);if(K2=0) if(minute0) minute-;else minute=59; while(!K3); break;case 3: /模式-调秒 if(K2=0)delay

22、(10);if(K2=0) if(second0) second-;else second=59; while(!K3); break;case 4: /模式-闹钟调时 if(K2=0)delay(10); if(K2=0) if(hour10) hour1-; else hour1=23; while(!K3); break; case 5: /模式-闹钟调分 if(K2=0)delay(10); if(K2=0) if(minute10) minute1-; else minute1=59; while(!K3); break; void main()/主函数 init(); while(1) key_prc(); display();

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!