- 1、本文档共36页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
福州大学
《MCS-51单片机》
课程设计
题 目: 数字时钟
姓 名:
学 号:
学 院: 电气工程与自动化学院
专 业: 电机电器
年 级: 2009
起讫日期: 2012.04.10 ~2012.5.8
指导教师: 蔡逢煌
目 录
1、课程设计目的 2
2、课程设计题目和实现目标 2
3、设计方案 3
4、Proteus仿真原理图 5
5、程序流程图 5
6、程序代码 5
7、调试总结 35
8、设计心得体会 35
9、参考文献 35
1、课程设计目的
《MCS-51单片机》课程设计是与《MCS-51单片机》课程相配套的实践教学环节。《MCS-51单片机》是一门实践性很强的专业基础课,通过课程设计,达到进一步理解单片机的硬件、软件和综合应用方面的知识,培养实践能力和综合应用能力,开拓学习积极性、主动性,学会灵活运用已经学过的知识,并能不断接受新的知识。培养大胆发明创造的设计理念,为今后就业打下良好的基础。
通过课程设计,掌握以下知识和技能:
单片机应用系统的总体方案的设计;
单片机应用系统的硬件设计;
单片机应用系统的软件程序设计;
单片机开发系统的应用和调试能力
2、课程设计题目和实现目标
2.1课程设计题目
.智能电子钟设计 要求:1.能正确显示日期、时间,并且可修该;
2.具有闹铃的功能;
3、秒表功能;
4、数码显示当前温度;
2.2实现目标
使用时钟芯片ds1302实现对时间、日期的计时功能。
使用lcd1602液晶显示屏来显示时钟芯片内部的计时情况。同时闹钟、温度显示、秒表功能也使用液晶屏显示。最终实现的效果是显示屏第一行显示年月日和星期,第二行显示小时、分钟、秒,以及温度值。在经行闹钟设置时,闹钟显示在显示屏第二行,同样秒表功能也显示在第二行。正常时间、闹钟和秒表三个功能通过按键切换,分别显示于显示屏第二行。
闹钟通过闹钟程序实现,当所设闹钟与计时时间相同时,蜂鸣器发出滴滴声。
秒表的设计是通过使用芯片内部定时器0作为计时时基,结合中断程序和按键实现秒表启动、停止和清零的效果。
温度测量使用芯片ds18b20,读出的温度在lcd上显示,且具有实时显示测量的功能。能实现显示两位的正温度,并可以在程序内部设置一个温度最大值,当所测温度超过最大值时,LED小灯闪亮以作为报警提示。
3、设计方案
设计的总体思路是时钟芯片1302的数据采集出来以后送入单片机,经过转码以后再送入lcd液晶屏显示。同理18b20所测量的温度通过但数据线送入单片机,经过转码以后送入显示屏,与时间日期同时显示在显示屏上。
具体的设计方案如下:
1602由两行每行十六个显示点阵组成,有八根数据传输线,三根控制线分别为选通位RS,使能位E,读状态位WR。另外还需外接电源线和地线。
在操作过程中首先要注意的一点是由于只有一根指令传输的接线,因此指令数据是一位一位经行传输的。在对显示屏经行操作时,首先要对显示屏经行初始化,设置基本参数。之后再程序中经行操作就可以只写控制字和数据。每显示一个数据都需要先给出数据要显示的地址,之后再传输数据。对显示屏经行写指令操作时要保持RS低电平RW低电平、E高脉冲。而在写入数据时要保持RS高电平、RW低电平、E高脉冲。
将时钟芯片里的每一位数据送入单片机内部寄存器ACC中的地位,然后每取一位数据ACC左移一位,这样去除一个八位数据为一次读取时间。同样向时钟芯片送数据时也是通过将要写入的内容先存入ACC然后每次写入地位数据,写完一位就右移一位。初始化完成后,每次与时钟芯片通信都先写入要通信的地址,再读写数据。
从时钟芯片中读出或者写入的数据是BCD码,因此需要有一个转码过程。这里我在写入数据时设计了一个十六进制数转为BCD码的程序“bcd()”,转码完成后可以使用一个传输写入的程序writeto1302来写入数据,而读出时,在读出程序readfrom1302中直接加入了BCD转十六进制的语句。
转码结束后数据存入数组time[]以便经行进一步的处理。因为lcd显示的是ASC码,且每一位显示一个数字,因此这里要对十六进制数分离并变成ASC码的相应值。
与上述过程相对的是,在每次修改时间的时候,因为此时始终芯片还在工作,因此这个时候需要先停止读入时钟值,我在程序中通过设置一个标志位fla
文档评论(0)