標(biāo)題:
自己參考例子寫的帶字庫12864(ST7920)液晶屏程序,求優(yōu)化
[打印本頁]
作者:
一袋天驕
時(shí)間:
2018-7-19 16:49
標(biāo)題:
自己參考例子寫的帶字庫12864(ST7920)液晶屏程序,求優(yōu)化
本帖最后由 一袋天驕 于 2018-7-23 10:58 編輯
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#include "4.h"
uchar code table[] = " 測試 ";
uchar code table1[]= " 實(shí)時(shí)數(shù)據(jù)查看 ";
uchar code table2[]= " 上下限設(shè)置 ";
uchar code table3[]= "光照: ";
uchar code table4[]= "風(fēng)速: ";
uchar code table5[]= "風(fēng)向: ";
uchar code table6[]= "溫度: ";
uchar code table7[]= "濕度: ";
uchar code table8[]= "土溫: ";
uchar code table9[]= "土濕: ";
uchar code table10[]="時(shí): ";
uchar code table11[]="天: ";
uchar code table12[]="月: ";
uchar code table13[]="年: ";
uchar code table14[]="下限: ";
uchar code table15[]="上限: ";
uchar code table16[]=" 請輸入密碼: ";
uchar code table17[]=" 密碼錯(cuò)誤 ";
uchar code table18[]=" 請重新輸入 ";
uchar code table19[]=" 降雨量 ";
uchar code table20[]=" 設(shè)置成功 ";
uchar fanye,fanye2,guangbiao;
uchar b,c,d,e,f,g;
uchar yi,er,san,si;
uchar ge,shi,bai,qian,wan;
uint guang_shang,guang_xia,feng_shang,wendu_shang,wendu_xia,shidu_shang,shidu_xia,tuwen_shang,tuwen_xia,tushi_shang,tushi_xia,yu_shang;
uint guang,fengsu,fengxiang,wendu,wendu1,shidu,tuwen,tuwen1,tushi,yu_shi,yu_tian;
long yu_yue,yu_nian;
//sbit LCD_CS=P0^7; //RS
sbit LCD_SID=P0^6; //RW
sbit LCD_SCLK=P0^5; //E
sbit key1=P1^1; //確認(rèn)
sbit key2=P1^2; //按鍵減一
sbit key3=P1^3; //按鍵加一
sbit key4=P1^4; //返回
sbit key5=P1^5;
void delay_ms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void sendbyte(unsigned char bbyte) //發(fā)送一個(gè)字節(jié)
{
unsigned char i;
for(i=0;i<8;i++)
{
LCD_SID=bbyte&0x80; //取出最高位
LCD_SCLK=1;
LCD_SCLK=0;
bbyte<<=1; //左移
}
}
void write(bit start, unsigned char ddata) //寫指令或數(shù)據(jù)
{
unsigned char start_data,Hdata,Ldata;
if(start==0)
start_data=0xf8; //寫指令
else
start_data=0xfa; //寫數(shù)據(jù)
Hdata=ddata&0xf0; //取高四位
Ldata=(ddata<<4)&0xf0; //取低四位
sendbyte(start_data); //發(fā)送起始信號(hào)
delay_ms(1); //延時(shí)
sendbyte(Hdata); //發(fā)送高四位
delay_ms(1);
sendbyte(Ldata); //發(fā)送低四位
delay_ms(1);
}
//***********一行顯示8個(gè)漢字***********
//***************漢字顯示***************
//***X為行Y為列,K為字的個(gè)數(shù),*P為數(shù)組*
//*************************************
void chinese(uchar x,uchar y,uchar k,uchar *p)
{
uchar hang,out,i;
y=y-1;
switch(x)
{
case 1:hang=0x80;break;
case 2:hang=0x90;break;
case 3:hang=0x88;break;
case 4:hang=0x98;break;
}
out=hang+y;
write(0,out);
for(i=0;i<k*2;i++) {
write(1,*p);
p++;
}
//write(1,p);
}
//**********一行顯示16個(gè)字母***********
//***********英文數(shù)字顯示***************
//***X為行Y為列,K為字的個(gè)數(shù),*P為數(shù)組*
//************************************
void english(uchar x,uchar y,uchar k,uchar *p)
{
uchar hang,out,i;
y=y-1;
switch(x)
{
case 1:hang=0x80;break;
case 2:hang=0x90;break;
case 3:hang=0x88;break;
case 4:hang=0x98;break;
}
out=hang+y;
write(0,out);
for(i=0;i<k;i++) {
write(1,*p);
p++;
}
}
void lcd_init()
{
write(0,0x30); //8位介面,基本指令集
write(0,0x0c); //顯示打開,光標(biāo)關(guān),光標(biāo)位置關(guān)
write(0,0x01); //清屏,將DDRAM地址計(jì)數(shù)器歸零
delay_ms(10);
}
/*****************箭頭指示*****************/
void zhishi(uchar a)
{
write(0,0x30); //8位介面,基本指令集
switch(a)
{
case 1:write(0,0x80);break;
case 2:write(0,0x90);break;
case 3:write(0,0x88);break;
case 4:write(0,0x98);break;
}
write(1,0x1a);
}
/*******************************反白1**************************
將128*64看做256*32,3.4行在1.2行右邊
x0范圍(0x80,0x80+16),x1范圍(1,16)按字?jǐn)?shù)算
y0范圍(0x80,0x80+32),y1范圍(1,32)按點(diǎn)數(shù)算
data1,data2寫入0xff為反白,寫入0x00為清零圖片緩存
********************************************************************/
/*void fanbai(uchar data1,uchar data2,uchar x0,uchar y0,uchar x1,uchar y1)
{
uchar i,j;
for(j=0;j<y1;j++)
{
for(i=0;i<x1;i++)
{
write(0,0x34);
write(0,y0+j); //寫y坐標(biāo)
write(0,x0+i); //寫x坐標(biāo)
write(0,0x30);
write(1,data1);
write(1,data2);
}
}
write(0,0x36);
}
/*******************顯示*******************************/
void display_start()
{
write(0,0x01);
english(2,1,15,table); //開始界面
}
void display_menu()
{
write(0,0x01);
english(1,1,15,table1);// 實(shí)時(shí)數(shù)據(jù)查看
english(2,1,15,table2);//上下限設(shè)置
}
/* void display_menu2()
{
write(0,0x01);
english(3,1,15,table1);// 實(shí)時(shí)數(shù)據(jù)查看
english(4,1,15,table2);//上下限設(shè)置
}*/
void display_mima()
{
write(0,0x01);
english(1,1,15,table16);//請輸入密碼:
}
void display_error()
{
write(0,0x01);
english(1,1,15,table17);//密碼錯(cuò)誤
english(3,1,15,table18);//請重新輸入
}
void display1()
{
write(0,0x01);
english(2,1,15,table3);//光照
guang=1234;
write(0,0x93);
write(1,0x30+guang/10000);
write(1,0x30+guang/1000%10);
write(0,0x94);
write(1,0x30+guang/100%10);
write(1,0x30+guang/10%10);
write(0,0x95);
write(1,0x30+guang%10);
write(1,0x30);
write(0,0x96);
write(1,0x20);
write(1,0x4c);
write(0,0x97);
write(1,0x78);
}
void display2()
{
write(0,0x01);
english(2,1,15,table4);//風(fēng)速
fengsu=1230;
write(0,0x93);
write(1,0x30+fengsu/1000);
write(1,0x30+fengsu/100%10);
write(0,0x94);
write(1,0x2e);
write(1,0x30+fengsu/10%10);
write(0,0x95);
write(1,0x30+fengsu%10);
write(0,0x96);
write(1,0x6d);
write(1,0x2f);
write(0,0x97);
write(1,0x73);
english(4,1,15,table5);//風(fēng)向
fengxiang=1800;
write(0,0x9b);
write(1,0x30+fengxiang/1000);
write(1,0x30+fengxiang/100%10);
write(0,0x9c);
write(1,0x30+fengxiang/10%10);
write(1,0x2e);
write(0,0x9d);
write(1,0x30+fengxiang%10);
write(0,0x9e);
write(1,0xa1);
write(1,0xe3);
}
void display3()
{
write(0,0x01);
english(2,1,15,table6);//空氣溫度
wendu=120;
//wendu=0xfff0;
if(wendu<8000)
{
write(0,0x93);
write(1,0x30+wendu/100);
write(1,0x30+wendu/10%10);
write(0,0x94);
write(1,0x2e);
write(1,0x30+wendu%10);
write(0,0x96);
write(1,0xa1);
write(1,0xe6);
}
if(wendu>=8000)
{
wendu1=0xffff-wendu+1;
write(0,0x93);
write(1,0x2d);
write(1,0x30+wendu1/100);
write(0,0x94);
write(1,0x30+wendu1/10%10);
write(1,0x2e);
write(0,0x95);
write(1,0x30+wendu1%10);
write(1,0x20);
write(0,0x96);
write(1,0xa1);
write(1,0xe6);
}
english(4,1,15,table7);//空氣濕度
shidu=120;
write(0,0x9b);
write(1,0x30+shidu/100);
write(1,0x30+shidu/10%10);
write(0,0x9c);
write(1,0x2e);
write(1,0x30+shidu%10);
write(0,0x9e);
write(1,0xa3);
write(1,0xa5);
}
void display4()
{
write(0,0x01);
english(2,1,15,table8);//土壤溫度
//tuwen=120;
tuwen=0xfff0;
if(shidu<8000)
{
write(0,0x93);
write(1,0x30+tuwen/100);
write(1,0x30+tuwen/10%10);
write(0,0x94);
write(1,0x2e);
write(1,0x30+tuwen%10);
write(0,0x96);
write(1,0xa1);
write(1,0xe6);
}
if(tuwen>=8000)
{
tuwen1=0xffff-tuwen+1;
write(0,0x93);
write(1,0x2d);
write(1,0x30+tuwen1/100);
write(0,0x94);
write(1,0x30+tuwen1/10%10);
write(1,0x2e);
write(0,0x95);
write(1,0x30+tuwen1%10);
write(1,0x20);
write(0,0x96);
write(1,0xa1);
write(1,0xe6);
}
english(4,1,15,table9);//土壤濕度
tushi=210;
write(0,0x9b);
write(1,0x30+tushi/100);
write(1,0x30+tushi/10%10);
write(0,0x9c);
write(1,0x2e);
write(1,0x30+tushi%10);
write(0,0x9e);
write(1,0xa3);
write(1,0xa5);
}
void display5()
{
write(0,0x01);
english(1,1,15,table19);
english(2,1,15,table10);//小時(shí)雨量
yu_shi=120;
write(0,0x92);
write(1,0x30+yu_shi/100);
write(1,0x30+yu_shi/10%10);
write(0,0x93);
write(1,0x2e);
write(1,0x30+yu_shi%10);
write(0,0x95);
write(1,0x6d);
write(1,0x6d);
english(4,1,15,table11);//天雨量
yu_tian=2100;
write(0,0x9a);
write(1,0x30+yu_tian/1000);
write(1,0x30+yu_tian/100%10);
write(0,0x9b);
write(1,0x30+yu_tian/10%10);
write(1,0x2e);
write(0,0x9c);
write(1,0x30+yu_tian%10);
write(1,0x20);
write(0,0x9d);
write(1,0x6d);
write(1,0x6d);
}
void display6()
{
write(0,0x01);
english(1,1,15,table19);
english(2,1,15,table12);//月雨量
yu_yue=11110;
write(0,0x92);
write(1,0x30+yu_yue/10000);
write(1,0x30+yu_yue/1000%10);
write(0,0x93);
write(1,0x30+yu_yue/100%10);
write(1,0x30+yu_yue/10%10);
write(0,0x94);
write(1,0x2e);
write(1,0x30+yu_yue%10);
write(0,0x96);
write(1,0x6d);
write(1,0x6d);
english(4,1,15,table13);//年雨量
yu_nian=201422;
write(0,0x9a);
write(1,0x30+yu_nian/100000);
write(1,0x30+yu_nian/10000%10);
write(0,0x9b);
write(1,0x30+yu_nian/1000%10);
write(1,0x30+yu_nian/100%10);
write(0,0x9c);
write(1,0x30+yu_nian/10%10);
write(1,0x2e);
write(0,0x9d);
write(1,0x30+yu_nian%10);
write(0,0x9f);
write(1,0x6d);
write(1,0x6d);
}
void display1_1()
{
write(0,0x01);
english(1,1,15,table3);//光照
english(2,1,15,table15);//上限
english(3,1,15,table14);//下限
}
void display1_2()
{
write(0,0x01);
english(1,1,15,table4);//風(fēng)速
english(2,1,15,table15);//上限
}
void display1_3()
{
write(0,0x01);
english(1,1,15,table6);//空氣溫度
english(2,1,15,table15);//上限
english(3,1,15,table14);//下限
}
void display1_4()
{
write(0,0x01);
english(1,1,15,table7);//空氣濕度
english(2,1,15,table15);//上限
english(3,1,15,table14);//下限
}
void display1_5()
{
write(0,0x01);
english(1,1,15,table8);//土壤溫度
english(2,1,15,table15);//上限
english(3,1,15,table14);//下限
}
void display1_6()
{
write(0,0x01);
english(1,1,15,table9);//土壤濕度
english(2,1,15,table15);//上限
english(3,1,15,table14);//下限
}
void display1_7()
{
write(0,0x01);
english(1,1,15,table19);//小時(shí)降雨
english(2,1,15,table10);//小時(shí)降雨
english(3,1,15,table15);//上限
}
void display1_8()
{
write(0,0x01);
english(2,1,15,table20);//設(shè)置成功
}
void anjian_wan()
{
if(key3==0)
{
delay_ms(50);
if(key3==0)
{
if(wan<9)
{
wan++;
}
}
while(!key3);
}
if(key2==0)
{
delay_ms(50);
if(key2==0)
{
if(wan>0)
{
wan--;
}
}
while(!key2);
}
}
void anjian_qian()
{
if(key3==0)
{
delay_ms(50);
if(key3==0)
{
if(qian<9)
{
qian++;
}
}
while(!key3);
}
if(key2==0)
{
delay_ms(50);
if(key2==0)
{
if(qian>0)
{
qian--;
}
}
while(!key2);
}
}
void anjian_bai()
{
if(key3==0)
{
delay_ms(50);
if(key3==0)
{
if(bai<9)
{
bai++;
}
}
while(!key3);
}
if(key2==0)
{
delay_ms(50);
if(key2==0)
{
if(bai>0)
{
bai--;
}
}
while(!key2);
}
}
void anjian_shi()
{
if(key3==0)
{
delay_ms(50);
if(key3==0)
{
if(shi<9)
{
shi++;
}
}
while(!key3);
}
if(key2==0)
{
delay_ms(50);
if(key2==0)
{
if(shi>0)
{
shi--;
}
}
while(!key2);
}
}
void anjian_ge()
{
if(key3==0)
{
delay_ms(50);
if(key3==0)
{
if(ge<9)
{
ge++;
}
}
while(!key3);
}
if(key2==0)
{
delay_ms(50);
if(key2==0)
{
if(ge>0)
{
ge--;
}
}
while(!key2);
}
}
void anjian_fuhao()
{
if((key3==0)||(bai==0))
{
delay_ms(50);
if((key3==0)||(bai==0))
{
bai=0x2b;
}
while(!key3);
}
if(key2==0)
{
delay_ms(50);
if(key2==0)
{
bai=0x2d;
}
while(!key2);
}
}
void main()
{
lcd_init();
//fanbai(0x00,0x00,0x80,0x80,16,32); //上電清空圖片緩存
//lcd_init();
display_start();
while(1){
//key1確認(rèn)鍵
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
if(c<2)
{
c++;
}
if((c==1)&&(b==0))
{
display_menu();
zhishi(1);
b=1;
}
}
while(!key1);
}
//key4返回鍵
if(key4==0)
{
delay_ms(50);
if(key4==0)
{
yi=er=san=si=0;
write(0,0x0c); //關(guān)閉光標(biāo)顯示
b=0;
e=0;
f=0;
fanye2=0;
if(c>0)
{
c--;
}
if(c==1)
{
display_menu();
zhishi(1);
b=1;
}
if(c==0)
{
fanye=0;
display_start();
}
}
while(!key4);
}
//按鍵翻頁
if(c==0)
{ //一級(jí)界面
if(key3==0)
{
delay_ms(50);
if(key3==0) //key3向右翻頁
{
fanye++;
if(fanye>6)
{
fanye=6;
}
}
while(!key3);
if(fanye==1){display1();delay_ms(50);}
if(fanye==2){display2();delay_ms(50);}
if(fanye==3){display3();delay_ms(50);}
if(fanye==4){display4();delay_ms(50);}
if(fanye==5){display5();delay_ms(50);}
if(fanye==6){display6();delay_ms(50);}
}
if(key2==0)
{
delay_ms(50);
if(key2==0) //key2向左翻頁
{
fanye--;
if(fanye<1)
{
fanye=1;
}
}
while(!key2);
if(fanye==6){display6();delay_ms(50);}
if(fanye==5){display5();delay_ms(50);}
if(fanye==4){display4();delay_ms(50);}
if(fanye==3){display3();delay_ms(50);}
if(fanye==2){display2();delay_ms(50);}
if(fanye==1){display1();delay_ms(50);}
}
}
//************菜單**************************/
if(c==1)
{
if(key3==0)
{
delay_ms(50);
if(key3==0)
{
if(b<2)
{
b++;
}
}
while(!key3);
if(b==1){display_menu();zhishi(1);delay_ms(50);}
if(b==2){display_menu();zhishi(2);delay_ms(50);}
/* if(b==3){display_menu();zhishi(3);delay_ms(50);}
if(b==4){display_menu();zhishi(4);delay_ms(50);}
if(b==5){display_menu2();zhishi(1);delay_ms(50);}
if(b==6){display_menu2();zhishi(2);delay_ms(50);}
if(b==7){display_menu2();zhishi(3);delay_ms(50);} */
}
if(key2==0)
{
delay_ms(50);
if(key2==0)
{
if(b>1)
{
b--;
}
}
while(!key2);
if(b==1){display_menu();zhishi(1);delay_ms(50);}
if(b==2){display_menu();zhishi(2);delay_ms(50);}
/* if(b==3){display_menu();zhishi(3);delay_ms(50);}
if(b==4){display_menu();zhishi(4);delay_ms(50);}
if(b==5){display_menu2();zhishi(1);delay_ms(50);}
if(b==6){display_menu2();zhishi(2);delay_ms(50);}
if(b==7){display_menu2();zhishi(3);delay_ms(50);} */
}
}
if((b==1)&&(key1==0)) //實(shí)時(shí)數(shù)據(jù)查看
{
delay_ms(50);
if(key1==0)
{
b=0;
c=0;
fanye=1;
display1();
}
while(!key1);
}
if((b==2)&&(e==0))
{
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
display_mima(); //輸入密碼:1425
write(0,0x0f); //打開光標(biāo)顯示
write(0,0x8a);
e=1;
c=2;
delay_ms(50);
}
while(!key1);
}
}
if(e==1)
{
if(key3==0)
{
delay_ms(50);
if(key3==0)
{
if(yi<9)
{
yi++;
}
}
while(!key3);
}
if(key2==0)
{
delay_ms(50);
if(key2==0)
{
if(yi>0)
{
yi--;
}
}
while(!key2);
}
write(0,0x8a);
write(1,0x30+yi);
delay_ms(50);
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
write(0,0x8b);
delay_ms(50);
e=2;
}
while(!key1);
}
}
if(e==2)
{
if(key3==0)
{
delay_ms(50);
if(key3==0)
{
if(er<9)
{
er++;
}
}
while(!key3);
}
if(key2==0)
{
delay_ms(50);
if(key2==0)
{
if(er>0)
{
er--;
}
}
while(!key2);
}
write(0,0x8b);
write(1,0x30+er);
delay_ms(50);
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
write(0,0x8c);
delay_ms(50);
e=3;
}
while(!key1);
}
}
if(e==3)
{
if(key3==0)
{
delay_ms(50);
if(key3==0)
{
if(san<9)
{
san++;
}
}
while(!key3);
}
if(key2==0)
{
delay_ms(50);
if(key2==0)
{
if(san>0)
{
san--;
}
}
while(!key2);
}
write(0,0x8c);
write(1,0x30+san);
delay_ms(50);
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
write(0,0x8d);
delay_ms(50);
e=4;
}
while(!key1);
}
}
if(e==4)
{
if(key3==0)
{
delay_ms(50);
if(key3==0)
{
if(si<9)
{
si++;
}
}
while(!key3);
}
if(key2==0)
{
delay_ms(50);
if(key2==0)
{
if(si>0)
{
si--;
}
}
while(!key2);
}
write(0,0x8d);
write(1,0x30+si);
delay_ms(50);
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
write(0,0x0c); //關(guān)閉光標(biāo)顯示
if((yi==1)&&(er==4)&&(san==2)&&(si==5))//密碼:1425
{
e=5;
}
if((yi!=1)||(er!=4)||(san!=2)||(si!=5))
{
display_error(); //密碼錯(cuò)誤
delay_ms(3000);
display_mima();
write(0,0x0f); //打開光標(biāo)顯示
write(0,0x8a);
delay_ms(50);
yi=er=san=si=0;
e=1;
}
}
while(!key1);
}
}
if((e==5)&&(fanye2==0))
{
if((b==2)&&(key1==0)) //上下限設(shè)置
{
delay_ms(50);
if(key1==0)
{
fanye2=1;
f=1;
display1_1();
write(0,0x93);
write(1,0x30+guang_shang/10000);
write(0,0x94);
write(1,0x30+guang_shang/1000%10);
write(0,0x95);
write(1,0x30+guang_shang/100%10);
write(0,0x96);
write(1,0x30+guang_shang/10%10);
write(0,0x97);
write(1,0x30+guang_shang%10);
write(0,0x8b);
write(1,0x30+guang_xia/10000);
write(0,0x8c);
write(1,0x30+guang_xia/1000%10);
write(0,0x8d);
write(1,0x30+guang_xia/100%10);
write(0,0x8e);
write(1,0x30+guang_xia/10%10);
write(0,0x8f);
write(1,0x30+guang_xia%10);
write(0,0x0f); //打開光標(biāo)顯示
write(0,0x93);
}
while(!key1);
}
}
if(fanye2==1) //光照
{
if(f==1) //光照上限萬位
{
if(g==0)
{
wan=guang_shang/10000;
g=1;
}
anjian_wan();
write(0,0x93);
write(1,0x30+wan);
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
write(0,0x94);
f=2;
g=0;
}
while(!key1);
}
}
if(f==2) //光照上限千位
{
if(g==0)
{
qian=guang_shang/1000%10;
g=1;
}
anjian_qian();
write(0,0x94);
write(1,0x30+qian);
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
write(0,0x95);
f=3;
g=0;
}
while(!key1);
}
}
if(f==3) //光照上限百位
{
if(g==0)
{
bai=guang_shang/100%10;
g=1;
}
anjian_bai();
write(0,0x95);
write(1,0x30+bai);
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
write(0,0x96);
f=4;
g=0;
}
while(!key1);
}
}
if(f==4) //光照上限十位
{
if(g==0)
{
shi=guang_shang/10%10;
g=1;
}
anjian_shi();
write(0,0x96);
write(1,0x30+shi);
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
write(0,0x97);
f=5;
g=0;
}
while(!key1);
}
}
if(f==5) //光照上限個(gè)位
{
if(g==0)
{
ge=guang_shang%10;
g=1;
}
anjian_ge();
write(0,0x97);
write(1,0x30+ge);
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
guang_shang=wan*10000+qian*1000+bai*100+shi*10+ge;//光照上限
wan=qian=bai=shi=ge=0;
write(0,0x8b);
f=6;
g=0;
}
while(!key1);
}
}
if(f==6) //光照下限萬位
{
if(g==0)
{
wan=guang_xia/10000;
g=1;
}
anjian_wan();
write(0,0x8b);
write(1,0x30+wan);
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
write(0,0x8c);
f=7;
g=0;
}
while(!key1);
}
}
if(f==7) //光照下限千位
{
if(g==0)
{
qian=guang_xia/1000%10;
g=1;
}
anjian_qian();
write(0,0x8c);
write(1,0x30+qian);
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
write(0,0x8d);
f=8;
g=0;
}
while(!key1);
}
}
if(f==8) //光照下限百位
{
if(g==0)
{
bai=guang_xia/100%10;
g=1;
}
anjian_bai();
write(0,0x8d);
write(1,0x30+bai);
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
write(0,0x8e);
f=9;
g=0;
}
while(!key1);
}
}
if(f==9) //光照下限十位
{
//標(biāo)志位g
anjian_shi();
write(0,0x8e);
write(1,0x30+shi);
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
write(0,0x8f);
f=10;
}
while(!key1);
}
}
if(f==10) //光照下限個(gè)位
{
anjian_ge();
write(0,0x8f);
write(1,0x30+ge);
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
guang_xia=wan*10000+qian*1000+bai*100+shi*10+ge;//光照下限
wan=qian=bai=shi=ge=0;
fanye2=2;
write(0,0x0c); //關(guān)閉光標(biāo)顯示
display1_2(); //風(fēng)速
write(0,0x93);
write(1,0x30+feng_shang/10);
write(0,0x94);
write(1,0x30+feng_shang%10);
f=1;
write(0,0x0f); //打開光標(biāo)顯示
write(0,0x93);
}
while(!key1);
}
}
}
if(fanye2==2) //風(fēng)速
{
if(f==1) //風(fēng)速上限十位
{
anjian_shi();
write(0,0x93);
write(1,0x30+shi);
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
write(0,0x94);
f=2;
}
while(!key1);
}
}
if(f==2) //風(fēng)速上限個(gè)位
{
anjian_ge();
write(0,0x94);
write(1,0x30+ge);
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
feng_shang=shi*10+ge; //風(fēng)速上限
shi=ge=0;
fanye2=3;
write(0,0x0c); //關(guān)閉光標(biāo)顯示
display1_3(); //溫度
write(0,0x94);
write(1,0x30+wendu_shang/10);
write(0,0x95);
write(1,0x30+wendu_shang%10);
write(0,0x8c);
write(1,0x30+wendu_xia/10);
write(0,0x8d);
write(1,0x30+wendu_xia%10);
f=1;
write(0,0x0f); //打開光標(biāo)顯示
write(0,0x93);
}
while(!key1);
}
}
}
if(fanye2==3) //溫度
{
if(f==1) //溫度上限符號(hào)
{
anjian_fuhao();
write(0,0x93);
write(1,bai);
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
write(0,0x94);
f=2;
}
while(!key1);
}
}
if(f==2) //溫度上限十位
{
anjian_shi();
write(0,0x94);
write(1,0x30+shi);
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
write(0,0x95);
f=3;
}
while(!key1);
}
}
if(f==3) //溫度上限個(gè)位
{
anjian_ge();
write(0,0x95);
write(1,0x30+ge);
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
wendu_shang=shi*10+ge; //溫度上限
bai=shi=ge=0;
write(0,0x8b);
f=4;
}
while(!key1);
}
}
if(f==4) //溫度下限符號(hào)
{
anjian_fuhao();
write(0,0x8b);
write(1,bai);
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
write(0,0x8c);
f=5;
}
while(!key1);
}
}
if(f==5) //溫度下限十位
{
anjian_shi();
write(0,0x8c);
write(1,0x30+shi);
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
write(0,0x8d);
f=6;
}
while(!key1);
}
}
if(f==6) //溫度下限個(gè)位
{
anjian_ge();
write(0,0x8d);
write(1,0x30+ge);
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
wendu_xia=shi*10+ge; //溫度下限
bai=shi=ge=0;
fanye2=4;
write(0,0x0c); //關(guān)閉光標(biāo)顯示
display1_4(); //濕度
write(0,0x93);
write(1,0x30+shidu_shang/10);
write(0,0x94);
write(1,0x30+shidu_shang%10);
write(0,0x8b);
write(1,0x30+shidu_xia/10);
write(0,0x8c);
write(1,0x30+shidu_xia%10);
f=1;
write(0,0x0f); //打開光標(biāo)顯示
write(0,0x93);
}
while(!key1);
}
}
}
if(fanye2==4) //濕度
{
if(f==1) //濕度上限十位
{
anjian_shi();
write(0,0x93);
write(1,0x30+shi);
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
write(0,0x94);
f=2;
}
while(!key1);
}
}
if(f==2) //濕度上限個(gè)位
{
anjian_ge();
write(0,0x94);
write(1,0x30+ge);
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
shidu_shang=shi*10+ge; //濕度上限
shi=ge=0;
write(0,0x8b);
f=3;
}
while(!key1);
}
}
if(f==3) // 濕度下限十位
{
anjian_shi();
write(0,0x8b);
write(1,0x30+shi);
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
write(0,0x8c);
f=4;
}
while(!key1);
}
}
if(f==4) //濕度下限個(gè)位
{
anjian_ge();
write(0,0x8c);
write(1,0x30+ge);
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
shidu_xia=shi*10+ge; //濕度下限
shi=ge=0;
fanye2=5;
write(0,0x0c); //關(guān)閉光標(biāo)顯示
display1_5(); //土溫
write(0,0x94);
write(1,0x30+tuwen_shang/10);
write(0,0x95);
write(1,0x30+tuwen_shang%10);
write(0,0x8c);
write(1,0x30+tuwen_xia/10);
write(0,0x8d);
write(1,0x30+tuwen_xia%10);
write(0,0x0f); //打開光標(biāo)顯示
write(0,0x93);
f=1;
}
while(!key1);
}
}
}
if(fanye2==5) //土溫
{
if(f==1) //土溫上限符號(hào)
{
anjian_fuhao();
write(0,0x93);
write(1,bai);
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
write(0,0x94);
f=2;
}
while(!key1);
}
}
if(f==2) //土溫上限十位
{
anjian_shi();
write(0,0x94);
write(1,0x30+shi);
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
write(0,0x95);
f=3;
}
while(!key1);
}
}
if(f==3) //土溫上限個(gè)位
{
anjian_ge();
write(0,0x95);
write(1,0x30+ge);
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
tuwen_shang=shi*10+ge; //土溫上限
bai=shi=ge=0;
write(0,0x8b);
f=4;
}
while(!key1);
}
}
if(f==4) //土溫下限符號(hào)
{
anjian_fuhao();
write(0,0x8b);
write(1,bai);
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
write(0,0x8c);
f=5;
}
while(!key1);
}
}
if(f==5) //土溫下限十位
{
anjian_shi();
write(0,0x8c);
write(1,0x30+shi);
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
write(0,0x8d);
f=6;
}
while(!key1);
}
}
if(f==6) //土溫下限個(gè)位
{
anjian_ge();
write(0,0x8d);
write(1,0x30+ge);
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
tuwen_xia=shi*10+ge; //土溫下限
bai=shi=ge=0;
fanye2=6;
write(0,0x0c); //關(guān)閉光標(biāo)顯示
display1_6(); //土濕
write(0,0x93);
write(1,0x30+tushi_shang/10);
write(0,0x94);
write(1,0x30+tushi_shang%10);
write(0,0x8b);
write(1,0x30+tushi_xia/10);
write(0,0x8c);
write(1,0x30+tushi_xia%10);
f=1;
write(0,0x0f); //打開光標(biāo)顯示
write(0,0x93);
}
while(!key1);
}
}
}
if(fanye2==6) //土濕
{
if(f==1) //土濕上限十位
{
anjian_shi();
write(0,0x93);
write(1,0x30+shi);
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
write(0,0x94);
f=2;
}
while(!key1);
}
}
if(f==2) //土濕上限個(gè)位
{
anjian_ge();
write(0,0x94);
write(1,0x30+ge);
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
tushi_shang=shi*10+ge; //土濕上限
shi=ge=0;
write(0,0x8b);
f=3;
}
while(!key1);
}
}
if(f==3) //土濕下限十位
{
anjian_shi();
write(0,0x8b);
write(1,0x30+shi);
if(key1==0)
{
delay_ms(50);
if(key1==0)
{
write(0,0x8c);
f=4;
}
while(!key1);
}
}
if(f==4) //土濕下限個(gè)位
{
anjian_ge();
復(fù)制代碼
程序4.zip
2018-7-19 16:44 上傳
點(diǎn)擊文件名下載附件
113.89 KB, 下載次數(shù): 30
12864
作者:
一袋天驕
時(shí)間:
2018-7-19 16:52
水平有限,stc89c52rc的8k內(nèi)存寫滿了,功能還不完善,不知道有沒有大神指點(diǎn)一下怎么優(yōu)化一下
作者:
一袋天驕
時(shí)間:
2018-7-19 17:36
程序沒寫完,占不下了,不過下面基本都是一種方法寫的
作者:
ttaniscy
時(shí)間:
2018-12-24 17:18
謝謝LZ的分享
作者:
robinsonlin
時(shí)間:
2018-12-24 19:04
這個(gè)好,正是我想要的。不過代碼的效率可能有點(diǎn)低,等我看完了,看看能不能優(yōu)化一下算法。
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1