用proteus仿真数码管无法显示,vb接收到的数据一直是245

2019-07-18 10:35发布

(下位机程序实现代码) #include<reg52.h>

#include<math.h>

#define uchar unsigned char

#define uint unsigned int

  unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

sbit DQ=P3^3;

unsigned char tempL=0;

unsigned char tempH=0;

float temperature;

void delay1(uint z)     //延时子程序

{

uint i,j;

for(i=z;i>0;i--)  

   for(j=110;j>0;j--);

}               

void send_data(i)

{                     

    SBUF=i;           //发送

    while(ti==0);     //等待发送完毕

    TI=0;



}

void delay(unsigned int k)

{

  //for(;k>0;k--);

  //return;

  unsigned int n;      

n=0;        

while(n < k)      

{n++;}         

return;      



}        



  void delay2(void)

  {

   int k;

  for(k=0;k<400;k++);

  }

  void display(int k)

  {      

   P2=0xf7;

  P0=tab[k/1000];

  delay2();

  P2=0xfb;

  P0=tab[k%1000/100];

  delay2();

  P2=0xfd;  

   P0=tab[k%100/10];

  delay2();

  P2=0xfe;

  P0=tab[k%10];

  delay2();

  P2=0xff;

  }

  Init_DS18B20(void)

  {

   unsigned char x=0;

  DQ=1;

  delay(8);

  DQ=0;

  delay(85);

  DQ=1;

  delay(14);

  }

  ReadOneChar(void)

  {

   unsigned char i=0;

  unsigned char dat=0;

  for(i=8;i>0;i--)

  {

   DQ=1;

   delay(1);

   DQ=0;

   dat>>=1;

   DQ=1;

   if(DQ)

   dat |=0x80;

   delay(4);

  }

  return dat;

  }

  WriteOneChar(unsigned char dat)  

   {

   unsigned char i=0;

  for(i=8;i>0;i--)

  {

   DQ=0;

   DQ=dat&0x01;

   delay(5);

   DQ=1;

   dat>>=1;

  }

  delay(4);

  }

  ReadTemperature(void)

  {

   Init_DS18B20();

  WriteOneChar(0xcc);

  WriteOneChar(0x44);

  delay(125);

  Init_DS18B20();

  WriteOneChar(0xcc);

  WriteOneChar(0xbe);

  tempL=ReadOneChar();

  tempH=ReadOneChar();

  temperature=((tempH*256)+tempL);

  delay(200);

  return(temperature);

  }



void main(void)

{    float i,j;

EA=1;

TMOD=0x20;   // T1波特率发生器

TH1=0Xfd;  //波特率9600

TL1=0Xfd;

SCON=0X50; //串口方式REN=1允许接收数据  

  PCON=0X00; //  1 倍波特率   

TR1=1;

delay1(5);



while(1)

{      i=ReadTemperature();

            j=i*0.0625;

   display(j);   



    send_data(i);    //  发送数据         

}

}

捕获1.PNG
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。