久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標(biāo)題: pcf8591電壓表,幫忙改一下,謝謝 [打印本頁]

作者: 123gkhkhkhkhgg    時(shí)間: 2017-12-29 15:06
標(biāo)題: pcf8591電壓表,幫忙改一下,謝謝
本帖最后由 123gkhkhkhkhgg 于 2017-12-29 15:08 編輯

#include<reg52.h>
#include<intrins.h>
#define AddWr 0x90
#define AddRd 0x91
#define uchar unsigned char
#define uint unsigned int

sbit Scl=P1^1;
sbit Sda=P1^2;

bit ADFlag;
uchar code Datatab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};  //0 1 2 3 4 5 6 7 8 9
data uchar Display[8];
uchar code wei[]={0xf8,0xf9,0xfa,0xfb,0xfc,0xfd};

void mDelay(uint j)
{
        unsigned int x,i;
        for(x=j;x>0;x--)
        {
                for(i=0;i<125;i++)
                {;}
         }
}

void Init_Timer1(void)
{
        TMOD|=0x10;
         TH1=0Xff;
         TH0=0x00;
         EA=1;
         ET1=1;
         TR1=1;
}

void Start(void)
{
         Sda=1;
         _nop_();
         Scl=1;
         _nop_();
         Sda=0;
          _nop_();
          Scl=0;
}

void Stop(void)
{
         Sda=0;
         _nop_();
         Scl=1;
         _nop_();
         Sda=1;
         _nop_();
         Scl=0;
}

void Ack(void)
{
         Sda=0;
         _nop_();
         Scl=1;
         _nop_();
         Scl=0;
         _nop_();
}

void NoAck(void)
{
         Sda=1;
         _nop_();
         Scl=1;
         _nop_();
         Scl=0;
         _nop_();
}

void Send(unsigned char Data)
{
         unsigned char BitCounter=8;
         unsigned char temp;
         do
         {
                  temp=Data;
                  Scl=0;
            _nop_();
                if((temp&0x80)==0x80)
                Sda=1;
                else
                Sda=0;
                Scl=1;
                temp=Data<<1;
                Data=temp;
                BitCounter--;
         }
         while(BitCounter);
                 Scl=0;
}

unsigned char Read(void)
{
         unsigned char temp=0;
         unsigned char temp1=0;
         unsigned char BitCounter=8;
         Sda=1;
         do
         {
                  Scl=0;
                   _nop_();
                   Scl=1;
            _nop_();
                if(Sda)
                         temp=temp|0x01;
                 else
                         temp=temp&0xfe;
                 if(BitCounter-1)
                 {
                          temp1=temp1<<1;
                          temp=temp1;
                 }
                BitCounter--;
         }
         while(BitCounter);
         return(temp);
}

void DAC(unsigned char Data)
{
         Start();
         Send(AddWr);
         Ack();
         Send(0x40);
         Ack();
         Send(Data);
         Ack();
         Stop();
}

unsigned char ReadADC()
{
          unsigned char Data;
          Start();
          Send(AddWr);
          Ack();
          Send(0x40);                   //選擇通道
          Ack();
          Start();
          Send(AddRd);
          Ack();
          Data=Read();
          Scl=0;
          NoAck();
          Stop();
          return Data;
}

void main()
{
         unsigned char num;
         uint ADtemp;
        int count;
         Init_Timer1();
         while(1)
         {
                  DAC(num);
                  num++;
                  mDelay(20);
                  if(ADFlag)
                  {
                           ADFlag=0;
                           ADtemp=ReadADC()*2;                                           //0-512對(duì)應(yīng)0-5v

                    Display[0]=Datatab[ADtemp/100]|0x80;           //整數(shù)部分和小數(shù)點(diǎn)(0x80)
                           Display[1]=Datatab[(ADtemp/10)%10];                   //小數(shù)點(diǎn)后第一位
                        Display[2]=Datatab[ADtemp%10];                       //小數(shù)點(diǎn)后第二位
                        Display[3]=0x3e;                                                       //v

                        for(count=0;count<4;count++)
                        {
                                P0=Display[count];                                 //數(shù)碼管顯示程序
                                 P2=wei[count];
                         }
                  }
         }
}

void Time1_isr(void) interrupt 3 using 1
{
         static unsigned int j=0;
         TH1=0xfb;
         TL1=0x00;
         j++;
         if(j==300)
         {
                  j=0;
                  ADFlag=1;        //采樣
         }         
}

捕獲.PNG (98.97 KB, 下載次數(shù): 84)

捕獲.PNG

程序.zip

32.86 KB, 下載次數(shù): 32

仿真.zip

45.76 KB, 下載次數(shù): 23


作者: 123gkhkhkhkhgg    時(shí)間: 2017-12-29 15:07
運(yùn)行不出來誰可以幫忙改一下
作者: cccc888    時(shí)間: 2017-12-29 19:23
參考程序, 109-PCF8591 4路AD數(shù)碼管顯示.zip (34.22 KB, 下載次數(shù): 72)



obj.zip (21.19 KB, 下載次數(shù): 41) for proteus8


作者: 123gkhkhkhkhgg    時(shí)間: 2018-1-5 11:00
cccc888 發(fā)表于 2017-12-29 19:23
參考程序,

謝謝啦

作者: 蠟筆小新2727    時(shí)間: 2020-12-16 20:24
你好,我已經(jīng)仿真成功了,也在開發(fā)板上實(shí)驗(yàn)成功了,但是我仔細(xì)看了一下,沒明白代碼到底是哪個(gè)文件里的哪一個(gè)




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 九九热免费观看 | 水蜜桃久久夜色精品一区 | 精品一区二区电影 | 最新日韩精品 | 羞羞视频网站在线观看 | 欧美日韩在线免费 | 亚洲精品一区二区二区 | 久久久久九九九女人毛片 | 97国产精品视频人人做人人爱 | 亚洲欧美一区二区三区情侣bbw | 日本精品一区二区三区在线观看 | 欧美一级黄| 精品美女在线观看 | 蜜桃免费一区二区三区 | 欧美在线视频一区二区 | 日韩精品视频中文字幕 | 日日夜夜草 | av网站免费 | 久久久久久久久久久久久九 | 在线午夜 | 精品久久久久久久人人人人传媒 | 欧日韩在线 | 亚洲在线一区 | 亚洲日韩中文字幕一区 | 91综合网| 国产精品久久久久无码av | 精品一区二区三区四区在线 | 久久99这里只有精品 | 国产一区二 | 成人免费淫片aa视频免费 | 一区二区三区不卡视频 | 伊人网伊人 | 91免费在线视频 | 男女精品久久 | 中文字幕在线播放第一页 | 久久综合狠狠综合久久综合88 | 欧美一区永久视频免费观看 | 国产精品国产成人国产三级 | 99精品国自产在线 | 成人二区 | h片免费在线观看 |