欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1927|回復: 0
收起左側

STC12C5A60S2單片機使用ADC讀取IO電壓用OLED顯示程序

[復制鏈接]
ID:1013548 發表于 2023-5-1 18:40 | 顯示全部樓層 |閱讀模式
使用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)

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表