打印

程序求助

[复制链接]
1587|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
潇湘雨|  楼主 | 2012-12-15 16:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
写了个PCF8951的程序   但是显示的数字是255   调节电位器数码管没有变化,请大侠看看是哪里错了


   #include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
sbit     scl=P2^1;     
sbit     sda=P2^0;

uchar   temp; bai;  shi;ge; aa; zhi;

void delay()
{;;}
void  delay1(uint  z)
{  uint  x,y;
   for(x=z;x>0;x--)
          for(y=25;y>0;y--);}
        void  delay_1()
{          uint x,y;
   for(x=2;x>0;x--)
          for(y=110;y>0;y--);}
void  display(uchar bai,uchar shi,uchar ge)
{          
  temp=0xfe;
           P1=temp;
           P0=table[0];
           delay1(5);


           temp=0xfd;
           P1=temp;
           P0=table[bai];
           delay1(5);
          
          
          
           temp=0xfb;
           P1=temp;
           P0=table[shi];
           delay1(5);
          


          temp=0xf7;
           P1=temp;
           P0=table[ge];
           delay1(5);
          

          
            
           }   
                            




void init()
{ scl=1;
  delay();
  sda=1;
  delay();
}

void  start()
{sda=1;
delay();
scl=1;
delay();
sda=0;
delay();

}
void  stop()
{ sda=0;
    delay();
        scl=1;
        delay();
        sda=1;
        delay();
}
void  respond()
{ uchar i=0;
   scl=1;
   delay();
   while((sda==1)&&(i<<255))
       i++;
           scl=0;
           delay();       
}



void writebyte(uchar  date)       
{uchar i,temp;
temp=date;
   for(i=0;i<8;i++)
   { temp=temp<<1;
      sda=CY;
          delay();
          scl=1;
          delay();
          scl=0;
          delay();
          }
          sda=1;          
          delay();

}

uchar  readbyte()               
{ uchar   i,j,k;
  scl=0;
  delay();
  sda=1;
  delay();
  for(i=8;i>0;i--)
  {        scl= 1;
    delay();
        j=sda;
        k=(k<<1)|j;
        scl=0;
        delay();
       }
           return k ;

   }


   uchar ad()
   { init();
     start();
         writebyte(0x90);
         respond();
         writebyte(0x01);
         respond();
         delay_1();
         start();
         writebyte(0x91);
         respond();

         aa=readbyte();
         respond();       
         stop ();
         return aa;
       
}

  void  main()
  {
                 while(1)
                 { zhi=ad();
         bai=zhi/100;
              shi=zhi%100/10;
            ge=zhi%100%10;
     display(bai,shi,ge);}
        
    }

相关帖子

沙发
NE5532| | 2012-12-15 17:08 | 只看该作者
《程序调试黑宝书》,包治百病,另外写程序请记得写注释,请不要学“软件流氓”作风。

使用特权

评论回复
板凳
dqyubsh| | 2012-12-15 22:42 | 只看该作者
这程序写的,要人老命。

使用特权

评论回复
地板
xlsbz| | 2012-12-15 22:59 | 只看该作者
螺旋状 美感十足

使用特权

评论回复
5
蜗牛狂奔| | 2012-12-16 08:19 | 只看该作者
最大可能就是采集时序不对!另外也不到你电路有没有问题

使用特权

评论回复
6
shell.albert| | 2012-12-16 14:15 | 只看该作者
程序太乱,不敢看啊。怕看不懂!

使用特权

评论回复
7
mandzy| | 2012-12-17 23:26 | 只看该作者
为什么写的这么复杂

使用特权

评论回复
8
refee| | 2012-12-18 08:54 | 只看该作者
年纪稍有点大 眼睛都看花了 :L

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

8

帖子

0

粉丝