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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

簡單易制作的0-30VSTC單片機數字電壓表

  [復制鏈接]
跳轉到指定樓層
樓主
ID:76686 發表于 2015-4-11 18:28 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
    這塊簡單易制作的0-30VSTC單片機數字電壓表,被測電壓經限流電阻接到AD檢測端并由分流電阻分流,讀出8位(256)的AD數據,由AD值計算出AD端電壓,即分流點電壓,由此電壓計算出分流電流,再由此電流計算出輸入電壓。使用STC12C5204AD單片機,P0.0-P0.3 共陰數碼管位、P2 為共陰數碼管段a-g dp,P0、P2 設置為推挽輸出,段輸出加限流電阻,AD為8位,計算方法:5/256=0.0195312V,分流電阻為實測阻值。AD值*0.0195312v/對地分流電阻,算出分流電流,然后用分流電流*分流電阻與限流電阻之和即為要顯示的輸入電壓值,業余使用,精度已經夠用了。STC12C5204AD頭文件 網上多的是,大家搜一下就會找到的,其中涉及到端口設置的地方大家對照芯片手冊更正。

簡單易制作的0-30VSTC單片機數字電壓表源程序:
  1. #include <STC12C52.H>  //STC12C5204AD頭文件

  2. #include <intrins.h>   //_nop_();

  3. #define uchar unsigned char

  4. #define uint  unsigned int


  5. //sfr ADC_CONTR=0XBC;//adc使能位.ADC電源控制位

  6. sfr ADC_RES=0XBD;// adc數據高八位,即ADC值

  7. sfr P1ASF=0X9D;//P1各端口ADC使能端

  8. uchar led_bcd[]={0x3F,/*0*/  //共陰數碼管

  9.           0x06,/*1*/

  10.           0x5B,/*2*/

  11.           0x4F,/*3*/

  12.           0x66,/*4*/

  13.           0x6D,/*5*/

  14.           0x7D,/*6*/

  15.           0x07,/*7*/

  16.           0x7F,/*8*/

  17.           0x6F,/*9*/

  18.     0x00,/* */

  19.     0x7c /*b*/

  20.     }

  21.     ,ad_data

  22.     ;

  23. uint data dis[5]={0x00,0x00,0x00,0x00,0x00},ZZ; //定義四個顯示數據單元和一個數據存儲單元

  24. //dis[4,3,2,1,5]  顯示:12.34   5為存儲單元


  25. /*******************************************************************/

  26. /*  延時子程序                                                                                                                                 */

  27. /*                                                                                                                  */

  28. /*                                                                                                                                  */

  29. /*******************************************************************/

  30. void delay(uint z)    //延時子函數

  31. {  

  32.    uchar de1,de2;

  33.   for(de1=z;de1>0;de1--)

  34.   for(de2=100;de2>0;de2--);  

  35. }

  36. /*******************************************************/

  37. //顯示子函數 display(h1,h2,h3,h4)

  38. //h1,h2,h3,h4 為四位LED數碼管顯示變量

  39. //

  40. //

  41. //

  42. /*******************************************************/

  43. void display(uchar h1,uchar h2,uchar s1,uchar s2)   ////LED顯示函數(參數:LED1,LED2,LED3,LED4)

  44. {


  45. // 第一個數碼管顯示數據

  46. if(h1==0x3f) h1=0x00;   //0消隱語句

  47. P2=h1;

  48.   //delay(2);

  49. P00=0;

  50.   delay(2);   //參數2-10   數值大LED亮度高但閃爍感強,數值小LED亮度低,但閃爍感小.

  51. P2=0X00;

  52. P00=1;

  53. /*******************************************************/

  54. // 第二個數碼管顯示數據

  55. P2=h2|0x80;

  56.   //delay(2);

  57. P01=0;

  58.   delay(2);  //參數2-10   數值大LED亮度高但閃爍感強,數值小LED亮度低,但閃爍感小.

  59. P2=0X00;

  60. P01=1;

  61. //delay(5);

  62. /*******************************************************/

  63. // 第三個數碼管顯示數據


  64. P2=s1;

  65.   //delay(2);

  66. P02=0;

  67.   delay(2); //參數2-10   數值大LED亮度高但閃爍感強,數值小LED亮度低,但閃爍感小.

  68.   P2=0X00;

  69.     P02=1;

  70. // delay(5);

  71. /*******************************************************/

  72. // 第四個數碼管顯示數據

  73. P2=s2;

  74.   //delay(2);

  75. P03=0;

  76.   delay(2); //參數2-10   數值大LED亮度高但閃爍感強,數值小LED亮度低,但閃爍感小.

  77.   P2=0X00;

  78. P03=1;


  79. //delay(5);


  80. }

  81. void init()//系統初始化函數

  82. {

  83. P2M1=0Xff; //強推挽   推動a-g dp

  84. P2M0=0X00; //強推挽   推動a-g dp

  85. P0M1=0X0f; //強推挽   推動位

  86. P0M0=0X00; //強推挽   推動位

  87. P0=0XFF;   //初始化

  88. P2=0;    //初始化

  89. /***定時器0初始化設置*****/  

  90. TMOD = 0x01;

  91.     TH0 = 0xFC;  //初值1ms

  92.     TL0 = 0x18;  //初值1ms

  93.     EA = 1;   //開總中斷

  94.     ET0 = 1;  //定時器0中斷打開

  95.     TR0 = 1;  //打開定時器 開始計時

  96. /*************************/

  97. ZZ=0;

  98. }

  99. void initADC()  //AD初始化

  100. {

  101. P1ASF=0x01;//只使用P1.0端口做為ADC輸入端.

  102. ADC_RES=0;//ADC數據寄存器清零

  103. ADC_CONTR=ADC_POWER|ADC_SPEEDLL;  //打開ADC開關并設置 轉換速率詳見STC12C52.H

  104. delay(2);  //打開ADC并延時.

  105. }

  106. uchar readADC()   //讀AD

  107. {

  108. ADC_CONTR=ADC_POWER|ADC_SPEEDLL|0|ADC_START;

  109. _nop_();

  110. _nop_();

  111. _nop_();

  112. _nop_();

  113. while(!(ADC_CONTR&ADC_FLAG));//等待轉換完成標志

  114. ADC_CONTR&=~ADC_FLAG;//close ADC

  115. return ADC_RES;//返回ADC值.

  116. }

  117. void main()

  118. {

  119. init();

  120. initADC();//初始化ADC

  121. ad_data=readADC();//開機轉換

  122. while(1)

  123. {

  124.   float j;

  125.   uchar ad_data;

  126.   while(ZZ>=500) //500毫秒讀一次ADC

  127.   {

  128.    ad_data=readADC();//讀入ADC數據

  129.    ZZ=0;

  130.   }

  131.   j=ad_data*19.5312;//由AD數據*19.5312(放大1000倍)=分流后的電壓

  132.   j=j/9890; //j(電壓)/接地電阻(實測)9890歐

  133.   j=j*60190;//j(電流)*(輸入限流電阻(實測)60190歐+接地電阻(實測)9890歐) 計算出實際輸入電壓 如果使用高精度電阻,則直接輸入電阻值

  134.   dis[4]=j/1000;

  135.   dis[3]=dis[4]/10;

  136.   dis[2]=dis[4]%10;

  137.   //h=(h-(dis[3]*10+dis[2]))*100;

  138.   dis[4]=j/10-dis[4]*100;

  139.   //dis[4]=j%100;//小數位第一位

  140.   dis[1]=dis[4]/10;

  141.   dis[0]=dis[4]%10;//小數位第二位

  142.   //delay(10000);

  143. }

  144. }

  145. void Timer0Interrupt(void) interrupt 1

  146. {

  147.     ZZ++;   //AD讀取間隔時間控制

  148. TH0 = 0xFC;

  149.     TL0 = 0x18;

  150. display(led_bcd[dis[3]],led_bcd[dis[2]],led_bcd[dis[1]],led_bcd[dis[0]]);

  151.    }
復制代碼




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

使用道具 舉報

沙發
ID:79544 發表于 2015-8-20 17:12 | 只看該作者
找不到STC12C5204ad.h的頭文件,來源分享出來嗎?謝謝
回復

使用道具 舉報

板凳
ID:100141 發表于 2015-12-23 15:58 | 只看該作者
要用LCD顯示
回復

使用道具 舉報

地板
ID:195950 發表于 2017-5-4 15:15 | 只看該作者
很強大
回復

使用道具 舉報

5#
ID:200118 發表于 2017-6-16 20:53 | 只看該作者
謝謝分享
回復

使用道具 舉報

6#
ID:238760 發表于 2017-10-12 08:54 | 只看該作者
謝謝分享
回復

使用道具 舉報

7#
ID:153371 發表于 2018-1-20 10:33 | 只看該作者
Build target 'Target 1'
compiling 30vdyb.c...
30VDYB.C(53): error C202: 'P00': undefined identifier
30VDYB.C(56): error C202: 'P00': undefined identifier
30VDYB.C(66): error C202: 'P01': undefined identifier
30VDYB.C(72): error C202: 'P01': undefined identifier
30VDYB.C(85): error C202: 'P02': undefined identifier
30VDYB.C(91): error C202: 'P02': undefined identifier
30VDYB.C(103): error C202: 'P03': undefined identifier
30VDYB.C(109): error C202: 'P03': undefined identifier
30VDYB.C(161): error C202: 'ADC_POWER': undefined identifier
30VDYB.C(171): error C202: 'ADC_POWER': undefined identifier
30VDYB.C(181): error C202: 'ADC_FLAG': undefined identifier
30VDYB.C(183): error C202: 'ADC_FLAG': undefined identifier
Target not created
回復

使用道具 舉報

8#
ID:249545 發表于 2018-1-20 22:27 | 只看該作者
可能是太普通了吧,總覺得8位的ADC沒什么用,做做課題,試驗而已,不能用來做產品,做產品要14或16位還差不多.

評分

參與人數 1黑幣 +40 收起 理由
admin + 40 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

9#
ID:334473 發表于 2018-5-27 09:16 | 只看該作者
我想問一下
j=ad_data*19.5312;//由AD數據*19.5312(放大1000倍)=分流后的電壓
這個19.5312是怎么來的
回復

使用道具 舉報

10#
ID:344278 發表于 2018-6-4 07:37 來自手機 | 只看該作者
感謝分享
回復

使用道具 舉報

11#
ID:398477 發表于 2018-11-24 12:34 來自手機 | 只看該作者
19.5312為什么要放大1000倍?
回復

使用道具 舉報

12#
ID:410591 發表于 2018-12-13 20:48 | 只看該作者
留住這一刻2014 發表于 2018-11-24 12:34
19.5312為什么要放大1000倍?

要顯示三位小數
回復

使用道具 舉報

13#
ID:378732 發表于 2018-12-26 23:04 | 只看該作者
13680172313 發表于 2018-5-27 09:16
我想問一下
j=ad_data*19.5312;//由AD數據*19.5312(放大1000倍)=分流后的電壓
這個19.5312是怎么來的

這個是分辨率吧。
回復

使用道具 舉報

14#
ID:598951 發表于 2022-7-5 11:38 | 只看該作者
Build target 'Target 1'
compiling 5204四位.c...
5204四位.c(1): warning C318: can't open file 'STC12C52.H'
5204四位.C(96): error C202: 'P2': undefined identifier
5204四位.C(100): error C202: 'P00': undefined identifier
5204四位.C(104): error C202: 'P2': undefined identifier
5204四位.C(106): error C202: 'P00': undefined identifier
5204四位.C(112): error C202: 'P2': undefined identifier
5204四位.C(116): error C202: 'P01': undefined identifier
5204四位.C(120): error C202: 'P2': undefined identifier
5204四位.C(122): error C202: 'P01': undefined identifier
5204四位.C(131): error C202: 'P2': undefined identifier
5204四位.C(135): error C202: 'P02': undefined identifier
5204四位.C(139): error C202: 'P2': undefined identifier
5204四位.C(141): error C202: 'P02': undefined identifier
5204四位.C(149): error C202: 'P2': undefined identifier
5204四位.C(153): error C202: 'P03': undefined identifier
5204四位.C(157): error C202: 'P2': undefined identifier
5204四位.C(159): error C202: 'P03': undefined identifier
5204四位.C(171): error C202: 'P2M1': undefined identifier
5204四位.C(173): error C202: 'P2M0': undefined identifier
5204四位.C(175): error C202: 'P0M1': undefined identifier
5204四位.C(177): error C202: 'P0M0': undefined identifier
5204四位.C(179): error C202: 'P0': undefined identifier
5204四位.C(181): error C202: 'P2': undefined identifier
5204四位.C(185): error C202: 'TMOD': undefined identifier
5204四位.C(187): error C202: 'TH0': undefined identifier
5204四位.C(189): error C202: 'TL0': undefined identifier
5204四位.C(191): error C202: 'EA': undefined identifier
5204四位.C(193): error C202: 'ET0': undefined identifier
5204四位.C(195): error C202: 'TR0': undefined identifier
5204四位.C(211): error C202: 'ADC_CONTR': undefined identifier
5204四位.C(221): error C202: 'ADC_CONTR': undefined identifier
5204四位.C(231): error C202: 'ADC_CONTR': undefined identifier
5204四位.C(233): error C202: 'ADC_CONTR': undefined identifier
5204四位.C(301): error C202: 'TH0': undefined identifier
5204四位.C(303): error C202: 'TL0': undefined identifier
Target not created
回復

使用道具 舉報

15#
ID:703081 發表于 2023-2-16 09:56 | 只看該作者
不做電流顯示嗎
回復

使用道具 舉報

16#
ID:537530 發表于 2023-9-23 01:33 | 只看該作者
驗證一下
回復

使用道具 舉報

17#
ID:227484 發表于 2023-9-25 16:36 | 只看該作者
要是能測電壓0-100V,能顯示電流功率就好了。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天天操天天插 | 欧美日本久久 | 午夜精 | 国产精品福利在线 | 久久精品亚洲精品国产欧美kt∨ | 久久在视频 | 91视频在线观看 | 国产精品久久久久久52avav | 亚洲一区二区三区免费视频 | 亚洲三区在线观看 | 国产区精品在线观看 | 久久久久中文字幕 | 日本精品久久久久 | 色欧美综合| 亚洲自拍偷拍视频 | 亚洲精品视频免费观看 | 国产精品亚洲第一 | 久久久观看 | 欧美成人精品一区二区三区 | 围产精品久久久久久久 | 免费国产精品久久久久久 | 亚洲精品一区二区在线观看 | 久久久久国产一区二区三区 | av在线免费网 | 一区二区免费 | 午夜99 | 欧美日韩国产一区二区三区不卡 | 久久久91 | 天天干视频网 | 亚洲天堂精品一区 | 久久国产福利 | 国产精品一区二区三区在线 | 超碰在线人人 | 久久综合影院 | 日韩欧美国产一区二区 | 国产一区二区精品在线观看 | 国产高清在线精品一区二区三区 | www日韩高清 | 在线视频 欧美日韩 | 精品欧美色视频网站在线观看 | 成人av影院 |