标题: 谁能帮我分析一下这个显示函数,谢谢了! [打印本页]

作者: ywz6111    时间: 2016-8-3 20:11
标题: 谁能帮我分析一下这个显示函数,谢谢了!
unsigned char code DataMAC[11]={ 0x3F,0x06,0x5B,0x4F,0x66, 0x6D,0x7d,0x07,0x7f,0x6F, 0x00 };

void Display_LED(unsigned char DataVal[])
{
unsigned char i=0,Value=1;
for(i = 0; i < 8; i++)
{
  if(DataVal[i]&0x80)
  {
   DataVal[i]-=0x80;
   LED_Data = ~(DataMAC[DataVal[i]]|0x80)
}
  else
  {
   LED_Data = ~DataMAC[DataVal[i]];
  }


作者: geminiguy_07    时间: 2016-8-4 08:17
本帖最后由 geminiguy_07 于 2016-8-4 08:20 编辑

unsigned char code DataMAC[11]={ 0x3F,0x06,0x5B,0x4F,0x66, 0x6D,0x7d,0x07,0x7f,0x6F, 0x00 };

void Display_LED(unsigned char DataVal[])
{
     unsigned char i=0,Value=1;
    for(i = 0; i < 8; i++)
    {
        if(DataVal&0x80)   //带有小数点
       {
         DataVal-=0x80;   //去掉小数点
        LED_Data = ~(DataMAC[DataVal]|0x80)  //这应该是显示该数
      }
      else    //不带小数点的
      {
          LED_Data = ~DataMAC[DataVal];
      }
   }
}

作者: ywz6111    时间: 2016-8-4 11:22
geminiguy_07 发表于 2016-8-4 08:17
unsigned char code DataMAC[11]={ 0x3F,0x06,0x5B,0x4F,0x66, 0x6D,0x7d,0x07,0x7f,0x6F, 0x00 };

void ...

虽然不是很明白,但还是谢谢你!

作者: geminiguy_07    时间: 2016-8-5 00:21
ywz6111 发表于 2016-8-4 11:22
虽然不是很明白,但还是谢谢你!

数码管都是带有小数点的,出现小数的时候可以用小数点显示(如1.25,在1后面加小数,即DataMAC[1] & 0x80)。
if(DataVal&0x80)表示这个数是(x.);
DataVal-=0x80;表示这个数是(x),只是去掉小数点;
LED_Data = ~(DataMAC[DataVal]|0x80);这个因该是因为你使用的是共阳数码管,为0时才会亮,所以这个数要取反~;
最后一句LED_Data = ~DataMAC[DataVal];是因为没有小数点,直接取反就可以显示
作者: geminiguy_07    时间: 2016-8-5 00:22
数码管都是带有小数点的,出现小数的时候可以用小数点显示(如1.25,在1后面加小数,即DataMAC[1] & 0x80)。
if(DataVal[i]&0x80)表示这个数是(x.);
DataVal[i]-=0x80;表示这个数是(x),只是去掉小数点;
LED_Data = ~(DataMAC[DataVal[i]]|0x80);这个因该是因为你使用的是共阳数码管,为0时才会亮,所以这个数要取反~;
最后一句LED_Data = ~DataMAC[DataVal[i]];是因为没有小数点,直接取反就可以显示




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