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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機+ADC0801電壓電阻電流同時監測(源碼+仿真)

  [復制鏈接]
跳轉到指定樓層
樓主
親自原創,采用PROTEUS仿真AT89C51單片機結合ADC0801,對外接設備進行電壓、電阻、電流三項指標的同時監測,使用的芯片相對比較簡單和低級,主要是希望能夠對于想DIY充電監測USB的同鞋起到拋磚引玉的作用,大家一起交流學習。下面是原理圖和代碼:


單片機源碼:
  1. #include <reg52.h>
  2. #define uchar unsigned char
  3. #define uint  unsigned int
  4. #define ulong unsigned long
  5. uchar code num[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//數碼管10個數字
  6. sbit wei1=P2^0;                  //數碼管位選1
  7. sbit wei2=P2^1;                  //數碼管位選2
  8. sbit CS=P2^2;                  //ADC模塊通訊信號CS
  9. sbit read=P2^3;                  //ADC模塊通訊信號RD
  10. sbit daduan=P2^4;          //ADC模塊通訊信號INT
  11. sbit LE=P2^5;                  //ADC模塊輸入鎖存器控制
  12. sbit point=P1^7;          //數碼管的。點
  13. sbit write=P2^6;          //ADC模塊通訊信號WR
  14. sbit udis=P0^0;                  //電壓數碼管鎖存器使能引腳
  15. sbit rdis=P0^1;                   //電阻數碼管鎖存器使能引腳
  16. sbit idis=P0^2;           //電流數碼管鎖存器使能引腳
  17. uint adc;
  18. void delay1ms();
  19. void main()
  20. {
  21.         uint a,qian,bai,shi,ge,u,r,i1,i;
  22.         float rf;
  23. /*****************************初始化***********************************/
  24.         P1=0X00;                         //數碼管驅動腳
  25.         P3=0XFF;                         //ADC數據接收腳
  26.         CS=1;                                 //ADC控制引腳為產生起始時序,初始化給高電平
  27.         read=1;                                 //ADC控制引腳為產生起始時序,初始化給高電平
  28.         daduan=1;                         //ADC控制引腳為產生起始時序,初始化給高電平
  29. /*****************************主要部分***********************************/
  30.         while(1)
  31.                 {
  32. /*****************************給ADC應答時序開始轉換**********************************/
  33.                         LE=1;
  34.                         CS=0;
  35.                         delay1ms();
  36.                         write=0;
  37.                         delay1ms();
  38.                         while(daduan==0);  //等待ADC轉換結束
  39.                         CS=0;
  40.                         delay1ms();
  41.                         read=0;
  42.                         delay1ms();
  43.                         LE=0;
  44. /************************************************************************************/
  45.                         adc=P3;                         //對ADC轉換結果進行取值
  46.                         read=1;                         //將ADC通訊引腳重新初始化到高電平狀態
  47.                         CS=1;                         //將ADC通訊引腳重新初始化到高電平狀態
  48.                         daduan=1;                  //將ADC通訊引腳重新初始化到高電平狀態
  49.                         write=1;                  //將ADC通訊引腳重新初始化到高電平狀態
  50.                         delay1ms();
  51. /*******************************電壓顯示部分*****************************************/
  52.                         a=(uint)adc*19.53125*2;                //將ADC結果進行十進制的電壓轉換19.53125mV=5V/256,乘2結果符合實際,不知道為啥
  53.                         u=a;                                //先將a值取出,以免后續被肢解
  54.                         qian=a/1000;
  55.                         a=a%1000;
  56.                         bai=a/100;
  57.                         a=a%100;
  58.                         shi=a/10;
  59.                         a=a%10;
  60.                         ge=a;
  61.                         udis=1;                                  //打開電壓顯示數碼管對應的鎖存器
  62.                         rdis=0;                                   //關閉電阻顯示數碼管對應的鎖存器
  63.                         wei2=0;wei1=0;
  64.                         P1=num[qian];point=1;
  65.                         delay1ms();
  66.                         wei2=0;wei1=1;
  67.                         P1=num[bai];
  68.                         delay1ms();
  69.                         wei2=1;wei1=0;
  70.                         P1=num[shi];
  71.                         delay1ms();
  72.                         wei2=1;wei1=1;
  73.                         P1=num[ge];
  74.                         delay1ms();
  75.                         P1=0X00;                           //給數碼管低電平消影
  76.                         udis=0;                                   //關閉電壓顯示數碼管對應的鎖存器
  77. /*******************************電流顯示部分*****************************************/
  78.                         i=(5000-u)*10;
  79.                         i1=i;
  80.                         qian=i/1000;
  81.                         i=i%1000;
  82.                         bai=i/100;
  83.                         i=i%100;
  84.                         shi=i/10;
  85.                         i=i%10;
  86.                         ge=i;
  87.                         idis=1;                                         //打開電流顯示數碼管對應的鎖存器
  88.                         wei2=0;wei1=0;
  89.                         P1=num[qian]; point=1;
  90.                         delay1ms();
  91.                         wei2=0;wei1=1;
  92.                         P1=num[bai];
  93.                         delay1ms();
  94.                         wei2=1;wei1=0;
  95.                         P1=num[shi];
  96.                         delay1ms();
  97.                         wei2=1;wei1=1;
  98.                         P1=num[ge];
  99.                         delay1ms();
  100.                         P1=0X00;                                  //給數碼管低電平消影
  101.                         idis=0;                                          //關閉電流顯示數碼管對應的鎖存器
  102. /*******************************電阻顯示部分*****************************************/
  103.                          rf=(u*1.000/i1)*1000;        //中間進行一步浮點運算,主要考慮u/i1除法運算只有浮點型時才能夠保留小數點以后數值
  104.                         r=(uint)rf;                                //將得出的浮點值強制轉換為整型變量
  105.                         qian=r/1000;
  106.                         r=r%1000;
  107.                         bai=r/100;
  108.                         r=r%100;
  109.                         shi=r/10;
  110.                         r=r%10;
  111.                         ge=r;
  112.                         rdis=1;                                         //打開電阻顯示數碼管對應的鎖存器
  113.                         wei2=0;wei1=0;
  114.                         P1=num[qian];point=1;
  115.                         delay1ms();
  116.                         wei2=0;wei1=1;
  117.                         P1=num[bai];
  118.                         delay1ms();
  119.                         wei2=1;wei1=0;
  120.                         P1=num[shi];
  121.                         delay1ms();
  122.                         wei2=1;wei1=1;
  123.                         P1=num[ge];
  124.                         delay1ms();
  125.                         P1=0X00;                                  //給數碼管低電平消影
  126.                         rdis=0;                                          //關閉電阻顯示數碼管對應的鎖存器
  127.                         }
  128. }
  129. void delay1ms()
  130. {
  131.     unsigned char a,b;
  132.     for(b=102;b>0;b--)
  133.         for(a=3;a>0;a--);
  134. }
復制代碼

附件是包括仿真電路和程序代碼的所有文件
電壓電阻電流同時監測.zip (357.23 KB, 下載次數: 131)


評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:378605 發表于 2018-10-8 18:01 | 只看該作者
謝謝分享。。。。。。
回復

使用道具 舉報

板凳
ID:705424 發表于 2020-3-9 21:01 | 只看該作者
樓主,這個下載的用什么打開啊
回復

使用道具 舉報

地板
ID:282106 發表于 2020-3-20 08:56 | 只看該作者
謝謝分享,,,,,,,,,,,,,,,,,,,,,,,,,,
回復

使用道具 舉報

5#
ID:666011 發表于 2020-3-21 18:08 | 只看該作者
樓主,這個"STARTUP.A51"文件是一個什么文件啊,可以刪掉嗎?或者是麻煩你傳一下?

51hei截圖20200321180550.jpg (54.44 KB, 下載次數: 112)

51hei截圖20200321180550.jpg
回復

使用道具 舉報

6#
ID:717246 發表于 2020-3-27 21:49 | 只看該作者
感謝樓主
回復

使用道具 舉報

7#
ID:517794 發表于 2020-6-23 14:47 | 只看該作者
謝謝分享啊 有用
回復

使用道具 舉報

8#
ID:308393 發表于 2021-3-19 16:08 | 只看該作者
謝謝樓主!請問一下你這個電流的測量范圍是多少啊?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 操到爽| 久久久五月天 | 欧美一区二区三区在线看 | 成人片免费看 | 久久久久av | 欧美精品一区二区免费 | 亚洲色图网址 | 国产精品一区二区三区免费观看 | 久久久久国产精品午夜一区 | 97免费视频在线观看 | 欧美成人一区二免费视频软件 | 香蕉一区| 97久久精品 | 日本色高清 | 免费污视频 | 日韩在线免费视频 | 成人免费在线小视频 | 在线观看国产wwwa级羞羞视频 | 一区二区三区亚洲视频 | 午夜视频网站 | 国产在线观看一区二区 | 国产一级毛片精品完整视频版 | 日日夜夜精品视频 | 中文成人在线 | 亚洲视频在线播放 | 精品欧美一区二区三区久久久 | 人人爽人人爽 | 色婷婷综合久久久久中文一区二区 | 精品国产不卡一区二区三区 | 国产91丝袜在线播放 | 色综合一区| 成人在线中文 | 成年女人免费v片 | 精品二区| 国产精品美女久久久久久免费 | 久久久久国产一区二区三区四区 | 久久一| 亚洲一区三区在线观看 | 亚洲三区在线 | 九色一区 | 四虎影院免费在线 |