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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(MCS51单片机可调电子钟设计Word文件下载.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

MCS51单片机可调电子钟设计Word文件下载.docx

1、1)自动计时,显示24小时制时间,由6位LED显示器显示时、分、秒。 2)起始时间为:00:00。 3)具备校准功能,可以直接由按键设置当前时间。第二部分 课程设计报告一、单片机发展概况单片机诞生于20世纪70年代末,它的发展史大致可分为三个阶段: 第一阶段(1976-1978):初级单片机微处理阶段。该时期的单片机具有 8 位CPU,并行 I/O 端口、8 位时序同步计数器,寻址范围 4KB,但是没有串行口。第二阶段(1978-1982):高性能单片机微机处理阶段,该时期的单片机具有I/O 串行端口,有多级中断处理系统,15 位时序同步技术器,RAM、ROM 容量加大,寻址范围可达 64KB

2、。第三阶段(1982-至今)位单片机微处理改良型及 16 位单片机微处理阶段民用电子产品、计算机系统中的部件控制器、智能仪器仪表、工业测控、网络与通信的职能接口、军工领域、办公自动化、集散控制系统、并行多机处理系统和局域网络系统。二、MCS-51单片机系统简介 MCS-51系列单片机产品都是以Intel公司最早的典型产品8051为核心构成的。MCS-51单片机由CPU 、RAM 、ROM 、I/O接口、定时器/计数器、中断系统、内部总线等部件组成。8051单片机的基本性能有: 8位CPU; 布尔代数处理器,具有位寻址能力; 128B内部RAM,21个专用寄存器; 4KB内部掩膜ROM; 2个1

3、6位可编程二进制加1定时器/计数器; 32个(48位)双向可独立寻址的I/O口; 1个全双工UART(异步串行通信口); 5个中断源,两级中断结构 ; 片内振荡器及时钟电路 ,晶振频率为1.2MHz12MHz; 外部程序/数据存储器寻址空间均为64KB; 111条指令,大部分为单字节指令; 单一+5V电源供电,双列直插40引脚DIP封装。MCS-51以其典型的结构和完善的总线专用寄存器的集中管理,众多的逻辑位操作功能及面向控制的丰富的指令系统,堪称为一代“名机”,为以后的其它单片机的发展奠定了基础。三、设计思路整个程序先给数码管送初值00 00 00,然后进行初始化工作。程序由一个主函数,一个

4、定时器中断程序,一个延时子程序,一个调时子程序,一个显示子程序构成。程序通过按键扫描程序来确定是否调用中断程序来对时间进行调整。用一子程序完成时分秒的调整,通过循环扫描三个按键的电平变化来判断对应按键是否按下,并带有去抖动功能,当P_4按一次时进行秒调,两次时进行分调整,三次时进行时调整,四次时显示时间。若分秒增一到达60次或者时增一到达24次,将对其清零;若分秒减一到0时,将其赋值59,若时减一到0时,将其赋值23。各个操作均实时的通过数码管显示可分为以下几个功能模块:1)主程序:初始化与键盘监控。2)计时:为定时器中断服务子程序,完成刷新计时缓冲区的功能。3)时间设置:由按键设置当前时间。

5、4)键盘扫描:判断是否有键按下,并确定键号。5)显示:完成8位动态显示。四、硬件电路设计我们组的引脚是设计在P1.0、P1.1、P1.2的地方的五、软件设计框图六、程序源代码:#includeabsacc.h#define uchar unsigned char#define uint unsigned int/*七段共阴管显示定义*/ uchar code dispcode =0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F, 0xBF,0x86,0xCB,0xCF,0xEF,0xED,0xFD,0x87,0xFF,0xDF;/*定义并初始化

6、变量*/uchar second=0;uchar minite=0;uchar hour=0;uchar mstcnt=0;sbit P1_0=P10; / second 调整定义sbit P1_1=P11; /minite调整定义sbit P1_2=P12; /hour调整定义int key_flag=0;/*函数声明*/void delay(uchar k ); /延时子程序void time_pro( ); /时间处理子程序void display( ); /显示子程序void keyscan( ); /键盘扫描子程序/*/*延时子程序*/*/void delay (uchar k)uc

7、har j;while(k-)!=0) for(j=0;j125;j+) ; /*/*时间处理子程序*/void time_pro( void) if(second=60) /秒钟设为60进制 second=0; minite+; if( minite=60) /分钟设为60进制 minite=0; hour+; if(hour=24) /时钟设为24进制 hour=0;/* 显示子程序*/void display(void) P2=0xdf; P0=dispcodehour/10; /显示小时的十位 delay(1); P2=0xef; P0=(dispcode(hour%10)|0X80;

8、 /显示小时的个位 P2=0xf7; P0=dispcodeminite/10; /显示分的十位 P2=0xfb; P0=(dispcodeminite%10)|0X80; /显示分的个位 P2=0xfd; P0=dispcodesecond/10; /显示秒的十位 P2=0xfe; P0=dispcodesecond%10; /显示秒的个位/*/*键盘扫描子程序*/void keyscan (void) if(P1_0=0) delay(10); if(P1_0=0) ET0=0; TR0=0; +key_flag; while(!P1_0); mstcnt=0; switch(key_fl

9、ag) case 1: if(P1_1=0) delay(200); second+; if(second=60) second=0; while(!P1_1); if(P1_2=0) delay(200); second-; if(second=0) second=59;P1_2); break; case 2: if(P1_1=0) if(minite =60) minite =0; while(! minite -; if(minite =0) minite =59; case 3: delay(200); hour+; if(hour=24) hour=0; if(P1_2=0) de

10、lay(200); hour -; if(hour =0) hour =23; case 4 : break; if(key_flag=4) key_flag=0; ET0=1;TR0=1; void timer0(void) interrupt 1 using 0 /定时器0方式1,50ms中断一次 TH0=0x3c; TMOD = 0x11; mstcnt+; if(mstcnt=20) second+;/*主函数*/void main(void) P1=0xff; /初始化p1口,全设为1 TMOD = 0x11; /time0为定时器,方式1TH0=0x3c; /预置计数初值TL0=0

11、xb0;EA=1;ET0=1; while (1) keyscan( ); /按键扫描 time_pro( ); /时间处理 display( ); /显示时间 七、结束语我所选的课程设计题目是数字时钟。刚拿到这个课题时,不只如何动手去做。就去上网查询资料和源程序,认真研究了老师所给的程序之后,才有了基本的思路,先将整个系统根据不同的功能化分成模块,再分别进行设计,逐个攻破,最后将其整合即可。知道最重要的是1秒定时部分和如何把时分秒在数码管中显示出来,同时设计出来的产品还必须具备一些基本的人机交互功能。通过这次的设计使我认识到本人对单片机方面的知识知道的太少了,对于书本上的很多知识还不能灵活运

12、用,尤其是对程序设计语句的理解和运用,导致编程的程序过于复杂,设计思路混乱。本次的设计使我从中学到了如何从理论到实践的转化,怎样将我所学到的知识运用到我以后的生活、工作中去。在大学的课堂只能学到书本上的专业知识,但是我们的实际应用还很欠缺,此次的电子时钟设计给我带来了新的希望,我能够自己独立制图,编写程序,做出最终的成品,这种成就感是非常让人激动的。同时在查找资料的过程中我也学到了许多新的知识,在和同学协作过程中增进同学间的友谊,使我对团队精神的积极性和重要性有了更加充分的理解。我知道,今后我的路还是很长,我要学的东西也有很多。通过这次实习,我深刻的认识到如果专业知识掌握得不够牢固,就不能很好的应用,但我会更加努力的学习这方面的知识,充实自己。PS:老师,非常抱歉的是,由于之前拷贝程序的时候,同组的同学拷错了文件夹,交作品的时候,我去参加了驾校考试,所以这次我们组的作品没有能够保存下来,我们只好向有些同学那里拷贝过来了制图和程序上交,但是我们做的和他们的并不完全相同,引脚也不一样,虽然这给老师带来了很大的困扰,但是我们还是感到非常抱歉。希望老师能够原谅我们,再次感谢老师这段时间的辛苦教导。八、参考文献1、张 鑫. 单片机原理及应用(第2版)M. 电子工业出版社,2010年;

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2