久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

基于LCM1602液晶、DS1302時鐘芯片、E2PROM的電子時鐘設計

作者:佚名   來源:本站原創   點擊數:  更新時間:2012年02月23日   【字體:



歷時一個下午的功夫!很多地方可以用循環優化的,但基于簡潔,可讀性好!故使用傳統方法!

By DAVID     QQ:1205946980

程序代碼下載:http://www.zg4o1577.cn/f/1302eep.rar
 

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int

uchar code tab1[]="*DAVID*";
uchar code tab2[]="Week-";
uchar code tab3[]="0123456789";

uchar wwe[13];
uchar xdw[7]={0x00,0x27,0x22,0x01,0x02,0x03,0x12};

sbit LCD_RS=P2^0;
sbit LCD_RW=P2^1;
sbit LCD_EN=P2^2;
sbit E2R_SCK=P2^3;
sbit E2R_SDA=P2^4;
sbit DS1302_RST=P2^5;
sbit DS1302_SCK=P2^6;
sbit DS1302_DS=P2^7;
sbit HC164_SCK=P1^0;
sbit HC164_AB=P1^1;

void start_24c02_hs();
void stop_24c02_hs();
void yingda_24c02_hs();
void E2R_inti();
uchar du_1byte_24c02_hs();
void xie_1byte_24c02_hs(uchar dat);
void xie_24c02_hs(uchar add,uchar cmd,uchar dat);
uchar du_24c02_hs(uchar add,uchar cmd);
void init_du_24c02();

void DS1302_xie_1byte(uchar dat);
void DS1302_xie_hs(uchar cmd,uchar dat);
void DS1302_inti();
uchar DS1302_du_hs(uchar cmd);
uchar DS1302_du_1buyte();

void lcm1602_xie_cmd_hs(uchar cmd);
void lcm1602_xie_dat_hs(uchar dat);
void lcm1602_init();

void delay(uint z);
void delaysp(uchar t);
void cang();
void display();
void display_inti();
/******************************************************************/
void delay(uint z)
{  uint x,y;
 for(x=z;x>0;x--)
 for(y=110;y>0;y--);
}

void delaysp(uchar t)
{
 while(t--) ;
}

void cang()
{ 
   uchar seg;
 seg=DS1302_du_hs(0x81);
   xdw[0]=seg;
 wwe[10]=(seg>>4);
 wwe[11]=(seg&0x0f);

 seg=DS1302_du_hs(0x83);
   xdw[1]=seg;
 wwe[8]=(seg>>4);
 wwe[9]=(seg&0x0f);

 seg=DS1302_du_hs(0x85);
   xdw[2]=seg;
 wwe[6]=(seg>>4);
 wwe[7]=(seg&0x0f);

 seg=DS1302_du_hs(0x87);
   xdw[3]=seg;
 wwe[4]=(seg>>4);
 wwe[5]=(seg&0x0f);

 seg=DS1302_du_hs(0x89);
   xdw[4]=seg;
 wwe[2]=seg>>4;
 wwe[3]=seg&0x0f;

 seg=DS1302_du_hs(0x8b);
   xdw[5]=seg;
 wwe[12]=seg&0x0f;

 seg=DS1302_du_hs(0x8d);
   xdw[6]=seg;
 wwe[0]=seg>>4;
 wwe[1]=seg&0x0f;
}

void display_inti()
{
 uchar i;

 lcm1602_xie_cmd_hs(0x80+0x00);
 for(i=0;i<7;i++)
 {
  lcm1602_xie_dat_hs(tab1[i]);
  delay(2);
 }

 lcm1602_xie_cmd_hs(0x80+0x40);
 for(i=0;i<5;i++)
 {
  lcm1602_xie_dat_hs(tab2[i]);
  delay(2);
 }
}

void display()
{
 uchar i,k;
 lcm1602_xie_cmd_hs(0x80+0x08);
 for(i=0;i<3;i++)
 {
  for(k=0;k<2;k++)
  {
   lcm1602_xie_dat_hs(tab3[wwe[i*2+k]]);
  }
  if(i!=2)
  {
   lcm1602_xie_dat_hs('/');
  }
 }

 lcm1602_xie_cmd_hs(0x80+0x48);
 for(i=0;i<3;i++)
 {
  for(k=0;k<2;k++)
  {
   lcm1602_xie_dat_hs(tab3[wwe[i*2+k+6]]);
  }
  if(i!=2)
  {
   lcm1602_xie_dat_hs(':');
  }
 }
 
 lcm1602_xie_cmd_hs(0x80+0x45);
 lcm1602_xie_dat_hs(tab3[wwe[12]]);
 delay(2);
}
 
void lcm1602_xie_cmd_hs(uchar cmd)
{
 uchar i,tmp;
 LCD_RW=0;
 LCD_RS=0;
 LCD_EN=1;
 tmp=cmd;
 HC164_SCK=0;
 for(i=0;i<8;i++)
 {
  HC164_AB=(bit)(tmp&0x01);
  HC164_SCK=1;
  HC164_SCK=0;
  tmp>>=1;
 }
 LCD_EN=0;
}

void lcm1602_xie_dat_hs(uchar dat)
{
 uchar i;
 LCD_RW=0;
 LCD_RS=1;
 LCD_EN=1;
 HC164_SCK=0;
 for(i=0;i<8;i++)
 {
  HC164_AB=(bit)(dat&0x01);
  HC164_SCK=1;
  HC164_SCK=0;
  dat>>=1;
 }
 LCD_EN=0;
}

void lcm1602_init()
{
 LCD_RW=0;
 LCD_RS=0;
 LCD_EN=0;
 lcm1602_xie_cmd_hs(0x38);
 lcm1602_xie_cmd_hs(0x0c);
 lcm1602_xie_cmd_hs(0x06);
}
/*************************ds1302*******************************************************/
void DS1302_xie_1byte(uchar dat)
{
 uchar i;
 for(i=0;i<8;i++)
 {
  DS1302_DS=(bit)(dat&0x01);
  DS1302_SCK=1;
  DS1302_SCK=0;
  dat>>=1;
 }
}

uchar DS1302_du_1buyte()
{
 uchar i,num;
 for(i=0;i<8;i++)
 {
  num>>=1;
  if(DS1302_DS)
  num|=0x80;
  DS1302_SCK=1;
  DS1302_SCK=0;
 }
 return(num);
}

void DS1302_xie_hs(uchar cmd,uchar dat)
{
 DS1302_RST=0;
 DS1302_SCK=0;
 DS1302_RST=1;
 
 DS1302_xie_1byte(cmd);
 DS1302_xie_1byte(dat);
 
 DS1302_SCK=1;
 DS1302_RST=0;
}      

uchar DS1302_du_hs(uchar cmd)
{
 uchar tmp;
 DS1302_RST=0;
 DS1302_SCK=0;
 DS1302_RST=1;

 DS1302_xie_1byte(cmd);
 tmp=DS1302_du_1buyte();

 DS1302_SCK=1;
 DS1302_RST=0;
 return(tmp);
}

void DS1302_inti()
{
 DS1302_RST=0;
 DS1302_SCK=0;
 DS1302_xie_hs(0x8e,0x00);
 DS1302_xie_hs(0x80,xdw[0]);
 DS1302_xie_hs(0x82,xdw[1]);
 DS1302_xie_hs(0x84,xdw[2]);
 DS1302_xie_hs(0x86,xdw[3]);
 DS1302_xie_hs(0x88,xdw[4]);
 DS1302_xie_hs(0x8a,xdw[5]);
 DS1302_xie_hs(0x8c,xdw[6]);
 DS1302_xie_hs(0x8e,0x80);
}
/*************************24c02*******************************************************/
void start_24c02_hs()
{
 E2R_SCK=1;
 delaysp(1);
 E2R_SDA=1;
 delaysp(1);
 E2R_SDA=0;
 delaysp(1);
}

void stop_24c02_hs()
{
 E2R_SDA=0;
 delaysp(1);
 E2R_SCK=1;
 delaysp(1);
 E2R_SDA=1;
 delaysp(1);
}

void yingda_24c02_hs()
{
 uchar i;
 E2R_SCK=1;
 E2R_SDA=1;
 delaysp(1);
 while((E2R_SDA==1)||(i<220))
 {
   i++;
 }  
 E2R_SCK=0;
 delaysp(1);
}

void E2R_inti()
{
 E2R_SCK=1;
 E2R_SDA=1;
}

uchar du_1byte_24c02_hs()
{
 uchar i,num;
 E2R_SCK=0;
 delaysp(1);
 for(i=0;i<8;i++)
 {
  num<<=1;
  E2R_SCK=1;
  delaysp(1);
  if(E2R_SDA)
  num|=0x01;
  E2R_SCK=0;
  delaysp(1);
 }
 return(num);
}

void xie_1byte_24c02_hs(uchar dat)
{
 uchar i;
 E2R_SCK=0;
 delaysp(1);
 for(i=0;i<8;i++)
 {
  E2R_SDA=(bit)(dat&0x80);
  E2R_SCK=1;
  delaysp(1);
  E2R_SCK=0;
  delaysp(1);
  dat<<=1;
 }
 E2R_SDA=1;
 delaysp(1);
}

void xie_24c02_hs(uchar add,uchar cmd,uchar dat)
{
 start_24c02_hs();
 xie_1byte_24c02_hs(add);
 yingda_24c02_hs();
 xie_1byte_24c02_hs(cmd);
 yingda_24c02_hs();
 xie_1byte_24c02_hs(dat);
 yingda_24c02_hs();
 stop_24c02_hs();
}

uchar du_24c02_hs(uchar add,uchar cmd)
{
 uchar tmp;
 start_24c02_hs();
 xie_1byte_24c02_hs(add);
 yingda_24c02_hs();
 xie_1byte_24c02_hs(cmd);
 yingda_24c02_hs();

 start_24c02_hs();
 xie_1byte_24c02_hs(add|0x01);
 yingda_24c02_hs();
 tmp=du_1byte_24c02_hs();
 stop_24c02_hs();
 return(tmp);
}
/*************************************************************************************/

void main()
{
 uchar i,j;
 E2R_inti();
 lcm1602_init();
 display_inti();
   init_du_24c02();
 DS1302_inti();
 while(1)
 {
  cang();
  for(i=0;i<7;i++)
  {
   xie_24c02_hs(0xa0,i,xdw[i]);
   while(j<30)
   {  j++;
     display();
   }
   j=0;
  }    
 }
}

void init_du_24c02()
{
   uchar seg;
 seg=du_24c02_hs(0xa0,0);
 xdw[0]=seg;
 seg=du_24c02_hs(0xa0,1);
 xdw[1]=seg;
 seg=du_24c02_hs(0xa0,2);
 xdw[2]=seg;
 seg=du_24c02_hs(0xa0,3);
 xdw[3]=seg;
 seg=du_24c02_hs(0xa0,4);
 xdw[4]=seg;
 seg=du_24c02_hs(0xa0,5);
 xdw[5]=seg;
 seg=du_24c02_hs(0xa0,6);
 xdw[6]=seg;
}
關閉窗口

相關文章

主站蜘蛛池模板: 亚洲国产高清免费 | 欧美精品一区二区三区四区五区 | 欧美成人手机视频 | 国产一区亚洲 | 国产美女特级嫩嫩嫩bbb片 | 午夜精品一区二区三区三上悠亚 | 国产女人与拘做视频免费 | 玖玖视频网 | 欧美一级毛片久久99精品蜜桃 | 国产一区二区三区四区在线观看 | 日韩电影在线一区 | 夜夜草天天草 | 国产精品久久久久久吹潮 | 精品国产乱码久久久久久蜜臀 | 99久久精品国产麻豆演员表 | 黄色a视频| 91精品久久久久久久久中文字幕 | 亚洲欧美激情四射 | 欧美一区二区在线 | 国产亚洲精品久久19p | 亚洲在线免费观看 | 蜜桃av人人夜夜澡人人爽 | 国产日韩一区二区 | 欧美一区二区三区四区在线 | 自拍第一页 | 久久久久久国产精品免费免费男同 | 国产精品久久久久久久久久99 | 草逼网站 | 精品国产乱码久久久久久蜜柚 | 亚洲精品久久嫩草网站秘色 | www国产成人免费观看视频,深夜成人网 | av毛片| 国产精品自产av一区二区三区 | 欧美日日 | 亚洲综合资源 | 国产日韩欧美一区 | 中文字幕av亚洲精品一部二部 | 羞羞视频网页 | 久久久国产一区二区三区 | 久久久久久国产精品 | 自拍视频国产 |