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

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

單片機驅動DS1302時間DS18B20溫度12864液晶顯示完整程序設計

作者:huqin   來源:本站原創   點擊數:  更新時間:2008年08月03日   【字體:

程序說明:這是一個用51單片機驅動DS1302時間模塊+DS18B20溫度傳感器模塊+12864液晶顯示完整程序設計實例,有四個鍵盤KEY0 到KEY3,key0是修改時間的 首先是秒到分到時到年到月到日到星期 key1是加1 key2是減一 在修改時間狀態再按一下key3的時候就出去并修改時間日期,在平時狀態按著key3再按著key2 就會打開lcd 的燈 單單是只按key3那就是把燈關了。

文件一:DS1302驅動.c

#include<reg52.h>

//ds1302
sbit sclk=P0^3;
sbit io=P0^4;
sbit rst=P0^5;
sbit acc0=ACC^0;
sbit acc1=ACC^1;
sbit acc2=ACC^2;
sbit acc3=ACC^3;
sbit acc4=ACC^4;
sbit acc5=ACC^5;
sbit acc6=ACC^6;
sbit acc7=ACC^7;

delay()
{
  unsigned char i;
  i=10;
  i=10;
  i=10;
  i=10;
  i=10;
  i=10;
  i=10;}
w_1302(unsigned char dat,unsigned char shu){//寫一個八位的數去DS1302    //上升效  ;;;選寫地址再寫數據

   ACC=dat;//地址
   sclk=0;
   rst=1;//
   io=acc0;///
   sclk=0;
   delay();
   sclk=1;
    io=acc1;
   sclk=0;
   delay();
   sclk=1;
    io=acc2;
   sclk=0;
   delay();
   sclk=1;
    io=acc3;
   sclk=0;
   delay();
   sclk=1;
    io=acc4;
   sclk=0;
   delay();
   sclk=1;
    io=acc5;
   sclk=0;
   delay();
   sclk=1;
    io=acc6;
   sclk=0;
   delay();
   sclk=1;
    io=acc7;
   sclk=0;
   delay();
   sclk=1;///

 
  //sclk=0;
  ACC=shu;   //數據
    io=acc0;///
   sclk=0;
   delay();
   sclk=1;
    io=acc1;
   sclk=0;
   delay();
   sclk=1;
    io=acc2;
   sclk=0;
   delay();
   sclk=1;
    io=acc3;
   sclk=0;
   delay();
   sclk=1;
    io=acc4;
   sclk=0;
   delay();
   sclk=1;
    io=acc5;
   sclk=0;
   delay();
   sclk=1;
    io=acc6;
   sclk=0;
   delay();
   sclk=1;
    io=acc7;
   sclk=0;
   delay();
   sclk=1;///
 
   rst=0;
   sclk=0;
   } ///寫完畢
unsigned char r_1302(unsigned char ADD){
 
  sclk=0;
  rst=1;
  ACC=ADD;   //地址
    io=acc0;///
   sclk=0;
   delay();
   sclk=1;
    io=acc1;
   sclk=0;
   delay();
   sclk=1;
    io=acc2;
   sclk=0;
   delay();
   sclk=1;
    io=acc3;
   sclk=0;
   delay();
   sclk=1;
    io=acc4;
   sclk=0;
   delay();
   sclk=1;
    io=acc5;
   sclk=0;
   delay();
   sclk=1;
    io=acc6;
   sclk=0;
   delay();
   sclk=1;
    io=acc7;
   sclk=0;/////
  delay();
   sclk=1;
   delay();
   sclk=0;
   acc0=io;
   delay();
     sclk=1;
   delay();
   sclk=0;
   acc1=io;
   delay();
     sclk=1;
   delay();
   sclk=0;
   acc2=io;
   delay();
     sclk=1;
   delay();
   sclk=0;
   acc3=io;
   delay();
     sclk=1;
   delay();
   sclk=0;
   acc4=io;
   delay();
     sclk=1;
   delay();
   sclk=0;
   acc5=io;
   delay();
     sclk=1;
   delay();
   sclk=0;
   acc6=io;
   delay();
     sclk=1;
   delay();
   sclk=0;
   acc7=io;
   delay();

  rst=0;
  sclk=0;
  return(ACC);
  }
ds1302_c()
  {
  w_1302(0x80,0x80);
  w_1302(0x8e,0x00);

  w_1302(0x80,0x50);  //;秒
  w_1302(0x82,0x06);  // 分=0
  w_1302(0x84,0x01);  //時 =0
  w_1302(0x86,0x22); //
  w_1302(0x88,0x11);//
  w_1302(0x8a,0x04);//
  w_1302(0x8b,0x07);//

  w_1302(0x8e,0x80);
  w_1302(0x90,0xa6);
  w_1302(0x80,0x00);
  }
main(){
  rst=0;
  ds1302_c();
 
for(;;){
 P2=r_1302(0x81);
}
  }

---------------------------------------------------------------------------------------------------------------
文件2:完全版 有關燈鍵.c

#include<reg52.h>
sbit di = P2^7;  ////////定義引腳
sbit rw =  P2^6;
sbit e = P2^5;
sbit cs1 = P2^4;
sbit cs2 = P2^1;
sbit lcd_d = P2^0;
sbit key0 = P2^3;
sbit key1 = P2^2;
sbit key2 = P1^0;
sbit key3 = P1^1;
sbit P07 = P0^7;
sbit P06 = P0^6;
sbit P05 = P0^5;
sbit P04 = P0^4;
sbit P03 = P0^3;
//ds1302
sbit sclk=P1^4;
sbit io=P1^3;
sbit rst=P1^2;
sbit acc0=ACC^0;
sbit acc1=ACC^1;
sbit acc2=ACC^2;
sbit acc3=ACC^3;
sbit acc4=ACC^4;
sbit acc5=ACC^5;
sbit acc6=ACC^6;
sbit acc7=ACC^7;
typedef unsigned char byte;
typedef unsigned int  word;
sbit KEY=P3^7;//根據實際情況定義端口ds1820
unsigned char key_time=0;          //全局變量


//////////////////////////////////溫度
//ds18b20數字溫度傳感器模塊程序

void delay1(word useconds)
{
  for(;useconds>0;useconds--);
}

//復位
byte ow_reset(void)
{
  byte presence;
  KEY = 0; //pull DQ line low
  delay1(29); // leave it low for 480us
  KEY = 1; // allow line to return high
  delay1(3); // wait for presence
  presence = KEY; // get presence signal
  delay1(25); // wait for end of timeslot
  return(presence); // presence signal returned
}  // 0=presence, 1 = no part

//從 1-wire 總線上讀取一個字節
byte read_byte(void)
{
  byte i;
  byte value = 0;
  for (i=8;i>0;i--)
  {
    value>>=1;
    KEY = 0; // pull DQ low to start timeslot
    KEY = 1; // then return high
    delay1(1);  //for (i=0; i<3; i++);
    if(KEY)value|=0x80;
    delay1(6); // wait for rest of timeslot
  }
  return(value);
}

//向 1-WIRE 總線上寫一個字節
void write_byte(char val)
{
  byte i;
  for (i=8; i>0; i--) // writes byte, one bit at a time
  {
    KEY = 0; // pull DQ low to start timeslot
    KEY = val&0x01;
    delay1(5); // hold value for remainder of timeslot
    KEY = 1;
    val=val/2;
  }
  delay1(5);
}

//讀取溫度
float wendu(void)
{
    float tem;
  union{
    byte c[2];
    int x;
  }temp;

  ow_reset();
  write_byte(0xCC); // Skip ROM
  write_byte(0xBE); // Read Scratch Pad
  temp.c[1]=read_byte();    //lsd
  temp.c[0]=read_byte();    //msd
  ow_reset();
  write_byte(0xCC); //Skip ROM
  write_byte(0x44); // Start Conversion

        tem=0.0;      
        if(temp.x & 0x01) tem+=0.0625;temp.x>>=1;
        if(temp.x & 0x01) tem+=0.125;temp.x>>=1;
        if(temp.x & 0x01) tem+=0.25;temp.x>>=1;
        if(temp.x & 0x01) tem+=0.5;temp.x>>=1;
        tem+=temp.x;

    return tem;
}


void cs1_lcd(){  ////////選擇左邊
  bit a=1;
  cs1=a;
  cs2=!a;
  }
void cs2_lcd(){    ////////選擇右邊
  bit a=1;
  cs1=!a;
  cs2=a;
  }
void busy_lcd(){//////判斷忙
  bit a=1;
  di=!a;
  rw=a;
  e=a;
  while(P07==a);
  }
w_lcd(unsigned b){ ///寫a到12864
  bit a=1;
  busy_lcd();
  rw =!a;
  di =a;
  P0=b;
  e=a;
  e=!a;
  }
void dis_lcd(){//打開顯示選擇第一行顯示
  bit a=1;
  busy_lcd();
  rw=!a;
  di=!a;
  P0=0x3f;
  e=a;
  e=!a;
  P0=0xc0;
  e=a;
  e=!a;
  }
y_lcd(unsigned a){///由A確定y軸
  bit b=1;
  busy_lcd();
  rw=!b;
  di=!b;
  P0=a;
  P07=b;
  P06=!b;
  P05=b;
  P04=b;
  P03=b;
  e=b;
  e=!b;
  }
x_lcd(unsigned a){//由a確定X軸
  bit b=1;
  busy_lcd();
  rw=!b;
  di=!b;
  P0=a;
  P07=!b;
  P06=b;
  e=b;
  e=!b;
  }

void clr_lcd(){///清屏
  bit a=0;
  unsigned x,y,date,i;
  cs1_lcd();
  date=0x00;
 for(i=0;i<2;i++){
 for(y=0;y<8;y++)
 for(x=0;x<64;x++){
  x_lcd(x);
  y_lcd(y);
  w_lcd(date);
  }
  cs2_lcd();}
  }

unsigned char code shu[18][16]={///0到9數字
{0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00},//0
{0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00},//1
{0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00},//2
{0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00},//3
{0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00},///4
{0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00},//5
{0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00},//6
{0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00},//7
{0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00},//8
{0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00},//9
{0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00},//  :
{0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00},//  /
};
unsigned char code shu1[9][32]={///
{0x02,0x42,0x42,0xFE,0x42,0x42,0xFE,0x02,0x02,0xFA,0x02,0x02,0xFE,0x00,0x00,0x00,0x08,0x08,0x08,0x07,0x84,0x44,0x23,0x18,0x06,0x01,0x3E,0x40,0x43,0x40,0x78,0x00},//現12
{0x00,0x04,0x04,0xC4,0x64,0x9C,0x87,0x84,0x84,0xE4,0x84,0x84,0x84,0x84,0x04,0x00,0x04,0x02,0x01,0x7F,0x00,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x00},//在  13
{0x00,0xFC,0x44,0x44,0x44,0xFC,0x10,0x90,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x00,0x00,0x07,0x04,0x04,0x04,0x07,0x00,0x00,0x03,0x40,0x80,0x7F,0x00,0x00,0x00,0x00},//時  14
{0x00,0xF8,0x01,0x06,0x00,0xF0,0x92,0x92,0x92,0x92,0xF2,0x02,0x02,0xFE,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0x04,0x04,0x04,0x04,0x07,0x40,0x80,0x7F,0x00,0x00},//間  15
{0x00,0x00,0x00,0xBE,0x2A,0x2A,0x2A,0xEA,0x2A,0x2A,0x2A,0x2A,0x3E,0x00,0x00,0x00,0x00,0x48,0x46,0x41,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x49,0x49,0x41,0x40,0x00},//星  16
{0x00,0x04,0xFF,0x54,0x54,0x54,0xFF,0x04,0x00,0xFE,0x22,0x22,0x22,0xFE,0x00,0x00,0x42,0x22,0x1B,0x02,0x02,0x0A,0x33,0x62,0x18,0x07,0x02,0x22,0x42,0x3F,0x00,0x00},//期  17
{0x10,0x21,0x86,0x70,0x00,0x7E,0x4A,0x4A,0x4A,0x4A,0x4A,0x7E,0x00,0x00,0x00,0x00,0x02,0xFE,0x01,0x40,0x7F,0x41,0x41,0x7F,0x41,0x41,0x7F,0x41,0x41,0x7F,0x40,0x00},//溫18
{0x00,0x00,0xFC,0x04,0x24,0x24,0xFC,0xA5,0xA6,0xA4,0xFC,0x24,0x24,0x24,0x04,0x00,0x80,0x60,0x1F,0x80,0x80,0x42,0x46,0x2A,0x12,0x12,0x2A,0x26,0x42,0xC0,0x40,0x00},//度19
};

unsigned char time1[7]={0x30,0x00,0x16,8,7,2,8};//分別是秒,分,時,日,月,星期,年 次子程序出自http://www.zg4o1577.cn hkcd斑竹,已通過測試無誤。
delay()
{
  unsigned char i;
  i=10;
  i=10;
  i=10;
  i=10;
  i=10;
  i=10;
  i=10;}
w_1302(unsigned char dat,unsigned char shu){//寫一個八位的數去DS1302    //上升效  ;;;選寫地址再寫數據

   ACC=dat;//地址
   sclk=0;
   rst=1;//
   io=acc0;///
   sclk=0;
   delay();
   sclk=1;
    io=acc1;
   sclk=0;
   delay();
   sclk=1;
    io=acc2;
   sclk=0;
   delay();
   sclk=1;
    io=acc3;
   sclk=0;
   delay();
   sclk=1;
    io=acc4;
   sclk=0;
   delay();
   sclk=1;
    io=acc5;
   sclk=0;
   delay();
   sclk=1;
    io=acc6;
   sclk=0;
   delay();
   sclk=1;
    io=acc7;
   sclk=0;
   delay();
   sclk=1;///

 
  //sclk=0;
  ACC=shu;   //數據
    io=acc0;///
   sclk=0;
   delay();
   sclk=1;
    io=acc1;
   sclk=0;
   delay();
   sclk=1;
    io=acc2;
   sclk=0;
   delay();
   sclk=1;
    io=acc3;
   sclk=0;
   delay();
   sclk=1;
    io=acc4;
   sclk=0;
   delay();
   sclk=1;
    io=acc5;
   sclk=0;
   delay();
   sclk=1;
    io=acc6;
   sclk=0;
   delay();
   sclk=1;
    io=acc7;
   sclk=0;
   delay();
   sclk=1;///
 
   rst=0;
   sclk=0;
   } ///寫完畢
unsigned char r_1302(unsigned char ADD){
 
  sclk=0;
  rst=1;
  ACC=ADD;   //地址
    io=acc0;///
   sclk=0;
   delay();
   sclk=1;
    io=acc1;
   sclk=0;
   delay();
   sclk=1;
    io=acc2;
   sclk=0;
   delay();
   sclk=1;
    io=acc3;
   sclk=0;
   delay();
   sclk=1;
    io=acc4;
   sclk=0;
   delay();
   sclk=1;
    io=acc5;
   sclk=0;
   delay();
   sclk=1;
    io=acc6;
   sclk=0;
   delay();
   sclk=1;
    io=acc7;
   sclk=0;/////
  delay();
   sclk=1;

   delay();
   sclk=0;
   acc0=io;
   delay();
     sclk=1;
   delay();
   sclk=0;
   acc1=io;
   delay();
     sclk=1;
   delay();
   sclk=0;
   acc2=io;
   delay();
     sclk=1;
   delay();
   sclk=0;
   acc3=io;
   delay();
     sclk=1;
   delay();
   sclk=0;
   acc4=io;
   delay();
     sclk=1;
   delay();
   sclk=0;
   acc5=io;
   delay();
     sclk=1;
   delay();
   sclk=0;
   acc6=io;
   delay();
     sclk=1;
   delay();
   sclk=0;
   acc7=io;
   delay();

  rst=0;
  sclk=0;
  return(ACC);
  }
ds1302_c()
  {
  w_1302(0x80,0x80);
  w_1302(0x8e,0x00);
  w_1302(0x80,time1[0]);  //;秒
  w_1302(0x82,time1[1]);  // 分=0
  w_1302(0x84,time1[2]);  //時 =0
  w_1302(0x86,time1[3]); // 日
  w_1302(0x88,time1[4]);//  月
  w_1302(0x8a,time1[5]);//星期
  w_1302(0x8c,time1[6]);//年
  w_1302(0x8e,0x80);
  w_1302(0x90,0xb8);
  w_1302(0x80,0x00);
  }

  //x_lcd(unsigned a){//由a確定X軸  //y_lcd(unsigned a){///由A確定y軸
//void dis_lcd(){//打開顯示選擇第一行顯示 //w_lcd(unsigned b){ ///寫a到12864
//void busy_lcd(){//////判斷忙  //void cs1_lcd(){  ////////選擇左邊
//void cs2_lcd(){    ////////選擇右邊
d12864_lcd(unsigned char x,y,k){
  unsigned char ix,iy,i;
  dis_lcd();//打開顯示
  if(x>63){
  x=x-64;
  cs2_lcd();
  }
  else cs1_lcd();
  i=0;
  if(k<12){
  for(iy=0;iy<2;iy++)
  for(ix=0;ix<8;ix++){
  y_lcd(iy+y);
  x_lcd(ix+x);
  w_lcd(shu[k][i]);
  i++;
  }
  }
  else{k-=12;
  for(iy=0;iy<2;iy++)
  for(ix=0;ix<16;ix++){
  y_lcd(iy+y);
  x_lcd(ix+x);
  w_lcd(shu1[k][i]);
  i++;
  }
  }
}

time_lcd(){
  unsigned char y,k,time,add,i,we1,we2;
  add=128;///////必須是小于64-8大于64
  d12864_lcd(0,0,12);//:  北
  d12864_lcd(16,0,13);//:  京
  d12864_lcd(31,0,14);//:  時
  d12864_lcd(47,0,15);//:  間
  k=0x81;
  y=0;    //在第幾行顯示
  for(i=0;i<3;i++){
  time=r_1302(k);
  time1[i]=time;
  add=add-8;;
  time=time&0x0f;
  d12864_lcd(add,y,time);///秒個位
  add=add-8;
  time=r_1302(k);
  time&=0xf0;
  time>>=4;
  d12864_lcd(add,y,time);//秒十位
  add=add-8;;
  k+=2;
  }
  d12864_lcd(40+64,y,10);//:
  d12864_lcd(16+64,y,10);//:  顯示兩點
//
  time1[5]=r_1302(0x8b);
   d12864_lcd(64,4,16);//:  星
   d12864_lcd(64+16,4,17);//:  期
   r_1302(0x8b);//讀星期
   d12864_lcd(64+32,4,r_1302(0x8b));//:  讀星期幾`并顯示
  ////
   y=2;//在第四行顯示
   add=56+16;
   time=r_1302(0x87);
   time1[3]=time;
   d12864_lcd(add,y,time&0x0f);//: 顯示日
   time=r_1302(0x87);
   time&=0xf0;
   time>>=4;
   add-=8;
   d12864_lcd(add,y,time);  //顯示日的十位
   add-=8;
   add-=8;
   time1[4]=time=r_1302(0x89);
   d12864_lcd(add,y,time&0x0f);//: 顯示月
   time=r_1302(0x89);
   time&=0xf0;
   time>>=4;
   add-=8;
   d12864_lcd(add,y,time);  //顯示月的十位
   add-=8;
   add-=8;
   time1[6]=time=r_1302(0x8d);
   d12864_lcd(add,y,time&0x0f);//: 顯示年
   time=r_1302(0x8d);
   time&=0xf0;
   time>>=4;
   add-=8;
   d12864_lcd(add,y,time);  //顯示年的十位
 //////讀完
 
  d12864_lcd(40+16,y,11);//:
  d12864_lcd(16+16,y,11);//:  顯示兩/
  add-=8;
  d12864_lcd(add,y,0);//: 0
  add-=8;
  d12864_lcd(add,y,2);//:  2
 
  d12864_lcd(0,4,18);//:  溫
   d12864_lcd(16,4,19);//: 度
  we1=wendu();
  we2=we1/10;
  d12864_lcd(32,4,we2);//:  2
  we2=we1-we2*10;
  d12864_lcd(40,4,we2);//:  顯示溫度值
  cs1_lcd();
  y_lcd(4);
  x_lcd(50);
  w_lcd(0x18);
  x_lcd(51);
  w_lcd(0x18);
    }
/////////////////////////顯示時間完畢


hei_lcd(unsigned char x,y){   //全黑用來做閃標用
  char iy,ix,di,i;
  di=0x00;
  if(x>63){
  x=x-64;
  cs2_lcd();
  }
  else cs1_lcd();
  i=0;
  for(iy=0;iy<2;iy++){
  for(ix=0;ix<16;ix++){
  y_lcd(iy+y);
  x_lcd(ix+x);
  w_lcd(di);
  }
  }
  }
key_t(){  //鍵盤key1 加1 key2 減1
 
  if(!key1){
    key_time++;
 delay1(20000);
 while(!key1);
 }
    if(!key2){
    key_time--;
    delay1(20000);
    while(!key2);
  }
  }


void delay11(word useconds)
{
  for(;useconds>0;useconds--)
  key_t();
}

time_key(){
unsigned char keyd,ktime;
unsigned int year;
word kk;
  keyd=0;
  kk=10000;///閃動快慢
 if(!key0){
 for(;;){
   if(!key0){
   keyd=keyd+1;
   delay1(500);
   if(keyd>8)keyd=1;
   key_time=0;//////每設牟換一個就把存設時間清0
   key0=1;
   while(!key0);
   key0=1;
   }
   ////////////////////////閃程序
  if(keyd==1){//=1進入秒閃 同時設置秒時間
   key_time=(time1[0]&0x0f)+((time1[0]&0xf0)>>4)*10; //將數姐里的數度到key_time里  10進制
   hei_lcd(112,0);//x  y
   delay11(kk);//////閃動快慢
   if(key_time>=60)key_time=0; 
   d12864_lcd(112,0,key_time/10);
   d12864_lcd(120,0,key_time-(key_time/10)*10);
   time1[0]=(((key_time/10)<<4)&0xf0)+(key_time-(key_time/10)*10);  //換成BCD碼存到數組里
   delay1(10000);
   }
   if(keyd==2){//=1進入分閃 同時設置秒時間
 key_time=(time1[1]&0x0f)+((time1[1]&0xf0)>>4)*10; //將數姐里的數度到key_time里  10進制
   hei_lcd(88,0);//x  y
   delay11(kk);//////閃動快慢
    if(key_time>=60)key_time=0;
   d12864_lcd(88,0,key_time/10);
   d12864_lcd(96,0,key_time-(key_time/10)*10);
   delay1(10000);
    time1[1]=(((key_time/10)<<4)&0xf0)+(key_time-(key_time/10)*10);  //換成BCD碼存到數組里
   }
   if(keyd==3){//=1進入時閃 同時設置秒時間
  key_time=(time1[2]&0x0f)+((time1[2]&0xf0)>>4)*10; //將數姐里的數度到key_time里  10進制
   hei_lcd(64,0);//x  y
   delay11(kk);//////閃動快慢
    if(key_time>=24)key_time=0;
   d12864_lcd(64,0,key_time/10);
   d12864_lcd(72,0,key_time-(key_time/10)*10);
   time1[2]=(key_time/10)<<4+(key_time-key_time/10);
   delay1(10000);
   time1[2]=(((key_time/10)<<4)&0xf0)+(key_time-(key_time/10)*10);  //換成BCD碼存到數組里
   } 
  if(keyd==4){//=1進入年閃 同時設置秒時間
    key_time=(time1[6]&0x0f)+((time1[6]&0xf0)>>4)*10; //將數姐里的數度到key_time里  10進制
   hei_lcd(16,2);//x  y
   delay11(kk);//////閃動快慢
    if(key_time>99)key_time=0;
   d12864_lcd(16,2,key_time/10);
   d12864_lcd(24,2,key_time-(key_time/10)*10);
   time1[6]=(key_time/10)<<4+(key_time-key_time/10);
   delay1(10000);
   time1[6]=(((key_time/10)<<4)&0xf0)+(key_time-(key_time/10)*10);  //換成BCD碼存到數組里
   }

     if(keyd==5){//=1進入月閃 同時設置秒時間
  key_time=(time1[4]&0x0f)+((time1[4]&0xf0)>>4)*10; //將數姐里的數度到key_time里  10進制
   hei_lcd(40,2);//x  y
   delay11(kk);//////閃動快慢
    if(key_time>=13)key_time=0;
   d12864_lcd(40,2,key_time/10);
   d12864_lcd(48,2,key_time-(key_time/10)*10);
   time1[4]=(key_time/10)<<4+(key_time-key_time/10);
   delay1(10000);
   time1[4]=(((key_time/10)<<4)&0xf0)+(key_time-(key_time/10)*10);  //換成BCD碼存到數組里
   }
  
   if(keyd==6){//=1進入日閃 同時設置秒時間
    key_time=(time1[3]&0x0f)+((time1[3]&0xf0)>>4)*10; //將數姐里的數度到key_time里  10進制
 year=(time1[4]&0x0f)+(((time1[4]&0xf0)>>4)*10)+2000;
   switch(time1[4]){           //計算閏月
     case 1: ktime=31;break;
  case 3: ktime=31;break;
  case 5: ktime=31;break;
  case 7: ktime=31;break;
     case 8: ktime=31;break;
  case 10: ktime=31;break;
  case 12: ktime=31;break;
  case 4: ktime=30;break;
  case 6: ktime=30;break;
  case 9: ktime=30;break;
  case 11: ktime=30;break;
  case 2: if(year%4==0&&year%100!=0||year%400==0) ktime=29;
             else ktime=29;break;
}
   hei_lcd(64,2);//x  y
   delay11(kk);//////閃動快慢
    if(key_time>ktime)key_time=0;
   d12864_lcd(64,2,key_time/10);
   d12864_lcd(72,2,key_time-(key_time/10)*10);
   time1[3]=(key_time/10)<<4+(key_time-key_time/10);
   delay1(10000);
   time1[3]=(((key_time/10)<<4)&0xf0)+(key_time-(key_time/10)*10);  //換成BCD碼存到數組里
   }
 
if(keyd==7){//=1進入星期閃 同時設置秒時
   char iy,ix,di,i;
   key_time=time1[5];
   di=0x00;
   cs2_lcd();
   i=0;
   for(iy=0;iy<2;iy++){
   for(ix=0;ix<8;ix++){
   y_lcd(iy+4);
   x_lcd(ix+96);
    w_lcd(di);
 }
 di=00;
 }
 delay11(kk);//////閃動快慢
  if(key_time>7)key_time=0;
 d12864_lcd(96,4,key_time);
 time1[5]=key_time;
 delay1(10000);
 time1[5]=key_time;  //換成BCD碼存到數組里
   }
   ////////////////////
   if(!key3)break;
}
ds1302_c();   ///更改時間
}
}

///////////////
lcd_key(){
  if(!key3){
  if(!key2)lcd_d=1;
  else lcd_d=0;
  }
  }
main(){
 ds1302_c();
 clr_lcd();
for(;;){
  time_lcd();
  time_key();
  lcd_key(); 
}
  }

 

 

 

 

 

關閉窗口
主站蜘蛛池模板: 四虎影音 | 91精品观看| 成人免费网站www网站高清 | 中文字幕亚洲欧美日韩在线不卡 | 欧洲av一区 | 国产欧美在线 | 国产99久久久国产精品 | 91影片| 亚洲欧美久久 | 91精品综合久久久久久五月天 | 永久免费av | 亚洲精品电影 | 国产精品成人一区二区 | 欧美激情久久久 | 国产中文一区二区三区 | 精品久久久网站 | 国产成人精品一区二 | 久久高清 | 成人精品网| 成人羞羞国产免费视频 | 女同久久另类99精品国产 | 欧美一级在线 | 欧美成人免费 | 久久久久99| 91精品久久久久久久久久入口 | 免费的日批视频 | 人人做人人澡人人爽欧美 | 天天操操| 久久久精品网站 | 在线看日韩av| 中文字幕欧美日韩一区 | 久久久久无码国产精品一区 | 久久蜜桃精品 | 一级黄色录像片子 | 91精品国产91久久久久久吃药 | re久久 | 网站黄色av| 亚洲在线 | 欧美黄色大片在线观看 | 天天插天天操 | 黄色一级大片在线观看 |