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