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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STC12C5604AD電壓報警檢測模塊原理圖與單片機源程序

  [復制鏈接]
ID:284341 發表于 2018-3-2 11:35 | 顯示全部樓層 |閱讀模式
電壓檢測模塊

電路原理圖:
0.png
【簡要說明】
  • 尺寸:88mmX45mmX高15mm
    二、主要芯片:STC12C5604AD
    三、工作電壓:直流12V
  • 特點:
    1、檢測模擬量電壓范圍0~10V量程可根據客戶的需要拓寬
    2、數碼管顯示范圍0~9.999
    3、四位數碼管顯示
    4、輸入輸出接線簡單
    5、AD轉換頻率125K,10位數據轉換
    7、可設定高低壓報警值。高于(低于)某個電壓報警
  • 作用:將輸入的模擬信號(電壓或者電流)量轉換成為0~5000的數字量,由數碼管顯示出來可設置高低電壓報警、
適用場合:單片機學習、電子競賽、產品開發、工業控制、畢業設計。。。

【圖片展示】
接線時候供電的+接+12v,供電的負就接-12v,要檢測的電壓信號就信號的輸入,電壓的正極接+,負極接-。
設置說明:KEY1鍵按下進入設置模式,此時可以按KEY2和KEY3分別加減數字,這個數值是我們電壓報警的上限值。在檢測的電壓值高于這個值后繼電器就會吸和。(當然也可以是低于這個值繼電器吸和。可以通過編程改變需要的功能。)再次按KEY1鍵回到待機模式,此時數碼管上顯示的就是我們的信號的電壓值。
PCB尺寸圖
圖片展示
效果展示


單片機源程序如下:
  1. /********************************************************************
  2.                             匯誠科技實現功能:檢測電流,數碼管顯示電流值
  3. 使用芯片:STC12C5604AD
  4. 產品模塊編號:兩輸入,一路電壓檢測,三個按鍵,四位數顯,一路繼電器
  5. 晶振:外部晶振 11.0592M
  6. 編譯環境:Keil -uvision4
  7. 【聲明】此程序僅用于學習與參考,引用請注明版權和作者信息!     
  8. /********************************************************************
  9. ********************************************************************/
  10. #include "main.h"
  11. #include<math.h>
  12. #define uchar unsigned char//宏定義無符號字符型
  13. #define uint unsigned int  //宏定義無符號整型
  14. #define FOSC 11059200L
  15. #define BAUD  9600

  16. #define ADC_POWER   0x80            //ADC 電源控制位
  17. #define ADC_FLAG    0x10            //ADC 轉換結束標志位
  18. #define ADC_START   0x08            //ADC 開始轉換控制位
  19. #define ADC_SPEEDHH 0x60            //270個時鐘周期轉換一次

  20. sfr ADC_DATA=0xc6;           //70個時鐘周期轉換一次

  21. #define DUAN P2                   //P0口控制段
  22. #define WEI  P1                   //P2口控制位
  23. /********************************************************************
  24.                             初始定義
  25. *********************************************************************/
  26. //數碼管顯示段碼
  27. code uchar seg7code[11]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0XBF};
  28. uint cnt;
  29. uint16 idata setvol_H;
  30. uint volt;
  31. uint dis;
  32. uchar flag = 1;

  33. uchar start_delay;
  34. // 串行中斷程序
  35. void initInt(void)
  36. {
  37.         TMOD = 0x01;
  38.         PCON = 0;
  39.         TH0 =(655336-1000)/256;
  40.     TL0 =(655336-1000)%256;
  41.         TR0 = 1;               
  42.     ET0 = 1;
  43.         EA = 1;               
  44. }
  45. //初始化
  46. //初始化
  47. void initProg(void)
  48. {       
  49.     P2M1=0;
  50.         P2M0=0xff;
  51.         P1M1=0xf0;
  52.         P1M0=0xff;
  53.         P3M1&=0x7f;
  54.         P3M0|=0x80;
  55.         initInt(); //初始化定時器
  56. }
  57. /********************************************************************
  58.                             延時函數
  59. *********************************************************************/
  60. void delay(uint x)//延時程序 0.1秒
  61. {
  62.         uint m,n,s;
  63.         for(m=x;m>0;m--)
  64.         for(n=20;n>0;n--)
  65.         for(s=248;s>0;s--);
  66. }
  67. /********************************************************************
  68.                          AD轉換初始化程序
  69. *********************************************************************/
  70. void InitADC()
  71. {
  72.         P1M0|=0xf0;
  73.         //P1M1=0xf0;
  74.         ADC_RES=0;        //AD數據寄存器清空
  75.     ADC_CONTR=ADC_POWER | ADC_SPEEDHH | ADC_START;//打開AD電源,轉換周期XX
  76.     delay(10);                //延時
  77.         //采集7通道的
  78. }

  79. /********************************************************************
  80.                          AD轉換控制程序
  81. *********************************************************************/
  82. uint GetADCResult(uchar px)          //轉換輸出的數據 (PX為通道口)
  83. {
  84.     uint t;
  85.         ADC_CONTR=ADC_POWER | ADC_SPEEDHH | px | ADC_START;//開始轉換
  86.     _nop_();                        //延時一個機器周期
  87.     _nop_();                                                //延時一個機器周期
  88.     _nop_();                                                //延時一個機器周期
  89.     _nop_();                                                //延時一個機器周期
  90.         _nop_();                        //延時一個機器周期
  91.         _nop_();                                                //延時一個機器周期
  92.     _nop_();                                                //延時一個機器周期
  93.         _nop_();
  94.         while (!(ADC_CONTR & ADC_FLAG));//等待轉換結束
  95.         ADC_CONTR &= ~ADC_FLAG;       //關閉AD轉換
  96.          t=ADC_RES;
  97.          return t;
  98. }                  
  99. /********************************************************************
  100.                             按鍵掃描
  101. *********************************************************************/
  102. void key_scan(void)
  103. {
  104.   if(key1==0) //功能按鍵,顯示調整和實測值
  105.   {
  106.       delay(2);
  107.           if(key1==0)
  108.           {
  109.                  while(!key1);
  110.                  switch(flag)
  111.                  {
  112.                          case 1:         //進去設置模式
  113.                         flag = 2;
  114.                         break;
  115.                         case 2:          //每次設置后保存設置的值
  116.                         flag = 1;
  117.                         IapEraseSector(0);
  118.                         IapProgramByte(0,(setvol_H&0xff));
  119.                         IapProgramByte(1,(setvol_H>>8));
  120.                         break;
  121.                  }
  122.           }
  123.          
  124.   }
  125.   if(flag!=1)
  126.   {  
  127.           if(key3==0) //增加設定電流值
  128.           {
  129.              delay(5);
  130.                  if(key3 ==0)
  131.              {
  132.                   switch(flag)
  133.                          {
  134.                          case 1:
  135.                          break;
  136.                          case 2:
  137.                          setvol_H = setvol_H - 10;
  138.                          if(setvol_H<=10)
  139.                          {
  140.                                   setvol_H = 10;
  141.                          }
  142.                          break;
  143.                          }
  144.                  }
  145.                
  146.           }
  147.           if(key2 ==0)
  148.           {
  149.                    delay(5);
  150.                  if(key2 ==0)
  151.                    {
  152.                          switch(flag)
  153.                          {
  154.                          case 1:
  155.                          
  156.                          break;
  157.                          case 2:
  158.                          setvol_H = setvol_H + 10;
  159.                          if(setvol_H>=5000)
  160.                          {
  161.                                   setvol_H = 5000;
  162.                          }
  163.                          break;
  164.                          
  165.                          }
  166.                  }
  167.           }
  168.    }
  169. }
  170. /********************************************************************
  171.                             主函數
  172. *********************************************************************/
  173. void main()
  174. {       
  175.     long ad,ad1,temp;
  176.     uchar cnt1;
  177.         delay(30);
  178.         setvol_H  = (IapReadByte(1)<<8)+IapReadByte(0);//初始化報警值
  179.         initProg();//初始化
  180.     InitADC();  //AD初始化
  181.        
  182.         while(1)
  183.         {           
  184.           ad  =ad1=0;
  185.           while(++cnt1<254)
  186.           {
  187.           ad = ad+ GetADCResult(6);//2.5v基準
  188.           ad1 =ad1+ GetADCResult(7);
  189.           }
  190.           ad1 = ad1/254;
  191.           ad = ad/254;
  192.           temp = (ad1*2.5/ad)*300;        //轉換求測量值
  193.           cnt1 = 0;
  194.           volt = (uint)temp + 50;
  195.            switch(flag)        //顯示測量值
  196.            {
  197.                      case 1:
  198.                   dis = volt;
  199.                   break;
  200.                   case 2:
  201.                   dis = setvol_H; //設置高壓
  202.                   break;
  203.            }
  204.            key_scan();//按鍵掃描
  205.            if((volt<setvol_H))        //報警
  206.            {
  207.                    OUT = 0;
  208.                 start_delay = 1;
  209.            }
  210.         }
  211. }
  212. /********************************************************************
  213.                            定時器T0中斷函數
  214. *********************************************************************/
  215. void timer0(void)interrupt 1  
  216. {          
  217.          static uint cnt2,cnt3;
  218.          TH0=(65536-1000)/256;
  219.          TL0=(65536-1000)%256;
  220.          cnt++;
  221.          if(cnt>4)
  222.          {
  223.             cnt=1;       
  224.          }
  225. ……………………

  226. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

0.png 0.png

所有資料51hei提供下載:
電壓檢測模塊.rar (9.5 MB, 下載次數: 197)

評分

參與人數 1黑幣 +8 收起 理由
wdfabc + 8 很給力!

查看全部評分

回復

使用道具 舉報

ID:140183 發表于 2018-8-19 09:39 | 顯示全部樓層
太好啦。謝謝分享!!!!!
回復

使用道具 舉報

ID:370354 發表于 2018-10-23 21:59 | 顯示全部樓層
很有參考價值,謝謝分享
回復

使用道具 舉報

ID:422781 發表于 2018-11-8 09:47 | 顯示全部樓層
網上帶這款單片機的半成品很便宜,不知是否能利用下,下載參考下,可惜積分不夠。
回復

使用道具 舉報

ID:511625 發表于 2019-4-14 02:49 | 顯示全部樓層
謝謝樓主,這個我找了好久
回復

使用道具 舉報

ID:467275 發表于 2019-4-24 15:40 | 顯示全部樓層
太好啦。謝謝分享!!!!!
回復

使用道具 舉報

ID:88256 發表于 2020-8-13 01:19 | 顯示全部樓層
這個介紹得很詳細,下載一個學習看看,謝謝了!
回復

使用道具 舉報

ID:8222 發表于 2020-8-13 17:23 | 顯示全部樓層
謝謝分享。下載學習。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久不卡区 | 男人阁久久 | 欧美中文字幕一区二区三区亚洲 | 精品乱人伦一区二区三区 | 欧美一级片在线看 | 日韩欧美福利视频 | 能看的av网站 | 黄网站涩免费蜜桃网站 | 欧美一区成人 | 亚洲精品18 | 密室大逃脱第六季大神版在线观看 | 国产精品不卡视频 | 日本视频一区二区 | 国产精品成人一区 | 真人毛片 | 日本黄色免费片 | 亚洲综合一区二区三区 | 色资源在线视频 | 中文字幕乱码亚洲精品一区 | 91社区在线观看高清 | 成人av电影网 | 久久国产区 | 国产成人黄色 | 精品亚洲二区 | www.狠狠操| jav成人av免费播放 | 狠狠操狠狠操 | 久久精品国产久精国产 | 国产精品亚洲成在人线 | 日本午夜免费福利视频 | 日韩1区| 国产1区 | 国产农村妇女毛片精品久久麻豆 | 日本三级日产三级国产三级 | 浴室洗澡偷拍一区二区 | 成人在线播放网站 | 另类a v| .国产精品成人自产拍在线观看6 | 一区二区在线 | 成人精品鲁一区一区二区 | 欧美a∨|