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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

基于51单片机的ds1302与LM016L液晶时钟设计.docx

1、基于51单片机的ds1302与LM016L液晶时钟设计基于51单片机的时钟设计一基本功能利用AT89c51作为主控器与时钟芯片DS1302组成一个时钟系统,并由LM016L液晶显示。二硬件设计图1.总设计图1.单片机最小系统1.1选用AT89C51的引脚功能图2. AT89C51 XTAL1:单芯片系统时钟的反向放大器输入端。XTAL2:系统时钟的反向放大器输出端,一般在设计上只要在XTAL1和XTAL2上接上一只石英震荡晶体系统就可以工作了,此外可以在两引脚与地之间加入20PF的小电容,可以使系统更稳定,避免噪音干扰而死机。RESET:重置引脚,高电平动作,当要对晶体重置时,只要对此引脚电平

2、提升至高电平并保持两个及其周期以上的时间便能完成系统重置的各项动作,使得内部特殊功能寄存器内容均被设成已知状态。1.2复位电路如图所示,当按下按键时,就能完成整个系统的复位,使得程序从新运行。 图3.复位电路1.3时钟电路时钟电路用于产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。 在AT89C51芯片内部有一个高增益反相放大器,其输入端为芯片引脚X1,输出端为引脚X2,在芯片的外部跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。 此电路采用12MHz的石英晶体。 图4.时

3、钟电路2.时钟芯片部分2.1 DS1302引脚说明 图.51)Vcc1:后备电源,VCC2:主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc10.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。2)X1、X2:振荡源,外接32.768kHz晶振。3)RST:复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的

4、数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc2.0V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。4)I/O为串行数据输入输出端(双向)。5)SCLK为时钟输入端。2.2 时钟电路 图.63.LM016L液晶图7.LM016L引脚图LM016L与1602使用方法相同。引脚说明:引脚符号功能说明1VSS一般接地2VDD接电源(+5V)3V0液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器

5、调整对比度)。4RSRS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。5R/WR/W为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。6EE(或EN)端为使能(enable)端,下降沿使能。7DB0底4位三态、 双向数据总线 0位(最低位)8DB1底4位三态、 双向数据总线 1位9DB2底4位三态、 双向数据总线 2位10DB3底4位三态、 双向数据总线 3位11DB4高4位三态、 双向数据总线 4位12DB5高4位三态、 双向数据总线 5位13DB6高4位三态、 双向数据总线 6位14DB7高4位三态、 双向数据总线 7位(最高位)(也是busy flan

6、g)电路接口说明:AT889C51 的P0口作为数据的输出端,P3.5和P3.6, P3.7 作为控制信号的输出端。三软件设计3.1编程语言及编程软件的选择本设计选择C语言作为编程语言。C语言虽然执行效率没有汇编语言高,但语言简洁,使用方便,灵活,运算丰富,表达化类型多样化,数据结构类型丰富,具有结构化的控制语句,程序设计自由度大,有很好的可重用性,可移植性等特点。 而汇编语言使用起来并没有这么方便。本设计选用了Keil作为编程软件,.Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。3.2时间的显示 ML016L和16

7、02一样,都是两行十六列的液晶显示屏。通过程序对ML016L进行初始化后,通过写指令和写数据的操作就可以再液晶屏上显示出对应的数据,而时钟数据则是从DS1302获取。这样可以显示出时间。四程序#include#include#define uchar unsigned char#define uint unsigned intsbit rs=P20; /1602命令数据选择端sbit e=P21; /1602使能端sbit sck=P36; /DS1302sbit io=P37; /DS1302数据端sbit rst=P35; /DS1302 CE端 RST的功能uint temp; /定义整

8、型的温度数据float f_temp;uchar code num=0123456789; / 定义浮点型的温度数据uchar code nian=20 - - ;uchar code shi= : : ;uchar read_add=0x8d,0x8b,0x89,0x87,0x85,0x83,0x81; /DS1302读数据地址端uchar write_add=0x8c,0x8a,0x88,0x86,0x84,0x82,0x80; /DS1302写数据地址端uchar time_data=11,1,12,5,18,00,00; /设置初始时间uchar disp14; /定义数组void d

9、elayms(uint z) /毫秒级延时函数 uint i,j; for(i=z;i0;i-) for(j=120;j0;j-);void delayus(uint time) /微秒级延时函数 while(time-);/1602液晶void write_com(uchar com) /写指令函数 rs=0; P0=com; delayms(5); e=1; delayms(5); e=0;void write_data(uchar date) /写数据函数 rs=1; P0=date; delayms(5); e=1; delayms(5); e=0;void init() /液晶初始化

10、函数 uchar num; write_com(0x38); write_com(0x06); write_com(0x0c); write_com(0x01); write_com(0x80+0x40); for(num=0;num8;num+) write_data(shinum); delayms(1); write_com(0x80); for(num=0;num10;num+) write_data(niannum); delayms(1); /DS1302void write_ds1302_byte(uchar dat) /写一个字节函数 uchar i; for(i=0;i1;

11、sck=1; void write_ds1302(uchar add,uchar dat) /写一个地址和数据函数 rst=0; _nop_(); sck=0; _nop_(); rst=1; _nop_(); write_ds1302_byte(add); write_ds1302_byte(dat); rst=0; _nop_(); io=1; sck=1;uchar read_ds1302(uchar add) /读地址函数 uchar i,value; rst=0; _nop_(); sck=0; _nop_(); rst=1; _nop_(); write_ds1302_byte(a

12、dd); for(i=0;i1; sck=0; if(io) value=value|0x80; sck=1; rst=0; _nop_(); sck=0; _nop_(); sck=1; io=0; return value; void read_rtc(void) /读时钟函数 uchar i; for(i=0;i7;i+) time_datai=read_ds1302(read_addi); void z(void) /周 write_com(0x80+0x40+9); switch(disp2) case 1: write_data(M); delayms(5); write_data

13、(o); delayms(5); write_data(n); break; case 2: write_data(T); delayms(5); write_data(u); delayms(5); write_data(e); break; case 3: write_data(W); delayms(5); write_data(e); delayms(5); write_data(n); break; case 4: write_data(T); delayms(5); write_data(h); delayms(5); write_data(u); break; case 5: w

14、rite_data(F); delayms(5); write_data(r); delayms(5); write_data(i); break; case 6: write_data(S); delayms(5); write_data(a); delayms(5); write_data(t); break; case 7: write_data(S); delayms(5); write_data(u); delayms(5); write_data(n); break; void time_change(void) /时钟处理函数 disp0=time_data0%16; /年 di

15、sp1=time_data0/16; disp2=time_data1%16; /周 disp3=time_data1/16; disp4=time_data2%16; /月 disp5=time_data2/16; disp6=time_data3%16; /日 disp7=time_data3/16; disp8=time_data4%16; /时 disp9=time_data4/16; disp10=time_data5%16; /分 disp11=time_data5/16; disp12=time_data6%16; /秒 disp13=time_data6/16; void di

16、splay() /时钟显示函数 write_com(0x80+2); /年 write_data(0x30+disp1); write_data(0x30+disp0); z(); /周 write_com(0x80+5); /月 write_data(0x30+disp5); write_data(0x30+disp4); write_com(0x80+8); /日 write_data(0x30+disp7); write_data(0x30+disp6); write_com(0x80+0x40); /时 write_data(0x30+disp9); write_data(0x30+d

17、isp8); write_com(0x80+0x40+3); /分 write_data(0x30+disp11); write_data(0x30+disp10); write_com(0x80+0x40+6); /秒 write_data(0x30+disp13); write_data(0x30+disp12); /*write_com(0x80+0x40+9); write_data(0x30+disp2);*/void main() uchar i; init(); write_com(0x80+14); write_data(.); /set_rtc(); while(1) read_rtc(); display();

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

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