1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

標題: 簡易星三角啟動電機 單片機C51程序 [打印本頁]

作者: 不倒翁.WZT    時間: 2017-1-13 15:45
標題: 簡易星三角啟動電機 單片機C51程序
當電機較大時,啟動是個必須注意的問題。比較簡單且用的很多的是星三角啟動,這里寫出了星三角啟動的核心部分。每一個IO口接上繼電器,再控制交流接觸器,就OK了。但,要注意,星、角交流接觸器一定要互鎖,否則一旦某個交流接觸器粘連,就造成短路了。

完整代碼下載:
簡易星三角啟動.zip (42.95 KB, 下載次數: 69)

部分源碼預覽:
  1. #include <reg51.h>
  2. sbit K1=P3^1;  //按鍵1,控制第1個繼電器啟動
  3. sbit K2=P3^2;  //按鍵2,控制第2個繼電器啟動
  4. sbit J1=P1^5;  //星接繼電器
  5. sbit J2=P1^6;  //星點繼電器
  6. sbit J3=P1^7;  //角繼電器
  7. void Delay_1ms(unsigned int t)
  8. {
  9.   unsigned int x, y;
  10.     for(x=0; x<t; x++)
  11.       for(y=0; y<122; y++);
  12. }
  13. void Delay_200ms(unsigned int t)
  14. {
  15.   unsigned int x, y;
  16.     for(x=0; x<t; x++)
  17.       for(y=0; y<1000; y++);
  18. }
  19. void main()    //主程序
  20. {
  21.   IT0=0;       //低電平觸發
  22.   EX0=1;       //INT1中斷允許
  23.   EA=1;        //總中斷允許
  24.   while(1)     //大循環
  25.   {
  26.     if(K1==0)  //檢測第1個按鍵是否按下
  27.     {
  28.       Delay_1ms(20);  //延時
  29.       if(K1==0)
  30.       {
  31.         while(!K1)  //檢測第1個按鍵是否松開            
  32.         J1=0;       //星接繼電器吸合
  33.         J2=0;       //星點繼電器吸合
  34.         Delay_200ms(500); //星接啟動延時時間
  35.       }
  36.       while(K2==1)           
  37.       {         
  38.         J1=1;  //星點繼電器放開
  39.         J2=1;  //星點繼電器放開
  40.         Delay_200ms(5); //星接啟動延時時間
  41.         J3=0;  //角接繼電器吸合
  42.       }
  43.     }
  44. …………余下部分請下載附件
復制代碼



作者: ahshmj    時間: 2017-1-13 18:46
就是延時10~40秒切換交流接觸器吧?
作者: YwJ    時間: 2017-1-17 08:18
好好好好好好好好
作者: YwJ    時間: 2017-1-19 07:40
正需要謝謝
作者: wcs1668    時間: 2019-9-26 15:02
不錯可以參考
作者: cycy1030    時間: 2020-12-16 13:24
你好,請問有對應的proteus圖嗎
作者: 565378860    時間: 2021-12-22 16:29
謝謝,正需要實在太及時了
作者: whhuiquan    時間: 2022-1-28 18:39
有沒有延時調節功能
作者: 我的抽油機啊    時間: 2022-11-25 23:02
cycy1030 發表于 2020-12-16 13:24
你好,請問有對應的proteus圖嗎

我也想問有沒有仿真圖呀
作者: 251932270    時間: 2025-9-4 21:54
不好使
作者: 房子    時間: 2025-9-6 17:51
#include <reg51.h>  // 硬件定義 sbit K1 = P3^1;  // 啟動按鍵 sbit J1 = P1^5;  // 主繼電器 sbit J2 = P1^6;  // 星接繼電器 sbit J3 = P1^7;  // 角接繼電器  // 全局變量 unsigned int ms_count = 0;    // 毫秒計數器(10ms/次) unsigned char sec_count = 0;  // 秒計數器(100次10ms=1s) bit star_start_flag = 0;      // 星型啟動標志 bit delay_done_flag = 0;      // 50s延時完成標志 bit switch_delay_flag = 0;    // 200ms切換緩沖延時標志  // 定時器0初始化(10ms中斷一次,12MHz晶振) void Timer0_Init(void) {     TMOD &= 0xF0;  // 清定時器0模式     TMOD |= 0x01;  // 定時器0:16位定時模式     TH0 = (65536 - 10000) / 256;  // 10ms初值(12MHz)     TL0 = (65536 - 10000) % 256;     ET0 = 1;       // 使能定時器0中斷     TR0 = 1;       // 啟動定時器0     EA = 1;        // 開總中斷 }  // 定時器0中斷服務函數(10ms觸發一次) void Timer0_ISR(void) interrupt 1 {     TH0 = (65536 - 10000) / 256;  // 重裝載10ms初值     TL0 = (65536 - 10000) % 256;      // 1. 50s星型啟動延時計數     if (star_start_flag && !switch_delay_flag) {         ms_count++;         if (ms_count >= 100) {  // 100*10ms=1s             ms_count = 0;             sec_count++;             if (sec_count >= 50) {  // 累計50s                 sec_count = 0;                 delay_done_flag = 1;             }         }     }      // 2. 200ms切換緩沖延時計數(僅在切換階段生效)     if (switch_delay_flag) {         ms_count++;         if (ms_count >= 20) {  // 20*10ms=200ms             ms_count = 0;             switch_delay_flag = 0;  // 200ms延時完成         }     } }  // 按鍵消抖(穩定檢測) bit Key_Scan(sbit key) {     if (key == 0) {         unsigned int i;         for (i = 0; i < 2000; i++);  // 20ms消抖         if (key == 0) return 1;     }     return 0; }  void main(void) {     Timer0_Init();     J1 = 1; J2 = 1; J3 = 1;  // 初始狀態:所有繼電器斷開      while (1) {         // 檢測啟動按鍵,觸發星型啟動         if (Key_Scan(K1)) {             star_start_flag = 1;             delay_done_flag = 0;             switch_delay_flag = 0;             J1 = 0;  // 主繼電器閉合             J2 = 0;  // 星接繼電器閉合             while (Key_Scan(K1));  // 等待按鍵松開         }          // 50s延時完成后,執行星→三角切換         if (star_start_flag && delay_done_flag) {             J2 = 1;  // 先斷開星接繼電器             switch_delay_flag = 1;  // 啟動200ms緩沖延時             ms_count = 0;           // 清零毫秒計數器              // 等待200ms延時完成             while (switch_delay_flag);              J3 = 0;                // 閉合角接繼電器(J1保持閉合)             star_start_flag = 0;   // 清零啟動標志         }     } }




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1