|
5黑幣
我想把這個程序驅(qū)動步進(jìn)電機(jī)的部分做修改,把程序改為使用ULN2003A驅(qū)動的請大家?guī)兔π薷囊幌掳桑x謝了。
沒有圖紙程序是別的網(wǎng)站復(fù)制的。
程序如下:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit fm=P2^2;//定義蜂鳴器
sbit eb=P2^3;//步進(jìn)電機(jī)
sbit ez=P2^4;//鉆孔電機(jī)
sbit led1=P2^7;//下降顯示
sbit led2=P2^6;//工作顯示
sbit led3=P2^5;//上升顯示
sbit a=P2^0;//檢測是否有板子的紅外線傳感器
sbit b=P2^1;//檢測板子是否鉆穿的紅外線傳感器
//
sbit fs=P3^7;//散熱風(fēng)扇
void delay(uint x);
uchar code table[]={0x07,0x0b,0x0d,0x0e};//定義升
uchar code table0[]={0x0e,0x0d,0x0b,0x07};//定義降
uchar i,j,n,k,num;
uint m;
void jiang()//定義降子函數(shù)
{
eb=0; //步進(jìn)電機(jī)轉(zhuǎn)動
led3=1;
for(i=0;i<4;i++)
{
P1=table0;
delay(4);
}
}
void sheng()//定義升子函數(shù)
{
eb=0;
m=180;//定義升的時間
while(m--)
{
for(i=0;i<4;i++)
{
P1=table;
delay(6);
ez=0;
}
}
}
void delay(uint x)//延時子函數(shù)
{
uint k,j;
for(k=x;k>0;k--)
for(j=110;j>0;j--);
}
void main()
{
for(i=3;i>0;i--)
{
led2=0;
fm=0;
delay(500);
led2=1;
fm=1;
delay(500);
}//開機(jī)提示
led2=0;
while(1)
{
if(a==0)//檢測是否有板子
{
ez=0;//鉆孔電機(jī)轉(zhuǎn)動
jiang();//并開始下降
led1=0;//下降指示燈亮
fs=0;//散熱風(fēng)扇開始轉(zhuǎn)動
}
else(eb=1,ez=1,led1=1);//否則步進(jìn)電機(jī),直流電機(jī)停止,下降指示熄滅。
if(b==0)//檢測板子是否鉆穿
{
delay(20);
if(b==0)//如果確認(rèn)板子鉆穿
{
fm=0;
delay(300);
fm=1;//蜂鳴器響一下
led3=0;//上升指示燈顯示
sheng();//開始上升
}
}
else(
led3=1,
fm=1,
ez=1);
}
}
|
|