




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
大学#include#includexianshi.hsbit io=P10; / 1302通信允许sbit SCLK=P11; / 1302串行数据的位同步脉冲信号sbit RST=P12; / 1302双向串行数据传送sbit ACC7=ACC7;sbit ACC0=ACC0;uchar tab7;uchar year12=2,0,0,0,0x2d-0x30,0,0,0x2d-0x30,0,0,0x20-0x30,0x20-0x30;uchar week73=mon,tue,wen,thu,fri,sat,sun;uchar date8=0,0,0x3a-0x30,0,0,0x3a-0x30,0,0;void write1302(uchar date)/向ds1302写数据uchar i;SCLK=0;/初始时钟线置为0ACC=date;for(i=8;i0;i-) /开始传输8个字节的数据io=ACC0;/取最低位,注意DS1302的数据和地址都是从最低位开始传输的SCLK=1; /时钟线拉高,制造上升沿,SDA的数据被传输SCLK=0; /时钟线拉低,为下一个上升沿做准备ACC=ACC1;/数据右移一位,准备传输下一位数据uchar read1302()/读ds1302数据uchar i;for(i=8;i0;i-)ACC=ACC1; /要返回的数据左移一位ACC7=io; /从1302由低位到高位逐渐取数据,存入ACC中SCLK=1; /拉高时钟线SCLK=0; /制造下降沿return(ACC); /返回读取出的数据void write1302_b(unsigned char add,unsigned char date)RST=0; /初始rst线置为0SCLK=0; /初始时钟sclk线置为0RST=1; /初始rst置为1,传输开始write1302(add);/传输命令字,要写入的时间/日历地址write1302(date); /写入要修改的时间/日期SCLK=1; /时钟线拉高RST=0; /读取结束,rst置为0,结束数据的传输uchar read1302_b(uchar add)uchar date=0x00;RST=0;SCLK=0;RST=1;write1302(add); /传输命令字,要读取的时间/日历地址date=read1302(); /读取要得到的时间/日期RST=0;SCLK=1;return(date); /返回得到的时间/日期/*初始化DS1302*/void init_ds1302()if(tab6=read1302_b(0x81)7)&0x01)=1) /*秒寄存器的BIT7 定义为时间暂停位,当BIT1 为1 时,时钟振荡器停止工作,DS1302 进入低功耗模式,电源消耗小于100 微安,当BIT1 为0 时,时钟振荡器启动,DS1302 正常工作。*/ write1302_b(0x8e,0x00); /关闭写保护 write1302_b(0x80,0x00); /00秒 write1302_b(0x82,0x54); /54分 write1302_b(0x84,0x17); /17点 write1302_b(0x86,0x14); /14日write1302_b(0x88,0x10); /10月write1302_b(0x8a,0x05); /星期五write1302_b(0x8c,0x11); /2011年 write1302_b(0x8e,0x80); /允许写保护void result() /从1302读取时间/日历uchar i,variable;for(i=0;i4)*10+(variable&0x0f);year2=tab0/10; /年的十位year3=tab0%10; /年的个位year5=tab2/10; /月的十位year6=tab2%10;/月的个位year8=tab3/10;/日的十位year9=tab3%10; /日的个位date0=tab4/10;/小时的十位date1=tab4%10; /小时的个位date3=tab5/10;/分钟的十位date4=tab5%10; /分钟的个位date6=tab6/10;/秒钟的十位date7=tab6%10; /秒钟的个位,由于电脑处理需要时间,秒钟会有误差void main()uint i;init(); /1602初始化init_ds1302();while(1)result();wcmd(0x80,0);/年和星期显示首地址for(i=0;i=11) /星期显示switch(tab1)case 1:wdat(week60);wdat(week61);wdat(week62);break;case 2:wdat(week00);wdat(week01);wdat(week02);break;case 3:wdat(week10);wdat(week11);wdat(week12);break;case 4:wdat(week20);wdat(week21);wdat(week22);break;case 5:wdat(week30);wdat(week31);wdat(week32);break;case 6:wdat(week40);wdat(week41);wdat(week42);break;case 7:wdat(week50);wdat(week51);wdat(week52);break;wcmd(0xc0,0); /时间显示首地址for(i=0;i8;i+)wdat(datei+0x30);/*1602液晶显示的xianshi.h文件*/#ifndef in1302#define in1302#include#define uchar unsigned char#define uint unsigned int#define rs P2_2 /1602的RS端由P2.2端口控制#define e P2_0 /1602的e端由P2.0端口控制#define rw P2_1 /1602的rw端由P2.1端口控制#define BF 0X80 /忙检测标志/*延时1ms的程序*/void delay(uint z) uint x,y; for(x=z;x0;x-) for(y=115;y0;y-);/*1602的基本设计*/uchar busy() /忙检测子程序rs=0;/低电平代表选择指令寄存器rw=1;/高电平代表读操作e=1;/高电平时,进行读操作delay(1);while(P0&BF);e=0; /下降沿时用于执行命令操作return P0;void wdat(uchar dat) /写数据到1602子程序P0=dat;busy();rs=1; /高电平时代表选择数据寄存器rw=0; /低电平时进行读操作delay(1);e=1;delay(1);e=0;void wcmd(uchar cmd,uchar BFC) /写指令到1602P0=cmd;if(BFC)busy();rs=0;rw=0;delay(1);e=1;delay(1);e=0;void init()e=0;wcmd(0x38,0); wcm
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河南省新乡市封丘县第一中学2025-2026学年高二上学期开学考试历史试题(含答案)
- 偏旁部首的使用规则课件
- 你好小鸟课件
- 2025征地相关面试题答案及答案
- 子宫内膜异位症合并卵巢浆液性癌护理查房
- 企业班组安全培训课件
- 志愿服务项目设计与管理指南
- 企业消防安全培训课件
- 瑞安公务接待管理办法
- 留置监管分离管理办法
- 2023江苏省高中学业水平合格性考试英语模拟试卷(含答案详解1)
- 低于成本价中标造成的价格争议
- CPR心肺复苏课件
- 化验室培训记录
- (完整word)化学各仪器矢量图合集
- 埃菲尔铁塔精品课件
- 德国工业标准DIN8077聚丙烯(PP)管材尺寸赵彦波
- 拖拉机和联合收割机查验记录表
- (公开课)26个英文字母书写笔顺动态演示(基础教育)
- Q∕GDW 11304.2-2021 电力设备带电检测仪器技术规范 第2部分:红外热像仪
- 部编版一年级道德与法治上册第1课《开开心心上学去》精品课件
评论
0/150
提交评论