基于ds1302的51单片机简易实时时钟602显示 源程序.docx

上传人:牧羊曲112 文档编号:3384900 上传时间:2023-03-12 格式:DOCX 页数:6 大小:37.85KB
返回 下载 相关 举报
基于ds1302的51单片机简易实时时钟602显示 源程序.docx_第1页
第1页 / 共6页
基于ds1302的51单片机简易实时时钟602显示 源程序.docx_第2页
第2页 / 共6页
基于ds1302的51单片机简易实时时钟602显示 源程序.docx_第3页
第3页 / 共6页
基于ds1302的51单片机简易实时时钟602显示 源程序.docx_第4页
第4页 / 共6页
基于ds1302的51单片机简易实时时钟602显示 源程序.docx_第5页
第5页 / 共6页
亲,该文档总共6页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《基于ds1302的51单片机简易实时时钟602显示 源程序.docx》由会员分享,可在线阅读,更多相关《基于ds1302的51单片机简易实时时钟602显示 源程序.docx(6页珍藏版)》请在三一办公上搜索。

1、基于ds1302的51单片机简易实时时钟602显示 源程序=主程序= #include #include ds1302.h #include LCD1602.h void change; uchar times9; uchar date9; main LCD_init;/LCD初始化 init_1302(time_1302); gotoxy(1,1); LCD_display(Time:); gotoxy(1,2); LCD_display(Date:); times8=0;/ date8=0; while(1) get_1302(time_1302); change; gotoxy(7,1)

2、; LCD_display(times); gotoxy(7,2); LCD_display(date); /*= 转换子程序 =*/ void change / 时间的转换 times0=time_13022/10+0; times1=time_13022%10+0; times2=:; times3=time_13021/10+0; times4=time_13021%10+0; times5=:; times6=time_13020/10+0; times7=time_13020%10+0; / 日期的转换 date0=time_13026/10+0; date1=time_13026%

3、10+0; date2=-; date3=time_13024/10+0; date4=time_13024%10+0; date5=-; date6=time_13023/10+0; date7=time_13023%10+0; = =DS1302驱动程序= #define uchar unsigned char uchar time_13027=0x00,0x00,0x00,0x03,0x07,0x03,0x08;/设置时间初始值数组 / 秒分时号月份星期年 sbit T_IO=P10; /与硬件相关的连线clk为DS1302的时钟信号线 sbit T_CLK=P11; /DAT为DS13

4、02的I/O数据线 sbit T_RST=P12; /RST为DS1302的RST信号线 ucharbdatadatbyte; sbit datbyte0=datbyte0; sbit datbyte7=datbyte7; void get_1302(uchar time); void write_ds1302(uchardat); uchar r_1302(uchar add); void w_1302(ucharadd,uchardat); uchar read_ds1302(void); void init_1302(uchar *time); /*= D S 1 3 0 2 初始化 =

5、*/ void init_1302(uchar *time) uchar i, add; /uchartime_bcd7; add=0x80;/0写入,1读出 w_1302(0x8e,0x00); for(i=0;i7;i+) w_1302(add,*time); add+=2; time+; w_1302(0x8e,0x80); /= / 读取当前时间 /= void get_1302(uchar time) uchar i; uchar add=0x81; w_1302(0x8e,0x00); for(i=0;i7;i+) timei=r_1302(add); add+=2; w_1302

6、(0x8e,0x80); /*= DS1302写入一个字节 =*/ void write_ds1302(uchardat) uchar i; datbyte=dat; for(i=0;i1; /*= DS1302读取一个字节 =*/ uchar read_ds1302(void) uchar i; for(i=0;i1; datbyte7=T_IO; T_CLK=1; T_CLK=0; return(datbyte); /*= 指定位置读取数据 =*/ uchar r_1302(uchar add) uchar temp,dat1,dat2; T_RST=0; T_CLK=0; T_RST=1

7、; write_ds1302(add); temp=read_ds1302; T_CLK=1; T_RST=0; dat1=temp/16; dat2=temp%16; temp=dat1*10+dat2; return(temp); /*= 指定位置写入数据 =*/ void w_1302(ucharadd,uchardat) T_RST=0; T_CLK=0; T_RST=1; write_ds1302(add); write_ds1302(dat/100;i-) for(j=0;j2;j+); /=写指令函数= voidLCD_write_command(uchar command) L

8、CD_DB=command; LCD_RS=0;/指令 LCD_RW=0;/写入 LCD_E=1; LCD_E=0; delay_lcd(1);/等待执行完毕。 /=写数据函数= voidLCD_write_data(uchardat) LCD_DB=dat; LCD_RS=1;/数据寄存器 LCD_RW=0;/写入数据 LCD_E=1; LCD_E=0; delay_lcd(1);/等待程序执行完毕。 /*=显示一个字符子函数= voidLCD_disp_char(ucharx,uchar y, uchardat) uchar address; if(y=1) address=0x80+x;

9、 else address=0xc0+x; LCD_write_command(address); LCD_write_data(dat); =*/ /=延时1= void delay1(uint x) uinti,j; for(j=0;jx;j+) for(i=0;i100;i+); /=初始化函数= voidLCD_init(void) LCD_write_command(0x38);/设置8位格式,2行,5*7 LCD_write_command(0x0c);/整体显示,关光标,不闪烁 LCD_write_command(0x06);/设定输入方式,增量不移位 LCD_write_command(0x01);/清屏显示 delay_lcd(200); /=光标定位= voidgotoxy(ucharx,uchar y) uchar address; if(y=1) address=0x80+x; else address=0xc0+x; LCD_write_command(address); /=显示一个字符串= voidLCD_display(uchar *dat) while(*dat!=0) LCD_write_data(*dat); dat+;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号