基于ds1302的51单片机简易实时时钟1602显示源程序_第1页
基于ds1302的51单片机简易实时时钟1602显示源程序_第2页
基于ds1302的51单片机简易实时时钟1602显示源程序_第3页
基于ds1302的51单片机简易实时时钟1602显示源程序_第4页
基于ds1302的51单片机简易实时时钟1602显示源程序_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、=主程序=#include #include ds1302.h#include LCD1602.hvoid 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);LCD_display(times);gotoxy(7,2);LCD_dis

2、play(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%10+0;date2=-;date3=time_13024/10+0;date4=t

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

4、r bdata datbyte;sbit datbyte0=datbyte0;sbit datbyte7=datbyte7;void get_1302(uchar time);void write_ds1302(uchar dat);uchar r_1302(uchar add);void w_1302(uchar add,uchar dat);uchar read_ds1302(void);void init_1302(uchar *time);/*= D S 1 3 0 2 初 始 化=*/void init_1302(uchar *time)uchar i, add;/uchar tim

5、e_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(0x8e,0x80); /*= DS1302写入一个字节(上升沿有效)=*/void write_ds1302(uchar dat

6、)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;write_ds1302(add);temp=read_ds1302();T_CLK=1;T_RST=0;dat1=temp/16;d

7、at2=temp%16;temp=dat1*10+dat2;return(temp);/*= 指定位置写入数据=*/void w_1302(uchar add,uchar dat)T_RST=0;T_CLK=0;T_RST=1;write_ds1302(add);write_ds1302(dat/100;i-) for(j=0;j2;j+);/=写指令函数=void LCD_write_command(uchar command)LCD_DB=command;LCD_RS=0;/指令LCD_RW=0;/写入LCD_E=1;LCD_E=0;delay_lcd(1);/等待执行完毕 。/=写数据函

8、数=void LCD_write_data(uchar dat)LCD_DB=dat;LCD_RS=1;/数据寄存器LCD_RW=0;/写入数据LCD_E=1;LCD_E=0;delay_lcd(1);/等待程序执行完毕 。/*=显示一个字符子函数=void LCD_disp_char(uchar x,uchar y, uchar dat) uchar address; if(y=1) address=0x80+x; else address=0xc0+x; LCD_write_command(address); LCD_write_data(dat); =*/=延时1= void delay1(uint x) uint i,j; for(j=0;jx;j+) for(i=0;i100;i+);/=初始化函数=void LCD_init(void)LCD_write_command(0x38);/设置8位格式,2行,5*7LCD_write_command(0x0c);/整体显示,关光标,不闪烁LCD_write_command(0x06);/设定输入方式,增量不移位LCD_write_command(0x01);/清屏显示delay_lcd(200);/=光标定位=void gotoxy(uchar x,uchar y)uchar address; if(y=1) addre

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论