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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4219|回復: 1
打印 上一主題 下一主題
收起左側

ADC0809+51單片機采集0-5v模擬量

[復制鏈接]
跳轉到指定樓層
樓主
純原創,此篇只在51黑電子論壇發過,所以不用擔心重復。

內容:已知有ADC0809模數轉換器,有一模擬電壓0—5V,電壓高低有電位器控制。
功能:1.使用51單片機完成設計。
                  2.使用0809上的IN3采集模擬電壓值。
                 3.將采集到的電壓值用3位數碼管顯示,整數位占1位,顯示小數點,小數占兩位。
                 4.0809轉換的結果以區間的方式用8LED顯示。
      原理圖:

      代碼如下:
  1. /**************************************/
  2. /*                  功能:ADC轉換與顯示               */
  3. /*                    AD芯片:ADC0809                  */
  4. /*                    控制器:AT89C52                   */
  5. /*                  主時鐘頻率:12MHz                  */
  6. /*                     作者:溫爾暖                      */
  7. /*                   QQ:648232352                    */
  8. /**************************************/

  9. /******************調用頭文件*******************/
  10. #include "reg52.h"
  11. #include "intrins.h"

  12. /*****************定義地址**********************/
  13. sbit KEY   = P1^0;            //按鍵
  14. sbit ADD_C = P1^2;
  15. sbit ADD_B = P1^3;
  16. sbit ADD_A = P1^4;            // 選輸入口

  17. sbit CLK =   P1^5;            // 時鐘
  18. sbit START = P1^6;            // 轉換啟動信號
  19. sbit EOC =   P1^7;            // 轉換結束信號
  20. sbit OE =    P1^1;            // 輸出允許信號

  21. /*****************定義全局變量********************/
  22. int flag = 0;

  23. /*****************數碼管段碼**********************/
  24. unsigned char code DUAN[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};    //不帶小數點
  25. unsigned char code DUAN1[] = {0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0x80};   //帶小數點

  26. /*****************電壓值區間******************/
  27. float JS[] = {0,62.5,125,187.5,250,312.5,375,437.5,500};
  28. /*******************讀ADC*******************/
  29. void read_adc(void)
  30. {
  31.                 START = 0;
  32.                 _nop_();
  33.                 START = 1;
  34.                 _nop_();
  35.                 START = 0;
  36.                 while(EOC==0);
  37.                 OE=1;
  38. }

  39. /*****************AD值區間計算*********************/
  40. int LED_JS(float AD)
  41. {
  42.         int t0 = 0;
  43.         int i = 0;
  44.         for(; i<8 ;i++)
  45.         {
  46.                 if(AD >= JS[i])
  47.                         if(AD <= JS[i+1])
  48.                                 t0 = i;
  49.         }
  50.         return t0+1;
  51. }

  52. /*****************不精確延時**********************/
  53. void delay_ms(int i)
  54. {
  55.         int j=0;
  56.         while(i--)
  57.         {
  58.                 for(j=0;j<120;j++);
  59.         }
  60. }

  61. /*****************數碼管顯示**********************/
  62. void display1(unsigned char ADC1_PORT)
  63. {
  64.         int AD1 = ADC1_PORT * 500.0/255.0;
  65.         P2 = 0xFD;   P0 = DUAN1[AD1/100];     delay_ms(5);     // 位選:P2^1  個位
  66.         P2 = 0xFB;   P0 = DUAN[(AD1/10)%10];  delay_ms(5);     // 位選:P2^2  小數點后一位
  67.         P2 = 0xF7;   P0 = DUAN[AD1%10];       delay_ms(5);     // 位選:P2^3  小數點后兩位
  68. }

  69. /*****************LED顯示**********************/
  70. void display2(unsigned char ADC2_PORT)
  71. {
  72.         float AD2 = ADC2_PORT * 1.96;
  73.         P2 = 0xFF;                  // 清屏
  74.   switch(LED_JS(AD2))
  75.         {
  76.                 case 1: P0 = 0xff; break;
  77.                 case 2: P0 = 0xfe; break;
  78.                 case 3: P0 = 0xfc; break;
  79.                 case 4: P0 = 0xf8; break;
  80.                 case 5: P0 = 0xe0; break;
  81.                 case 6: P0 = 0xc0; break;
  82.                 case 7: P0 = 0x80; break;
  83.                 case 8: P0 = 0x00; break;
  84.                 default:P0 = 0xef;
  85.         }
  86. }

  87. /*******************初始化*******************/
  88. void init()
  89. {
  90.         
  91.         ADD_C=0;
  92.         ADD_B=1;
  93.         ADD_A=1;           // 選擇第三通道
  94.         
  95.         CLK=0;             //時鐘
  96.         START=1;           // 內部寄存器清零
  97.         EOC=1;             // 轉換結束
  98.         OE=0;              // 使能
  99.         
  100.         TMOD=0x02;      // 0000_0010 8位 0~255
  101.         TH0=200;
  102.         TL0=200;        // 裝載初值
  103.         EA=1;           // 開總中斷
  104.         ET0=1;          // 開定時器中斷
  105.         TR0=1;          // 開定時器
  106. }

  107. /****************mAin函數*******************/
  108. void main()
  109. {
  110.         init();         // 初始化
  111.         while(1)
  112.         {
  113.                 if(KEY == 0)               // 檢測到按鍵
  114.                 {
  115.                         delay_ms(5);             // 防抖
  116.                         if(KEY == 0)
  117.                         {
  118.                                 while(!KEY);           // 等松手
  119.                                 flag ++;               // 加1
  120.                                 flag &= 0x01;          // 與0x01相與 保證每次進入flag都為0或1
  121.                         }
  122.                 }
  123.                
  124.                 if(flag == 0)
  125.                 {
  126.                         read_adc();
  127.                         display1(P3);
  128.                         OE=0;
  129.                 }
  130.                
  131.                 if(flag == 1)
  132.                 {               
  133.                         read_adc();
  134.                         display2(P3);
  135.                         OE=0;
  136.                 }
  137.         }
  138. }

  139. /****************中斷服務程序*******************/
  140. void TIM0_Serves() interrupt 1         // 用于產生CLK
  141. {
  142.         CLK = !CLK;
  143. }
復制代碼





評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:299034 發表于 2020-4-11 23:14 | 只看該作者
看到Proteus還以為有人能使用在Proteus中帶ADC的單片機仿真。。QWQ
害,感謝樓主分享
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲成人在线免费 | 国产永久免费 | 日韩视频在线免费观看 | 91亚洲国产成人久久精品网站 | 国产精品 亚洲一区 | 久久久久国产精品午夜一区 | www.日韩 | 综合第一页| 午夜视频在线免费观看 | 日韩a视频 | 精品视频国产 | 国产高清视频在线观看播放 | 欧美一级黄色片在线观看 | 欧美日韩大片 | 国产精品91网站 | 国产1区2区 | 日本免费一区二区三区四区 | 久久国产精品亚洲 | 日韩中文字幕一区 | 日本欧美大片 | 精品国模一区二区三区欧美 | 日韩免费看片 | 久久99视频免费观看 | 日本在线免费观看 | 亚洲女人的天堂 | 欧美日韩高清一区 | 国产激情一区二区三区 | 欧美成人精品激情在线观看 | 自拍视频在线观看 | 中文字幕视频在线看5 | 亚洲97| 久久亚洲免费 | 欧美日韩国产高清视频 | 国产一区二区日韩 | 97av| 亚洲精品视频一区二区三区 | 欧美11一13sex性hd| www97影院| 久久i| 欧美黄页 | 国产综合av |