日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
c51實(shí)現(xiàn)萬(wàn)年歷、溫度與鬧鐘功能
c51實(shí)現(xiàn)萬(wàn)年歷、溫度與鬧鐘功能
 更新時(shí)間:2009-7-9 16:52:12  點(diǎn)擊數(shù):0
【字體: 字體顏色

#include <reg51.h>

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

sbit DQ        = P2 ^ 1;//ds1820data
sbit clock_clk = P2 ^ 2;//ds1302_clk
sbit clock_dat = P2 ^ 3;//ds1302_dat
sbit clock_Rst = P2 ^ 4;//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   = P1 ^ 0;//加1鍵
sbit Dec_Key   = P1 ^ 1;//減1鍵
sbit OK_Key    = P1 ^ 2;//確定鍵

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

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

//為了編程方便定義的位變量
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);


//漢字庫(kù)及數(shù)字符號(hào)庫(kù)
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};/*--  文字:  時(shí)  --*/
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ù)點(diǎn)
unsigned char code maohao[16]={0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00};//冒號(hào)
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};//!感嘆號(hào)
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};//攝氏度的符號(hào)
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[]={                                     //開機(jī)畫面-----湘靈電子工作室
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í)函數(shù)*/
{
 while(t!=0)
     t--;
}

void I2C_Start(void)
{
   /*啟動(dòng)I2C總線的函數(shù),當(dāng)SCL為高電平時(shí)使SDA產(chǎn)生一個(gè)負(fù)跳變*/
    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為高電平時(shí)使SDA產(chǎn)生一個(gè)正跳變*/
    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為高電平時(shí)使SDA信號(hào)為低*/
    SDA=0;
    SCL=1;
    Delay2408(Delay2408_TIME);
    SCL=0;
    Delay2408(Delay2408_TIME);
}

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

bit Check_Acknowledge(void)
{
 /*發(fā)送完一個(gè)字節(jié)后檢驗(yàn)設(shè)備的應(yīng)答信號(hào)*/
    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總線寫一個(gè)字節(jié)*/
    unsigned char i;
    for(i=0;i<8;i++)
     if((b<          SEND_1();
        else
            SEND_0();
}

unsigned char ReadI2CByte(void)reentrant
{
 /*從I2C總線讀一個(gè)字節(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í)函數(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);  //稍做延時(shí)
 DQ = 0;    //單片機(jī)將DQ拉低
 Delay(80); //精確延時(shí) 大于 480us
 DQ = 1;    //拉高總線
 Delay(14);
 x=DQ;      //稍做延時(shí)后 如果x=0則初始化成功 x=1則初始化失敗
 Delay(20);
}

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

/******************************************************************************/
void WriteOneChar(unsigned char dat)//寫一個(gè)字節(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); // 跳過(guò)讀序號(hào)列號(hào)的操作
 WriteOneChar(0x44); // 啟動(dòng)溫度轉(zhuǎn)換
 Init_DS18B20();
 WriteOneChar(0xCC); //跳過(guò)讀序號(hào)列號(hào)的操作
 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ū)動(dòng)程序
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)  //小時(shí)閃爍標(biāo)志位
    {
     if(flag==1)
        {   
        d=read_clock(0x85);//讀小時(shí)
   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);//讀小時(shí)
  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)  //時(shí)閃爍標(biāo)志位
{
     if(flag==1)
        {   
         d = Read_One_Byte(0x01);//讀取2408的小時(shí)的數(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í)的數(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時(shí)的下一級(jí)選擇
{
 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)項(xià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;}    //小時(shí)
  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進(jìn)制賦給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進(jìn)制寫入1302
  write_clock(0x8e,0x80);//寫保護(hù),禁止寫操作 
}

/******************************************************************************/
void id_case2_key(void)//id為1時(shí)的下一級(jí)選擇
{
 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)項(xià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;}   //時(shí)
  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)//定時(shí)器0初始化
{
 TMOD=0x01;
 TH0=(65535-50000)/256;
 TL0=(65535-50000)%256;
 EA=1;
 ET0=1;
 TR0=1;
}

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

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

/******************************************************************************/
void Init_1302(void)//設(shè)置1302的初始時(shí)間
{
 write_clock(0x8e,0x00);//允許寫操作
 write_clock(0x8c,0x05);//年
 write_clock(0x8a,0x06);//星期
 write_clock(0x88,0x01);//月
 write_clock(0x86,0x01);//日
 write_clock(0x84,0x12);//小時(shí)
 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è)定等幾個(gè)漢字
 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è)置時(shí)鐘的初始值,顯示05年1月1號(hào)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 )//進(jìn)入鬧鐘設(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è)置和選擇項(xiàng)目鍵
          {
      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è)置和選擇項(xiàng)目鍵
       {
         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;  //小時(shí)
         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);//讀小時(shí)
   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);//鬧鐘顯示時(shí)間到!
     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è)定時(shí)間
     {
      for(a=0; a<100; a++)//BELL脈沖輸出,驅(qū)動(dòng)蜂鳴器
      {
       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

  • 上一篇: 51蜂鳴器唱《祝你平安》(匯編)
  • 下一篇: 遙控電子鐘
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1