?? 多功能電子時(shí)鐘 c程序.c
字號(hào):
void lcm_w_word(uchar *s)
{
while(*s>0)
{
write_data(*s);
s++;
}
}
//寫(xiě)指令或數(shù)據(jù)(被調(diào)用層)
void lcm_w_test(bit i,uchar word)
{
if(i == 0)
{
write_com(word);//寫(xiě)指令或數(shù)據(jù)(0,指令)
}
else
{
write_data(word);//寫(xiě)指令或數(shù)據(jù)(1,數(shù)據(jù))
}
}
//清屏函數(shù)
void lcm_clr(void)
{
lcm_w_test(0,0x01);
}
/*DS18B20驅(qū)動(dòng)程序------------------------------------------------------------*/
//初始化ds1820函數(shù)
void Init_DS18B20(void)
{
uchar 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);
}
//讀一個(gè)字節(jié)函數(shù)
uchar ReadOneChar(void)
{
uchar i=0;
uchar 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);
}
//寫(xiě)一個(gè)字節(jié)函數(shù)
void WriteOneChar(uchar dat)
{
uchar i=0;
for (i=8; i>0; i--)
{
DQ = 0;
DQ = dat&0x01;
Delay(5);
DQ = 1;
dat>>=1;
}
}
//讀取溫度函數(shù)
uint ReadTemperature(void)
{
uchar a=0;
uchar b=0;
uint 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);
}
// 節(jié)假日 提示
void days(void)
{
lcm_w_test(0,0x98);
if ( cen == 0x20 && year == 0x9 && month == 0x0 && date == 0x0 ){ lcm_w_word("Happy birthday!!"); if(hour==0x7 && min==0x0 && sec==0x0){Play(Music_happy,0,3,300);}}
else
{
if ( month_moon == 0x0 && date_moon == 0x0 ) { lcm_w_word("祝你生日快樂(lè)!! "); if(hour==0x7 && min==0x0 && sec==0x0){Play(Music_happy,0,3,300);}}
if ( month_moon == 0x0 && date_moon == 0x0 ) { lcm_w_word("妹妹的生日!! "); }
if ( month_moon == 0x0 && date_moon == 0x0 ) { lcm_w_word("弟弟的生日!! "); }
if ( month_moon == 0x0 && date_moon == 0x0 ) { lcm_w_word(" 的生日!! "); }
else
{
if (month_moon== 0x1 && date_moon == 0x1 ){ lcm_w_word(" 今日春節(jié) "); }
if (month_moon== 0x1 && date_moon == 0x15 ){ lcm_w_word(" 元宵節(jié)快樂(lè) "); }
if (month_moon== 0x2 && date_moon == 0x2 ){ lcm_w_word(" 青龍節(jié) "); }
if (month_moon== 0x5 && date_moon == 0x5 ){ lcm_w_word(" 端午節(jié) "); }
if (month_moon== 0x7 && date_moon == 0x7 ){ lcm_w_word("七七中國(guó)情人節(jié) "); }
if (month_moon== 0x7 && date_moon == 0x15 ){ lcm_w_word(" 中元節(jié) "); }
if (month_moon== 0x8 && date_moon == 0x15 ){ lcm_w_word(" 中秋節(jié)快樂(lè) "); }
if (month_moon== 0x9 && date_moon == 0x9 ){ lcm_w_word(" 今日重陽(yáng)節(jié) "); }
if (month_moon== 0x12 && date_moon == 0x8 ){ lcm_w_word(" 今日臘八節(jié) "); }
if (month_moon== 0x12 && date_moon == 0x15 ){ lcm_w_word(" 過(guò)小年 "); }
if (month_moon== 0x12 && date_moon == 0x29 ){ lcm_w_word(" 臘月二十九 "); }
if (month_moon== 0x12 && date_moon == 0x30 ){ lcm_w_word(" 大年三十(^o^) "); }
if ( month == 0x1 && date == 0x1 ){ lcm_w_word(" 元旦快樂(lè) "); }//1月
if ( month == 0x1 && date == 0x28 ){ lcm_w_word(" 世界麻風(fēng)日 "); }
if ( month == 0x2 && date == 0x2 ){ lcm_w_word(" 世界濕地日 "); }//2月
if ( month == 0x2 && date == 0x13 ){ lcm_w_word(" 明天情人節(jié)了 "); }
if ( month == 0x2 && date == 0x14 ){ lcm_w_word(" 今天是情人節(jié) "); }
if ( month == 0x3 && date == 0x1 ){ lcm_w_word(" 國(guó)際海豹日 "); }//3月
if ( month == 0x3 && date == 0x3 ){ lcm_w_word(" 全國(guó)愛(ài)耳日 "); }
if ( month == 0x3 && date == 0x8 ){ lcm_w_word("國(guó)際勞動(dòng)?jì)D女節(jié) "); }
if ( month == 0x3 && date == 0x12 ){ lcm_w_word(" 植樹(shù)節(jié) "); }
if ( month == 0x3 && date == 0x14 ){ lcm_w_word(" 國(guó)際警察日 "); }
if ( month == 0x3 && date == 0x15 ){ lcm_w_word(" 消費(fèi)者權(quán)益日 "); }
if ( month == 0x3 && date == 0x17 ){ lcm_w_word(" 國(guó)際航海日 "); }
if ( month == 0x3 && date == 0x21 ){ lcm_w_word(" 世界森林日 "); }
if ( month == 0x3 && date == 0x22 ){ lcm_w_word(" 世界水日 "); }
if ( month == 0x3 && date == 0x23 ){ lcm_w_word(" 世界氣象日 "); }
if ( month == 0x3 && date == 0x24 ){ lcm_w_word("世界防治結(jié)核病日"); }
if ( month == 0x4 && date == 0x1 ){ lcm_w_word("愚人節(jié) 小心上當(dāng)"); }//4
if ( month == 0x4 && date == 0x7 ){ lcm_w_word(" 世界衛(wèi)生日 "); }
if ( month == 0x4 && date == 0x8 ){ lcm_w_word(" 復(fù)活節(jié) "); }
if ( month == 0x4 && date == 0x13 ){ lcm_w_word(" 黑色星期五 "); }
if ( month == 0x5 && date == 0x1 ){ lcm_w_word("五一國(guó)際勞動(dòng)節(jié) "); }//5
if ( month == 0x5 && date == 0x4 ){ lcm_w_word(" 青年節(jié) "); }
if ( month == 0x5 && date == 0x8 ){ lcm_w_word(" 世界紅十字日 "); }
if ( month == 0x5 && date == 0x12 ){ lcm_w_word(" 國(guó)際護(hù)士節(jié) "); }
if ( month == 0x5 && date == 0x5 ){ lcm_w_word("近日請(qǐng)注意母親節(jié)"); }
if ( month == 0x5 && date == 0x15 ){ lcm_w_word(" 國(guó)際家庭日 "); }
if ( month == 0x5 && date == 0x31 ){ lcm_w_word(" 世界無(wú)煙日 "); }
if ( month == 0x6 && date == 0x1 ){ lcm_w_word(" 國(guó)際兒童節(jié) "); }//6
if ( month == 0x6 && date == 0x5 ){ lcm_w_word(" 世界環(huán)境日 "); }
if ( month == 0x6 && date == 0x26 ){ lcm_w_word(" 國(guó)際禁毒日 "); }
if ( month == 0x6 && date == 0x6 ){ lcm_w_word(" 全國(guó)愛(ài)眼日 "); }
if ( month == 0x6 && date == 0x13 ){ lcm_w_word("近日請(qǐng)注意父親節(jié)"); }
if ( month == 0x6 && date == 0x15 ){ lcm_w_word("近日請(qǐng)注意父親節(jié)"); }
if ( month == 0x7 && date == 0x1 ){ lcm_w_word(" 七一黨生日 "); }//7
if ( month == 0x7 && date == 0x7 ){ lcm_w_word("抗日戰(zhàn)爭(zhēng)紀(jì)念日 "); }
if ( month == 0x7 && date == 0x11 ){ lcm_w_word(" 世界人口日 "); }
if ( month == 0x8 && date == 0x1 ){ lcm_w_word(" 八一建軍節(jié) "); }//8
if ( month == 0x8 && date == 0x8 ){ lcm_w_word(" 中國(guó)男子節(jié) "); }
if ( month == 0x8 && date == 0x15 ){ lcm_w_word("抗戰(zhàn)勝利紀(jì)念日 "); }
if ( month == 0x9 && date == 0x10 ){ lcm_w_word(" 中國(guó)教師節(jié) "); }//9
if ( month == 0x9 && date == 0x18 ){ lcm_w_word("九一八事變紀(jì)念日"); }
if ( month == 0x9 && date == 0x20 ){ lcm_w_word(" 國(guó)際愛(ài)牙日 "); }
if ( month == 0x9 && date == 0x27 ){ lcm_w_word(" 世界旅游日 "); }
if ( month == 0x10 && date == 0x1 ){ lcm_w_word(" 中國(guó)國(guó)慶節(jié) "); }//10
if ( month == 0x10 && date == 0x4 ){ lcm_w_word(" 世界動(dòng)物日 "); }
if ( month == 0x10 && date == 0x24 ){ lcm_w_word(" 聯(lián)合國(guó)日 "); }
if ( month == 0x10 && date == 0x12 ){ lcm_w_word("明天是國(guó)際教師節(jié)"); }
if ( month == 0x10 && date == 0x13 ){ lcm_w_word(" 國(guó)際教師節(jié) "); }
if ( month == 0x11 && date == 0x10 ){ lcm_w_word(" 世界青年節(jié) "); }//11
if ( month == 0x11 && date == 0x17 ){ lcm_w_word(" 世界學(xué)生節(jié) "); }
if ( month == 0x12 && date == 0x1 ){ lcm_w_word(" 世界艾滋病日 "); }//12
if ( month == 0x12 && date == 0x23 ){ lcm_w_word(" 明晚平安夜 "); }
if ( month == 0x12 && date == 0x24 ){ lcm_w_word(" 今晚平安夜 "); }
if ( month == 0x12 && date == 0x25 ){ lcm_w_word(" 圣誕快樂(lè) "); }
if ( month == 0x12 && date == 0x31 ){ lcm_w_word(" 明日新年 "); }
}
}
}
/*電子時(shí)鐘在液晶屏上顯示驅(qū)動(dòng)程序---------------------------------------------*/
//往液晶屏填寫(xiě) 年 數(shù)據(jù)
void lcm_w_year(void)
{
cen=ds_read(32);
lcm_w_test(0,0x80);//在液晶屏上顯示的位置
lcm_w_test(1,(cen/16)+0x30);
lcm_w_test(1,cen%16+0x30);
year=ds_read(9);
lcm_w_test(0,0x81);//在LCM上的寫(xiě)入位置
lcm_w_test(1,(year/16)+0x30);
lcm_w_test(1,year%16+0x30);
lcm_w_test(0,0x82);
lcm_w_word("農(nóng)");
lcm_w_test(0,0x84);
lcm_w_word("年");
nl();
}
//往液晶屏填寫(xiě) 月 數(shù)據(jù)
void lcm_w_month(void)
{
month=ds_read(8);
lcm_w_test(0,0x94); //月份在液晶屏上顯示的位置
if(month/16 != 0){lcm_w_test(1,(month/16)+0x30);} //十位消隱
else{lcm_w_test(1,0x20);}//十位消隱
lcm_w_test(1,month%16+0x30);
lcm_w_test(0,0x95);//在LCM上的寫(xiě)入位置
lcm_w_word("月");
nl();
}
//將星期處理并送入液晶屏的指定區(qū)域顯示
void lcm_w_day(void)
{
uchar sel;
day = ds_read(6);
sel = ds_read(6);
lcm_w_test(0,0x90);
lcm_w_word("星期");
lcm_w_test(0,0x92);
if(sel==7) {lcm_w_word("日");}
if(sel==6) {lcm_w_word("六");}
if(sel==5) {lcm_w_word("五");}
if(sel==4) {lcm_w_word("四");}
if(sel==3) {lcm_w_word("三");}
if(sel==2) {lcm_w_word("二");}
if(sel==1) {lcm_w_word("一");}
}
//往液晶屏填寫(xiě) 日 數(shù)據(jù)
void lcm_w_date(void)
{
date=ds_read(7);
lcm_w_test(0,0x96); //日期在液晶屏上顯示的位置
if(date/16 != 0){lcm_w_test(1,(date/16)+0x30);} //十位消隱
else{lcm_w_test(1,0x20);}//十位消隱
lcm_w_test(1,date%16+0x30);
lcm_w_test(0,0x97); //在LCM上的寫(xiě)入位置
lcm_w_word("日");
nl();
}
//往液晶屏填寫(xiě) 小時(shí) 數(shù)據(jù)
void lcm_w_hour(void)
{
hour=ds_read(4);//讀取DS12CR887的小時(shí)
lcm_w_test(0,0x88); //小時(shí)在液晶屏上顯示的位置
lcm_w_test(1,(hour/16)+0x30);
lcm_w_test(1,hour%16+0x30);
}
//往液晶屏填寫(xiě) 分鐘 數(shù)據(jù)
void lcm_w_min(void)
{
min=ds_read(2);//讀取DS12CR887的分
lcm_w_test(0,0x89); //分鐘在液晶屏上顯示的位置
lcm_w_test(1,0x3a); //小時(shí)與分鐘之間顯示":"
lcm_w_test(1,(min/16)+0x30);
lcm_w_test(1,min%16+0x30);
lcm_w_test(1,0x3a); //分鐘與小時(shí)之間顯示":"
}
//往液晶屏填寫(xiě) 秒 數(shù)據(jù)
void lcm_w_sec(void)
{
uint i=0;
uchar a=0,b=0,c=0;
sec=ds_read(0);//讀取DS12CR887的秒
lcm_w_test(0,0x8b); //秒鐘在液晶屏上顯示的位置
lcm_w_test(1,(sec/16)+0x30); //寫(xiě)十位//對(duì)10求余分解出十位
lcm_w_test(1,sec%16+0x30); //寫(xiě)個(gè)位
write_com(0x8c);
if(r1_of==1 || r2_of==1){lcm_w_test(1,0x0e);}//鬧鈴開(kāi)啟狀態(tài)
lcm_w_test(0,0x8d); //溫度在液晶屏上顯示的位置
i=ReadTemperature();//讀溫度并送顯
a=i/100;
lcm_w_test(1,a+0x30); //顯示溫度十位
b=i/10-a*10;
lcm_w_test(1,b+0x30); //個(gè)位
lcm_w_test(1,0x2e); //"."
c=i-a*100-b*10;
lcm_w_test(1,c+0x30); //小數(shù)點(diǎn)位1位
lcm_w_word("℃"); //度C
}
/*調(diào)整時(shí)間、日期程序---------------------------------------------------------*/
void Set_time(uchar sel)
{
signed char address,item;
signed char max,mini;
lcm_w_test(0,0x98);
lcm_w_word("調(diào)整");
if(sel==6) {lcm_w_word("分鐘");address=2; max=59;mini=0;}
if(sel==5) {lcm_w_word("小時(shí)");address=4; max=23;mini=0;}
if(sel==4) {lcm_w_word("星期");address=6; max=7;mini=1;}
if(sel==3) {lcm_w_word("日期");address=7; max=31; mini=1;}
if(sel==2) {lcm_w_word("月份");address=8; max=12;mini=1;}
if(sel==1) {lcm_w_word("年份");address=9; max=99;mini=0;}
if(sel==0) {lcm_w_word("世紀(jì)");address=32; max=20; mini=19;}
//讀取DS12CR887某地址上的數(shù)值賦給item
item=ds_read(address);
item=(item/16)*10+item%16;
if(K3 == 0)//K3-加
{
item++;//數(shù)加 1
}
if(K4 == 0)//K4-減
{
item--;//數(shù)減 1
}
if(item>max)
item=mini;//查看數(shù)值有效范圍
if(item<mini)
item=max;
item=(item/10)*16+item%10;
//將調(diào)整好的item值寫(xiě)入DS12CR887
ds_write(address,item);//+
lcm_w_year(); //年
lcm_w_month(); //月
lcm_w_date(); //日
lcm_w_day(); //星期
lcm_w_hour(); //時(shí)
lcm_w_min(); //
}
void lcm_ring() //顯示鬧鈴設(shè)置
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -