在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            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.biyoush.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;//閃爍標志位
            bit sec=0,min=0,hour=0,year=0,mon=0,day=0,weekk=0; //閃爍標志位
            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};//鬧鐘的圖標
            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ù),當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總線,當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) //秒閃爍標志位
            {
            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) //分鐘閃爍標志位
            {
            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) //小時閃爍標志位
            {
            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) //年閃爍標志位
            {
            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) //月閃爍標志位
            {
            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) //日閃爍標志位
            {
            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) //星期閃爍標志位
            {
            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)閃爍標志位
            {
            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) //時閃爍標志位
            {
            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) //分鐘閃爍標志位
            {
            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) //秒閃爍標志位
            {
            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);//顯示鬧鐘圖標
            }

            }

            /******************************************************************************/
            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)閉