ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:141.07KB ,
资源ID:4841999      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4841999.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机89C51的数码管显示时钟设计.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于单片机89C51的数码管显示时钟设计.docx

1、基于单片机89C51的数码管显示时钟设计基于单片机89C51的数码管显示时钟设计基于单片机的数字时钟摘 要单片机在多功能数字钟中的应用已是非常普遍的,人们对数字钟的功能及工作顺序都非常熟悉。但是却很少知道它的内部结构以及工作原理。由单片机作为数字钟的核心控制器,可以通过它的时钟信号进行实现计时功能,将其时间数据经单片机输出,利用显示器显示出来。通过键盘可以进行校时、定时等功能。输出设备显示器可以用液晶显示技术和数码管来显示技术。 本系统利用单片机实现具有计时、校时等功能的数字时钟,是以单片机AT89C51为核心元件同时采用LED数码管显示器动态显示“时”,“分”,“秒”的现代计时装置。与传统机

2、械表相比,它具有走时精确,显示直观等特点。另外具有校时功能,秒表功能,和定时器功能,利用单片机实现的数字时钟具有编程灵活,便于功能的扩充等优点。关键词:数字钟系统; 单片机;数码管显示Digital clock system Abstract SCM in multi-function digital clock in the application is already very common, people on the digital clock function and are very familiar with the work order. But very few know t

3、hat its internal structure and working principles. SCM as a digital clock from the core controller, it can achieve the clock signal timing, its time data by the MCU output, use of monitors displayed. Keyboard can be carried out at the school, timing, and other functions. Output devices can be used l

4、iquid crystal display monitors and digital technology to display the technology. The system uses MCU with time, the school features such as the digital clock, SCM AT89C51 is also used as the core components of the LED digital display dynamic display when and points and seconds of the modern time dev

5、ice . Compared with the traditional mechanical watches, it has a precise path that intuitive, and other characteristics. In addition a school function, stopwatch function, and the timer function to achieve MCU use of the digital clock with programming flexibility to facilitate the expansion of funct

6、ional advantages. Key words: digital clock system; SCM; LED Monitor设计任务书.摘要.ABSTRACT.1.系统方案. 系统概述设计任务书.摘要.ABSTRACT. 1.系统方案.11.1 系统概述.11.2 方案论证.11.3 扩展功能.22.设计过程.22.1 设计原理 22.2 所需元器件.23. 电路与程序.23.1 电路设计23.2 程序设计3.3.7 参考文献64. 总结体会.16 1、系统方案1.1 系统概述本系统可模拟电子时钟,实现时钟,秒表,倒计时定时器功能,主从CPU数据处理、键盘控制与数据显示。主控系统能响

7、应按键,并对其进行相应的处理,再把其对应的结果数据在数码管LED上显示。具体设计基本任务是:1用LED数码管显示时间,且能显示时、分、秒的24小时制的数字钟。2具有校时功能,具体方法:设置三个按钮,其中两个按钮分别对“时”、“分”进行校时,另一个按钮则实现对“秒”位清零系统结构框图如图1.1所示: 图1.1数字钟系统结构框图1.2 方案论证方案一1计数部分采用异步2-5-10进制计数器7490,显示部分参考实验七。1计时用的“秒”脉冲信号可用实验板中提供的800Hz分频产生。800Hz信号同时作为动态扫描显示电路的时钟信号。2时、分校时控制,当校时按钮按下时,可对时、分计数器CP端输入秒脉冲来

8、加速计数速度来达到校时目的。方案二 1.用单片机定时器中断原理实现数码管动态10ms循环扫描,同时完成计数功能,并经过多次中断产生“秒”信号。 2.可控制按键实现时,分,秒加一,减一功能。 考虑到设计硬件简单原则,利用单片机实现的数字时钟具有编程灵活,便于功能的扩充等优点,故本设计采用方案二。1.3扩展功能1.实现秒表功能。 2.可以用于倒计时定时。 3.可以时分秒清零。2.设计过程1原理 本设计主要应用了单片机原理,利用单片机的I/O口,由键盘控制I/O口,进行单片机相应的程序处理,再用I/O口控制数码管的显示。利用开关来控制开启,暂停计时,并切换时钟,秒表,倒计时定时器功能。2所需元器件

9、六位一体数码管,89C51单片机,7407芯片,12M晶振,按键若干,开关若干,电阻若干,电容若干,导线3电路与程序设计3.1 电路设计:图3.1总体电路图本系统的设计电路如图3.1所示,左边按键控制时分秒加一减一操作,右边开关切换数码管显示时钟,秒表,倒计时定时器等功能。单片机下方按键有复位功能:当在时钟方式时,此按键有清零作用;当在倒计时定时器方式时,此按键按下,时分秒均付为最大值。右上角是六位一体的数码管LED,用于显示。数码管左边的上拉电阻具有自动拉高P0I/O口的功能。数码管下方的7407芯片有限流作用,用于防止数码管电流过大而烧毁。3.2 程序设计 图3-2-1为主程序流程图,图3

10、-2-2为定时器0程序流程图,图3-2-3为定时器1程序流程图。图3-2-1主程序流程图此为主程序流程图,初始化后,就一直在while里循环,并把秒,分,时分别拆成各位和十位两个数,放到相应的数码管上显示,并检测是否有按键按下,和定时器T0,T1溢出,来执行相应的键盘子程序和定时器0,1的中断程序。 图3-2-2定时器0程序流程图此为定时器0流程图,在主程序检测到T0溢出时执行该子程序,该中断主要执行数码管循环显示数字,并检测到一秒后秒加一的功能。图3-2-3定时器1程序流程图此为定时器1流程图,在主程序检测到T1溢出时执行该子程序,该中断程序主要执行数码管循环显示数字,并检测到一秒后秒减一的

11、功能。参考文献1 康华光,邹寿彬,秦臻. 电子技术基础数字部分. 北京高等教育出版社,2006. 12 张毅刚,彭喜元,董继成. 单片机原理及应用. 高等教育出版社,2003.123 刘鲲,刘春亮,黄焱. 单片机C语言入门. 人民邮电出版社,2008年4月第1版.1.开始函数的定义:#include#define uchar unsigned char /宏定义#define uint unsigned int /宏定义#include /循环左移函数库void jian_pan(); /键盘子函数char code duan_ma=0x3f,0x06,0x5b,0x4f,0x66,0x6d,

12、0x7d,0x07,0x7f,0x6f,0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef; /时钟显示数组int ss,mm,hh,s_shi,s_ge,m_shi,m_ge,h_shi,h_ge,t,t0,zy,j,ds; /zy 为左移的意思sbit p32=P32;sbit p31=P31;sbit p30=P30;sbit p37=P37;2.主程序:void main() ds=1; /定时器初始化 P2=0xfe; /数码管位初始化 P0=0x3f; /如果时时钟,断码初始置0 P1=0xff; /键盘初始 t=0; /1S时,t=

13、700 t0=0; /数码管动态显示一次,t0=2,10ms左右 TH0=(65536-10001)/256; TL0=(65536-10001)%256; TH1=(65536-10001)/256; TL1=(65536-10001)%256; EA=1; ET1=0; /开定时器0 TR1=0; /定时器开始工作 ET0=1; TR0=1; while(1) if (P1!=0xff) /判断是否有键,有键就执行jian_pan子程序 jian_pan(); s_shi=ss/10; /拆分 s_ge=ss%10; m_shi=mm/10; m_ge=mm%10; h_shi=hh/10

14、; h_ge=hh%10; 3.定时器0中断程序:void timer0() interrupt 1 if(p32=1) j=610; else j=10; TH0=(65536-10001)/256; /重新初始化T0 TL0=(65536-10001)%256; t+; t0+; if(P2=0xdf) /如果数码管显示到第6个下一个显示第1个数码管 1101 1111 - 0111 1111 - 1111 1110 P2=0x7f;/秒分时计算 if(ss=60) /若ss为60,ss=0,同时mm+1 ss=00; mm+; if(mm=60) /若mm为60,mm=0,同时hh+1

15、mm=00; hh+; if(hh=24) /若hh为24,hh=0 hh=00;/数码管动态显示,t=02时左移一位,并显示那一位相应的值 if(t0=2) t0=0; /P2循环左移一位 zy=P2; zy=_crol_(zy,1); P2=zy; /相应数码管显示相应的数值 if(P2=0xfe) P0=duan_mas_ge; if(P2=0xfd) P0=duan_mas_shi; if(P2=0xfb) P0=duan_mam_ge+10; if(P2=0xf7) P0=duan_mam_shi; if(P2=0xef) P0=duan_mah_ge+10; if(P2=0xdf)

16、 P0=duan_mah_shi; if (t=j) t=0; if (p31=1) ss+; if(t611) t=0; if(p30=0) /转到timer1上去 ET0=0; TR0=0; ET1=1; TR1=1; t=0; 4.定时器1中断程序: void timer1() interrupt 3 j=610; if(ds=1) mm=59; if(ds=0) ds=0; else ds-; TH1=(65536-10001)/256; /重新初始化T1 TL1=(65536-10001)%256; t+; t0+; if(P2=0xdf) /如果数码管显示到第6个下一个显示第1个数

17、码管 1101 1111 - 0111 1111 - 1111 1110 P2=0x7f;/秒分时计算 if(ss=-1) /若ss为60,ss=0,同时mm+1 ss=59; mm-; if(mm=-1) /若mm为60,mm=0,同时hh+1 mm=59; hh-; /数码管动态显示,t=02时左移一位,并显示那一位相应的值 if(t0=2) t0=0; /P2循环左移一位 zy=P2; zy=_crol_(zy,1); P2=zy; /相应数码管显示相应的数值 if(P2=0xfe) P0=duan_mas_ge; if(P2=0xfd) P0=duan_mas_shi; if(P2=0

18、xfb) P0=duan_mam_ge+10; if(P2=0xf7) P0=duan_mam_shi; if(P2=0xef) P0=duan_mah_ge+10; if(P2=0xdf) P0=duan_mah_shi; if (t=j) t=0; if (p31=1) if(ss|hh|mm)!=0) ss-; if(t611) t=0; if(p30=1) /转到timer1上去 ET1=0; TR1=0; ET0=1; TR0=1; t=0; 5.键盘子程序:void jian_pan() uint temp; temp=P1; switch(temp) case 0xfe: /秒个

19、位加1 while(P1!=0xff) if(ss=59) ss=00; else ss+; break; case 0xfd: /秒个位减1 while(P1!=0xff) if(ss=00) ss=59; else ss-; break; case 0xfb: /分个位加1 while(P1!=0xff) if(mm=59) mm=00; else mm+; break; case 0xf7: /分个位减1 while(P1!=0xff) if(mm=00) mm=59; else mm-; break; case 0xef: /时个位加1 while(P1!=0xff) if(hh=23

20、) hh=00; else hh+; break; case 0xdf: /时个位减1 while(P1!=0xff) if(hh=00) hh=23; else hh-; break; case 0xbf: ss=0; break; case 0x7f: while(P1!=0xff) if(p30=1) hh=0;mm=0;ss=0; else hh=23;mm=59;ss=59; break; 4.总结体会课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算

21、机应用中空前活跃的领域, 在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。本系统是以单片机AT89C52芯片为核心部件,实现了时钟、倒计时、秒表的功能。此次在软件上是花费时间最多的,我们上网找资料,上图书馆,尽可能的了解有关于单片机这方面的知识。通过这次课程设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。使我初步了解了单片机的原理,学会了使用仿真软件进行仿真,以及在常用编程设计思路技巧(特别是C语言)的掌握方面都能向前迈了一大步。通过本次电子技术课程设计,我们充分认识到了课程设计的理要性和必要性,本次设计使们对已学过的基础知识有了更深入的理解。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1