自己写的DS1302与LCD1602.docVIP

  • 5
  • 0
  • 约2.83千字
  • 约 5页
  • 2018-03-09 发布于河南
  • 举报
自己写的DS1302与LCD1602

#include reg52.h #define uchar unsigned char #define uint unsigned int uchar code table2[]=TIME:; uchar code table3[]=0123456789; uchar code table1[]=DATE:; sbit rs=P3^3; sbit en=P3^2; sbit rst=P1^7; sbit io=P1^6; sbit clk=P1^5; sbit ACC0=ACC^0; sbit ACC7=ACC^7; sbit key1=P1^0; sbit key2=P1^1; sbit key3=P1^2; sbit key4=P1^3; sbit key5=P1^4; uchar num; uchar sec,sec1,sec2; uchar min,min1,min2; uchar hour,hour1,hour2; uchar month,month1,month2; uchar date,date1,date2; uchar year,year1,year2; uchar day,day1; //输入一个字节的数字 void input_1byte(uchar TD) { uchar i; ACC=TD; for(i=8;i0;i--) { io=ACC0; clk=1; clk=0; ACC=ACC1; } } //输出一个字节的数字 uchar output_1byte(void) { uchar i; for(i=8;i0;i--) { ACC=ACC1; ACC7=io; clk=1; clk=0; } return(ACC); } //根据地址 写入数(初始化的时候用) void write_ds1302(uchar add,uchar dat) { rst=0; clk=0; rst=1; input_1byte(add); input_1byte(dat); clk=1; rst=0; } //根据地址 读出数(得到当前时间的时候用) uchar read_ds1302(uchar add) { uchar inf; rst=0; clk=0; rst=1; input_1byte(add); inf=output_1byte(); clk=1; rst=0; return(inf); } void delay(uint z) //延时 { uint x,y; for(x=110;x0;x--) for(y=z;z0;z--); } //LCD1602 void write_com(uchar com) //写指令 { rs=0; en=0; P2=com; delay(5); en=1; delay(5); en=0; } //LCD1602 void write_date(uchar date) //写数据 { rs=1; en=0; P2=date; delay(5); en=1; delay(5); en=0; } void init_lcd() { en=0; write_com(0x38); //显示 write_com(0x0c); //光标不显示 write_com(0x06); //指针加1,整屏不移动 write_com(0x01); //清屏 write_com(0x80); } void init_1302() { write_ds1302(0x8e,0x00);//关闭写保护 write_ds1302(0x90,0xaa); //定义充电 write_ds1302(0x80,0x00); //秒 write_ds1302(0x82,0x55);//分 write_ds1302(0x84,0x21);//时 write_ds1302(0x86,0x8);//日 write_ds1302(0x88,0x4);//月 write_ds1302(0x8a,0x07);//星期 write_ds1302(0x8c,0x12);//年 write_ds1302(0x8e,0x80);//打开写保护 } void display() { sec=read_ds1302(0x81); min=read_ds1302(0x83); hour=read_ds1302(0x85); date=read_ds1302(0x87); month=read_ds1302(

文档评论(0)

1亿VIP精品文档

相关文档