这是一段代码请问voidDigDisplay()为什么会显示错 - 爱问答

(爱问答)

这是一段代码请问voidDigDisplay()为什么会显示错

#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器

#include<intrins.h>

#include <temp.h>

typedef unsigned int u16;  //对数据类型进行声明定义

typedef unsigned char u8;

#define led P2

sbit beep=P1^5;

 

sbit LSA=P2^2;

sbit LSB=P2^3;

sbit LSC=P2^4;

 

sbit k2=P3^0;

sbit k1=P3^1;

sbit k3=P3^2;

int  tp,temp;

char i,j;

char num=0;

u8 DisplayData[8];

u8 code wenduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值

u8 x=1;

void delay1(void)   //误差 0us

{

    unsigned char a,b,c;

    for(c=123;c>0;c--)

        for(b=116;b>0;b--)

            for(a=9;a>0;a--);

}

 

void delay(u16 i)

{

while(i--);

}

 

void main()

{

while(1)

{

if(k1==0)  //检测按键K1是否按下

{

delay(1000);   //消除抖动 一般大约10ms

if(k1==0) //再次判断按键是否按下

{

u16 j;

P0=smgduan[2];

led=~0x01;

delay(50000); 

while(x) //将led左移一位

{

led=_crol_(led,1);

delay1(); //大约延时450ms

if(k2==0||k3==0)

{

delay(1000);

if(k2==0||k3==0)

{

x=0;

}

while(!k2||!k3);

}

if(led==0x7f)

{

for(j=0;j<100;j++)

{

beep=~beep;

delay(100);

}

}

}

x=1;

}

}

if(k2==0)  //检测按键K1是否按下

{

delay(1000);   //消除抖动 一般大约10ms

if(k2==0) //再次判断按键是否按下

{

u16 j;

P0=smgduan[5];

led=~0x80;

delay(50000); 

while(x) //将led左移一位

{

led=_cror_(led,1);

delay1(); //大约延时450ms

if(k1==0||k3==0)

{

delay(1000);

if(k1==0||k3==0)

{

x=0;

}

while(!k3||!k1);

}

if(led==0xfe)

{

for(j=0;j<100;j++)

{

beep=~beep;

delay(100);

}

}

}

x=1;

}

}

if(k3==0)  //检测按键K1是否按下

{

delay(1000);   //消除抖动 一般大约10ms

if(k3==0) //再次判断按键是否按下

{

while(x)

{

void datapros(int temp); 

     {

float tp; 

if(temp< 0)//当温度值为负数

  {

 

DisplayData[0] = 0x40;   //   -

//因为读取的温度是实际温度的补码,所以减1,再取反求出原码

temp=temp-1;

temp=~temp;

tp=temp;

temp=tp*0.0625*100+0.5;

  }

 else

  {

DisplayData[0] = 0x00;

tp=temp;//因为数据处理有小数点所以将温度赋给一个浮点型变量

//如果温度是正的那么,那么正数的原码就是补码它本身

temp=tp*0.0625*100+0.5;

}

DisplayData[1] = wenduan[temp / 10000];

DisplayData[2] = wenduan[temp % 10000 / 1000];

DisplayData[3] = wenduan[temp % 1000 / 100] | 0x80;

DisplayData[4] = wenduan[temp % 100 / 10];

DisplayData[5] = wenduan[temp % 10];

}

void DigDisplay()

{

  for(i=0;i<6;i++)

{

switch(i) //位选,选择点亮的数码管,

{

case(0):

LSA=0;LSB=0;LSC=0; break;//显示第0位

case(1):

LSA=1;LSB=0;LSC=0; break;//显示第1位

case(2):

LSA=0;LSB=1;LSC=0; break;//显示第2位

case(3):

LSA=1;LSB=1;LSC=0; break;//显示第3位

case(4):

LSA=0;LSB=0;LSC=1; break;//显示第4位

case(5):

LSA=1;LSB=0;LSC=1; break;//显示第5位

}

P0=DisplayData[5-i];//发送数据

delay(100); //间隔一段时间扫描

P0=0x00;//消隐

  }

   }

 }

while(1)

{

datapros(Ds18b20ReadTemp()); //数据处理函数

  DigDisplay();//数码管显示函数

}

 }

}

if(k2==0||k1==0)

{

delay(1000);

if(k2==0||k1==0)

while(!k1||!k2);

}

if(i>=0)

{

for(j=0;j<100;j++)

{

delay(100);

}

}

}

}


你的{}位置错了很多(排版非常重要的),以下是改好的

#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
#include<intrins.h>
#include <temp.h>
typedef unsigned int u16;  //对数据类型进行声明定义
typedef unsigned char u8;
#define led P2
sbit beep=P1^5;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit k2=P3^0;
sbit k1=P3^1;
sbit k3=P3^2;
int  tp,temp;
char i,j;
char num=0;
u8 DisplayData[8];
u8 code wenduan[10]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
u8 code smgduan[17]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //显示0~F的值
u8 x=1;
void delay1(void)   //误差 0us
{
   unsigned char a,b,c;
   for(c=123; c>0; c--)
       for(b=116; b>0; b--)
           for(a=9; a>0; a--);
}
void delay(u16 i)
{
   while(i--);
}
void main()
{
   while(1)
       {
           if(k1==0)  //检测按键K1是否按下
               {
                   delay(1000);   //消除抖动 一般大约10ms
                   if(k1==0) //再次判断按键是否按下
                       {
                           u16 j;
                           P0=smgduan[2];
                           led=~0x01;
                           delay(50000);
                           while(x) //将led左移一位
                               {
                                   led=_crol_(led,1);
                                   delay1(); //大约延时450ms
                                   if(k2==0||k3==0)
                                       {
                                           delay(1000);
                                           if(k2==0||k3==0)
                                               {
                                                   x=0;
                                               }
                                           while(!k2||!k3);
                                       }
                                   if(led==0x7f)
                                       {
                                           for(j=0; j<100; j++)
                                               {
                                                   beep=~beep;
                                                   delay(100);
                                               }
                                       }
                               }
                           x=1;
                       }
               }
           if(k2==0)  //检测按键K1是否按下
               {
                   delay(1000);   //消除抖动 一般大约10ms
                   if(k2==0) //再次判断按键是否按下
                       {
                           u16 j;
                           P0=smgduan[5];
                           led=~0x80;
                           delay(50000);
                           while(x) //将led左移一位
                               {
                                   led=_cror_(led,1);
                                   delay1(); //大约延时450ms
                                   if(k1==0||k3==0)
                                       {
                                           delay(1000);
                                           if(k1==0||k3==0)
                                               {
                                                   x=0;
                                               }
                                           while(!k3||!k1);
                                       }
                                   if(led==0xfe)
                                       {
                                           for(j=0; j<100; j++)
                                               {
                                                   beep=~beep;
                                                   delay(100);
                                               }
                                       }
                               }
                           x=1;
                       }
               }
           if(k3==0)  //检测按键K1是否按下
               {
                   delay(1000);   //消除抖动 一般大约10ms
                   if(k3==0) //再次判断按键是否按下
                       {
                           while(x)
                               {
                                   void datapros(int temp);
                                   {
                                       float tp;
                                       if(temp< 0)//当温度值为负数
                                           {
                                               DisplayData[0] = 0x40;   //   -
//因为读取的温度是实际温度的补码,所以减1,再取反求出原码
                                               temp=temp-1;
                                               temp=~temp;
                                               tp=temp;
                                               temp=tp*0.0625*100+0.5;
                                           }
                                       else
                                           {
                                               DisplayData[0] = 0x00;
                                               tp=temp;//因为数据处理有小数点所以将温度赋给一个浮点型变量
//如果温度是正的那么,那么正数的原码就是补码它本身
                                               temp=tp*0.0625*100+0.5;
                                           }
                                       DisplayData[1] = wenduan[temp / 10000];
                                       DisplayData[2] = wenduan[temp % 10000 / 1000];
                                       DisplayData[3] = wenduan[temp % 1000 / 100] | 0x80;
                                       DisplayData[4] = wenduan[temp % 100 / 10];
                                       DisplayData[5] = wenduan[temp % 10];
                                   }
                               }
                       }
               }
       }
}
void DigDisplay()
{
   for(i=0; i<6; i++)
       {
           switch(i) //位选,选择点亮的数码管,
               {
                   case(0):
                       LSA=0;
                       LSB=0;
                       LSC=0;
                       break;//显示第0位
                   case(1):
                       LSA=1;
                       LSB=0;
                       LSC=0;
                       break;//显示第1位
                   case(2):
                       LSA=0;
                       LSB=1;
                       LSC=0;
                       break;//显示第2位
                   case(3):
                       LSA=1;
                       LSB=1;
                       LSC=0;
                       break;//显示第3位
                   case(4):
                       LSA=0;
                       LSB=0;
                       LSC=1;
                       break;//显示第4位
                   case(5):
                       LSA=1;
                       LSB=0;
                       LSC=1;
                       break;//显示第5位
               }
           P0=DisplayData[5-i];//发送数据
           delay(100); //间隔一段时间扫描
           P0=0x00;//消隐
       }

while(1)
   {
       datapros(Ds18b20ReadTemp()); //数据处理函数
       DigDisplay();//数码管显示函数
   }


if(k2==0||k1==0)
   {
       delay(1000);
       if(k2==0||k1==0)
           while(!k1||!k2);
   }
if(i>=0)
   {
       for(j=0; j<100; j++)
           {
               delay(100);
           }
   }
}

下一篇:EXCEL根据数字复制相应的份数?

上一篇:java键盘输入表示星期的数字,用switch和break结构实现

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?