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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1686|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

PCH8591 iic_adc單片機(jī)源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:397993 發(fā)表于 2018-10-31 19:50 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
iic_adc程序

單片機(jī)源程序如下:
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. sbit  IIC_SDA=P2^6;      
  4. sbit  IIC_SCL=P2^7;
  5. sbit  read=P3^2;

  6. void yanshi()      //延時1.8s
  7. {
  8.         int i=0;
  9.         int        j=0;
  10.         for(i=0;i<3000;i++)
  11.         for(j=0;j<200;j++)
  12.         ;
  13. }

  14. void IIC_Start(void)
  15. {
  16.         IIC_SDA=1;
  17.         IIC_SCL=1;
  18.         _nop_();
  19.         IIC_SDA=0;
  20.         _nop_();
  21.         IIC_SCL=0;
  22.         _nop_();
  23. }
  24. void IIC_Stop(void)
  25. {
  26.         IIC_SCL=0;
  27.         IIC_SDA=0;
  28.         IIC_SCL=1;
  29.         _nop_();
  30.         IIC_SDA=1;
  31.         _nop_();

  32. }


  33. bit IIC_ACK_TEST()                //ack 應(yīng)答
  34. {
  35.         bit  ErrorBit;     //應(yīng)答位
  36.         IIC_SDA=1;    //主機(jī)釋放SDA總線
  37.         _nop_();
  38.         IIC_SCL=1;
  39.         ErrorBit=IIC_SDA;
  40.         IIC_SCL=0;
  41.         return(ErrorBit);



  42. }

  43. void IIC_ACK_0(void)
  44. {
  45.         IIC_SDA=1;
  46.         IIC_SCL=1;
  47.         _nop_();
  48.         IIC_SDA=0;
  49.         IIC_SCL=0;

  50. }
  51. unsigned  char IIC_Read_8_Bit(void)
  52. {
  53.          unsigned  char  temp, rbyte=0;
  54.          for(temp=8; temp!=0; temp--)
  55.         {
  56.         IIC_SCL=1;  
  57.         rbyte=rbyte<<1;
  58.         rbyte=rbyte|((unsigned char)(IIC_SDA));   //在IIC_SCL=1期間,讀SDA線數(shù)據(jù)         
  59.         IIC_SCL=0;
  60.         }
  61.         return(rbyte);

  62. }
  63. void IIC_Write_8_Bit(unsigned char input)
  64. {
  65.         unsigned char temp;
  66.         for(temp=8;temp!=0;temp--)

  67.    {
  68.         if(input&0x80)       //---MSB優(yōu)先-----
  69.          IIC_SDA=1;
  70.         else
  71.          IIC_SDA=0;
  72.         IIC_SCL=1;
  73.         _nop_();        //傳輸1bit
  74.         IIC_SCL=0;     //在IIC_SCL=0時,改變數(shù)據(jù)位
  75.         input=input<<1;   
  76.         }
  77. }

  78. unsigned char PCH8591_Get_AD()
  79. {
  80.         unsigned char ADC_data1;
  81.         IIC_Start();                                 //啟動
  82.         IIC_Write_8_Bit(0x90);                  //8591器件寫地址        0x90
  83.         IIC_ACK_TEST();

  84.         IIC_Write_8_Bit(0x00);                  //8591控制字 4路單通道0x00
  85.         IIC_ACK_TEST();

  86.         IIC_Start();                                        //啟動       
  87.         IIC_Write_8_Bit(0x91);                        //8591 讀地址0x91
  88.         IIC_ACK_TEST();

  89.         ADC_data1=IIC_Read_8_Bit();
  90.         IIC_ACK_TEST();
  91.         IIC_Stop();
  92.                                                                           //結(jié)束
  93.         return ADC_data1;
  94. }  

  95. void PCF8591_DAC(unsigned char dac_data)
  96. {
  97.         IIC_Start();                                 //啟動
  98.         IIC_Write_8_Bit(0x90);                  //8591器件寫地址        0x90
  99.         IIC_ACK_TEST();

  100.         IIC_Write_8_Bit(0x40);                  //8591控制字 4路單通道0x00
  101.         IIC_ACK_TEST();

  102.         IIC_Write_8_Bit(dac_data);
  103.         IIC_ACK_TEST();
  104.         IIC_Stop();
  105. }


  106. void uart_init(void)
  107. {
  108.     ET1=0;
  109.     TMOD = 0x21;        // 定時器1工作在方式2(自動重裝)
  110.     SCON = 0x50;        // 10位uart,允許串行接受

  111.     TH1 = 0xFD;
  112.     TL1 = 0xFD;

  113.     TR1 = 1;
  114. }


  115. void UART_Send_Byte(unsigned char dat)
  116. {
  117.         SBUF = dat;
  118.         while (TI == 0);
  119.         TI = 0;
  120. }
  121. void main()
  122. {
  123. while(1)
  124. {
  125.         uart_init();
  126.         yanshi();
  127.         UART_Send_Byte(PCH8591_Get_AD());
  128.         yanshi();
  129. }

  130. }
  131. void T0_int(void) interrupt 0         //T0
  132. {
  133. if (PCH8591_Get_AD()>0x4c)
  134.          PCF8591_DAC(0x4c);
  135. }
復(fù)制代碼

所有資料51hei提供下載:
4_IIC_adc.zip (35.24 KB, 下載次數(shù): 6)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 9色网站 | 天天综合天天 | 久久久夜色精品亚洲 | 密桃av| 亚洲一区 | 99久视频 | 久久久久久久久久影视 | 亚洲第一中文字幕 | av国产精品毛片一区二区小说 | 亚洲一区在线日韩在线深爱 | 玖玖国产 | 日韩精品av一区二区三区 | 麻豆精品国产91久久久久久 | 亚洲精品一 | 风间由美一区二区三区在线观看 | 极品在线 | 久久免费精品 | 亚洲成av | av日韩一区 | 日本一二三区在线观看 | 91av视频在线观看 | 最新中文字幕第一页视频 | 国产精品片aa在线观看 | 国产一区二区三区在线 | 欧美日韩一区二区在线播放 | 91精品国产色综合久久不卡98口 | 一区二区三区四区免费在线观看 | 亚洲在线一区二区 | 天天看天天摸天天操 | 97精品超碰一区二区三区 | 成人欧美在线 | 国产精品观看 | 免费福利视频一区二区三区 | 成人性视频在线播放 | 看片91| 亚洲a视频| 99国产精品一区二区三区 | 欧美一区二区三区在线看 | 天堂久久天堂综合色 | 一道本不卡 | 午夜免费视频 |