标题: 能不能帮忙解释下这段mcu代码的意思? [打印本页]

作者: 1820184992    时间: 2021-3-17 17:55
标题: 能不能帮忙解释下这段mcu代码的意思?
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;


作者: 啤酒瓶子老大    时间: 2021-3-17 18:56
从0832读取的数据显示在1602上,有两个按键。有蜂鸣器。好像是一个类似可调温度报警的程序。还有写内部EEPROM的部分,掉电不丢失。
作者: 1820184992    时间: 2021-3-17 21:17
啤酒瓶子老大 发表于 2021-3-17 18:56
从0832读取的数据显示在1602上,有两个按键。有蜂鸣器。好像是一个类似可调温度报警的程序。还有写内部EEPR ...

   lcd1602_write(1,PH_L/100 + 0x30);
                lcd1602_write(1,PH_L%100/10+ 0x30);
这段是什么意思
作者: zhangxiaozi    时间: 2021-3-18 01:26
PH_L/100 是求出ph的百位数,加上0x30是把数字转换成字符,比如求的值是1,你要转换成‘1’才能显示
PH_L%100/10是求十位的数
作者: man1234567    时间: 2021-3-18 03:20
1820184992 发表于 2021-3-17 21:17
lcd1602_write(1,PH_L/100 + 0x30);
                lcd1602_write(1,PH_L%100/10+ 0x30);
这段是 ...

在1602的屏上显示PH_L百位和十位的值(两位)
作者: TTQ001    时间: 2021-3-18 04:54
该代码包括ADC模数转换,警报,LCD显示,EEPROM读写。
作者: rayin    时间: 2021-3-18 09:04
lcd1602_write(1,PH_L/100 + 0x30);   //在1602液晶显示屏上显示变量PH_L的百位数值
                lcd1602_write(1,PH_L%100/10+ 0x30); //在1602液晶显示屏下一个字符位上显示变量PH_L的十位数值





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1