hello大家好,
我是途說,
頭條原創作者,
日常分享機電知識,
工科也能如此有趣。
其實學到這些, 大家已經算是單片機入門了, 那麼更多的知識還需要大家在實際應用中探索,
好的,
下面進入專案實施:
首先是硬體連接圖&元件庫:
下麵是程式:
#include
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit IO =P1^0;
sbit SCLK=P1^1;
sbit RST =P1^2;
uchar *WEEK[]={"SUN","***","MON","TUS","WEN","THU","FRI","SAT"};
uchar LCD_DSY_BUFFER1[]={"DATE 00-00-00 "} ;
uchar LCD_DSY_BUFFER2[]={"TIME 00-00-00 "} ;
uchar DateTime[7];
void Write_A_Byte_TO_DS1302(uchar x)
{ uchar i;
for (i=0;i<8;i++)
{IO=x& 0x01;SCLK=1;SCLK=0;x>>=1;}
}
uchar Get_A_Byte_FROM_DS1302()
{ uchar i,b=0x00;
for (i=0;i<8;i++)
{ b|=_crol_((uchar)IO,i);
SCLK=1;SCLK=0;}
return b/16*10+b%16;
}
uchar Read_Data(uchar addr)
{ uchar dat;
RST=0;SCLK=0;RST=1;
Write_A_Byte_TO_DS1302(addr);
dat=Get_A_Byte_FROM_DS1302();
SCLK=1;RST=0;
return dat;
}
void GetTime()
{ uchar i,addr=0x81;
for(i=0;i<7;i++)
{DateTime[i]=Read_Data(addr);addr+=2;}
}
void Format_DateTime(uchar d,char *a)
{a[0]=d/10+0x30;
a[1]=d%10+0x30; }
void main()
{ Initialize_Lcd();
while(1)
{ GetTime();
Format_DateTime(DateTime[6],LCD_DSY_BUFFER1+5);
Format_DateTime(DateTime[4],LCD_DSY_BUFFER1+8);
Format_DateTime(DateTime[3],LCD_DSY_BUFFER1+11);
strcpy(LCD_DSY_BUFFER1+13,WEEK[DateTime[5]]);
Format_DateTime(DateTime[2],LCD_DSY_BUFFER2+5);
Format_DateTime(DateTime[1],LCD_DSY_BUFFER2+8);
Format_DateTime(DateTime[0],LCD_DSY_BUFFER2+11);
ShowString(0,0,LCD_DSY_BUFFER1) ;
ShowString(0,1,LCD_DSY_BUFFER2) ;
}
}
好的, 今天的分享就到這裡了, 如果有什麼不懂的可以在評論下方留言, 大家一起交流共同進步。
我是途說, 頭條原創作者, 如果您喜歡我的文章, 就請您多多關注!
————————————————————————————————————————————————————————————————————————————
每日推理: