《ds1302时钟芯片c语言程序(共8页).docx》由会员分享,可在线阅读,更多相关《ds1302时钟芯片c语言程序(共8页).docx(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上#include#include#define uchar unsigned char#define uint unsigned intsbit lcd_rs=P20;sbit lcd_e=P21;sbit ds1302_rst=P25;sbit ds1302_sclk=P26;sbit ds1302_io=P27;uchar time_date=0x50,0x59,0x23,0x00,0x00,0x00,0x00;void delay(uchar z) uchar m,n; for(m=z;m0;m-) for(n=110;n0;n-);void ds1302wri
2、tebyte(uchar dat) / 写一个字节 uchar i; for(i=0;i=1;/数据右移一位,准备传输下一位数据 uchar ds1302readbyte() /读一个字节 uchar i,dat; for(i=0;i=1; /要返回的数据左移一位 ds1302_sclk=0;/拉低 if(ds1302_io=1)/当IO为高时,证明该位数据位1 dat=dat|0x80; /要传输数据的当前值置为1。若不是,为0 ds1302_sclk=1;/拉高 ds1302_sclk=0;/拉低 return dat;/返回读出的数据void ds1302write(uchar add,
3、uchar dat)/ 写入数据 ds1302_rst=0; ds1302_sclk=0; ds1302_rst=1; /传输开始 ds1302writebyte(add);/传输命令字,写入时间的地址 ds1302writebyte(dat); / 写入要修改的时间 ds1302_sclk=1; /拉高 ds1302_rst=0; /读取结束,结束数据的传输uchar ds1302read(uchar add)/读取某地址的数据 uchar dat; ds1302_rst=0; ds1302_sclk=0; ds1302_rst=1; /传输开始 ds1302writebyte(add);/
4、传输命令字,要读出时间的地址 dat=ds1302readbyte();/读取要得到的时间 ds1302_sclk=1; ds1302_rst=0; return dat; /返回得到的时间 void ds1302set() /设置初始时间 uchar i; ds1302write(0x8e,0x00);/关写保护 for(i=0;i7;i+) ds1302write(0x80+i+i,time_datei); /将初始时间数据写入1302对应的寄存器里 delay(5); ds1302write(0x8e,0x80); /开写保护 void ds1302get() /读取当前时间 uchar
5、 i; for(i=0;i4);/显示年 lcdwrite_data(0+(time_date6&0x0f); lcdwrite_data(/); lcdwrite_data(0+(time_date4&0xf0)4);/显示月 lcdwrite_data(0+(time_date4&0x0f); lcdwrite_data(/); lcdwrite_data(0+(time_date3&0xf0)4);/显示日 lcdwrite_data(0+(time_date3&0x0f); lcdwrite_data( ); lcdwrite_data(0+(time_date5&0xf0)4); /
6、显示星期 lcdwrite_data(0+(time_date5&0x0f); lcdwrite_com(0x80+0x40); lcdwrite_data(0+(time_date2&0xf0)4);/显示时 lcdwrite_data(0+(time_date2&0x0f); lcdwrite_data(:); lcdwrite_data(0+(time_date1&0xf0)4); /显示分 lcdwrite_data(0+(time_date1&0x0f); lcdwrite_data(:); lcdwrite_data(0+(time_date04)&0x0f); /显示秒 lcdwrite_data(0+(time_date0&0x0f); 专心-专注-专业