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

標題: STC12C5A60S2單片機使用ADC讀取IO電壓用OLED顯示程序 [打印本頁]

作者: 嗨嗨害    時間: 2023-5-1 18:40
標題: STC12C5A60S2單片機使用ADC讀取IO電壓用OLED顯示程序
使用STC12C5A60S2讀取IO口0~5V的電壓使用0~255范圍表示電壓范圍
P0^6   SCLP0^7  
SDAP1.0  
ADC 通道0P1.1   ADC 通道1
單片機源程序如下:
  1. //P0^6   SCL
  2. //P0^7   SDA
  3. //P1.0   ADC 通道0
  4. //P1.1   ADC 通道1



  5. #include <STC12C5A60S2.H>
  6. #include <intrins.h>
  7. #include <oled.h>


  8. #define  uchar unsigned char
  9. #define  uint unsigned int
  10.        
  11. /*聲明ADC相關寄存器 */
  12. //sfr ADC_CONTR   =   0xBC;           //ADC 控制寄存器
  13. //sfr ADC_RES     =   0xBD;           //ADC 高8位結果寄存器
  14. //sfr ADC_LOW2    =   0xBE;           //ADC 低2位結果寄存器
  15. //sfr P1ASF       =   0x9D;           //P1 輔助控制寄存器

  16. /*ADC操作的一些宏定義*/
  17. #define ADC_POWER   0x80            //ADC power control bit
  18. #define ADC_FLAG    0x10            //ADC complete flag
  19. #define ADC_START   0x08            //ADC start control bit
  20. #define ADC_SPEEDLL 0x00            //420 clocks
  21. #define ADC_SPEEDL  0x20            //280 clocks
  22. #define ADC_SPEEDH  0x40            //140 clocks
  23. #define ADC_SPEEDHH 0x60            //70 clocks



  24. void DelayUs2x(unsigned char t)
  25. {   
  26. while(--t);
  27. }


  28. void DelayMs(unsigned char t)
  29. {
  30.      
  31. while(t--)
  32. {
  33.      //大致延時1mS
  34.      DelayUs2x(245);
  35.      DelayUs2x(245);
  36. }
  37. }



  38. /**********************************************
  39. *函數名稱:InitADC()
  40. *函數功能:初始化ADC
  41. *輸入:無
  42. *返回:無
  43. **********************************************/
  44. void InitADC()
  45. {
  46.     P1ASF = 0xf0;                   //開啟8路ADC功能 1111 0000
  47.     ADC_RES = 0;                    //清楚之前的結果
  48.     ADC_CONTR = ADC_POWER | ADC_SPEEDLL;
  49.     DelayMs(2);                       //ADC上電和延時
  50. }


  51. /**************************************
  52. 函數名稱:GetADCResult(unsigned int ch)
  53. 功能描述:讀取AD
  54. 入口參數:unsigned int ch    輸入0-7分別讀取AD0-AD7值
  55. 返回值:無
  56. ***************************************/
  57. unsigned char GetADCResult(unsigned char ch)
  58. {
  59.         ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;
  60.                 _nop_();                                                //查詢前必須等待
  61.     _nop_();
  62.     _nop_();
  63.     _nop_();
  64.         while (!(ADC_CONTR & ADC_FLAG));//等待完成標志
  65.         ADC_CONTR &= ~ADC_FLAG;         //關閉 ADC
  66.         return ADC_RES;                 //返回ADC結果
  67. }


  68. void main()
  69. {
  70.         unsigned char temp , T ;
  71.         unsigned        int        a ,b ,c, d;                                                                                                                                                                                       
  72.         InitADC();//ADC初始化
  73.         OLED_Init();//初始化OLED  
  74.         OLED_ColorTurn(0);//0正常顯示,1 反色顯示
  75.   OLED_DisplayTurn(1);//0正常顯示 1 屏幕翻轉顯示

  76.         while(1)
  77.         {
  78.                 temp = GetADCResult(0);
  79.                 T = GetADCResult(1);

  80.                 a = (temp / 1000  );//打印千位
  81.                 b = (temp % 1000 / 100  );//打印百位
  82.                 c = (temp % 100 / 10  );//打印十位
  83.                 d = (temp % 10  );//打印個位
  84.                 DelayMs(100);               
  85.                
  86.                 OLED_ShowString(53,2,"temp:",8);
  87.                 OLED_ShowNum(86,2,temp,3,8);

  88.                 OLED_ShowString(53,1,"T:",8);
  89.                 OLED_ShowNum(86,1,T,3,8);
  90.        
  91.                
  92.                
  93. //                OLED_ShowString(53,0,"a:",8);
  94. //                OLED_ShowNum(86,0,a,3,8);
  95. //               
  96. //                OLED_ShowString(53,1,"b:",8);
  97. //                OLED_ShowNum(86,1,b,3,8);
  98. //               
  99. //                OLED_ShowString(53,2,"c:",8);
  100. //                OLED_ShowNum(86,2,c,3,8);
  101.                
  102.         }
  103. }
復制代碼

Keil代碼下載: 試驗.rar (61.67 KB, 下載次數: 52)





歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 欧美日韩久久 | 久草免费在线视频 | 三区在线 | 久久精品a级毛片 | 国产三区视频在线观看 | 亚洲精品久久久一区二区三区 | av性色全交蜜桃成熟时 | 久久国产成人 | 亚洲精品二区 | 51ⅴ精品国产91久久久久久 | 国产黄色在线观看 | 国产精品免费小视频 | 在线精品一区 | av免费观看网站 | 免费亚洲网站 | 91国产精品在线 | 夜夜夜操 | 免费一级片 | 国产精品夜间视频香蕉 | 91在线观看 | 日韩一区二区三区在线 | www亚洲精品| 亚洲一区 中文字幕 | 黄色91在线 | 九一视频在线播放 | 热99视频| 久久久久久国产精品 | 国产中文一区二区三区 | 久久人体视频 | 中文字幕久久精品 | 亚洲综合资源 | 人人看人人搞 | 福利视频网址 | 欧美日韩毛片 | 日韩精品久久久久 | 美国十次成人欧美色导视频 | 亚洲综合在线视频 | 91久久久久久久 | 国产福利在线 | 免费看一区二区三区 | 在线成人一区 |