完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
#include
#include #define uint unsigned int #define uchar unsigned char #define LCD1602_IO P0 ***it ce=P3^4;//是由T0非控制当为1的时候没被选中,当为0的时候选中。 ***it sclk=P3^3; ***it dio=P3^2; ***it E=P3^5;//1602的EA ***it RS=P3^7;//1602 void delay_ms(uint a);//毫秒级别延时; void wr_com(uchar dat);//1602写指令函数; void wr_dat(uchar dat);//1602写数据函数; void init_1602(void);//1602初始化函数; //void init();//时钟初始化 //void _10zhuan16();//将10进制时间转化成16进制的8421BCD; //void write_byte(uchar a);//DS1302写1个字节函数; //uchar read_byte();//DS1302读一个字节函数; //void write_date(uchar address,uchar date);//正对某个字节写; //uchar read_date(uchar address);//针对某个字节读; //void read_time();//连续读取时间 uchar write_address[7]={0x8c,0x8a,0x88,0x86,0x84,0x82,0x80};//写地址数组 uchar read_address[6]={0x8d,0x89,0x87,0x85,0x83,0x81};//读地址数组 void delay(uint z) { uint x,y; for(y=z;y>0;y--) for(x=110;x>0;x--); } void write(uchar add,uchar date) { uchar temp,t; ce=1; sclk=0; ce=0; temp=add; for(t=0;t<8;t++)//地址控制 { if((temp&0x01)==1) { dio=1; } else dio=0; sclk=1; delay(1); sclk=0; temp=temp>>1; } temp=date; for(t=8;t>0;t--) //写数据 { if((temp&0x01)==1) { dio=1; } else dio=0; sclk=1; delay(1); sclk=0; temp=temp>>1; } ce=1; } uchar read(uchar add) { uchar temp,t; ce=1; sclk=0; ce=0; temp=add; for(t=0;t<8;t++) { if((temp&0x01)==1) dio=1; else dio=0; sclk=1; sclk=0; temp>>=1; } temp=0; for(t=0;t<8;t++) { if(dio==1) temp|=(0x01< sclk=0; } ce=1; return temp; } void chu() { write(0x8e,0x00);//写保护 write(0x80,0x00); //写秒 write(0x82,0x59);//写分 write(0x84,0x11); //写时 write(0x86,0x9); write(0x88,0x9); write(0x8c,0x12); write(0x90,0xab); write(0x8e,0x80); } void main() { uchar shu,j; init_1602(); chu(); while(1) { wr_dat('2'); wr_dat('0'); for(j=0;j<6;j++) { shu=read(read_address[j]); wr_dat((shu>>4)+0x30); wr_dat((shu&0x0f)+0x30); if(j==4) { wr_com(0x80+0x40); wr_dat(':'); } else if(j!=5) wr_dat(':'); } wr_com(0x80); } } void delay_ms(uint a)//毫秒级别延时; { uchar x,y; for (a;a>0;a--) for(x=0;x<114;x++) for(y=0;y<1;y++); } void wr_com(uchar dat)//1602写指令函数; { E=0; RS=0;; LCD1602_IO=dat; E=1; delay_ms(2); E=0;delay_ms(2); } void wr_dat(uchar dat)//1602写数据函数; { E=0; RS=1; LCD1602_IO=dat; E=1;delay_ms(2); E=0;delay_ms(2); } void init_1602(void)//1602初始化函数; { delay_ms(20); wr_com(0X38); delay_ms(5); wr_com(0X38); delay_ms(5); wr_com(0X01); wr_com(0X06); wr_com(0X0c); wr_com(0X80); } |
|
相关推荐 |
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNESP32S3使用指南-IDF版_V1.6》 第十六章 WATCH_DOG实验
460 浏览 0 评论
【敏矽微ME32G070开发板免费体验】+ADC测试与LED点亮
418 浏览 0 评论
飞凌嵌入式-ELFBOARD ELF 2的硬件知识分享--核心板
352 浏览 0 评论
【敏矽微ME32G070开发板免费体验】\\+Lora通信终端产品开发项目
514 浏览 0 评论
1576 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11971 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 02:17 , Processed in 0.609772 second(s), Total 69, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号