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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 6150|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)制作的電壓表源程序 0-18v

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
從一個(gè)廢儀表上拆了一個(gè)數(shù)碼管版,經(jīng)過(guò)改造,焊出相應(yīng)的驅(qū)動(dòng)板,做出一個(gè)電壓表。
選用STC15w408AS單片機(jī),由于引腳少,選用74hc138芯片作為位選,74hc595作為段選,用TL431的2.5v穩(wěn)壓源做參考電壓。
電壓表的設(shè)計(jì)思路:其實(shí)就是運(yùn)用單片機(jī)內(nèi)置的多個(gè)接口ADC轉(zhuǎn)換。選用穩(wěn)壓2.5v進(jìn)行ADC轉(zhuǎn)換,這樣電壓變化小,轉(zhuǎn)出的ADC的值變的也小(估值558左右),再經(jīng)過(guò)另外一路兩個(gè)電阻分壓點(diǎn)轉(zhuǎn)換出來(lái)的ADC的值進(jìn)行計(jì)算。理論上能做到0~無(wú)窮大量程的(沒(méi)啥實(shí)際意義)。根據(jù)這個(gè)思路如果分壓電阻小于1R,根據(jù)分壓計(jì)算也可以設(shè)計(jì)出電流表。這里沒(méi)做電壓電流表,其實(shí)知道原理就行了。

制作出來(lái)的實(shí)物圖如下:

復(fù)制的代碼注釋亂碼,大家可以下載附件查看,標(biāo)注詳細(xì),適合初學(xué)單片機(jī)ADC的人。注:本人也是菜鳥(niǎo)一枚,大家互相交流學(xué)習(xí),有更好的方案可以留言。共同進(jìn)步。

單片機(jī)源程序如下:
  1. #include <STC15F2K60S2.H>
  2. #include<intrins.h>
  3. #define ADC_POWER     0x80
  4. #define ADC_FLAG      0x10
  5. #define ADC_START     0x08
  6. #define ADC_SPEEDLL   0x00
  7. #define ADC_SPEEDL    0x20
  8. #define ADC_SPEEDH    0x40
  9. #define ADC_SPEEDHH   0x60
  10. typedef unsigned char uchar;
  11. typedef unsigned int uint;
  12. sbit LSA=P1^2;
  13. sbit LSB=P1^0;
  14. sbit LSC=P3^7;  //定義138邏輯芯片A,B,C腳
  15. sbit SRCLK=P3^6;
  16. sbit RCLK=P3^3;
  17. sbit SER=P3^2;//定義595芯片驅(qū)動(dòng)腳

  18. uchar number[]={0x82,0xf6,0x43,0x46,0x36,0x0e,0x0a,0xe6,0x02,0x06};  //0-9斷碼非標(biāo)準(zhǔn)碼
  19. unsigned char ch=4; //通道4,根據(jù)手冊(cè)0為P1^0,1為P1^1,依次類推
  20. float voltage=0;  //定義浮點(diǎn)電壓參數(shù)
  21. uint ref=0,vin=0; //定義431穩(wěn)壓2.5v的ADC值。ref值是P1^4,vin是P1^3的ADC值
  22. void Hc595SendByte(uchar dat);//聲明595函數(shù)
  23. void DigDisplay();//聲明顯示函數(shù)

  24. void Delay1ms()                //@24.000MHz
  25. {
  26.         unsigned char i, j;
  27.         i = 24;        j = 85;
  28.         do
  29.         {
  30.                 while (--j);
  31.         } while (--i);
  32. }
  33. void adc_int() interrupt 5   //ADC中斷
  34. {
  35.        
  36.         uint j=0;
  37.         ADC_CONTR &=!ADC_FLAG;//清除中斷標(biāo)志位
  38.         if(ch==4)
  39.         {
  40.            ref=(ADC_RES*4+ADC_RESL);   //讀取P1^4口ADC值保存在ref變量中,由于采用tl431穩(wěn)壓2.5v,所以這個(gè)值大約在558左右。
  41.         }
  42.         else if(ch==3)
  43.         {
  44.                  vin=(ADC_RES*4+ADC_RESL);   //讀取P1^3口ADC值,這個(gè)值經(jīng)過(guò)兩個(gè)電阻分壓得到的。
  45.            voltage=(2.5*vin)/ref;   //計(jì)算電壓
  46.         }
  47.   if(ch==4)    //切換轉(zhuǎn)換ADC口
  48.                 ch=3;
  49.         else if(ch==3)
  50.                 ch=4;
  51.         for(j=0;j<=30;j++);
  52.         ADC_RES=0;
  53.         ADC_RESL=0;
  54.         ADC_CONTR=ADC_POWER |ADC_SPEEDLL | ADC_START | ch;//啟動(dòng)ADC轉(zhuǎn)換
  55. }

  56. void main()
  57. {
  58.         uint i;

  59.         P1ASF=0x18;//參考手冊(cè),0x38=00011000,開(kāi)啟P1^3,P1^4為ADC輸入口,其余P1口為正常IO口
  60.         ADC_RES=0;
  61.         ADC_CONTR=ADC_POWER|ADC_SPEEDLL | ADC_START | ch;
  62.         for(i=0;i<1000;i++);
  63.         IE=0xA0;
  64.         while(1)
  65.         {
  66.                 DigDisplay();
  67.         }
  68. }
  69. void Hc595SendByte(uchar dat)            
  70. {
  71.         uchar a;
  72.         SRCLK=0;
  73.         RCLK=0;
  74.         for(a=0;a<8;a++)
  75.         {
  76.                 SER=dat>>7;
  77.                 dat<<=1;
  78.                 SRCLK=1;
  79.                 _nop_();          
  80.                 SRCLK=0;       
  81.         }
  82.         RCLK=1;
  83.         _nop_();       
  84.         RCLK=0;
  85. }

  86. void DigDisplay()
  87. {
  88.         uchar i;
  89.         uint j;
  90.         float k;
  91.         k=voltage*380;  //這個(gè)值可以修正,依據(jù)是根據(jù)兩個(gè)電阻的分壓點(diǎn)計(jì)算的,同事放大1000倍,這樣下面顯示可以顯示小數(shù)。
  92.    j=(uint) k;   //轉(zhuǎn)換成INT類型,不然下面的編譯不了。
  93.        
  94.         for(i=0;i<8;i++)
  95.         {
  96.                 switch(i)         
  97.                 {
  98.                         case(0):
  99.                                 LSA=0;LSB=0;LSC=0;Hc595SendByte(number[vin/1000]); break;
  100.                         case(1):
  101.                                 LSA=1;LSB=0;LSC=0;Hc595SendByte(number[vin%1000/100]); break;
  102.                         case(2):
  103.                                 LSA=0;LSB=1;LSC=0; Hc595SendByte(number[vin%1000%100/10]);break;
  104.                         case(3):
  105.                                 LSA=1;LSB=1;LSC=0;Hc595SendByte(number[vin%1000%100%10]); break;   //顯示當(dāng)前測(cè)量的ADC的值,0-1023
  106.                         case(4):
  107.                                 LSA=0;LSB=0;LSC=1; Hc595SendByte(number[j/1000]);break;
  108.                         case(5):
  109.                                 LSA=1;LSB=0;LSC=1;Hc595SendByte(number[j%1000/100]&0xfd);  break;
  110.                         case(6):
  111.                                 LSA=0;LSB=1;LSC=1;Hc595SendByte(number[j%1000%100/10]); break;
  112.                         case(7):
  113.                                 LSA=1;LSB=1;LSC=1; Hc595SendByte(number[j%1000%100%10]);break;  //顯示當(dāng)前電壓值
  114.                        
  115.                 }
  116.                
  117.           Delay1ms();
  118.                 Hc595SendByte(0xFF);
  119.                
  120.         }
  121. }
復(fù)制代碼

所有資料51hei提供下載:
STC15W408AS電壓表.zip (39.41 KB, 下載次數(shù): 107)

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

使用道具 舉報(bào)

沙發(fā)
ID:3666 發(fā)表于 2021-10-18 10:58 | 只看該作者
你取采集電阻各為多少呀
回復(fù)

使用道具 舉報(bào)

板凳
ID:969272 發(fā)表于 2021-10-24 18:18 | 只看該作者
電壓范圍太小了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产91一区二区三区 | 人成精品| 成人免费视频播放 | 久久久久久久久久久一区二区 | 欧美不卡一区二区三区 | 国产成年人视频 | 最新国产精品 | 久久久久久久久99 | 久久久久久毛片免费观看 | 九色在线观看 | 国产剧情一区 | 国产精品乱码一区二区三区 | 日韩欧美在线一区 | 天天操网 | 精品久久精品 | 在线成人精品视频 | 亚洲成人免费视频 | 亚洲视频在线播放 | 亚洲网在线 | 精品视频一区二区三区在线观看 | 国产成人精品高清久久 | 精品国产一区二区三区久久久蜜月 | 久久天天综合 | 97在线超碰 | 日韩喷潮| 97国产超碰 | 亚洲精选一区 | 国产精品久久亚洲 | 成人欧美一区二区 | 人人干在线视频 | 精品伊人 | 亚洲一区二区高清 | 97热在线| 亚洲高清在线免费观看 | 久久久久久久久久久91 | 噜噜噜噜狠狠狠7777视频 | 日韩第一区 | 在线观看视频91 | 99久久夜色精品国产亚洲96 | 一区二区三区四区不卡 | 国产精品久久国产精品久久 |