找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2459|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

能不能幫忙解釋下這段mcu代碼的意思?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:893163 發(fā)表于 2021-3-17 17:55 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
void read_eeprom()
{
        PH_H = byte_read(0x2000);
  PH_L = byte_read(0x2001);
        a_a    = byte_read(0x2058);
}
void init_eeprom()
{
        read_eeprom()
        if(a_a != 1||k2==0||k3==0)PH_H=90;
                PH_L=40;
                a_a = 1;
                write_eeprom();         
        }        
}
void dispaly()//
{

        if(flag==0)
        {
        lcd1602_write(0,0x80);
        lcd1602_writebyte("PH:");
        lcd1602_write(1,PH/1000 + 0x30);
        lcd1602_write(1,PH%1000/100 + 0x30);
        lcd1602_write(1,'.');
        lcd1602_write(1,PH%100/10+ 0x30);
        lcd1602_write(1,PH%10 + 0x30);
        lcd1602_writebyte("  ");

        if(flagU==1)
        {
        lcd1602_writebyte("U:");
        lcd1602_write(1,Vdisbuff[0]);
        lcd1602_write(1,Vdisbuff[1]);
        lcd1602_write(1,Vdisbuff[2]);
        lcd1602_writebyte("V");
        }
        else
                lcd1602_writebyte("      ");

        lcd1602_write(0,0xC0);
        lcd1602_writebyte("Temp:");
        lcd1602_write(1,temp/1000 + 0x30);
        lcd1602_write(1,temp%1000/100 + 0x30);
        lcd1602_write(1,temp%100/10 + 0x30);
        lcd1602_write(1,'.');
        lcd1602_write(1,temp%10 + 0x30);
        lcd1602_write(1,0xdf);
        lcd1602_writebyte("C    ");
  }
        if(flag>0)
        {
                lcd1602_write(0,0x80);
                lcd1602_writebyte("PH_H:");
                lcd1602_write(1,PH_H/100 + 0x30);
                lcd1602_write(1,PH_H%100/10+ 0x30);
                lcd1602_write(1,'.');
                lcd1602_write(1,PH_H%10 + 0x30);
                lcd1602_writebyte("       ");

                if(flag==1)
                {
                        lcd1602_write(0,0x80+14);
                        lcd1602_writebyte("<<");
                }



                lcd1602_write(0,0xc0);
                lcd1602_writebyte("PH_L:");
                lcd1602_write(1,PH_L/100 + 0x30);
                lcd1602_write(1,PH_L%100/10+ 0x30);
                lcd1602_write(1,'.');
                lcd1602_write(1,PH_L%10 + 0x30);
                lcd1602_writebyte("       ");

                if(flag==2)
                {
                        lcd1602_write(0,0xc0+14);
                        lcd1602_writebyte("<<");
                }
        }
}

void alarm()
{
        altt++;
        if(altt>50)
        {
                altt=0;
                if(PHV>PH_H){rled=~rled; gled=1; beep=~beep;}
                else if(PHV<PH_L){rled=1; gled=~gled; beep=~beep;}
                else {rled=1; gled=1; beep=1;}
        }

}

void cekey()
{

        if(k1==0)
        {
                delay(10);
                if(k1==0)
                {
                        flag++;
                        if(flag>2) flag=0;
                }
                while(!k1);
        }
        if(k2==0&&flag>0)
        {
                delay(10);
                if(k2==0)
                {
                        altk=0;
                        switch(flag)
                        {
                                case 1: PH_H++; if(PH_H>140) PH_H=140;   break;
                                case 2: if(PH_H>PH_L) PH_L++;  break;
                        }
                        write_eeprom();
                }
                while(!k2);
//                {
//                        dispaly();
//                        altk++;
//                        if(altk>30)
//                        {
//                                altk=305;
//                                switch(flag)
//                                {
//                                        case 1: PH_H=PH_H+10;  PH_H=140;   break;
//                                        case 2: if(PH_H>PH_L) PH_L=PH_L+10;  break;
//                                }
//                        write_eeprom();
//                                write_eeprom();
//                        }
//                        delay(100);
//                        dispaly();
//                }
        }

        if(k3==0&&flag>0)
        {
                delay(10);
                if(k3==0)
                {
                        altk=0;
                        switch(flag)
                        {
                                case 1: if(PH_H>PH_L) PH_H--;   break;
                                case 2: if(PH_L>0) PH_L--;  break;
                        }
                        write_eeprom();
                }
                while(!k3);
//                {
//                        dispaly();
//                        altk++;
//                        if(altk>30)
//                        {
//                                altk=305;
//                                switch(flag)
//                                {
//                                        case 1: if(PH_H>PH_L) PH_H=PH_H-10;   break;
//                                        case 2: if(PH_L>0) PH_L=PH_L-10;  break;
//                                }
//                                write_eeprom();
//                        }
//                        delay(100);
//                        dispaly();
//                        
//                }
        }



        if(k3==0&&flag==0)
        {
                delay(10);
                if(k3==0)
                {
                        flagU=~flagU;
                }
                while(!k3);
        }

}

void TU_Collection()
{

        ad_red=ADC0832(1,0)
  adGet=adGet+ad_red;
        numt++;
        if(numt>=100)
        {
                numt=0;        
                Value=adGet/100;
                adv=Value * 500.0/ 256;
                PH_V =Value * 5.0 / 256;
//                PH_Value=-5.887*PH_V+21.677;
                PH_Value=-5.9647*PH_V+22.255;
                if(PH_Value<=0){PH_Value=0;}
                if(PH_Value>=14){PH_Value=14;}
                temp=check_wendu();

                disbuff[0]=(int)(PH_Value*100)/1000;
                disbuff[1]=(int)(PH_Value*100)%1000/100;        
                disbuff[2]=(int)(PH_Value*100)%100/10;
                disbuff[3]=(int)(PH_Value*100)%10;
                PH=disbuff[0]*1000+disbuff[1]*100+disbuff[2]*10+disbuff[3];
                PHV=disbuff[0]*100+disbuff[1]*10+disbuff[2];
                Vdisbuff[0]=(int)(PH_V*100)/100+'0';
                Vdisbuff[1]=(int)(PH_V*100)%100/10+'0';
                Vdisbuff[2]=(int)(PH_V*100)%10+'0';
                adGet=0;

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:230742 發(fā)表于 2021-3-17 18:56 | 只看該作者
從0832讀取的數(shù)據(jù)顯示在1602上,有兩個(gè)按鍵。有蜂鳴器。好像是一個(gè)類似可調(diào)溫度報(bào)警的程序。還有寫內(nèi)部EEPROM的部分,掉電不丟失。
回復(fù)

使用道具 舉報(bào)

板凳
ID:893163 發(fā)表于 2021-3-17 21:17 | 只看該作者
啤酒瓶子老大 發(fā)表于 2021-3-17 18:56
從0832讀取的數(shù)據(jù)顯示在1602上,有兩個(gè)按鍵。有蜂鳴器。好像是一個(gè)類似可調(diào)溫度報(bào)警的程序。還有寫內(nèi)部EEPR ...

   lcd1602_write(1,PH_L/100 + 0x30);
                lcd1602_write(1,PH_L%100/10+ 0x30);
這段是什么意思
回復(fù)

使用道具 舉報(bào)

地板
ID:287575 發(fā)表于 2021-3-18 01:26 | 只看該作者
PH_L/100 是求出ph的百位數(shù),加上0x30是把數(shù)字轉(zhuǎn)換成字符,比如求的值是1,你要轉(zhuǎn)換成‘1’才能顯示
PH_L%100/10是求十位的數(shù)
回復(fù)

使用道具 舉報(bào)

5#
ID:584814 發(fā)表于 2021-3-18 03:20 | 只看該作者
1820184992 發(fā)表于 2021-3-17 21:17
lcd1602_write(1,PH_L/100 + 0x30);
                lcd1602_write(1,PH_L%100/10+ 0x30);
這段是 ...

在1602的屏上顯示PH_L百位和十位的值(兩位)
回復(fù)

使用道具 舉報(bào)

6#
ID:420836 發(fā)表于 2021-3-18 04:54 | 只看該作者
該代碼包括ADC模數(shù)轉(zhuǎn)換,警報(bào),LCD顯示,EEPROM讀寫。
回復(fù)

使用道具 舉報(bào)

7#
ID:517951 發(fā)表于 2021-3-18 09:04 | 只看該作者
lcd1602_write(1,PH_L/100 + 0x30);   //在1602液晶顯示屏上顯示變量PH_L的百位數(shù)值
                lcd1602_write(1,PH_L%100/10+ 0x30); //在1602液晶顯示屏下一個(gè)字符位上顯示變量PH_L的十位數(shù)值
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表