1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉
標題:
簡易星三角啟動電機 單片機C51程序
[打印本頁]
作者:
不倒翁.WZT
時間:
2017-1-13 15:45
標題:
簡易星三角啟動電機 單片機C51程序
當電機較大時,啟動是個必須注意的問題。比較簡單且用的很多的是星三角啟動,這里寫出了星三角啟動的核心部分。每一個IO口接上繼電器,再控制交流接觸器,就OK了。但,要注意,星、角交流接觸器一定要互鎖,否則一旦某個交流接觸器粘連,就造成短路了。
0.png
(72.3 KB, 下載次數: 131)
下載附件
2017-1-13 22:29 上傳
完整代碼下載:
簡易星三角啟動.zip
(42.95 KB, 下載次數: 69)
2017-1-13 15:45 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
部分源碼預覽:
#include <reg51.h>
sbit K1=P3^1; //按鍵1,控制第1個繼電器啟動
sbit K2=P3^2; //按鍵2,控制第2個繼電器啟動
sbit J1=P1^5; //星接繼電器
sbit J2=P1^6; //星點繼電器
sbit J3=P1^7; //角繼電器
void Delay_1ms(unsigned int t)
{
unsigned int x, y;
for(x=0; x<t; x++)
for(y=0; y<122; y++);
}
void Delay_200ms(unsigned int t)
{
unsigned int x, y;
for(x=0; x<t; x++)
for(y=0; y<1000; y++);
}
void main() //主程序
{
IT0=0; //低電平觸發
EX0=1; //INT1中斷允許
EA=1; //總中斷允許
while(1) //大循環
{
if(K1==0) //檢測第1個按鍵是否按下
{
Delay_1ms(20); //延時
if(K1==0)
{
while(!K1) //檢測第1個按鍵是否松開
J1=0; //星接繼電器吸合
J2=0; //星點繼電器吸合
Delay_200ms(500); //星接啟動延時時間
}
while(K2==1)
{
J1=1; //星點繼電器放開
J2=1; //星點繼電器放開
Delay_200ms(5); //星接啟動延時時間
J3=0; //角接繼電器吸合
}
}
…………余下部分請下載附件
復制代碼
作者:
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