lcm_w_word(\月\} //}
/*****************************************************************************/ //星期处理并送入LCM的指定区域 void lcm_w_xq(void){ unsigned char sel; //if(read_clock(0x8b) != xq){ xq = read_clock(0x8b); sel = (read_clock(0x8b)); //字节低4位的BCD码放入sel lcm_w_test(0,0x97);//写入指定区域(97H 第二行第8个字) 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_test(1,0xc8);lcm_w_test(1,0xfd);} //此指令等于lcm_w_word(\三\因为“三”的内码失效。
if(sel==2) {lcm_w_word(\二\ //
if(sel==1) {lcm_w_word(\一\ //星期一 lcm_w_test(0,0x95); lcm_w_word(\星期\ //} }
/*****************************************************************************/ //向LCM中填写 日 数据 void lcm_w_dd(void){
// if(read_clock(0x87) != dd){ dd = read_clock(0x87); lcm_w_test(0,0x92); if(dd/16 != 0){lcm_w_test(1,(dd/16)+0x30);} //十位消隐 else{lcm_w_test(1,0x20);}//同上 lcm_w_test(1,dd+0x30); lcm_w_test(0,0x93); lcm_w_word(\日 \ } //}
/*****************************************************************************/ //向LCM中填写 小时 数据 void lcm_w_hh(void){ if(read_clock(0x85) != hh){ hh = read_clock(0x85); if (hh > 0x07 && hh < 0x22 && w == 0){ beep = 0; led_r = 0; DelayM(100);
beep = 1; led_r = 1; } } lcm_w_test(0,0x88); lcm_w_test(1,(hh/16)+0x30); lcm_w_test(1,hh+0x30); } //}
/*****************************************************************************/ //向LCM中填写 分钟 数据 void lcm_w_mm(void){ if(read_clock(0x83) != mm){ mm = read_clock(0x83); if( w == 0){
days(); //节日显示 updata (); //刷新数据 } } lcm_w_test(0,0x89); lcm_w_test(1,0x3a); //\ lcm_w_test(1,(mm/16)+0x30); lcm_w_test(1,mm+0x30); lcm_w_test(1,0x2e); //\ }
/*****************************************************************************/ //刷新数据
void updata (void){
lcm_w_hh();//刷新 小时 lcm_w_dd();//刷新 日 lcm_w_xq();//更新星期值 lcm_w_mo();//刷新 月 lcm_w_yy();//刷新 年 }
/*****************************************************************************/ //向LCM中填写 秒 数据 void lcm_w_ss(void){ unsigned int i=0; unsigned char a=0,b=0,c=0; if(read_clock(0x81) != ss){ //判断是否需要更新 ss = read_clock(0x81); //更新数据 lcm_w_test(0,0x8b); //秒值在LCM上的写入位置 lcm_w_test(1,(ss/16)+0x30); //写十位 lcm_w_test(1,ss+0x30); //写个位
led_b = ~led_b; //背光闪烁 lcm_w_mm();//刷新 分 lcm_w_test(0,0x8d); //温度在LCM上的写入位置 i=ReadTemperature();//读温度并送显 a=i/100;
lcm_w_test(1,a+0x30); //显示温度十位 b=i/10-a*10;
lcm_w_test(1,b+0x30); //个位 lcm_w_test(1,0x2e); //\c=i-a*100-b*10;
lcm_w_test(1,c+0x30); //小位1位 lcm_w_word(\℃\//度C } }
/*****************************************************************************/ //---主程序---//
main() { unsigned char e=0; KEY_I = 0;KEY_1 = 1;KEY_2 = 1;KEY_3 = 1;KEY_4 = 1;//初始键盘 yy=0xff;mo=0xff;dd=0xff;xq=0xff;hh=0xff;mm=0xff;ss=0xff; //各数据刷新 beep = 0; DelayM(900); beep = 1;
lcm_init();//初始化液晶显示器 lcm_clr();//清屏
lcm_w_word(\ 12864LcdClock Hello !! from
DoYoung.net\显示欢迎字 //----------|-------1-------|-------3-------|-------2-------|-------4-------|-----//标尺 DelayM(3000); //显示等留3秒 //lcm_w_test(0,0x80); //lcm_w_word(\ [Set]\
while(1){ if (w == 0){ //正常走时 lcm_w_ss();//刷新 秒 } else { //启动调时 } //------------------------------------------------------------------ if (KEY_3 == 0) // 设置时间
{
DelayM(20); //去抖 led_g3 = 0;led_r = 1;
if(KEY_3 == 0 && w == 1) //当是调时状态 本键用于调整下一项 { e++; if (e >= 6 ){e = 0;} Set_time(e);//调整 }
if(KEY_3 == 0 && w == 0) //当是正常状态时就进入调时状态 { led_b = 1;//
lcm_clr();//清屏
//yy=0xff;mo=0xff;dd=0xff;xq=0xff;hh=0xff;mm=0xff;ss=0xff; //各数据刷新 w=1; //进入调时 lcm_w_test(0,0x9e); lcm_w_word(\lcm_w_test(0,0x80); lcm_w_word(\lcm_w_test(0,0x85); lcm_w_word(\lcm_w_test(0,0x98); lcm_w_word(\
Set_time(e);//调整 } while(KEY_3 == 0);//等待键松开 led_g3 = 1; led_r = 0;//红灯亮,表示调时 } //------------------------------------------------------------------ if (KEY_1 == 0) // 当在调时状态时就退出调时 { DelayM(20);led_g1 = 0;led_r = 1; if(KEY_1 == 0 && w == 1){
}
if(KEY_1 == 0 && w == 0){ lcm_clr();//清屏 lcm_w_test(0,0x80); lcm_w_word(\ 12864LcdClock V1.01 2006-11-26 Hello !! from
w = 0;
e = 0;
//退出调时 //“下一项”计数器清0
DoYoung.net\
}
//----------|-------1-------|-------3-------|-------2-------|-------4-------|-----//标尺 while(KEY_1 == 0);//等待键松开
lcm_clr();//清屏
//lcm_w_word(\ [Set]\
//yy=0xff;mo=0xff;dd=0xff;xq=0xff;hh=0xff;mm=0xff;ss=0xff; //各数据刷新
days(); //节日显示 updata (); //刷新数据 lcm_w_mm();//刷新 分
while(KEY_1 == 0);//等待键松开 led_g1 = 1; } //------------------------------------------------------------------ if (KEY_2 == 0 && w == 1){ // 加减调整{ DelayM(20);led_g2 = 0;led_r = 1; if(KEY_2 == 0 && w == 1){
}
Set_time(e);//调整
while(KEY_2 == 0);//等待键松开 led_g2 = 1; led_r = 0; } //------------------------------------------------------------------ if (KEY_4 == 0 && w == 1){ // 加减调整 DelayM(20); led_g4 = 0;led_r = 1; if(KEY_4 == 0 && w == 1){
Set_time(e);//调整 } while(KEY_4 == 0);//等待键松开 led_g4 = 1; led_r = 0; } //------------------------------------------------------------------ if(KEY_1 == 1 && KEY_2 == 0 && KEY_3 == 1 && KEY_4 == 0){ //时钟初始化{ led_r = 0; DelayM(3000); led_r = 1; if(KEY_1 == 0 && KEY_2 == 0&& KEY_3 == 1&& KEY_4 == 0){
}
}
} Init_1302();
lcm_w_test(0,0x80); lcm_clr();//清屏 lcm_w_word(\初始化成功! 2007-1-1 00:00.0\ //----------|-------1-------|-------3-------| while(1); }