<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > c51實現(xiàn)萬年歷、溫度與鬧鐘功能程序

          c51實現(xiàn)萬年歷、溫度與鬧鐘功能程序

          作者: 時間:2016-11-18 來源:網(wǎng)絡(luò) 收藏
          #include

          sbit Bell_Out = P1 ^ 7;//鬧鐘管腳輸出

          本文引用地址:http://www.ex-cimer.com/article/201611/315989.htm

          sbit DQ = P2 ^ 1;//ds1820data
          sbit clock_clk = P1 ^ 0;//ds1302_clk
          sbit clock_dat = P1 ^ 1;//ds1302_dat
          sbit clock_Rst = P1 ^ 2;//ds1302_Rst

          #define Disp_On 0x3f //定義管腳的指令值
          #define Disp_Off 0x3e
          #define Col_Add 0x40
          #define Page_Add 0xb8
          #define Start_Line 0xc0
          #define Lcd_Bus P0 //定義數(shù)據(jù)口

          sbit Mcs = P3 ^ 5; //
          sbit Scs = P3 ^ 6; //
          sbit Enable = P1 ^ 5; //
          sbit Di = P1 ^ 4; //
          sbit RW = P1 ^ 3; //
          sbit Lcd_Rst= P3 ^ 7; //

          //鍵盤掃描
          sbit Add_Key = P2 ^ 1;//加1鍵
          sbit Dec_Key = P2 ^ 2;//減1鍵
          sbit OK_Key = P2^ 3;//確定鍵

          //24存儲器
          sbit SCL = P3 ^ 3;
          sbit SDA = P3 ^ 4;
          sbit WP = P3 ^ 2;

          #define TRUE 1
          #define FALSE 0
          #define Delay2408_TIME 60 //經(jīng)實驗,不要小于50!否則可能造成時序混亂

          //為了編程方便定義的位變量
          sbit a0 = ACC ^ 0;
          sbit a1 = ACC ^ 1;
          sbit a2 = ACC ^ 2;
          sbit a3 = ACC ^ 3;
          sbit a4 = ACC ^ 4;
          sbit a5 = ACC ^ 5;
          sbit a6 = ACC ^ 6;
          sbit a7 = ACC ^ 7;

          bit flag, Bell_Swh,Hourb,Minb,Secb,Kgb;//閃爍標(biāo)志位
          bit sec=0,min=0,hour=0,year=0,mon=0,day=0,weekk=0; //閃爍標(biāo)志位
          unsigned char id,id2,d,e,S_1302,H_1302,H_2402,S_2402; //

          //Function Definition 函數(shù)聲明
          void Delay(int num);
          void Init_DS18B20(void);
          unsigned char ReadOneChar(void);
          void WriteOneChar(unsigned char dat);
          unsigned int ReadTemperature(void);
          void clock_out(unsigned char dd);
          unsigned char clock_in(void);
          unsigned char read_clock(unsigned char ord);
          void write_clock(unsigned char ord, unsigned char dd);
          void Disp(void);
          void id_case1_key(void);
          void id_case2_key(void);
          void Set_time(unsigned char sel,bit sel_1);
          void Timer0_Init(void);
          void Init_1302(void);
          void Set_Bell(unsigned char sel, bit sel_1);

          //24系列
          void Delay2408(unsigned int t);
          void I2C_Start(void);
          void I2C_Stop(void);
          void SEND_0(void);
          void SEND_1(void);
          bit Check_Acknowledge(void);
          void WriteI2CByte(unsigned char b)reentrant;
          unsigned char ReadI2CByte(void)reentrant;
          void Write_One_Byte(unsigned char addr,unsigned char thedata);
          char Read_One_Byte(unsigned char addr);

          //12864
          void Delay12864(unsigned int t);
          void write_com(unsigned char cmdcode);
          void write_data(unsigned char Dispdata);
          void frame(void);
          void Clr_Scr(void);
          void Disp_Img(unsigned char code *img);
          void Disp_Digit(unsigned char pag,unsigned char col, unsigned char code *hzk);
          void Disp_Chinese(unsigned char pag,unsigned char col, unsigned char code *hzk);
          void Init_lcd(void);


          //漢字庫及數(shù)字符號庫
          unsigned char code nao[32]={0x00,0x00,0xF9,0x12,0x90,0x92,0x96,0xFA,0x92,0x92,0x92,0x12,0x02,0xFE,0x00,0x00,
          0x00,0x00,0xFF,0x00,0x1F,0x00,0x00,0x7F,0x00,0x08,0x1F,0x40,0x80,0x7F,0x00,0x00};/*-- 文字: 鬧 --*/

          unsigned char code zhong[32]={0x40,0x30,0x2C,0xEB,0x28,0x28,0x00,0xF8,0x08,0x08,0xFF,0x08,0x08,0xF8,0x00,0x00,
          0x01,0x01,0x01,0xFF,0x41,0x21,0x00,0x01,0x01,0x01,0xFF,0x01,0x01,0x01,0x00,0x00};/*-- 文字: 鐘 --*/

          unsigned char code she[32]={0x40,0x41,0xCE,0x04,0x00,0x80,0x40,0xBE,0x82,0x82,0x82,0xBE,0xC0,0x40,0x40,0x00,
          0x00,0x00,0x7F,0x20,0x90,0x80,0x40,0x43,0x2C,0x10,0x10,0x2C,0x43,0xC0,0x40,0x00};/*-- 文字: 設(shè) --*/

          unsigned char code ding[32]={0x00,0x10,0x0C,0xA4,0x24,0x24,0x25,0xE6,0x24,0x24,0x24,0x24,0x14,0x0C,0x04,0x00,
          0x40,0x20,0x18,0x07,0x08,0x10,0x20,0x7F,0x42,0x42,0x42,0x42,0x40,0x40,0x00,0x00};/*-- 文字: 定 --*/

          unsigned char code kai[32]={0x40,0x42,0x42,0x42,0x42,0xFE,0x42,0x42,0x42,0x42,0xFE,0x42,0x42,0x42,0x42,0x00,
          0x00,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00};/*-- 文字: 開 --*/

          unsigned char code guan[32]={0x00,0x10,0x10,0x10,0x11,0x1E,0x14,0xF0,0x10,0x18,0x17,0x12,0x18,0x10,0x00,0x00,
          0x01,0x81,0x41,0x21,0x11,0x09,0x05,0x03,0x05,0x09,0x31,0x61,0xC1,0x41,0x01,0x00};/*-- 文字: 關(guān) --*/

          unsigned char code shit[32]={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};/*-- 文字: 時 --*/
          unsigned char code jian[32]={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};/*-- 文字: 間 --*/
          unsigned char code dao[32]={0x00,0x22,0x72,0x2A,0x26,0xE2,0x2A,0x72,0x22,0x00,0xF8,0x00,0x00,0xFF,0x00,0x00,
          0x00,0x42,0xC2,0x42,0x22,0x3F,0x22,0x12,0x12,0x00,0x0F,0x40,0x80,0x7F,0x00,0x00};/*-- 文字: 到 --*/

          unsigned char code shi[32]={0x00,0x10,0x2C,0x24,0xA4,0x64,0x25,0x26,0x24,0x24,0xA4,0x24,0x34,0x2C,0x04,0x00,
          0x40,0x40,0x48,0x49,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x4B,0x48,0x40,0x40,0x00};//室
          unsigned char code wen[32]={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};//溫
          unsigned char code zero[16]={0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00};//0
          unsigned char code one[16]={0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00};//1
          unsigned char code two[16]={0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00};//2
          unsigned char code three[16]={0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00};//3
          unsigned char code four[16]={0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00};//4
          unsigned char code five[16]={0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00};//5
          unsigned char code six[16]={0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00};//6
          unsigned char code seven[16]={0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00};//7
          unsigned char code eight[16]={0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00};//8
          unsigned char code nine[16]={0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00};//9
          unsigned char code point[16]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00};//小數(shù)點
          unsigned char code maohao[16]={0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00};//冒號
          unsigned char code space[16]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};//空白
          unsigned char code fh[16]={0x00,0x00,0x00,0xFC,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x6F,0x6F,0x00,0x00,0x00};//!感嘆號

          unsigned char code nian[32]={0x40,0x20,0x10,0x0C,0xE3,0x22,0x22,0x22,0xFE,0x22,0x22,0x22,0x22,0x02,0x00,0x00,
          0x04,0x04,0x04,0x04,0x07,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x04,0x00};//年
          unsigned char code yue[32]={0x00,0x00,0x00,0x00,0x00,0xFF,0x11,0x11,0x11,0x11,0x11,0xFF,0x00,0x00,0x00,0x00,
          0x00,0x40,0x20,0x10,0x0C,0x03,0x01,0x01,0x01,0x21,0x41,0x3F,0x00,0x00,0x00,0x00};//月
          unsigned char code xing[32]={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};//星
          unsigned char code qi[32]={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};//期
          unsigned char code cone[32]={0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xC0,0x80,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};//一
          unsigned char code ctwo[32]={0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x06,0x04,0x00,0x00,0x00,
          0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x18,0x10,0x00};//二
          unsigned char code cthree[32]={0x00,0x04,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x04,0x00,0x00,
          0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00};//三
          unsigned char code cfour[32]={0x00,0xFE,0x02,0x02,0x02,0xFE,0x02,0x02,0xFE,0x02,0x02,0x02,0x02,0xFE,0x00,0x00,
          0x00,0x7F,0x28,0x24,0x23,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x22,0x7F,0x00,0x00};//四
          unsigned char code cfive[32]={0x00,0x02,0x82,0x82,0x82,0x82,0xFE,0x82,0x82,0x82,0xC2,0x82,0x02,0x00,0x00,0x00,
          0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x30,0x20,0x00};//五
          unsigned char code csix[32]={0x10,0x10,0x10,0x10,0x10,0x91,0x12,0x1E,0x94,0x10,0x10,0x10,0x10,0x10,0x10,0x00,
          0x00,0x40,0x20,0x10,0x0C,0x03,0x01,0x00,0x00,0x01,0x02,0x0C,0x78,0x30,0x00,0x00};//六
          unsigned char code ri[32]={0x00,0x00,0x00,0xFE,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0xFE,0x00,0x00,0x00,0x00,
          0x00,0x00,0x00,0x3F,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x3F,0x00,0x00,0x00,0x00};//日
          unsigned char code sheshidu[32]={0x00,0x02,0x05,0xE2,0x18,0x04,0x02,0x02,0x02,0x02,0x02,0x02,0x04,0x1E,0x00,0x00,
          0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x40,0x40,0x40,0x40,0x40,0x20,0x18,0x00,0x00};//攝氏度的符號
          unsigned char code spaces[32]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};//漢字空格
          unsigned char code biaozhi[32]={0x00,0x00,0x00,0x00,0xE0,0xF8,0xFC,0xFC,0xFC,0xFC,0xF8,0xE0,0x00,0x00,0x00,0x00,
          0x00,0x10,0x18,0x3E,0x3F,0x7F,0x5F,0x9F,0x9F,0x5F,0x7F,0x3F,0x3E,0x18,0x10,0x00};//鬧鐘的圖標(biāo)
          unsigned char code logo[]={ //開機畫面-----湘靈電子工作室
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xF0,0xF8,
          0x38,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0xC0,0xC0,
          0xC0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x03,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x07,0x03,0x01,0x01,0x01,
          0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x83,0xFF,0x3F,0x07,0x02,0x00,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x7E,0xFF,0x78,0xF0,0xC0,0xC0,0x80,0x00,0x80,0xC0,0xE0,0xFF,0xFF,0xE0,
          0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xF0,0x08,0x00,0x38,0x0C,0x02,
          0x00,0x0C,0x87,0x81,0xC0,0xC0,0xC0,0xE0,0xE0,0xE0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
          0xF0,0xE0,0xE0,0xE0,0xC0,0xC0,0x80,0x00,0x00,0x80,0x87,0x83,0x82,0x83,0x83,0x83,
          0x81,0x81,0x81,0x81,0x81,0x80,0x80,0x80,0xC1,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0xE0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x03,0xFF,0xFF,0xFF,0x01,
          0x01,0x00,0x00,0x00,0xC0,0xF0,0x7C,0x0E,0x03,0x04,0xC0,0xE0,0xF0,0x78,0x3C,0x3E,
          0x9F,0xCF,0xF7,0xF3,0xFF,0xFD,0xFD,0xFD,0xFC,0x9C,0xBC,0xFC,0xFC,0xFC,0xF8,0x00,
          0x00,0x00,0x01,0x81,0xFF,0xFF,0xFF,0x7F,0x1C,0x01,0x01,0xC1,0x01,0x01,0x01,0x03,
          0xFF,0xFF,0x03,0x01,0x01,0x01,0x01,0x81,0xC1,0x01,0x00,0x00,0x00,0x00,0x80,0xC0,
          0x60,0x20,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x60,0xC0,0x00,0x00,0x00,0x00,0x80,
          0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0xF8,0x1C,0x07,
          0x03,0x06,0x06,0x0C,0x0C,0x06,0x06,0x0C,0x78,0xF0,0x80,0x00,0x00,0x00,0x00,0x00,
          0x00,0x02,0x3F,0x0F,0x07,0x06,0x06,0xC2,0xE6,0x78,0x1C,0x0F,0x07,0xFF,0x3F,0x04,
          0x00,0x00,0x00,0x3F,0x4F,0x00,0x00,0xF0,0xFC,0x1F,0x07,0x03,0x00,0x00,0x00,0x0E,
          0x3F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0xBF,0xDF,0xDF,0xEF,0xE7,0x77,0x31,0x38,
          0x1C,0x0E,0x0F,0x07,0x83,0x81,0x00,0x00,0x18,0x0E,0x0F,0x07,0x0C,0x0C,0x10,0x00,
          0xEF,0xFF,0x70,0xE0,0xC0,0x00,0x07,0x03,0x00,0x00,0x08,0x3E,0x63,0x41,0x41,0x60,
          0x20,0x60,0xC0,0x00,0x00,0x00,0xF8,0xCC,0x04,0x07,0x03,0x00,0x00,0xF0,0xFF,0x01,
          0x00,0x31,0xFF,0x80,0xC0,0x7E,0x03,0x01,0x0F,0x0C,0x0C,0xFC,0x7F,0x63,0xE0,0x3E,
          0x03,0x03,0x43,0x66,0x46,0x04,0x0C,0x88,0xF8,0x60,0x01,0x83,0xEE,0x38,0x00,0x00,
          0x00,0x00,0x00,0x80,0xC0,0xE0,0x70,0x31,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x3F,0x7C,0xF0,0xE2,0xC2,0xC4,0x84,0x84,
          0x84,0x86,0x06,0x06,0x86,0x87,0x83,0x83,0x81,0xC1,0xC1,0xE0,0x60,0x70,0x30,0x18,
          0x0C,0x04,0x06,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0x60,0x38,
          0x0F,0x01,0x00,0x00,0x01,0x07,0x0E,0x1C,0x38,0x70,0xE0,0x80,0x00,0x00,0x00,0x00,
          0x70,0xF0,0x11,0x1F,0x1C,0x00,0x00,0x07,0x1C,0x18,0x08,0x18,0xF0,0x80,0x01,0x07,
          0xFC,0x00,0x00,0xFF,0xFF,0x00,0x00,0xE1,0x31,0x21,0x33,0xCF,0x3C,0x27,0x63,0x26,
          0x06,0x00,0x60,0x64,0x24,0x64,0xFC,0x1F,0x03,0x01,0x01,0x01,0x00,0x00,0x00,0x00,
          0x00,0x00,0x3F,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0xFF,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x03,0x03,
          0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x30,0x30,0x18,0x18,0x08,0x0C,0x04,0x06,0x03,0x01,0x01,0x00,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,
          0x00,0x01,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x01,0x00,0x00,0x00,
          0x01,0x03,0x03,0x01,0x01,0x03,0x03,0x01,0x00,0x00,0x00,0x03,0x03,0x02,0x02,0x02,
          0x02,0x02,0x02,0x02,0x02,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
          };

          /******************************************************************************/
          /* 24C08.c*/
          //調(diào)用方式如下:
          //Write_One_Byte(0x10,0x04);
          //k=Read_One_Byte(0x10);
          /********** 函數(shù)定義 ************/
          void Delay2408(unsigned int t) /*延時函數(shù)*/
          {
          while(t!=0)
          t--;
          }

          void I2C_Start(void)
          {
          /*啟動I2C總線的函數(shù),當(dāng)SCL為高電平時使SDA產(chǎn)生一個負跳變*/
          SDA=1;
          SCL=1;
          Delay2408(Delay2408_TIME);
          SDA=0;
          Delay2408(Delay2408_TIME);
          SCL=0;
          Delay2408(Delay2408_TIME);
          }

          void I2C_Stop(void)
          {
          /*終止I2C總線,當(dāng)SCL為高電平時使SDA產(chǎn)生一個正跳變*/
          SDA=0;
          SCL=1;
          Delay2408(Delay2408_TIME);
          SDA=1;
          Delay2408(Delay2408_TIME);
          SCL=0;
          Delay2408(Delay2408_TIME);
          }

          void SEND_0(void) /* SEND ACK */
          {
          /*發(fā)送0,在SCL為高電平時使SDA信號為低*/
          SDA=0;
          SCL=1;
          Delay2408(Delay2408_TIME);
          SCL=0;
          Delay2408(Delay2408_TIME);
          }

          void SEND_1(void)
          {
          /*發(fā)送1,在SCL為高電平時使SDA信號為高*/
          SDA=1;
          SCL=1;
          Delay2408(Delay2408_TIME);
          SCL=0;
          Delay2408(Delay2408_TIME);
          }

          bit Check_Acknowledge(void)
          {
          /*發(fā)送完一個字節(jié)后檢驗設(shè)備的應(yīng)答信號*/
          SDA=1;
          SCL=1;
          Delay2408(Delay2408_TIME/2);
          F0=SDA;
          Delay2408(Delay2408_TIME/2);
          SCL=0;
          Delay2408(Delay2408_TIME);
          if(F0==1)
          return FALSE;
          return TRUE;
          }

          void WriteI2CByte(unsigned char b)reentrant
          {
          /*向I2C總線寫一個字節(jié)*/
          unsigned char i;
          for(i=0;i<8;i++)
          if((b< SEND_1();
          else
          SEND_0();
          }

          unsigned char ReadI2CByte(void)reentrant
          {
          /*從I2C總線讀一個字節(jié)*/
          unsigned char b=0,i;
          for(i=0;i<8;i++)
          {
          SDA=1; /*釋放總線*/
          SCL=1; /*接受數(shù)據(jù)*/
          Delay2408(10);
          F0=SDA;
          Delay2408(10);
          SCL=0;
          if(F0==1)
          {
          b=b<<1;
          b=b|0x01;
          }
          else
          b=b<<1;
          }
          return b;
          }

          /**********以下為讀寫24c02的函數(shù)***********************************************/
          void Write_One_Byte(unsigned char addr,unsigned char thedata)
          {
          bit acktemp=1;
          /*write a byte to mem*/
          I2C_Start();
          WriteI2CByte(0xa0);
          acktemp=Check_Acknowledge();
          WriteI2CByte(addr); /*address*/
          acktemp=Check_Acknowledge();
          WriteI2CByte(thedata); /*thedata*/
          acktemp=Check_Acknowledge();
          I2C_Stop();
          }

          /******************************************************************************/
          char Read_One_Byte(unsigned char addr)
          {
          bit acktemp=1;
          unsigned char mydata;
          /*read a byte from mem*/
          I2C_Start();
          WriteI2CByte(0xa0);
          acktemp=Check_Acknowledge();
          WriteI2CByte(addr);/*address*/
          acktemp=Check_Acknowledge();
          I2C_Start();
          WriteI2CByte(0xa1);
          acktemp=Check_Acknowledge();
          mydata=ReadI2CByte();
          acktemp=Check_Acknowledge();
          return mydata;
          I2C_Stop();
          }

          /******************************************************************************/
          void Delay(int num)//延時函數(shù)
          {
          while(num--) ;
          }

          /*12864driver.c*/
          /******************************************************************************/
          void Delay12864(unsigned int t)//
          {
          unsigned int i,j;
          for(i=0;i{
          for(j=0;j<10;j++);
          }
          }

          /******************************************************************************/
          void write_com(unsigned char cmdcode)//寫命令到LCD
          {
          Di = 0;
          RW = 0;

          Lcd_Bus = cmdcode;
          Delay12864(0);
          Enable = 1;
          Delay12864(0);
          Enable = 0;
          }

          /******************************************************************************/
          void write_data(unsigned char Dispdata)//寫數(shù)據(jù)到LCD
          {
          Di = 1;
          RW = 0;

          Lcd_Bus = Dispdata;
          Delay12864(0);
          Enable = 1;
          Delay12864(0);
          Enable = 0;
          }

          /*******************************************************************************/
          void frame(void)//顯示邊框
          {
          unsigned char i;
          Mcs = 1;
          Scs = 1;
          write_com(Page_Add+0);
          write_com(Col_Add+0);
          for(i=0;i<64;i++)
          {
          write_data(0x01);
          }
          write_com(Page_Add+7);
          write_com(Col_Add+0);
          for(i=0;i<64;i++)
          {
          write_data(0x80);
          }
          for(i=0;i<8;i++)
          {
          Mcs=0;
          Scs=1;
          write_com(Page_Add+i);
          write_com(Col_Add+63);
          write_data(0xff);
          Mcs=1;
          Scs=0;
          write_com(Page_Add+i);
          write_com(Col_Add+0);
          write_data(0xff);
          }
          }

          /******************************************************************************/
          void Clr_Scr(void)//清除內(nèi)存
          {
          unsigned char j,k;
          Mcs=1;Scs=1;
          write_com(Page_Add+0);
          write_com(Col_Add+0);

          for(k=0;k<8;k++)
          {
          write_com(Page_Add+k);
          for(j=0;j<64;j++)
          {
          write_data(0x00);
          }
          }
          }

          /*******************************************************************************/
          void Disp_Img(unsigned char code *img)//顯示12864圖片
          {
          unsigned char j,k;
          for(k=0;k<8;k++)
          {
          Mcs=1;
          Scs=0;
          Delay(10);
          write_com(Page_Add+k);
          write_com(Col_Add+0);
          for(j=0;j<64;j++)
          {
          write_data(img[k*128+j]);
          }
          Mcs=0;
          Scs=1;
          Delay(10);
          write_com(Page_Add+k);
          write_com(Col_Add+0);
          for(j=64;j<128;j++)
          {
          write_data(img[k*128+j]);
          }
          }
          }

          /*******************************************************************************/
          void Disp_Chinese(unsigned char pag,unsigned char col, char code *hzk)
          { //指定位置顯示漢字16*16
          unsigned char j=0,i=0;

          for(j=0;j<2;j++)
          {
          write_com(Page_Add+pag+j);
          write_com(Col_Add+col);
          for(i=0;i<16;i++)
          {
          write_data(hzk[16*j+i]);
          }
          }
          }

          /*******************************************************************************/
          void Disp_Digit(unsigned char pag,unsigned char col, unsigned char code *hzk)
          { //指定位置顯示字母或數(shù)字8*16
          unsigned char j=0, i=0;

          for(j=0;j<2;j++)
          {
          write_com(Page_Add+pag+j);
          write_com(Col_Add+col);
          for(i=0;i<8;i++)
          {
          write_data(hzk[8*j+i]);
          }
          }
          }

          /********************************************************************************/
          void Init_lcd(void)//初始化LCD屏
          {
          Lcd_Rst=0;
          Delay12864(100);
          Lcd_Rst=1;
          Delay12864(100);

          Mcs=1; Scs=1;

          Delay12864(100);
          write_com(Disp_Off);
          write_com(Page_Add+0);
          write_com(Start_Line+0);
          write_com(Col_Add+0);
          write_com(Disp_On);
          }

          /*******************************************************************************/
          void Init_DS18B20(void)//初始化ds1820
          {
          unsigned char x=0;
          DQ = 1; //DQ復(fù)位
          Delay(8); //稍做延時
          DQ = 0; //單片機將DQ拉低
          Delay(80); //精確延時 大于 480us
          DQ = 1; //拉高總線
          Delay(14);
          x=DQ; //稍做延時后 如果x=0則初始化成功 x=1則初始化失敗
          Delay(20);
          }

          /******************************************************************************/
          unsigned char ReadOneChar(void)//讀一個字節(jié)
          {
          unsigned char i=0;
          unsigned char dat = 0;
          for (i=8;i>0;i--)
          {
          DQ = 0; // 給脈沖信號
          dat>>=1;
          DQ = 1; // 給脈沖信號
          if(DQ)
          dat|=0x80;
          Delay(4);
          }
          return(dat);
          }

          /******************************************************************************/
          void WriteOneChar(unsigned char dat)//寫一個字節(jié)
          {
          unsigned char i=0;
          for (i=8; i>0; i--)
          {
          DQ = 0;
          DQ = dat&0x01;
          Delay(5);
          DQ = 1;
          dat>>=1;
          }
          }

          /******************************************************************************/
          unsigned int ReadTemperature(void)//讀取溫度
          {
          unsigned char a=0;
          unsigned char b=0;
          unsigned int t=0;
          float tt=0;
          Init_DS18B20();
          WriteOneChar(0xCC); // 跳過讀序號列號的操作
          WriteOneChar(0x44); // 啟動溫度轉(zhuǎn)換
          Init_DS18B20();
          WriteOneChar(0xCC); //跳過讀序號列號的操作
          WriteOneChar(0xBE); //讀取溫度寄存器
          a=ReadOneChar(); //讀低8位
          b=ReadOneChar(); //讀高8位
          t=b;
          t<<=8;
          t=t|a;
          tt=t*0.0625;
          t= tt*10+0.5; //放大10倍輸出并四舍五入
          return(t);
          }

          /******************************************************************************/
          //1302驅(qū)動程序
          void clock_out(unsigned char dd)
          {
          ACC=dd;
          clock_dat=a0; clock_clk=1; clock_clk=0;
          clock_dat=a1; clock_clk=1; clock_clk=0;
          clock_dat=a2; clock_clk=1; clock_clk=0;
          clock_dat=a3; clock_clk=1; clock_clk=0;
          clock_dat=a4; clock_clk=1; clock_clk=0;
          clock_dat=a5; clock_clk=1; clock_clk=0;
          clock_dat=a6; clock_clk=1; clock_clk=0;
          clock_dat=a7; clock_clk=1; clock_clk=0;
          }

          /******************************************************************************/
          unsigned char clock_in(void)
          {
          clock_dat=1;
          a0=clock_dat;
          clock_clk=1; clock_clk=0; a1=clock_dat;
          clock_clk=1; clock_clk=0; a2=clock_dat;
          clock_clk=1; clock_clk=0; a3=clock_dat;
          clock_clk=1; clock_clk=0; a4=clock_dat;
          clock_clk=1; clock_clk=0; a5=clock_dat;
          clock_clk=1; clock_clk=0; a6=clock_dat;
          clock_clk=1; clock_clk=0; a7=clock_dat;
          return(ACC);
          }

          /******************************************************************************/
          unsigned char read_clock(unsigned char ord)
          {
          unsigned char dd=0;
          clock_clk=0;
          clock_Rst=0;
          clock_Rst=1;
          clock_out(ord);
          dd=clock_in();
          clock_Rst=0;
          clock_clk=1;
          return(dd);
          }

          /******************************************************************************/
          void write_clock(unsigned char ord, unsigned char dd)
          {
          clock_clk=0;
          clock_Rst=0;
          clock_Rst=1;
          clock_out(ord);
          clock_out(dd);
          clock_Rst=0;
          clock_clk=1;
          }

          /******************************************************************************/
          void Disp(void)//顯示和閃爍函數(shù)
          {
          unsigned int i=0;
          unsigned char a=0,b=0,c=0,f=0;

          i=ReadTemperature();//讀溫度并送顯
          a=i/100;
          Mcs=1;Scs=0;
          Disp_Digit(5,40,zero+a*16);
          b=i/10-a*10;
          Mcs=1;Scs=0;
          Disp_Digit(5,48,zero+b*16);
          c=i-a*100-b*10;
          Mcs=0;Scs=1;
          Disp_Digit(5,0,zero+c*16);

          if(sec==1) //秒閃爍標(biāo)志位
          {
          if(flag==1)
          {
          d=read_clock(0x81);//讀秒
          e=d;
          d=d>>4;
          e=e&0x0f;
          Mcs=0;Scs=1;
          Disp_Digit(3,40,zero+d*16);//送顯示
          Disp_Digit(3,48,zero+e*16);
          }
          else
          {
          Mcs=0;Scs=1;
          Disp_Digit(3,40,space); //顯示空格
          Disp_Digit(3,48,space);
          }
          }
          else
          {
          d=read_clock(0x81);//讀秒
          e=d;
          d=d>>4;
          e=e&0x0f;
          Mcs=0;Scs=1;
          Disp_Digit(3,40,zero+d*16);
          Disp_Digit(3,48,zero+e*16);
          }

          if(min==1) //分鐘閃爍標(biāo)志位
          {
          if(flag==1)
          {
          d=read_clock(0x83);//讀分鐘
          e=d;
          d=d>>4;
          e=e&0x0f;
          Mcs=0;Scs=1;
          Disp_Digit(3,16,zero+d*16);
          Disp_Digit(3,24,zero+e*16);
          }
          else
          {
          Mcs=0;Scs=1;
          Disp_Digit(3,16,space); //顯示空格
          Disp_Digit(3,24,space);
          }
          }
          else
          {
          d=read_clock(0x83);//讀分鐘
          e=d;
          d=d>>4;
          e=e&0x0f;
          Mcs=0;Scs=1;
          Disp_Digit(3,16,zero+d*16);
          Disp_Digit(3,24,zero+e*16);
          }

          if(hour==1) //小時閃爍標(biāo)志位
          {
          if(flag==1)
          {
          d=read_clock(0x85);//讀小時
          e=d;
          d=d>>4;
          e=e&0x0f;
          Mcs=1;Scs=0;
          Disp_Digit(3,56,zero+d*16);
          Mcs=0;Scs=1;
          Disp_Digit(3,0,zero+e*16);
          }
          else
          {
          Mcs=1;Scs=0;
          Disp_Digit(3,56,space); //顯示空格
          Mcs=0;Scs=1;
          Disp_Digit(3,0,space);
          }
          }
          else
          {
          d=read_clock(0x85);//讀小時
          e=d;
          d=d>>4;
          e=e&0x0f;
          Mcs=1;Scs=0;
          Disp_Digit(3,56,zero+d*16);
          Mcs=0;Scs=1;
          Disp_Digit(3,0,zero+e*16);
          }

          if(year==1) //年閃爍標(biāo)志位
          {
          if(flag==1)
          {
          d=read_clock(0x8d);//讀年
          e=d;
          d=d>>4;
          e=e&0x0f;
          Mcs=1;Scs=0;
          Disp_Digit(1,8,two);
          Disp_Digit(1,16,zero);
          Disp_Digit(1,24,zero+d*16);
          Disp_Digit(1,32,zero+e*16);
          }
          else
          {
          Mcs=1;Scs=0;
          Disp_Digit(1,24,space); //顯示空格
          Disp_Digit(1,32,space);
          }
          }
          else
          {
          d=read_clock(0x8d);//讀年
          e=d;
          d=d>>4;
          e=e&0x0f;
          Mcs=1;Scs=0;
          Disp_Digit(1,8,two);
          Disp_Digit(1,16,zero);
          Disp_Digit(1,24,zero+d*16);
          Disp_Digit(1,32,zero+e*16);
          }

          if(mon==1) //月閃爍標(biāo)志位
          {
          if(flag==1)
          {
          d=read_clock(0x89);//讀月
          e=d;
          d=d>>4;
          e=e&0x0f;
          Mcs=1;Scs=0;
          Disp_Digit(1,56,zero+d*16);
          Mcs=0;Scs=1;
          Disp_Digit(1,0,zero+e*16);
          Disp_Chinese(1,8,yue);
          }
          else
          {
          Mcs=1;Scs=0;
          Disp_Digit(1,56,space); //顯示空格
          Mcs=0;Scs=1;
          Disp_Digit(1,0,space);
          }
          }
          else
          {
          d=read_clock(0x89);//讀月
          e=d;
          d=d>>4;
          e=e&0x0f;
          Mcs=1;Scs=0;
          Disp_Digit(1,56,zero+d*16);
          Mcs=0;Scs=1;
          Disp_Digit(1,0,zero+e*16);
          Disp_Chinese(1,8,yue);
          }

          if(day==1) //日閃爍標(biāo)志位
          {
          if(flag==1)
          {
          d=read_clock(0x87);//讀日
          e=d;
          d=d>>4;
          e=e&0x0f;
          Mcs=0;Scs=1;
          Disp_Digit(1,24,zero+d*16);
          Disp_Digit(1,32,zero+e*16);
          Disp_Chinese(1,40,ri);
          }
          else
          {
          Mcs=0;Scs=1;
          Disp_Digit(1,24,space); //顯示空格
          Disp_Digit(1,32,space);
          }
          }
          else
          {
          d=read_clock(0x87);//讀日
          e=d;
          d=d>>4;
          e=e&0x0f;
          Mcs=0;Scs=1;
          Disp_Digit(1,24,zero+d*16);
          Disp_Digit(1,32,zero+e*16);
          Disp_Chinese(1,40,ri);
          }

          if(weekk==1) //星期閃爍標(biāo)志位
          {
          if(flag==1)
          {
          d=read_clock(0x8b);//讀星期
          Mcs=1;Scs=0;
          Disp_Chinese(3,40,cone+(d-1)*32);//寫入星期的漢字
          }
          else
          {
          Mcs=1;Scs=0;
          Disp_Chinese(3,40,spaces); //顯示空格
          }
          }
          else
          {
          d=read_clock(0x8b);//讀星期
          Mcs=1;Scs=0;
          Disp_Chinese(3,40,cone+(d-1)*32);//寫入星期的漢字
          }
          }

          /******************************************************************************/
          void Disp2(void)//顯示和閃爍函數(shù)
          {
          if(Kgb==1) //開關(guān)閃爍標(biāo)志位
          {
          if(flag==1)
          {
          if(Bell_Swh == 0)//0為關(guān)
          {
          Mcs=0;Scs=1;
          Disp_Chinese(2,32,guan);//顯示關(guān)
          }
          else
          {
          Mcs=0;Scs=1;
          Disp_Chinese(2,32,kai);//顯示開
          }
          }
          else
          {
          Mcs=0;Scs=1;
          Disp_Chinese(2,32,spaces); //顯示空格
          }
          }
          else
          {
          if(Bell_Swh == 0)//關(guān)
          {
          Mcs=0;Scs=1;
          Disp_Chinese(2,32,guan);
          }
          else
          {
          Mcs=0;Scs=1;
          Disp_Chinese(2,32,kai);
          }
          }

          if(Hourb==1) //時閃爍標(biāo)志位
          {
          if(flag==1)
          {
          d = Read_One_Byte(0x01);//讀取2408的小時的數(shù)值
          Mcs=1;Scs=0;
          Disp_Digit(4,48,zero+(d/10)*16);
          Disp_Digit(4,56,zero+(d%10)*16);
          }
          else
          {
          Mcs=1;Scs=0;
          Disp_Digit(4,48,space); //顯示空格
          Disp_Digit(4,56,space);
          }
          }
          else
          {
          d = Read_One_Byte(0x01);//讀取24的小時的數(shù)值
          Mcs=1;Scs=0;
          Disp_Digit(4,48,zero+(d/10)*16);
          Disp_Digit(4,56,zero+(d%10)*16);
          }

          if(Minb==1) //分鐘閃爍標(biāo)志位
          {
          if(flag==1)
          {
          d = Read_One_Byte(0x02);//讀取24的分的數(shù)值
          Mcs=0;Scs=1;
          Disp_Digit(4,8,zero+(d/10)*16);
          Disp_Digit(4,16,zero+(d%10)*16);
          }
          else
          {
          Mcs=0;Scs=1;
          Disp_Digit(4,8,space); //顯示空格
          Disp_Digit(4,16,space);
          }
          }
          else
          {
          d = Read_One_Byte(0x02);//讀取24的分的數(shù)值
          Mcs=0;Scs=1;
          Disp_Digit(4,8,zero+(d/10)*16);
          Disp_Digit(4,16,zero+(d%10)*16);
          }

          if(Secb==1) //秒閃爍標(biāo)志位
          {
          if(flag==1)
          {
          d = Read_One_Byte(0x03);//讀取24的秒的數(shù)值
          Mcs=0;Scs=1;
          Disp_Digit(4,32,zero+(d/10)*16);
          Disp_Digit(4,40,zero+(d%10)*16);
          }
          else
          {
          Mcs=0;Scs=1;
          Disp_Digit(4,32,space); //顯示空格
          Disp_Digit(4,40,space);
          }
          }
          else
          {
          d = Read_One_Byte(0x03);//讀取24的秒的數(shù)值
          Mcs=0;Scs=1;
          Disp_Digit(4,32,zero+(d/10)*16);
          Disp_Digit(4,40,zero+(d%10)*16);
          }
          }

          /******************************************************************************/
          void id_case1_key(void)//id為1時的下一級選擇
          {
          if(Add_Key == 0) //增加
          {
          Delay(100);
          if(Add_Key == 0)
          Set_time(id,0); //調(diào)用Set_time函數(shù)
          while(Add_Key ==0);
          }
          if (Dec_Key==0) //減少
          {
          Delay(100);
          if(Dec_Key == 0)
          Set_time(id,1);
          while(Dec_Key ==0);
          }
          }

          /******************************************************************************/
          void Set_time(unsigned char sel, bit sel_1) //根據(jù)選擇調(diào)整相應(yīng)項目并寫入DS1302
          {
          signed char address,item;
          signed char max,mini;
          if(sel==7) {address=0x80; max=0;mini=0;} //秒
          if(sel==6) {address=0x82; max=59;mini=0;} //分鐘
          if(sel==5) {address=0x84; max=23;mini=0;} //小時
          if(sel==3) {address=0x86; max=31;mini=1;} //日
          if(sel==2) {address=0x88; max=12;mini=1;} //月
          if(sel==1) {address=0x8c; max=99; mini=0;} //年
          if(sel==4) {address=0x8a; max=7;mini=1;} //星期

          //讀取1302某地址上的數(shù)值轉(zhuǎn)換成10進制賦給item
          item=((read_clock(address+1))/16)*10 + (read_clock(address+1))%16;
          if(sel_1==0)
          item++;
          else
          item--;
          if(item>max) item=mini;
          if(item
          write_clock(0x8e,0x00);//允許寫操作
          write_clock(address,(item/10)*16+item%10);//轉(zhuǎn)換成16進制寫入1302
          write_clock(0x8e,0x80);//寫保護,禁止寫操作
          }

          /******************************************************************************/
          void id_case2_key(void)//id為1時的下一級選擇
          {
          if(Add_Key == 0) //增加
          {
          Delay(100);
          if(Add_Key == 0)
          Set_Bell(id2,0); //調(diào)用Set_time函數(shù)
          while(Add_Key ==0);
          }
          if (Dec_Key==0) //減少
          {
          Delay(100);
          if(Dec_Key == 0)
          Set_Bell(id2,1);
          while(Dec_Key ==0);
          }
          }

          /******************************************************************************/
          void Set_Bell(unsigned char sel, bit sel_1)//根據(jù)選擇調(diào)整相應(yīng)項目并寫入24
          {
          signed char address,item;
          signed char max,mini;
          if(sel==4) {address=0x03; max=59;mini=0;} //秒
          if(sel==3) {address=0x02; max=59;mini=0;} //分
          if(sel==2) {address=0x01; max=23; mini=0;} //時
          if(sel==1)
          {
          address=0x04;
          if(Add_Key ==0 || Dec_Key ==0)
          Bell_Swh=~Bell_Swh;
          Write_One_Byte(address,Bell_Swh);
          } //開關(guān)

          item = Read_One_Byte(address);
          if(sel_1==0)
          item++;
          else
          item--;
          if(item>max) item=mini;
          if(item

          Write_One_Byte(address,item);//寫入24
          }

          /******************************************************************************/
          void Timer0_Init(void)//定時器0初始化
          {
          TMOD=0x01;
          TH0=(65535-50000)/256;
          TL0=(65535-50000)%256;
          EA=1;
          ET0=1;
          TR0=1;
          }

          /******************************************************************************/
          void Timer0(void) interrupt 1 using 1//中斷入口,冒號閃爍
          {
          static unsigned char timecount = 0;//

          TH0=(65535-50000)/256; //50ms定時
          TL0=(65535-50000)%256;
          timecount++;
          if(timecount > 9)//500MS
          {
          timecount = 0;
          flag = ~flag;
          }
          }

          /******************************************************************************/
          void Init_1302(void)//設(shè)置1302的初始時間
          {
          write_clock(0x8e,0x00);//允許寫操作
          write_clock(0x8c,0x05);//年
          write_clock(0x8a,0x06);//星期
          write_clock(0x88,0x01);//月
          write_clock(0x86,0x01);//日
          write_clock(0x84,0x12);//小時
          write_clock(0x82,0x00);//分鐘
          write_clock(0x80,0x00);//秒
          write_clock(0x90,0xa5);//充電
          write_clock(0x8e,0x80);//禁止寫操作
          }

          /******************************************************************************/
          void Lcd_Mark1(void)//在預(yù)定的位置上寫入漢字)
          {
          Clr_Scr();//清屏
          frame();//顯示邊框
          Mcs=1;Scs=0;
          Disp_Chinese(5,8,shi);
          Disp_Chinese(5,24,wen);
          Disp_Chinese(3,8,xing);
          Disp_Chinese(3,24,qi);
          Disp_Chinese(1,40,nian);
          Disp_Digit(5,56,point);
          Mcs=0;Scs=1;
          Disp_Chinese(5,8,sheshidu);
          if(Bell_Swh == 1)//鬧鐘為開
          {
          Mcs=0;Scs=1;
          Disp_Chinese(5,40,biaozhi);//顯示鬧鐘圖標(biāo)
          }

          }

          /******************************************************************************/
          void Lcd_Mark2(void)
          {
          Clr_Scr();//清屏
          frame();//顯示邊框

          Mcs=1;Scs=0;//顯示鬧鐘設(shè)定等幾個漢字
          Disp_Chinese(2,16,nao);
          Disp_Chinese(2,32,zhong);
          Disp_Chinese(2,48,she);
          Mcs=0;Scs=1;
          Disp_Chinese(2,0,ding);
          Disp_Digit(4,0,maohao);
          Disp_Digit(4,24,maohao);
          }

          /******************************************************************************/
          void main(void)
          {
          unsigned char a;

          Timer0_Init();
          Init_lcd();//設(shè)置液晶顯示器
          WP = 0;//允許2408的寫操作!

          Clr_Scr();//清屏
          Disp_Img(logo); //顯示湘靈電子LOGO
          Delay12864(10000);//Delay

          Bell_Swh = Read_One_Byte(0x04);//讀取開關(guān)的狀態(tài)
          Lcd_Mark1();

          while(1)//主循環(huán)
          {
          //設(shè)置時鐘的初始值,顯示05年1月1號12:00:00
          if(Add_Key == 0 && Dec_Key == 0)
          {
          Delay(1000);
          if(Add_Key == 0 && Dec_Key == 0)
          {
          Init_1302();
          }
          }

          /* if(Add_Key == 0)
          { Delay(1000);
          if(Add_Key ==0)
          {
          //寫入鬧鐘初始值08:00:00
          Write_One_Byte(0x01,18);
          Write_One_Byte(0x02,0);
          Write_One_Byte(0x03,0);
          }
          }*/

          if(OK_Key == 0 && Dec_Key ==0 )//進入鬧鐘設(shè)置界面
          {
          Delay12864(100);
          if(OK_Key == 0 && Dec_Key ==0 )
          {
          Lcd_Mark2();
          if(Bell_Swh == 0){Mcs=0;Scs=1;Disp_Chinese(2,32,guan);}//關(guān)
          else {Mcs=0;Scs=1;Disp_Chinese(2,32,kai);}
          while(1)
          {
          if (OK_Key == 0) // 設(shè)置和選擇項目鍵
          {
          Delay(1000);
          if(OK_Key == 0)
          {
          id2++;if(id2>5) id2=0;
          }
          while(OK_Key == 0);

          }
          switch( id2 )
          {
          case 0:Disp2();break;//正常顯示
          case 1:Kgb = 1;id_case2_key();Disp2();break;//開關(guān)
          case 2:Kgb= 0;Hourb=1;id_case2_key();Disp2();break;//
          case 3:Hourb=0;Minb=1;id_case2_key();Disp2();break;
          case 4:Minb=0;Secb=1;id_case2_key();Disp2();break;
          case 5:Secb=0;id2 = 0;Lcd_Mark1();goto FF;break;//返回主界面
          default:break;
          }
          }//while(1)
          }//if
          }//if
          /*****************************************/
          FF: //返回主界面
          /*****************************************/
          if(flag == 0)
          {
          Mcs=0;Scs=1;
          Disp_Digit(3,8,maohao);// :閃爍
          Disp_Digit(3,32,maohao);
          }
          else
          {
          Mcs=0;Scs=1;
          Disp_Digit(3,8,space);//顯示空格
          Disp_Digit(3,32,space);
          }
          if (OK_Key == 0) // 設(shè)置和選擇項目鍵
          {
          Delay(1000);
          if(OK_Key == 0)
          {
          id++;if(id>7)id=0;
          }
          while(OK_Key == 0);

          }
          switch( id )
          {
          case 0:sec = 0; Disp( );break;//正常顯示
          case 1:year = 1;id_case1_key();Disp();break;//年
          case 2:year=0;mon=1;id_case1_key();Disp();break;//月
          case 3:mon=0;day=1;id_case1_key();Disp();break; //日
          case 4:day=0;weekk=1;id_case1_key();Disp();break;//星期
          case 5:weekk=0;hour=1;id_case1_key();Disp();break; //小時
          case 6:hour=0;min=1;id_case1_key();Disp();break; //分鐘
          case 7:min=0;sec=1;id_case1_key();Disp();break; //秒
          default:break;
          }

          if(Bell_Swh == 1)//鬧鐘為開
          {
          H_2402=Read_One_Byte(0x01);//讀取2408的
          S_2402=Read_One_Byte(0x02);

          d=read_clock(0x85);//讀小時
          e=d;
          d=d>>4;
          e=e&0x0f;
          H_1302=10*d+e;

          d=read_clock(0x83);//讀分鐘
          e=d;
          d=d>>4;
          e=e&0x0f;
          S_1302=10*d+e;

          if(H_2402 == H_1302)
          {
          if(S_2402 == S_1302)
          {
          Clr_Scr();//清屏
          frame();//顯示邊框
          Mcs=1;Scs=0;
          Disp_Chinese(3,16,nao);//鬧鐘顯示時間到!
          Disp_Chinese(3,32,zhong);
          Disp_Chinese(3,48,shit);
          Mcs=0;Scs=1;
          Disp_Chinese(3,0,jian);
          Disp_Chinese(3,16,dao);
          Disp_Digit(3,40,fh);

          while(S_2402 == S_1302)//判斷是否到鬧鐘設(shè)定時間
          {
          for(a=0; a<100; a++)//BELL脈沖輸出,驅(qū)動蜂鳴器
          {
          if(a<50){Bell_Out = 0;Delay(100);}
          else {Bell_Out = 1;Delay(100);}
          }

          d=read_clock(0x83);//讀分鐘
          e=d;
          d=d>>4;
          e=e&0x0f;
          S_1302=10*d+e;
          }
          Lcd_Mark1();
          }//if
          }
          }//if
          }//while
          }//main



          關(guān)鍵詞: c51萬年歷溫度與鬧

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();