|
|
本帖最后由 zhth1979 于 2022-4-3 11:51 編輯
void main()
{
u16 num;
float vary, ADCBat,press;
P0M1 = 0x00; P0M0 = 0x00; //設(shè)置為準(zhǔn)雙向口
P2M1 = 0x00; P2M0 = 0x00; //設(shè)置為準(zhǔn)雙向口
P3M1 = 0x00; P3M0 = 0x00; //設(shè)置為準(zhǔn)雙向口
P5M1 = 0x00; P5M0 = 0x00; //設(shè)置為準(zhǔn)雙向口
led1=0; md1=0; Buzzer=0;
Timer0Init();
STC8ADC_INIT();
EA=1; //中斷總開關(guān)
while(1)
{
ADCBat =line_bat_0-line_bat_1;
if(0<ADCBat<100)//當(dāng)壓力值介于15KPA到115KPA之間時(shí),遵循線性變換 0-100Psi 7-135
{
vary=ADCBat; //y=(115-15)/(243-13)*X+15kpa
press=((10.0/12.8)*vary)-6;//測(cè)試時(shí) 0-100Psi(5-107)((10.0/11.9)*vary)-5.5補(bǔ)償值為5.5
wendu=press*10;//放大10倍,便于后面計(jì)算
}
parm1 = wendu; 問題1: AD值送給 parm1 拆分一直顯示,后面按鍵按下讀出EEPROM,并修改其值,然后保存到EEPROM,自動(dòng)退出后又返回到AD值顯示!我現(xiàn)在想實(shí)現(xiàn)的就是AD值(wendu)和EEPROM值都送給parm1顯示(藍(lán)色標(biāo)注部分),AD值(wendu)是一直顯示,EEPROM是按鍵按下加減設(shè)置時(shí)顯示,自動(dòng)保存退出后又返回AD值顯示。主要這兩個(gè)值如何切換顯示?
}
}
void dis_Service()
{
u8 temp0,temp1,temp2;
switch(wnd) //wnd為哪幾個(gè)窗口顯示,我有四個(gè)窗口選擇。
{
case 0:
temp0= parm1/100;
temp1= parm1%100/10;
temp2= parm1%10;
LEDBuf[3]=wnd;
LEDBuf[4]=DAT;
if(parm1<100)
{
LEDBuf[0] = 16;
}
else
{
LEDBuf[0] = temp0;
}
LEDBuf[1] = temp1&0x7f; 問題2:&0x7f 為什么小數(shù)點(diǎn)不能正常顯示?(共陽數(shù)碼管)
//部分按鍵程序,key_scan()判斷加鍵有效,四個(gè)窗口中加鍵的情況,按下 讀取EEPROM,并修改其值,然后保存到EEPROM,退出。我想要的是設(shè)置保存后退出設(shè)置顯示后返回到AD值!
switch(key_scan(100)) //key_scan()按鍵判斷
{
case 1:
switch(wnd) //wnd為四個(gè)窗口中之一的加鍵顯示
{
case 0:parm1 = IapRead(0x0400); parm1++;if(parm1>150) parm1=150; IapErase(0x0400);IapProgram(0x0400, parm1);break;
case 1:parm2 = IapRead(0x0500); parm2++;if(parm2>150) parm2=150; IapErase(0x0500);IapProgram(0x0500, parm2);break;
case 2:parm3 = IapRead(0x0600); parm3++;if(parm3>995) parm3=955; IapErase(0x0600);IapProgram(0x0600, parm3);break;
case 3:parm4 = IapRead(0x0700); parm4++;if(parm4>250) parm4=250; IapErase(0x0700);IapProgram(0x0700, parm4);break;
}
break;
|
|