<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      51單片機AD轉換-PCF8591

      #include <reg52.h>
      
      #include <intrins.h>
      
      #define DATAOUTPUT P0
      unsigned char code num[] = "0123456789ABCDEF";
      
      sbit SDA = P2^0;
      sbit SCL = P2^1;
      sbit LED = P2^2;
      
      sbit RS = P2^4;
      sbit RW = P2^5;
      sbit EN = P2^6;
      
      //unsigned char code table[] = {0x1c,0X3B,0X2C,0X2D,0X5A,0X5C,0XC5,0X5b};
      
      
      void delayms(unsigned int t)
      {
          unsigned int i,j;
          for(i = t; i > 0; i --)
          for(j = 110; j > 0; j --);
      }
      void delay()
      {
              _nop_();
              _nop_();
              _nop_();
              _nop_();
              _nop_();
              _nop_();
              
      }
      
      void Write_Data(unsigned char dat)
      {
          EN = 0;
          RS = 1;
          RW = 0;
      
          DATAOUTPUT = dat;
      //       delayms(5);
          EN = 1;
          delayms(5);
          EN = 0;
      }
      
      void Write_Cmd(unsigned char cmd)
      {
          EN = 0;
          RS = 0;
          RW = 0;
      
          DATAOUTPUT = cmd;
      //       delayms(5);
          EN = 1;
          delayms(5);
          EN = 0;
      }
      
      void Write_Str(unsigned char *s)
      {
          while(*s != '\0')
          {
              Write_Data(*s);
              delayms(5);
              s ++;
          }
      }
      
      void start()
      {
              SCL = 1;
              SDA = 1;
              delay();
              SDA = 0;
              delay();
              SCL = 0;
                      
      }
      
      void stop()
      {
              
              SDA = 0;
              delay();
              SCL = 1;
              delay();
              SDA = 1;
              delay();
      
      }
      
      void ack()
      {
              unsigned char i = 0;
              SCL = 0;
      
              delay();
              while(SDA&&(i<100))i++;
              SCL = 1;
              delay();
              
              SCL = 0;
      }
      
      void noack()
      {
              SCL = 0;
              
              SDA = 1;
              SCL = 1;
              delay();
              SCL = 0;
      
      }
      
      void writebyte(unsigned char byte)
      {
              //MSB first
              unsigned char i = 0;
              SCL = 0;
              for(i = 0; i < 8; i ++)
              {
                      byte <<= 1;
                      SDA = CY;
                      delay();
                      SCL = 1;
                      delay();
                      SCL = 0;
              }
              
      //        SDA = 1;//waiting for ack
      //        delay();
      }
      
      unsigned char readbyte()
      {
              unsigned char i = 0,val = 0;
              SCL = 0;
              for(i = 0; i < 8 ; i ++)
              {
                      val <<= 1;
                      delay();
                      SCL = 1;
                      delay();
                      if(SDA)
                      {
                              val |= 0x01;
                      }        
                      else
                      {
                              val |= 0x00;
                      }
                      SCL = 0;
                      
              }
      
              SCL = 0;//release IIC bus
              
      
              return val;
      
      }
      
      /**
      void write_data(unsigned char add, unsigned char byte)
      {
               start();
               writebyte(0xae);
               ack();
               writebyte(add);
               ack();
               writebyte(byte);
               ack();
      
               stop();
      }
      
      unsigned char read_data(unsigned char add)
      {
              unsigned char val = 0;
              start();
              writebyte(0xae);
              ack();
              writebyte(add);
              ack();
              start();
              writebyte(0xaf);
              ack();
              val = readbyte();
              noack();
              stop();
      
              return val;
      }
      
      void pagewrite(unsigned char add)
      {
          unsigned char i;
          start();
          writebyte(0xae);
          ack();
          writebyte(add);
          ack();
          for(i = 0; i < 8; i ++)
          {
              writebyte(table[i]);
              ack();
          }
          stop();
      }
      
      unsigned char *pageread(unsigned char add)
      {
          unsigned char value[8],i;
          start();
          writebyte(0xae);
          ack();
          writebyte(add);
          ack();
      
          start();
          writebyte(0xaf);
          ack();
          for(i = 0; i < 8; i ++)
          {
              value[i] = readbyte();
              if(i == 7)
              {
                  noack();
              }
              else
              {
                  SCL = 0;  //主機來應答
          
                  delay();
                  SDA = 0;
                  delay();
                  SCL = 1;
                  delay();
                  
                  SCL = 0;
                  delay();
                  SDA = 1;
                  delay();
                  
              }
              delay();
          }
          stop();
      
          return value;
          
      
      }  **/
      
      unsigned char PCF8591_read(unsigned char ch)
      {
          unsigned char readout;
          start();
          writebyte(0x90);
          ack();
          writebyte(ch);
          ack();
      
          start();
          writebyte(0x91);
          ack();
          readout = readbyte();
      //    ack();
      //
      //    readout[1] = readbyte();
          noack();
      
          stop();
      
          return readout;
      
      
      }
      void main()
      {
              unsigned char TMP_VAL;
      
              Write_Cmd(0x01);
          Write_Cmd(0x38);
          Write_Cmd(0x0f);
          Write_Cmd(0x06);
      
          
          
              while(1)
              {
                     unsigned char a = 0;
                  for(a = 0; a<5; a ++)      //沒有這句,調CH0的電阻會顯示到0xc0位置 ,而非0x80位置
                  TMP_VAL = PCF8591_read(0x00);
                  Write_Cmd(0x80); //AD CH0
                  Write_Str("CH0 : 0x");
                  Write_Cmd(0x88);
                  Write_Data(num[TMP_VAL/16]);
                  Write_Cmd(0x89);
                  Write_Data(num[TMP_VAL%16]);
      //delayms(200);
                  for(a = 0; a<5; a ++)
                  TMP_VAL = PCF8591_read(0x03);
                  Write_Cmd(0x80+0x40); //AD CH3
                  Write_Str("CH3 : 0x"); 
                  Write_Cmd(0xc8);
                  Write_Data(num[TMP_VAL/16]);
                  Write_Cmd(0xc9);
                  Write_Data(num[TMP_VAL%16]);
                  delayms(200);
      
                  
                  
              }
      }

      AD轉換時序,PCF8591數據手冊沒有寫AD轉換的完整時序,還是參考EE的來才能讀出來的

      posted @ 2024-05-18 10:28  了解2號  閱讀(53)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产精品久久久久久av| 亚洲欧美一区二区成人片| 91精品国产蜜臀在线观看| 亚洲国产一区二区三区久| 欧美色欧美亚洲高清在线视频| 国产热A欧美热A在线视频| 97一区二区国产好的精华液| 欧美日韩国产亚洲沙发| 亚洲老熟女一区二区三区| 人妻少妇精品中文字幕| 久久亚洲2019中文字幕| 内射一区二区三区四区| 丝袜a∨在线一区二区三区不卡| 天天躁日日躁狠狠躁中文字幕| 孕妇怀孕高潮潮喷视频孕妇| 日韩人妻不卡一区二区三区| 欧美不卡一区二区三区| 成人亚欧欧美激情在线观看| 最近中文字幕完整版hd| 秋霞AV鲁丝片一区二区| 日韩有码中文字幕第一页| 98精品全国免费观看视频| 国产馆在线精品极品粉嫩| 国产不卡免费一区二区| 少妇xxxxx性开放| 97国产成人无码精品久久久| 亚洲AV天天做在线观看| 国产肥臀视频一区二区三区| 内射视频福利在线观看| 成人精品网一区二区三区| 忘忧草在线社区www中国中文| 国产成人精品视频不卡| 高清无打码一区二区三区| 亚洲成av人无码免费观看| 婷婷色综合成人成人网小说 | 人妻久久久一区二区三区| 亚洲日本乱码熟妇色精品| 成人乱码一区二区三区四区| 99精品热在线在线观看视| 亚洲精品中文综合第一页| 人成午夜大片免费视频77777 |