STC89C51单片机 模数转换

问题遇到的现象和发生背景

怎么将声音传感器接收的信号在数码管上显示其分贝值。用STC89C51 0804单片机

问题相关代码,请勿粘贴截图
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit led=P1^1;
sbit adwr=P3^6;   
sbit adrd=P3^7; 

sbit dula=P2^6;
sbit wela=P2^7;
sbit csad=P3^5;    
sbit beep=P2^3;  //?????
sbit K1 = P3^4;//????
uint biao = 200;//±ê×¼Öµ
uchar k;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};                             
    
void delayms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);   
} 



void led_control(uchar c)
{
    if(c>biao)
    {
        led=0;
    }
    else
    {
        led=1;
    }
}
                         
void key_control()
{
 if(K1==0)
         {
         delayms(5);
         while(K1==0)
          {
              led=1; 
                            dula=1;
              P0=table[8];
              dula=0;
              P0=0xff;
              wela=1;
              P0=0xfe;
              wela=0;
              delayms(10);
  
              dula=1;
                            P0=table[0];
                            dula=0;
                            P0=0xff;
              wela=1;
              P0=0xfd;
              wela=0;
              delayms(10);
                            P0=0xff;
                    }
                        }                     
             while(!K1);
             delayms(5);                 
             while(!K1);
}



void display(uchar q,uchar b,uchar s)
{
       dula=1;
       P0=table[q]; 
       dula=0;
       P0=0xff;        
       wela=1;                
       P0=0x7e;        
       wela=0;
       delayms(5); 
       dula=1;
       P0=table[b];
       dula=0;
       P0=0xff;
       wela=1;
       P0=0x7d;
       wela=0;
       delayms(5);
       dula=1;
       P0=table[s];
       dula=0;
       P0=0xff;
       wela=1;
       P0=0x7b;
       wela=0;
       delayms(5);
}


void bi_jiao(uchar b)
{
    if(b > biao) 
    {
            led=0;
                beep=0;
                delayms(500);
                beep=1;
    }
    else
    {
        led=1;
        beep=1;
    }
}

void main()      
{
       uchar a,A1,A2,A3;
       uchar adval;
       led=1;
       wela=1;
       P0=0x7f;           
       wela=0;
       while(1)
       {
              adwr=1;
              _nop_();
              adwr=0;                
              _nop_();
              adwr=1;
              for(a=10;a>0;a--)    //Áôʱ¼äת»»    
              {                                                                                                                                                                        
                 display(A1,A2,A3);
              }
              P1=0xff;                   
              adrd=1;                    
              _nop_(); 
              adrd=0;                   
              _nop_();
              adval=P1;                  
              adrd=1;
                            led_control(adval);
              key_control();
                          bi_jiao(adval);
       A1=adval/100;              
       A2=(adval%100)/10;
       A3=adval%10;
        }         
}

运行结果及报错内容

代码在keil里没有报错,但是在开发板上没法实现分贝值

我的解答思路和尝试过的方法

模数转换

我想要达到的结果

数码管显示实时分贝值