|
本帖最后由 dzbj 于 2017-4-11 09:48 編輯
困了 隨便弄了一下 可能有很多錯誤 電路圖畫的不細 不能直接用 缺一些下拉電阻什么的 程序沒仔細想 按思路大致寫的 大概是個意思 僅供參考
電路圖
電路圖.png (52.77 KB, 下載次數(shù): 185)
下載附件
2017-4-11 02:07 上傳
程序
uchar m=0;
bit flag_moto=0;
void moto()
{
if(m==0) //停止
{
P1.1=1;
P1.2=1;
}
if(m==1) //正轉(zhuǎn)
{
P1.1=1;
P1.2=0;
}
if(m==2) //反轉(zhuǎn)
{
P1.1=0;
P1.2=1;
}
if(m==3) //剎車
{
P1.1=0;
P1.2=0;
}
}
void main()
{
while(1)
{
moto(); //電機驅(qū)動 電機啟動后在兩點之間時設(shè)這個函數(shù)獨立控制電機繼續(xù)運動
if(key3==1) //如果 啟動開關(guān)開啟
{
if(flag_moto==0) //如果 電機工作標(biāo)記為0
{
if(key1==1) //如果 一端開關(guān)閉合
{
m=3; //剎車 這個是為了自動回程后再反復(fù)
moto(); //調(diào)用 電機驅(qū)動函數(shù)
Delay(xx); //延時50~100ms 這個函數(shù)太簡單了 沒寫出來
m=1; //正轉(zhuǎn)
moto(); //調(diào)用 電機驅(qū)動函數(shù)
flag_moto=1; //電機工作標(biāo)記置1
}
}
else //否則 即 電機工作標(biāo)記為1
{
if(key2==1) //如果 另一端開關(guān)閉合
{
m=3; //剎車
moto(); //調(diào)用 電機驅(qū)動函數(shù)
Delay(xx); //延時50~100ms 這個函數(shù)太簡單了 沒寫出來
m=2; //反轉(zhuǎn)
moto(); //調(diào)用 電機驅(qū)動函數(shù)
flag_moto=0; //電機工作標(biāo)記清零
}
}
}
else //否則 即 啟動開關(guān)關(guān)閉
{
m=0; //停止
moto(); //調(diào)用 電機驅(qū)動函數(shù)
}
}
}
|
評分
-
查看全部評分
|