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

標(biāo)題: 基于STC15f104w單片機(jī)的adc和dac讀取以及Oled顯示 [打印本頁]

作者: huaerla    時(shí)間: 2021-7-5 16:49
標(biāo)題: 基于STC15f104w單片機(jī)的adc和dac讀取以及Oled顯示
第一次做這種程序,有很多寫的不好的地方,望大神斧正!
  1. /*********************************************************************************
  2. * 【函數(shù)功能】: DA-AD試驗(yàn)                                                                                          
  3. * 【使用說明】: 單片機(jī):STC89C52
  4.          1 光敏電阻
  5.                                  2 熱敏電阻
  6.                                  3 懸空
  7.                                  4 可調(diào)0-5V電壓(藍(lán)色電位器調(diào)節(jié))
  8.                                  
  9. **********************************************************************************/
  10. /********************************************************************************************/

  11. #include<stc15.h>    //包含單片機(jī)寄存器的頭文件
  12. #include <I2C.H>

  13. #define uchar unsigned char
  14. #define  PCF8591 0x90    //PCF8591 地址



  15. // 變量定義
  16. unsigned char AD_CHANNEL;
  17. unsigned long xdata  LedOut[8];
  18. unsigned int  D[32];
  19. unsigned char date;



  20.   // 函數(shù)申明

  21. void delay(uchar i);
  22. bit DACconversion(unsigned char sla,unsigned char c,  unsigned char Val);
  23. bit ISendByte(unsigned char sla,unsigned char c);
  24. unsigned char IRcvByte(unsigned char sla);
  25. //******************************************************************/
  26. int main()
  27. {  
  28.   oled_init();//初始化
  29.         oled_wr_byte(0x2e,0);//關(guān)滾動(dòng)
  30.   oled_showstring(0,0,"AR VALUE",16);
  31.   oled_showstring(0,2,"PR VALUE",16);
  32.   oled_showstring(0,4,"TM VALUE",16);
  33.   oled_showstring(0,6,"NO VALUE",16);
  34.         while(1)
  35.         {
  36.         
  37.         /********以下AD-DA處理*************/  
  38.         
  39.             switch(AD_CHANNEL)
  40.                 {
  41.                         case 0: ISendByte(PCF8591,0x41);
  42.                              D[0]=IRcvByte(PCF8591);  //ADC0 模數(shù)轉(zhuǎn)換1      光敏電阻
  43.                                  break;  
  44.                         
  45.                         case 1: ISendByte(PCF8591,0x42);
  46.                              D[1]=IRcvByte(PCF8591);  //ADC1  模數(shù)轉(zhuǎn)換2          熱敏電阻
  47.                                  break;  
  48.                         
  49.                         case 2: ISendByte(PCF8591,0x43);
  50.                              D[2]=IRcvByte(PCF8591);  //ADC2        模數(shù)轉(zhuǎn)換3           懸空
  51.                                  break;  
  52.                         
  53.                         case 3: ISendByte(PCF8591,0x40);
  54.                              D[3]=IRcvByte(PCF8591);  //ADC3   模數(shù)轉(zhuǎn)換4           可調(diào)0-5v
  55.                                  break;  
  56.                         
  57.                         case 4: DACconversion(PCF8591,0x40, D[4]); //DAC          數(shù)模轉(zhuǎn)換
  58.                              break;
  59.                  
  60.                 }

  61.               D[4]=D[0];//把模擬輸入采樣的信號(hào) 通過數(shù)模轉(zhuǎn)換輸出
  62.                         
  63.            if(++AD_CHANNEL>4) AD_CHANNEL=0;
  64.         
  65.            /********以下將AD的值通過OLED顯示*************/
  66.          delay(200);        
  67.          oled_shownum(96,0,D[0],4,16);                           
  68.          delay(200);
  69.         oled_shownum(96,2,D[1],4,16);                           
  70.          delay(200);
  71.         oled_shownum(96,4,D[2],4,16);                           
  72.          delay(200);
  73.                 oled_shownum(96,6,D[3],4,16);                           
  74.          delay(200);

  75.          
  76.    }
  77. }


  78. void delay(uchar i)
  79. {
  80.   uchar j,k;
  81.   for(j=i;j>0;j--)
  82.     for(k=125;k>0;k--);
  83. }

  84. /*******************************************************************
  85. DAC 變換, 轉(zhuǎn)化函數(shù)               
  86. *******************************************************************/
  87. bit DACconversion(unsigned char sla,unsigned char c,  unsigned char Val)
  88. {
  89.    Start_I2c();              //啟動(dòng)總線
  90.    SendByte(sla);            //發(fā)送器件地址
  91.    //if(ack==0)return(0);
  92.    SendByte(c);              //發(fā)送控制字節(jié)
  93.    //if(ack==0)return(0);
  94.    SendByte(Val);            //發(fā)送DAC的數(shù)值  
  95.    //if(ack==0)return(0);
  96.    Stop_I2c();               //結(jié)束總線
  97.    return(1);
  98. }

  99. /*******************************************************************
  100. ADC發(fā)送字節(jié)[命令]數(shù)據(jù)函數(shù)               
  101. *******************************************************************/
  102. bit ISendByte(unsigned char sla,unsigned char c)
  103. {
  104.    Start_I2c();              //啟動(dòng)總線
  105.    SendByte(sla);            //發(fā)送器件地址
  106.    //if(ack==0)return(0);
  107.    SendByte(c);              //發(fā)送數(shù)據(jù)
  108.    //if(ack==0)return(0);
  109.    Stop_I2c();               //結(jié)束總線
  110.    return(1);
  111. }

  112. /*******************************************************************
  113. ADC讀字節(jié)數(shù)據(jù)函數(shù)               
  114. *******************************************************************/
  115. unsigned char IRcvByte(unsigned char sla)
  116. {  unsigned char c;

  117.    Start_I2c();          //啟動(dòng)總線
  118.    SendByte(sla+1);      //發(fā)送器件地址
  119.    //if(ack==0)return(0);
  120.    c=RcvByte();          //讀取數(shù)據(jù)0

  121.    Ack_I2c(1);           //發(fā)送非就答位
  122.    Stop_I2c();           //結(jié)束總線
  123.    return(c);
  124. }
復(fù)制代碼


以上3個(gè)文件下載: adc-OLED顯示.rar (6.7 KB, 下載次數(shù): 50)

作者: 我會(huì)想你的    時(shí)間: 2021-7-9 16:07
下下來看看,正在研究12864,
作者: huaerla    時(shí)間: 2021-7-12 00:24
我會(huì)想你的 發(fā)表于 2021-7-9 16:07
下下來看看,正在研究12864,

更基礎(chǔ)的12864顯示可以看我的上一篇帖子
作者: WFX777888    時(shí)間: 2021-7-12 05:58
有原理圖嗎
作者: jovew    時(shí)間: 2021-7-12 11:55
這個(gè)程序能不能再STC08G 上面運(yùn)行?
作者: huaerla    時(shí)間: 2021-7-12 14:34
jovew 發(fā)表于 2021-7-12 11:55
這個(gè)程序能不能再STC08G 上面運(yùn)行?

當(dāng)然可以,只不過需要改一下定義啥的,這個(gè)程序幾乎兼容所有的STC單片機(jī)
作者: huaerla    時(shí)間: 2021-7-12 14:35
jovew 發(fā)表于 2021-7-12 11:55
這個(gè)程序能不能再STC08G 上面運(yùn)行?

不過STC08G自帶ADC,就不需要額外的ADC模塊了




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产精品久久久久久婷婷天堂 | 一区二区三区成人 | 国产成人精品免费 | 一区二区影视 | 欧美精品一区二区三区在线 | 五月综合激情网 | 自拍偷拍亚洲一区 | 久久婷婷香蕉热狠狠综合 | 亚洲精品乱码久久久久久9色 | 日韩一区中文字幕 | 亚洲欧美综合精品久久成人 | 韩日av在线 | 337p日本欧洲亚洲大胆鲁鲁 | 国产精品久久在线 | 一区二区三区四区av | 成人亚洲片 | 视频一区二区在线观看 | 亚洲高清在线 | 尤物在线精品视频 | 亚洲欧美中文日韩在线v日本 | 国产精品一区二区三区久久 | 亚洲一区二区三区 | 99re热精品视频 | 999国产视频 | 久久精品欧美视频 | 欧美一区视频 | 久久精品视频一区二区三区 | 中文字幕在线观看一区 | 久久精品国产99国产 | 国产欧美日韩精品一区 | 精品日韩一区二区 | 久久黄色网 | 欧美精品在欧美一区二区少妇 | 国产高潮好爽受不了了夜色 | 国产精品久久久久久久久久软件 | 国产精品久久久久久久久久久新郎 | 国产极品粉嫩美女呻吟在线看人 | 中文字幕在线观看av | 久久精品一区 | 亚洲精品一区二区久 | 99欧美精品 |