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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7870|回復: 7
收起左側

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

  [復制鏈接]
ID:262591 發表于 2018-9-12 18:07 | 顯示全部樓層 |閱讀模式
親自原創,采用PROTEUS仿真AT89C51單片機結合ADC0801,對外接設備進行電壓、電阻、電流三項指標的同時監測,使用的芯片相對比較簡單和低級,主要是希望能夠對于想DIY充電監測USB的同鞋起到拋磚引玉的作用,大家一起交流學習。下面是原理圖和代碼:
電壓電阻電流同時監測.jpg

單片機源碼:
  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. }
復制代碼
0.png
附件是包括仿真電路和程序代碼的所有文件
電壓電阻電流同時監測.zip (357.23 KB, 下載次數: 131)


評分

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

查看全部評分

回復

使用道具 舉報

ID:378605 發表于 2018-10-8 18:01 | 顯示全部樓層
謝謝分享。。。。。。
回復

使用道具 舉報

ID:705424 發表于 2020-3-9 21:01 | 顯示全部樓層
樓主,這個下載的用什么打開啊
回復

使用道具 舉報

ID:282106 發表于 2020-3-20 08:56 | 顯示全部樓層
謝謝分享,,,,,,,,,,,,,,,,,,,,,,,,,,
回復

使用道具 舉報

ID:666011 發表于 2020-3-21 18:08 | 顯示全部樓層
樓主,這個"STARTUP.A51"文件是一個什么文件啊,可以刪掉嗎?或者是麻煩你傳一下?
51hei截圖20200321180550.jpg
回復

使用道具 舉報

ID:717246 發表于 2020-3-27 21:49 | 顯示全部樓層
感謝樓主
回復

使用道具 舉報

ID:517794 發表于 2020-6-23 14:47 | 顯示全部樓層
謝謝分享啊 有用
回復

使用道具 舉報

ID:308393 發表于 2021-3-19 16:08 | 顯示全部樓層
謝謝樓主!請問一下你這個電流的測量范圍是多少啊?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩欧美在线视频 | 精品一区二区三区在线观看国产 | 亚洲精品www久久久久久广东 | 91亚洲国产亚洲国产 | av黄色在线播放 | 久久99精品久久久久久琪琪 | 亚洲区一区二区 | 国产亚洲欧美另类一区二区三区 | 日韩一级电影免费观看 | 超碰97人人人人人蜜桃 | 精品国产乱码久久久久久蜜退臀 | 伊人精品在线视频 | 亚洲精品成人网 | 欧美日韩成人在线观看 | 午夜av在线 | 亚洲欧美日韩精品久久亚洲区 | 激情视频一区 | 久久高清精品 | 精品乱人伦一区二区三区 | 日韩精品一区二区三区视频播放 | 亚洲天堂中文字幕 | 国产精品亚洲第一 | 三区四区在线观看 | 另类 综合 日韩 欧美 亚洲 | 99re99| 亚洲97| 日韩精彩视频 | 2019精品手机国产品在线 | 特级做a爱片免费69 精品国产鲁一鲁一区二区张丽 | 五月天激情电影 | 久久久久亚洲精品 | 欧美精品一区二区三区在线 | 国产精品久久久久久影视 | 欧美在线视频观看 | 国产欧美一区二区三区在线看 | 三级av网址 | 免费黄色在线观看 | 黄色免费网站在线看 | 在线观看免费av网 | 亚洲欧美日韩精品久久亚洲区 | 最新中文字幕在线播放 |