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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

ACS712+單片機實現電流檢測與報警的電路原理圖與源碼

  [復制鏈接]
跳轉到指定樓層
樓主
ID:139086 發表于 2018-3-24 11:18 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
ACS712電流檢測與報警模塊系統的外觀:


ACS712電路原理圖:



ACS712單片機源程序如下:
  1. 實現功能:檢測電流,數碼管顯示電流值
  2. 使用芯片:STC12C2054AD  
  3. 產品模塊編號:kzs1211-75150k (雙路輸入,繼電器單路輸出,三個按鍵,四位數碼管模塊)
  4. 晶振:片內晶振

  5. #include<STC12C56.h>                 //庫文件
  6. #include <intrins.h>
  7. #define uchar unsigned char//宏定義無符號字符型
  8. #define uint unsigned int  //宏定義無符號整型
  9. #define FOSC 11059200L
  10. #define BAUD  9600

  11. #define ADC_POWER   0x80            //ADC 電源控制位
  12. #define ADC_FLAG    0x10            //ADC 轉換結束標志位
  13. #define ADC_START   0x08            //ADC 開始轉換控制位
  14. #define ADC_SPEEDLL 0x00            //1080個時鐘周期轉換一次
  15. #define ADC_SPEEDL  0x20            //810 個時鐘周期轉換一次
  16. #define ADC_SPEEDH  0x40            //540個時鐘周期轉換一次
  17. #define ADC_SPEEDHH 0x60            //270個時鐘周期轉換一次

  18. sfr ADC_DATA=0xc6;           //70個時鐘周期轉換一次
  19. void display(void);                  //顯示函數
  20. void t_to_dis(uint num);

  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. //數碼管位控制端
  29. sbit wei1=P1^0;
  30. sbit wei2=P1^1;
  31. sbit wei3=P1^2;
  32. sbit wei4=P1^3;  
  33. //繼電器輸出控制端                           
  34. sbit OUT=P3^7;
  35. //按鍵輸入控制端
  36. sbit key1=P3^2;
  37. sbit key2=P3^3;
  38. sbit key3=P3^4;
  39. //兩路輸入控制端可做ad采樣
  40. sbit IN1=P1^6;
  41. sbit IN2=P1^5;
  42. sbit IC=P1^7;
  43. uchar numb[4];              //定義字符串用于數值轉換
  44. uint tcnt;
  45. uchar cnt,times,date;
  46. uint ad,ad2;
  47. float ad1;
  48. /********************************************************************
  49.                             命令定義
  50. *********************************************************************/
  51. #define CMD_IDLE     0         //EEPROM無操作
  52. #define CMD_READ     1         //讀取字節
  53. #define CMD_PROGRAM  2         //寫入字節
  54. #define CMD_ERASE    3         //擦除字節
  55. /********************************************************************
  56.                        編程周期由晶振決定
  57. *********************************************************************/
  58. #define ENABLE_IAP 0X83         //編程周期由晶振決定(如果<12MHZ選用此項)
  59. #define IAP_ADDRESS 0X0000                      //內部EEPROM地址

  60. /********************************************************************
  61.                             操作函數
  62. *********************************************************************/
  63. void IapIdle()
  64. {
  65.         IAP_CONTR=0;
  66.         IAP_CMD=0;
  67.         IAP_TRIG=0;
  68.         IAP_ADDRH=0X80;
  69.         IAP_ADDRL=0;
  70. }
  71. /********************************************************************
  72.                             讀取一個字節函數
  73. *********************************************************************/
  74. uchar IapReadByte(uint addr)
  75. {
  76.         uchar dat;  
  77.         IAP_CONTR=ENABLE_IAP;
  78.         IAP_CMD=CMD_READ;
  79.         IAP_ADDRL=addr;
  80.         IAP_ADDRH=addr>>8;
  81.         IAP_TRIG=0X46;
  82.         IAP_TRIG=0XB9;
  83.         _nop_();
  84.         _nop_();
  85.         _nop_();
  86.         dat=IAP_DATA;
  87.         IapIdle();
  88.         return dat;
  89. }
  90. /********************************************************************
  91.                             寫入一個字節函數
  92. *********************************************************************/
  93. void IapProgramByte(uint addr,uchar dat)
  94. {
  95.         IAP_CONTR=ENABLE_IAP;
  96.         IAP_CMD=CMD_PROGRAM;
  97.         IAP_ADDRL=addr;
  98.         IAP_ADDRH=addr>>8;
  99.         IAP_DATA=dat;
  100.         IAP_TRIG=0X46;
  101.         IAP_TRIG=0XB9;
  102.         _nop_();
  103.         _nop_();
  104.         _nop_();
  105.         IapIdle();
  106. }
  107. /********************************************************************
  108.                             擦除一個字節函數
  109. *********************************************************************/
  110. void IapEraseSector(uint addr)
  111. {
  112.         IAP_CONTR=ENABLE_IAP;
  113.         IAP_CMD=CMD_ERASE;
  114.         IAP_ADDRL=addr;
  115.         IAP_ADDRH=addr>>8;
  116.         IAP_TRIG=0X46;
  117.         IAP_TRIG=0XB9;
  118.         _nop_();
  119.         _nop_();
  120.         _nop_();
  121.         IapIdle();
  122. }
  123. /********************************************************************
  124.                             延時函數
  125. *********************************************************************/
  126. void delay(uint x)//延時程序 0.1秒
  127. {
  128.         uint m,n,s;
  129.         for(m=x;m>0;m--)
  130.         for(n=20;n>0;n--)
  131.         for(s=248;s>0;s--);
  132. }
  133. /********************************************************************
  134.                          AD轉換初始化程序
  135. *********************************************************************/
  136. void InitADC()
  137. {
  138.     P1=P1M0|=0xf0;
  139.         P1M1=0x00;
  140.         ADC_DATA=0;        //AD數據寄存器清空
  141.     ADC_CONTR=ADC_POWER|ADC_SPEEDHH|ADC_START;//打開AD電源,轉換周期XX
  142.     delay(10);                //延時
  143. }
  144. /********************************************************************
  145.                          AD轉換控制程序
  146. *********************************************************************/
  147. uint GetADCResult(uchar px)          //轉換輸出的數據 (PX為通道口)
  148. {
  149.     uint t;
  150.         ADC_CONTR=ADC_POWER | ADC_SPEEDHH | px | ADC_START;//開始轉換
  151.     _nop_();                        //延時一個機器周期
  152.     _nop_();                                                //延時一個機器周期
  153.     _nop_();                                                //延時一個機器周期
  154.     _nop_();                                                //延時一個機器周期
  155.         while (!(ADC_CONTR & ADC_FLAG));//等待轉換結束
  156.         ADC_CONTR &= ~ADC_FLAG;       //關閉AD轉換
  157.         t=(ADC_DATA<<2)|ADC_LOW2;
  158.         return t;
  159. }                  
  160. /********************************************************************
  161.                            IO口初始化函數
  162. *********************************************************************/   
  163. void init_all(void)
  164. {               
  165.     P2M1=0;
  166.         P2M0=0xff;
  167.         P1M1=0x80;
  168.         P1M0=0x0f;
  169.         P3M1&=0x7f;
  170.         P3M0|=0x80;
  171. }
  172. /********************************************************************
  173.                            定時器T1初始化
  174. *********************************************************************/
  175. void timer0init(void)
  176. {
  177.          TMOD=0X01;                  //設定定時器工作方式
  178.          TH0 =(655336-1000)/256;
  179.      TL0 =(655336-1000)%256;
  180.          ET0=1;
  181.          TR0=1;
  182.          EA=1;
  183. }
  184. /********************************************************************
  185.                             主函數
  186. *********************************************************************/
  187. void main()
  188. {         
  189.    
  190.     init_all();         //初始化IO
  191.         timer0init();//定時器初始化
  192.    // InitADC();  //AD初始化
  193.           date=IapReadByte(0);
  194.          
  195.         while(1)
  196.         {  
  197.              if(key1==0)
  198.                  {
  199.                    delay(20);
  200.                    if(key1==0)
  201.                    {
  202.                             while(!key1);
  203.                          date++;
  204.                          if(date>=25)
  205.                            date=25;
  206.                          IapEraseSector(0);
  207.                          IapProgramByte(0,date);
  208.                    }
  209.                  }
  210.                   if(key2==0)
  211.                  {
  212.                    delay(20);
  213.                    if(key2==0)
  214.                    {
  215.                             while(!key2);
  216.                          date--;
  217.                          if(date<=2)
  218.                            date=2;
  219.                          IapEraseSector(0);
  220.                          IapProgramByte(0,date);
  221.                    }
  222.                  }
  223.                   t_to_dis(date);   //數值變換
  224. //                 ad=GetADCResult(7);
  225. //                 if(times>=250)
  226. //                 {
  227. //                    times=0;
  228. //                        ad=ad-2;
  229. //                    ad1=(ad*50.0)/1024-25;
  230. //                    ad1=ad1*100;
  231. //                    t_to_dis(ad1);   //數值變換
  232. //                 }
  233.     }
  234. }
  235. /********************************************************************
  236. ……………………

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


所有資料51hei提供下載:
電流報警模塊資料.rar (2.37 MB, 下載次數: 705)


評分

參與人數 2黑幣 +10 收起 理由
shadeb + 5 很給力!
LIUXue12345634 + 5 贊一個!

查看全部評分

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

使用道具 舉報

沙發
ID:321828 發表于 2018-7-20 09:57 | 只看該作者
看看,,,,,
回復

使用道具 舉報

板凳
ID:81365 發表于 2018-7-20 16:49 | 只看該作者
XUEXI學習了
回復

使用道具 舉報

地板
ID:377614 發表于 2018-7-22 22:59 | 只看該作者
這個可以作為商業用途嗎?我感覺蠻好的
回復

使用道具 舉報

5#
ID:394505 發表于 2018-9-6 13:31 | 只看該作者
學習了!!!
回復

使用道具 舉報

6#
ID:381274 發表于 2018-9-18 13:46 | 只看該作者
這個能測最低多少瓦的負載?感性負載測量測量準確么
回復

使用道具 舉報

7#
ID:415940 發表于 2018-10-26 18:41 | 只看該作者
請教版主    板子鏈接有嗎 我搜不到
回復

使用道具 舉報

8#
ID:409028 發表于 2018-11-12 19:51 | 只看該作者
        很給力!
回復

使用道具 舉報

9#
ID:409028 發表于 2018-11-12 19:52 | 只看該作者

XUEXI學習了哈哈哈
回復

使用道具 舉報

10#
ID:465191 發表于 2019-1-9 16:05 | 只看該作者
感謝分享  學習了
回復

使用道具 舉報

11#
ID:465191 發表于 2019-1-10 10:02 | 只看該作者
這個很有用 真是太及時了
回復

使用道具 舉報

12#
ID:277230 發表于 2019-1-21 19:33 | 只看該作者
正好在找這一塊的資料。 謝謝大佬,仔細閱讀肯定有長進~
回復

使用道具 舉報

13#
ID:79874 發表于 2019-1-22 14:31 | 只看該作者
能提供畫的PCB啊
回復

使用道具 舉報

14#
ID:486105 發表于 2019-3-7 11:02 | 只看該作者
過來看看
回復

使用道具 舉報

15#
ID:490231 發表于 2019-3-29 14:04 | 只看該作者
非常不錯的
回復

使用道具 舉報

16#
ID:190160 發表于 2019-4-11 16:46 | 只看該作者
感謝分享,學習了
回復

使用道具 舉報

17#
ID:190160 發表于 2019-4-11 16:50 | 只看該作者
值得學習,研究研究這個算法
回復

使用道具 舉報

18#
ID:110606 發表于 2019-4-17 14:21 | 只看該作者
已下載,學習啦,謝謝
回復

使用道具 舉報

19#
ID:448229 發表于 2019-5-14 16:10 | 只看該作者
學習了學習了
回復

使用道具 舉報

20#
ID:139201 發表于 2019-5-27 10:18 | 只看該作者
剛好有用到,學習學習
回復

使用道具 舉報

21#
ID:579642 發表于 2019-7-8 01:07 | 只看該作者
主要學習下交流電流的檢測算法
回復

使用道具 舉報

22#
ID:653902 發表于 2019-12-2 00:22 | 只看該作者
現在正好再使用ACS712模塊方面遇到一些問題,學習一下樓主的經驗。
回復

使用道具 舉報

23#
ID:668067 發表于 2019-12-19 10:04 | 只看該作者
匯編語言可以轉換這個嗎?
回復

使用道具 舉報

24#
ID:682323 發表于 2020-4-29 12:01 | 只看該作者
不錯,學習的好東西
回復

使用道具 舉報

25#
ID:60263 發表于 2020-5-9 14:47 | 只看該作者
ACS712模塊,精度高嗎?可以用來做電流表嗎?
回復

使用道具 舉報

26#
ID:142485 發表于 2020-5-10 20:16 | 只看該作者
不錯,報警功能怎么設置
回復

使用道具 舉報

27#
ID:669690 發表于 2020-6-11 22:23 | 只看該作者
下載看看,謝謝
回復

使用道具 舉報

28#
ID:214628 發表于 2020-9-17 09:39 | 只看該作者
謝謝樓主,正好需要研究一下。
回復

使用道具 舉報

29#
ID:752974 發表于 2021-1-6 15:47 | 只看該作者
樓主不來了!
回復

使用道具 舉報

30#
ID:890524 發表于 2021-4-9 13:26 | 只看該作者
大佬666在學習ACS712怎么用,就刷到這個帖子了
回復

使用道具 舉報

31#
ID:912508 發表于 2021-4-26 16:16 | 只看該作者
謝謝大佬,剛好在看ACS712怎么用
回復

使用道具 舉報

32#
ID:454295 發表于 2021-5-6 11:01 | 只看該作者
求個原理圖文件
回復

使用道具 舉報

33#
ID:70035 發表于 2021-6-22 15:57 | 只看該作者
看了,51單片機的簡單應用。不過感謝樓主共享。
回復

使用道具 舉報

34#
ID:1070487 發表于 2023-4-8 13:34 | 只看該作者
acs712模塊電流傳感器
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜伦理影院 | 激情 一区 | 欧美高清视频一区 | 国产一区不卡在线观看 | 人妖videosex高潮另类 | 国产精品视频999 | 一区二区日韩精品 | 久久久99国产精品免费 | 国产成人99久久亚洲综合精品 | 国产精品毛片一区二区三区 | 亚洲天堂精品久久 | 羞羞午夜| 国产精品久久久久久中文字 | 亚洲精品一区二区二区 | av男人的天堂在线 | 国产精品一区二区在线 | 亚洲高清在线观看 | 日韩在线不卡 | 国产伦精品一区二区三区照片91 | 亚洲性视频网站 | 色婷婷av777 av免费网站在线 | 狠狠躁天天躁夜夜躁婷婷老牛影视 | 日本精品视频 | 欧美日韩第一页 | 国产精品久久国产精品 | 欧美老妇交乱视频 | 999国产精品视频免费 | 亚洲国产精久久久久久久 | 99视频在线 | 99成人 | 久久亚洲一区 | 新91| 日本爱爱视频 | 国产精品国产三级国产aⅴ中文 | 国产第一页在线播放 | 狠狠干美女 | 国产91丝袜 | 国产999精品久久久久久 | 欧美成人激情视频 | 免费v片在线观看 | 网站黄色av |