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

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

QQ登錄

只需一步,快速開始

搜索
查看: 12508|回復(fù): 7
收起左側(cè)

STC12C5604AD電壓報(bào)警檢測(cè)模塊原理圖與單片機(jī)源程序

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

電路原理圖:
0.png
【簡(jiǎn)要說(shuō)明】
  • 尺寸:長(zhǎng)88mmX45mmX高15mm
    二、主要芯片:STC12C5604AD
    三、工作電壓:直流12V
  • 特點(diǎn):
    1、檢測(cè)模擬量電壓范圍0~10V量程可根據(jù)客戶的需要拓寬
    2、數(shù)碼管顯示范圍0~9.999
    3、四位數(shù)碼管顯示
    4、輸入輸出接線簡(jiǎn)單
    5、AD轉(zhuǎn)換頻率125K,10位數(shù)據(jù)轉(zhuǎn)換
    7、可設(shè)定高低壓報(bào)警值。高于(低于)某個(gè)電壓報(bào)警
  • 作用:將輸入的模擬信號(hào)(電壓或者電流)量轉(zhuǎn)換成為0~5000的數(shù)字量,由數(shù)碼管顯示出來(lái)可設(shè)置高低電壓報(bào)警、
適用場(chǎng)合:?jiǎn)纹瑱C(jī)學(xué)習(xí)、電子競(jìng)賽、產(chǎn)品開發(fā)、工業(yè)控制、畢業(yè)設(shè)計(jì)。。。

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


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

  16. #define ADC_POWER   0x80            //ADC 電源控制位
  17. #define ADC_FLAG    0x10            //ADC 轉(zhuǎn)換結(jié)束標(biāo)志位
  18. #define ADC_START   0x08            //ADC 開始轉(zhuǎn)換控制位
  19. #define ADC_SPEEDHH 0x60            //270個(gè)時(shí)鐘周期轉(zhuǎn)換一次

  20. sfr ADC_DATA=0xc6;           //70個(gè)時(shí)鐘周期轉(zhuǎn)換一次

  21. #define DUAN P2                   //P0口控制段
  22. #define WEI  P1                   //P2口控制位
  23. /********************************************************************
  24.                             初始定義
  25. *********************************************************************/
  26. //數(shù)碼管顯示段碼
  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(); //初始化定時(shí)器
  56. }
  57. /********************************************************************
  58.                             延時(shí)函數(shù)
  59. *********************************************************************/
  60. void delay(uint x)//延時(shí)程序 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轉(zhuǎn)換初始化程序
  69. *********************************************************************/
  70. void InitADC()
  71. {
  72.         P1M0|=0xf0;
  73.         //P1M1=0xf0;
  74.         ADC_RES=0;        //AD數(shù)據(jù)寄存器清空
  75.     ADC_CONTR=ADC_POWER | ADC_SPEEDHH | ADC_START;//打開AD電源,轉(zhuǎn)換周期XX
  76.     delay(10);                //延時(shí)
  77.         //采集7通道的
  78. }

  79. /********************************************************************
  80.                          AD轉(zhuǎn)換控制程序
  81. *********************************************************************/
  82. uint GetADCResult(uchar px)          //轉(zhuǎn)換輸出的數(shù)據(jù) (PX為通道口)
  83. {
  84.     uint t;
  85.         ADC_CONTR=ADC_POWER | ADC_SPEEDHH | px | ADC_START;//開始轉(zhuǎn)換
  86.     _nop_();                        //延時(shí)一個(gè)機(jī)器周期
  87.     _nop_();                                                //延時(shí)一個(gè)機(jī)器周期
  88.     _nop_();                                                //延時(shí)一個(gè)機(jī)器周期
  89.     _nop_();                                                //延時(shí)一個(gè)機(jī)器周期
  90.         _nop_();                        //延時(shí)一個(gè)機(jī)器周期
  91.         _nop_();                                                //延時(shí)一個(gè)機(jī)器周期
  92.     _nop_();                                                //延時(shí)一個(gè)機(jī)器周期
  93.         _nop_();
  94.         while (!(ADC_CONTR & ADC_FLAG));//等待轉(zhuǎn)換結(jié)束
  95.         ADC_CONTR &= ~ADC_FLAG;       //關(guān)閉AD轉(zhuǎn)換
  96.          t=ADC_RES;
  97.          return t;
  98. }                  
  99. /********************************************************************
  100.                             按鍵掃描
  101. *********************************************************************/
  102. void key_scan(void)
  103. {
  104.   if(key1==0) //功能按鍵,顯示調(diào)整和實(shí)測(cè)值
  105.   {
  106.       delay(2);
  107.           if(key1==0)
  108.           {
  109.                  while(!key1);
  110.                  switch(flag)
  111.                  {
  112.                          case 1:         //進(jìn)去設(shè)置模式
  113.                         flag = 2;
  114.                         break;
  115.                         case 2:          //每次設(shè)置后保存設(shè)置的值
  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) //增加設(shè)定電流值
  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.                             主函數(shù)
  172. *********************************************************************/
  173. void main()
  174. {       
  175.     long ad,ad1,temp;
  176.     uchar cnt1;
  177.         delay(30);
  178.         setvol_H  = (IapReadByte(1)<<8)+IapReadByte(0);//初始化報(bào)警值
  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基準(zhǔn)
  188.           ad1 =ad1+ GetADCResult(7);
  189.           }
  190.           ad1 = ad1/254;
  191.           ad = ad/254;
  192.           temp = (ad1*2.5/ad)*300;        //轉(zhuǎn)換求測(cè)量值
  193.           cnt1 = 0;
  194.           volt = (uint)temp + 50;
  195.            switch(flag)        //顯示測(cè)量值
  196.            {
  197.                      case 1:
  198.                   dis = volt;
  199.                   break;
  200.                   case 2:
  201.                   dis = setvol_H; //設(shè)置高壓
  202.                   break;
  203.            }
  204.            key_scan();//按鍵掃描
  205.            if((volt<setvol_H))        //報(bào)警
  206.            {
  207.                    OUT = 0;
  208.                 start_delay = 1;
  209.            }
  210.         }
  211. }
  212. /********************************************************************
  213.                            定時(shí)器T0中斷函數(shù)
  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. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

0.png 0.png

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


評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

7#
無(wú)效樓層,該帖已經(jīng)被刪除
ID:88256 發(fā)表于 2020-8-13 01:19 | 顯示全部樓層
這個(gè)介紹得很詳細(xì),下載一個(gè)學(xué)習(xí)看看,謝謝了!
回復(fù)

使用道具 舉報(bào)

ID:8222 發(fā)表于 2020-8-13 17:23 | 顯示全部樓層
謝謝分享。下載學(xué)習(xí)。
回復(fù)

使用道具 舉報(bào)

10#
無(wú)效樓層,該帖已經(jīng)被刪除

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 狠狠影院 | 欧美日韩成人一区二区 | 一级久久久久久 | 色就是色欧美 | 欧美中文字幕在线 | 国产精品观看 | 理论片午午伦夜理片影院 | 成人国产在线观看 | 91se在线 | 日韩高清电影 | 国产精品18久久久久久白浆动漫 | 欧美成人aaa级毛片在线视频 | 在线亚洲一区二区 | 国产欧美一区二区三区日本久久久 | 久操av在线 | 91精品久久久久久久久久入口 | 日韩一区二区三区在线 | 日韩二区| 日韩精品在线网站 | 在线成人av | 中国美女撒尿txxxxx视频 | 久久亚洲一区二区三区四区 | 久久综合影院 | 成人免费淫片aa视频免费 | 天天天天天天天干 | 91成人精品| 国产在线不卡 | 最新日韩欧美 | 99热这里都是精品 | 国产精品久久久久久久久久久久冷 | 亚洲精品一区二区二区 | 日本中文字幕在线观看 | 中文字幕国产视频 | 免费观看色 | 成人精品视频 | 在线观看国产www | 仙人掌旅馆在线观看 | 欧美日韩视频在线 | 欧美三级在线 | 久久久久国产一区二区三区 | 欧美日韩国产三级 |