欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 單片機讀取EEPROM值修改后如何再返回AD值顯示界面?附程序 [打印本頁]

作者: zhth1979    時間: 2022-3-26 09:23
標(biāo)題: 單片機讀取EEPROM值修改后如何再返回AD值顯示界面?附程序
本帖最后由 zhth1979 于 2022-4-3 11:51 編輯

[attach]292872[/attach][attach]292872[/attach]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之間時,遵循線性變換  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值顯示!我現(xiàn)在想實現(xiàn)的就是AD值(wendu)和EEPROM值都送給parm1顯示(藍(lán)色標(biāo)注部分),AD值(wendu)是一直顯示,EEPROM是按鍵按下加減設(shè)置時顯示,自動保存退出后又返回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 為什么小數(shù)點不能正常顯示?(共陽數(shù)碼管)    



//部分按鍵程序,key_scan()判斷加鍵有效,四個窗口中加鍵的情況,按下 讀取EEPROM,并修改其值,然后保存到EEPROM,退出。我想要的是設(shè)置保存后退出設(shè)置顯示后返回到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;
   
                                 


作者: 人工置頂員    時間: 2022-3-26 18:24
頂一下
作者: lkc8210    時間: 2022-3-26 19:52
用手機看,沒下載附件
1. 在Key_scan中不要用parm1,改用parm1_sp, 然后在顯示函數(shù)中用wnd來選擇顯示哪個變數(shù)
2. LEDbuf是放0~9吧?&0x7F干什么?輸出到P口時才運算吧?而且共陽不是用|=0x80嗎?
作者: zhth1979    時間: 2022-3-27 13:19
lkc8210 發(fā)表于 2022-3-26 19:52
用手機看,沒下載附件
1. 在Key_scan中不要用parm1,改用parm1_sp, 然后在顯示函數(shù)中用wnd來選擇顯示哪個 ...

1.我有四個單位界面要顯示,wnd參數(shù)為切換這四個界面,所以這個參數(shù)不能動。2.共陽數(shù)碼管為&0x7f,共陰數(shù)碼管是|0X80。temp1是parm1這個數(shù)拆分出的十位,也就是第二個數(shù)碼管要顯示的值&0x7f,不對嗎?
作者: 人工置頂員    時間: 2022-3-27 18:24
頂一下
作者: 黃youhui    時間: 2022-3-28 10:06
不是很懂你什么意思。顯示界面你要是沒有改變它的顯示模式(刷新),他會一直存在,你說的返回顯示界面什么意思
作者: zhxiufan    時間: 2022-3-28 10:30
修改設(shè)置后返回后要顯示以前的數(shù)據(jù)界面,重新顯示一遍就可以了,這里沒有像電腦那樣有保存顯存再恢復(fù)的操作。
作者: zhth1979    時間: 2022-3-28 11:14
本帖最后由 zhth1979 于 2022-3-28 11:31 編輯
黃youhui 發(fā)表于 2022-3-28 10:06
不是很懂你什么意思。顯示界面你要是沒有改變它的顯示模式(刷新),他會一直存在,你說的返回顯示界面什么 ...

顯示界面正常顯示壓力值時,按下加或減讀EEPROM內(nèi)保存的值顯示在當(dāng)前界面(此時壓力值不顯示),加減設(shè)置后等3秒自動保存到EEPROM并退出,這時又返回到顯示壓力值(壓力值在不按加減鍵是一直顯示的)。
作者: lkc8210    時間: 2022-3-28 11:45
zhth1979 發(fā)表于 2022-3-27 13:19
1.我有四個單位界面要顯示,wnd參數(shù)為切換這四個界面,所以這個參數(shù)不能動。2.共陽數(shù)碼管為&0x7f,共陰數(shù) ...

1. 我也是借用wnd的值來顯示,沒有動它
2. 你說的對,共陽是&0x7f,共陰是|0X80
3. 我知道temp1是parm1的十位,假如parm1是123,temp1就是2,LEDBuf[1]也是2(不加小數(shù)點),但數(shù)碼管的驅(qū)動不是2(B00000010)而是0xA4(B10100100),加上小數(shù)點就是0x24(B00100100)
所以不是LEDBuf[1] = temp1&0x7f;
而是PX = table[LEDBuf[1]] &0x7F;(代碼不全,假設(shè)你用P口直驅(qū))
作者: zhth1979    時間: 2022-3-28 12:25
黃youhui 發(fā)表于 2022-3-28 10:06
不是很懂你什么意思。顯示界面你要是沒有改變它的顯示模式(刷新),他會一直存在,你說的返回顯示界面什么 ...

不按按鍵屏一直顯示壓力值  (parm1 = wendu;),按下加或減讀取EEPROM內(nèi)上次保存的值(此時顯示EEPROM值parm1 = IapRead(0x0400); ,壓力值不顯示),加減設(shè)置完成3秒后,EEPROM擦除寫入新值并保存退出顯示 ,然后還是一直顯示壓力值。也就是EEPROM值只是在按下加減鍵時顯示,其它時間一直顯示壓力值。
作者: zhth1979    時間: 2022-3-28 12:31
lkc8210 發(fā)表于 2022-3-28 11:45
1. 我也是借用wnd的值來顯示,沒有動它
2. 你說的對,共陽是&0x7f,共陰是|0X80
3. 我知道temp1是parm1 ...

你說的對,但如果這樣寫的話,四個界面十位都會加上小數(shù)點,而其它三個界面小數(shù)點不在十位上。
作者: lkc8210    時間: 2022-3-28 13:25
zhth1979 發(fā)表于 2022-3-28 12:31
你說的對,但如果這樣寫的話,四個界面十位都會加上小數(shù)點,而其它三個界面小數(shù)點不在十位上。

還是那一句,用wnd來選擇顯示什么
無論是parm1,parm2還是小數(shù)點的位置

因為代碼不全,我只能按你貼的代碼來分析問題
然后你用沒貼上來的那部分來說有問題
我只能呵呵了
作者: 黃youhui    時間: 2022-3-30 09:29
zhth1979 發(fā)表于 2022-3-28 12:25
不按按鍵屏一直顯示壓力值  (parm1 = wendu;),按下加或減讀取EEPROM內(nèi)上次保存的值(此時顯示EEPROM值p ...

你這個應(yīng)該屬于分級菜單。你去網(wǎng)上搜一下很多這方面的資料的。
作者: 人工置頂員    時間: 2022-4-3 02:30
頂一下
作者: 188610329    時間: 2022-4-4 00:57
把:         LEDBuf[1] = temp1&0x7f;    問題2:&0x7f 為什么小數(shù)點不能正常顯示?(共陽數(shù)碼管)   

改成:  LEDBuf[1] = temp1 | 0x10;   
或者: LEDBuf[1] = temp1 + 16;      即可




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1