您的位置:首頁>正文

「機電一體化」51單片機設計即時時鐘

hello大家好, 我是途說, 頭條原創作者, 日常分享機電知識, 工科也能如此有趣。

其實學到這些, 大家已經算是單片機入門了, 那麼更多的知識還需要大家在實際應用中探索,

好的, 那麼今天小編就跟大家分享一下1602液晶顯示幕如何做一個和現在時間相符的電子時鐘, 此項技術可以應用到鬧鐘、手錶或者嵌入到其他需要顯示時間的產品中。 好的, 下面來看一下效果:

好的, 下面進入專案實施:

首先是硬體連接圖&元件庫:

下麵是程式:

#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) ;

}

}

好的, 今天的分享就到這裡了, 如果有什麼不懂的可以在評論下方留言, 大家一起交流共同進步。

我是途說, 頭條原創作者, 如果您喜歡我的文章, 就請您多多關注!

————————————————————————————————————————————————————————————————————————————

每日推理:

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示