51单片机实时时钟设计精选资料.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
51单片机实时时钟设计精选资料

完成内容:完成一个简易数字时钟的软硬件设计,首先利用protus完成功能方真,再利用dxp完成原理图和pcb的绘制,该数字时钟可具备如下功能: 实现最基本的计时功能,显示时、分、秒,可以通过按键设置时间。 要求:时钟计时精确,按键操作不影响计时。 具备秒表计时功能。 要求:记时精度达到100ms,计时支持启动、暂停、继续和停止操作。 具备整点响铃提示功能。 要求:整点闹铃五短一长,闹钟响铃时可以按键清楚响铃。 具备日期显示和调整功能。 说明:以上功能中,1为必备功能,2、3、4为选做功能。采用数码管完成显示,按键进行调整,供电采用usb供电,其中数码管和按键的个数以及操作方式自己决定。系统操作以简洁,方便,原理图绘制正确,PCB布局布线规整为宜。 评测内容:protus的功能仿真测试,dxp原理图以及pcb绘制结果。 本设计使用89C51芯片作为控制芯片,复位电路和时钟电路构成单片机最小系统。利用P0口8个引脚接上拉电阻,驱动LCD液晶显示时钟。 总体设计思路图 2.3单元电路设计 本设计主要分为时钟电路模块,复位电路模块,显示模块和控制模块。设计方案如下 2.3.1 时钟模块 89C51单片机的时钟信号通常用内部振荡方法得到,在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振)或陶瓷谐振器,就构成了内部振荡方法。由于单片机内部有一个高增益反相放大器,当外接晶振后就构成了自激振荡器并产生振荡时钟脉冲。晶振通常选择6MHz、12MHz、24MHz。本设计采用12MHz晶振。图中电容C1、C2起到稳固振荡频率、快速起振的作用。电容值一般为5—30pF。本设计选用33pF电容。 2.3.2 复位电路模块 图2.4 复位电路 复位操作完成电路的初始化,使单片机从一种确定的状态开始运行。 由上图可知,控制模块实际上就是单片机的最小系统。本设计采用常用的上电且开关复位电路。上电后,由于电容的充电,使RST持续一段高电平时间。当单片机已在运行中时,按下复位键也能使RST持续一段时间的高电平,从而实现上电且开关复位的操作。此处C3电容取10uF,R2=K。 控制模块  图2.5 控制电路 显示模块 显示部分电路设计如下图 图2.6 显示模块电路图 三、软件设计  3.1程序设计思路(流程图) 否 源程序 #includereg52.h unsigned char tab[]= 23:58:48; unsigned char code tab2[]=hello; #define lcdp P0 sbit rs=P3^5; sbit rw=P3^6; sbit en=P3^7; sbit led=P1^7; sbit s1=P1^0; sbit s2=P1^1; sbit s3=P1^2; unsigned char n,count,mu; char ss=23,ff=58,mm=55; void delay(unsigned char z) { unsigned char i,j; for(i=z;i0;i--) for(j=110;j0;j--); } void write_com(unsigned char com)//写指令 { rs=0; rw=0; en=0; lcdp=com; delay(5); en=1; delay(5); en=0; } void write_date(unsigned char date)//写数据 { rs=1; rw=0; en=0; lcdp=date; delay(5); en=1; delay(5); en=0; } void write_sj(unsigned add,unsigned date) { unsigned char shi,ge; shi=date/10; ge=date%10; write_com(0x80+add); write_date(shi+0x30); write_date(ge+0x30);

文档评论(0)

dart004 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档