lcd1602显示实时时钟与模块化编程

上传人:ji****en 文档编号:107734493 上传时间:2019-10-20 格式:DOCX 页数:12 大小:7.91MB
返回 下载 相关 举报
lcd1602显示实时时钟与模块化编程_第1页
第1页 / 共12页
lcd1602显示实时时钟与模块化编程_第2页
第2页 / 共12页
lcd1602显示实时时钟与模块化编程_第3页
第3页 / 共12页
lcd1602显示实时时钟与模块化编程_第4页
第4页 / 共12页
lcd1602显示实时时钟与模块化编程_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《lcd1602显示实时时钟与模块化编程》由会员分享,可在线阅读,更多相关《lcd1602显示实时时钟与模块化编程(12页珍藏版)》请在金锄头文库上搜索。

1、本程序是用lcd1602显示实时时钟Ds1302Ds1302单字节读写顺序程序如下:#include#include#define uint unsigned int#define uchar unsigned charsbit sclk=P36;sbit rst=P35;sbit dsio=P34;sbit rs=P26;sbit rw=P25;sbit e=P27;uchar busy1;uchar code write_addr7=0x80,0x82,0x84,0x86,0x88,0x8a,0x8c;uchar code read_addr7=0x81,0x83,0x85,0x87,0x

2、89,0x8b,0x8d;uchar time7=0,0x49,0x14,0x22,0x02,0x01,0x16;uchar DisplayData8;void delay(uint n)uchar m;while(-n)for(m=0;m40;m+); unsigned char busy() unsigned char f; rs=0; rw=1; e=1; delay(1); f=P0; e=0; busy1=f&0x80; return busy1; void lcd_write_com(unsigned char com1) /写命令while(busy()=0x80);rs=0;r

3、w=0;e=0;P0=com1;delay(5);e=1;delay(5);e=0;void lcdreset( ) /初始化delay(10);lcd_write_com(0x38);/设置显示模式lcd_write_com(0x0c);lcd_write_com(0x06);lcd_write_com(0x01);lcd_write_com(0x80);void lcd_write_data(unsigned char data1) /写数据while(busy()=0x80);rs=1;rw=0;e=0;P0=data1;delay(5);e=1;delay(5);e=0;void ds

4、1302_write(uchar addr,uchar dat)uchar n;sclk=0;_nop_();rst=1;_nop_();for(n=0;n=1;sclk=1;_nop_();sclk=0;_nop_();for(n=0;n=1;sclk=1;_nop_();sclk=0;_nop_();rst=0;_nop_();uchar ds1302_read(uchar addr)uchar n,dat,dat1;sclk=0;_nop_();rst=1;_nop_();for(n=0;n=1;sclk=1;_nop_();sclk=0;_nop_();_nop_();for(n=0;

5、n1;/dat|=dat17;dat=(dat11);sclk=1;_nop_();sclk=0;_nop_();rst=0;_nop_();sclk=1;_nop_();dsio=0;_nop_();dsio=1;_nop_();return dat;void ds1302_init()uchar n;ds1302_write(0x8e,0x00);for(n=0;n7;n+)ds1302_write(write_addrn,timen);ds1302_write(0x8e,0x80);void ds1302_readtime()uchar n;for(n=0;n7;n+)timen=ds1

6、302_read(read_addrn);void display()lcd_write_com(0x80+0x40);lcd_write_data(0+time2/16);lcd_write_data(0+(time2&0x0f);lcd_write_data(-);lcd_write_data(0+time1/16);lcd_write_data(0+(time1&0x0f);lcd_write_data(-);lcd_write_data(0+time0/16);lcd_write_data(0+(time0&0x0f);lcd_write_com(0x80);lcd_write_dat

7、a(2);lcd_write_data(0);lcd_write_data(0+time6/16);lcd_write_data(0+(time6&0x0f);lcd_write_data(-);lcd_write_data(0+time4/16);lcd_write_data(0+(time4&0x0f);lcd_write_data(-);lcd_write_data(0+time3/16);lcd_write_data(0+(time3&0x0f); void main()/ds1302_init( );/使用这条语句就可以显示设定的时间,不时用就会使用实时时钟。_nop_();lcdr

8、eset( );while(1)ds1302_readtime();display();模块化编程Ds1302.h#ifndef _DS1302_H_#define _DS1302_H_#include#include#define uchar unsigned char#define uint unsigned intuchar datatime7,write_addr7;sbit io=P34;sbit sclk=P36;sbit rst=P35;void ds1302_write(uchar addr,uchar dat);uchar ds1302_read(uchar addr);vo

9、id ds1302_init();void ds1302_readtime();#endifDs1302.c#includeuchar datatime7=0,0x10,0x16,0x21,0x02,0x07,0x16;/存取数据void ds1302_write(uchar addr,uchar dat)uchar n;sclk=0;_nop_();rst=1;_nop_();for(n=0;n=1;sclk=1;_nop_();sclk=0;_nop_();for(n=0;n=1;sclk=1;_nop_();sclk=0;_nop_();rst=0;_nop_();uchar ds130

10、2_read(uchar addr)uchar n,dat,dat1;sclk=0;_nop_();rst=1;_nop_();for(n=0;n=1;sclk=1;_nop_();sclk=0;_nop_();_nop_();for(n=0;n1;/dat|=dat17;dat=(dat11);sclk=1;_nop_();sclk=0;_nop_();rst=0;_nop_();sclk=1;_nop_();io=0;_nop_();io=1;_nop_();return dat;void ds1302_init()uchar n,addr=0x80;ds1302_write(0x8e,0

11、x00);for(n=0;n7;n+)ds1302_write(addr,datatimen);addr+=2;ds1302_write(0x8e,0x80);void ds1302_readtime()uchar n,addr=0x81;for(n=0;n7;n+)datatimen=ds1302_read(addr);addr+=2;Lcd1602.h#ifndef _LCD1602_H_#define _LCD1602_H_#include#include#define uchar unsigned char#define uint unsigned intsbit rs=P26;sbit rw=P25;sbit en=P27;void delay(uchar ms);void busy_wait();void write_lcd_command(uchar cmd);void write_lcd_data(uchar dat);void init_lcd();void lcd_showstring(uchar r,uchar c,uchar *str);#endifLcd1602.c#includecode uchar ddram

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 电子/通信 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号