完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
/**************** DS1302 *************************************************************/
//设置1302的初始时间 void Init_1302(void){//(2008年9月11日23时59分35秒星期四)*/ write_clock(0x8e,0x00);//允许写操作 write_clock(0x8c,0x08);//08年 write_clock(0x8a,0x04);//星期 write_clock(0x88,0x09);//月 write_clock(0x86,0x11);//日 write_clock(0x84,0x23);//小时 write_clock(0x82,0x59);//分钟 write_clock(0x80,0x35);//秒 write_clock(0x90,0xa5);//充电 write_clock(0x8c,0x08);//重启 write_clock(0x8e,0x80);//禁止写操作 } /*****************************************************************************/ //DS1302写数据(底层协议) void write_clock(unsigned char ord, unsigned char dd){ clock_clk=0; clock_Rst=0; clock_Rst=1; clock_out(ord); clock_out(dd); clock_Rst=0; clock_clk=1; } /*****************************************************************************/ //1302驱动程序(底层协议) void clock_out(unsigned char dd){ ACC=dd; clock_dat=a0; clock_clk=1; clock_clk=0; clock_dat=a1; clock_clk=1; clock_clk=0; clock_dat=a2; clock_clk=1; clock_clk=0; clock_dat=a3; clock_clk=1; clock_clk=0; clock_dat=a4; clock_clk=1; clock_clk=0; clock_dat=a5; clock_clk=1; clock_clk=0; clock_dat=a6; clock_clk=1; clock_clk=0; clock_dat=a7; clock_clk=1; clock_clk=0; } /*****************************************************************************/ //DS1302写入字节(底层协议) unsigned char clock_in(void){ clock_dat=1; a0=clock_dat; clock_clk=1; clock_clk=0; a1=clock_dat; clock_clk=1; clock_clk=0; a2=clock_dat; clock_clk=1; clock_clk=0; a3=clock_dat; clock_clk=1; clock_clk=0; a4=clock_dat; clock_clk=1; clock_clk=0; a5=clock_dat; clock_clk=1; clock_clk=0; a6=clock_dat; clock_clk=1; clock_clk=0; a7=clock_dat; return(ACC); } /*****************************************************************************/ //DS1302读数据(底层协议) unsigned char read_clock(unsigned char ord){ unsigned char dd=0; clock_clk=0; clock_Rst=0; clock_Rst=1; clock_out(ord); dd=clock_in(); clock_Rst=0; clock_clk=1; return(dd); } /*****************************************************************************/ //向LCM中填写 年 数据 void lcm_w_yy(void){ if(read_clock(0x8d) != yy){ yy = read_clock(0x8d); write_com(0x90); hzkdis("20"); write_com(0x91); write_data((yy/16)+0x30); write_data(yy%16+0x30); write_com(0x92); hzkdis("年"); } } /*****************************************************************************/ //向LCM中填写 月 数据 void lcm_w_mo(void){ if(read_clock(0x89) != mo){ mo = read_clock(0x89); write_com(0x93); write_data((mo/16)+0x30); write_data(mo%16+0x30); write_com(0x94); hzkdis("月"); lcm_w_yy();//刷新 日 } } /*****************************************************************************/ //向LCM中填写 日 数据 void lcm_w_dd(void){ if(read_clock(0x87) != dd){ dd = read_clock(0x87); write_com(0x95); write_data((dd/16)+0x30); write_data(dd%16+0x30); write_com(0x96); hzkdis("日"); lcm_w_mo();//刷新 小时 } } /*****************************************************************************/ //星期处理并送入LCM的指定区域 void lcm_w_xq(void){ unsigned char sel; if(read_clock(0x8b) != xq){ write_com(0x88); hzkdis("星期"); xq = read_clock(0x8b); sel = xq%16; //字节低4位的BCD码放入sel write_com(0x8a);//写入指定区域 if(sel==7) {hzkdis("日");} // if(sel==6) {hzkdis("六");} // if(sel==5) {hzkdis("五");} // if(sel==4) {hzkdis("四");} // if(sel==3) {hzkdis("三");} // if(sel==2) {hzkdis("二");} // if(sel==1) {hzkdis("一");} //星期一 } } /*****************************************************************************/ //向LCM中填写 小时 数据 void lcm_w_hh(void){ if(read_clock(0x85)!=hh){ hh = read_clock(0x85); write_com(0x8c); write_data((hh/16)+0x30); write_data(hh%16+0x30); lcm_w_dd();//刷新 分钟 lcm_w_xq();//刷新 分钟 } } /*****************************************************************************/ //向LCM中填写 分钟 数据 void lcm_w_mm(void){ if(read_clock(0x83)!=mm){ mm = read_clock(0x83); write_com(0x8d); write_data(0x3a); //":" write_data((mm/16)+0x30); write_data(mm%16+0x30); write_data(0x3a); //":" lcm_w_hh();//刷新 秒 } } /*****************************************************************************/ //向LCM中填写 秒 数据 void lcm_w_ss(void){ if(read_clock(0x81)!=ss){ ss = read_clock(0x81); //更新数据 write_com(0x8f); //秒值在LCM上的写入位置 write_data((ss/16)+0x30); //写十位 write_data(ss%16+0x30); //写个位 lcm_w_mm();//刷新 秒 LED=~LED; /*********DS18B20************************************************************/ Read_18B20(); write_com(0x30); //选择8bit数据流 i=ResultTemperatureH/10; j=ResultTemperatureH-(i*10); b=ResultTemperatureLH/10; write_com(0x9D); write_data(i|0x30); write_data(j|0x30); write_data(0x2E); write_data(b|0x30); } } |
|
相关推荐
1个回答
|
|
就是根据DS1302的通讯协议来操作读写啊。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
464 浏览 0 评论
478 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
439 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
994 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1056 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11793 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 00:21 , Processed in 0.619866 second(s), Total 72, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号