⑴ 單片機中什麼是反轉法
外接 4*4 矩陣鍵盤時,有時,會用到反轉法。
⑵ 用單片機怎麼使直流電機正反轉
單片機控制直流電機正反轉,最簡單的方法是 兩個I/O口 控制兩個繼電器(一組常開、常閉)的就可以,電機 兩個極 接 兩個繼電器 的 動觸點,兩個繼電器 的 常開點接+(電機電源),兩個常閉點接-,就可以了。
單片機控制接通一個繼電器 是正轉,控制接通另一個繼電器 是反轉,兩個繼電器都不接通(或者都接通)電機不轉。
⑶ 單片機控制交流電機正反轉的C語言程序
這個很簡單,我教你怎麼玩,下面是思路和方式
思路:有三個輸入,分別是一個按鈕、兩個霍爾感測器(也就是接近開關),我用P0.0到P0.2來代替;輸出2個或以上(這看你接什麼顯示器,如果是PC的話,就不用數字量輸出,直接串口就可以了)控制正反轉的繼電器管腳用P1.0、P1.1;
PS:顯示那塊我不知道你怎麼處理,但是需要與一個全局變數轉動次數k連接起來,另外兩個輸入接近開關選用NPN感測器或用光電隔離,總之有效信號能把管腳電壓拉低就可以了,具體硬體要注意什麼,有需要就問我
現在我們來寫程序:
#include <reg51.h> //選用晶振11.0592MHz
unsigned char k=0; //k表示正反轉次數
sbit X0=P3^2; //調節按鈕
sbit X1=P1^1; //上限位接近開關信號
sbit X2=P1^2; //下限位接近開關信號
sbit Y1=P0^0; //電機上升(注意:我使用的是管腳輸出為0時候,電機運動,這樣可以避免啟動時候,單片機自復位對電機點動的影響)
sbit Y2=P0^1; //電機下降
void delay50ms(unsigned int i)
{
unsigned int j;
for (i;i>0;i--)
for(j=46078;j>0;j--);
}
main()
{
IT0=1; //下降沿觸發
EX0=1; //開P3.2外部中斷
EA=1; //總中斷開
while(1)
while(k)
{
Y1=0; //正轉
while(X1==1); //等待正轉接近開關反應
Y1=1; //正轉停
delay50ms(1); //停止時間50ms
Y2=0; //反轉
while(X2==1); //等待反轉接近開關反應
Y2=1; //反轉停
k--; //圈數減一
}
}
void counter0(void) interrupt 0
{
k++; //外部中斷控制圈數加一
//這個位置可以加你顯示程序
}
程序已經通過測試,放上去就能用,很好玩喲,呵呵
⑷ 單片機控制電機的正反轉 程序及電路圖
這個很簡單,我教你怎麼玩,下面是思路和方式
思路:有三個輸入,分別是一個按鈕、兩個霍爾感測器(也就是接近開關),我用p0.0到p0.2來代替;輸出2個或以上(這看你接什麼顯示器,如果是pc的話,就不用數字量輸出,直接串口就可以了)控制正反轉的繼電器管腳用p1.0、p1.1;
ps:顯示那塊我不知道你怎麼處理,但是需要與一個全局變數轉動次數k連接起來,另外兩個輸入接近開關選用npn感測器或用光電隔離,總之有效信號能把管腳電壓拉低就可以了,具體硬體要注意什麼,有需要就問我
現在我們來寫程序:
#include
//選用晶振11.0592mhz
unsigned
char
k=0;
//k表示正反轉次數
sbit
x0=p3^2;
//調節按鈕
sbit
x1=p1^1;
//上限位接近開關信號
sbit
x2=p1^2;
//下限位接近開關信號
sbit
y1=p0^0;
//電機上升(注意:我使用的是管腳輸出為0時候,電機運動,這樣可以避免啟動時候,單片機自復位對電機點動的影響)
sbit
y2=p0^1;
//電機下降
void
delay50ms(unsigned
int
i)
{
unsigned
int
j;
for
(i;i>0;i--)
for(j=46078;j>0;j--);
}
main()
{
it0=1;
//下降沿觸發
ex0=1;
//開p3.2外部中斷
ea=1;
//總中斷開
while(1)
while(k)
{
y1=0;
//正轉
while(x1==1);
//等待正轉接近開關反應
y1=1;
//正轉停
delay50ms(1);
//停止時間50ms
y2=0;
//反轉
while(x2==1);
//等待反轉接近開關反應
y2=1;
//反轉停
k--;
//圈數減一
}
}
void
counter0(void)
interrupt
0
{
k++;
//外部中斷控制圈數加一
//這個位置可以加你顯示程序
}
程序已經通過測試,放上去就能用,很好玩喲,呵呵
⑸ 如何讓單片機驅動直流電機正反轉
⑹ 51單片機步進電機正反轉程序
單片機控制步進電機,我想你說的是兩相步進電機,一般是控制其相序分配的順逆從而控制正反轉,一般而言,步進電機相序分配你可以做成一個數組比如step[]={0x03,0x06,0x0c,0x09},這樣來說可以假設P0口是步進電機控制口,那麼可以按如下方式來控制: while(1) { for(i=0;i<4;i++) { if(fx==1)P0=step[i]; //正向 else P0=step[3-i]; //反向 delay(x); //x大小決定電機速度。
根據電機相數買個驅動器。然後用單片機產生脈沖來控制電機的轉動以及正反轉。單片機產生脈沖的方法和單片機控制流水燈是一樣的。ULN2003D 是驅動步進電機的驅動晶元,主要是匹配電機所需的電流。 由於是四相電機,步進電機之所以可以轉動就需要給相繞組提供連續的脈沖,所以需要4個埠來控制四相繞組的工作狀態(P15應該是不需要的),具體的編碼要看電機的拍數; 一旦明白這些,你就可以很容易編寫代碼來控制電機的轉動了,還有在脈沖間你可以設置不同的延時時間來調節電機的轉速。
⑺ 單片機控制電機正反轉動的c語言程序
首先要看你的電機是直流電機還是步進電機。直流電機就簡單了,只有兩根線,電機兩端電壓正負極改變就可以實現正轉反轉。不過要加電機驅動晶元,或者H橋電路,電機驅動晶元可以選擇L298N,加上適當的外圍電路就可以直接用單片機控制電機了。比如讓單片機P1.0 = 0,P1.1 = 1;(單片機I/0口要與電機驅動晶元的輸入腳相連)這樣的話,電機驅動晶元就會輸出一個電壓差,可以使直流電機向一個方向轉,如果使P1.0 = 1,P1.1 = 0,則電機驅動晶元會輸出一個和剛才相反的電壓,使電機向相反的方向轉動。H橋電路和電機驅動晶元的原理差不多,網上多的是。我這說的只是簡單的原理,實際中,L298N的輸入端和單片機相連的時候要加光耦隔離,否則單片機會工作不正常。步進電機就稍微復雜點,也得需要電機驅動晶元才行,只不過控制信號是按一定的規律給的,規律變了,電機轉動的方向也就變了。樓上給出的貌似是步進電機的驅動程序。
⑻ 用單片機怎樣實現電機的正反轉控制
方案一:使用開關直接控制電動機的正反轉,此種設計非常簡便易懂,便於修理與使用。
缺點:該方案直接控制易產生火花電弧,會危害操作者生命安全。 如圖1所示:
圖1中的開關為單刀雙擲開關,所以開關有左,中,右三個位置。 方案一開關控制過程如下:
將單刀雙擲開關置向左邊電動機開始正轉,將開關置向右端電動機開始反轉,將開關置向中間位置電動機停止轉動。
方案二:使用電磁繼電器進行控制電動機的正反轉。此種設計使用了電磁繼電器為了是能讓控制過程更安全可靠,順利解決了方案一的不足。
缺點:該方案不能夠滿足現代生活對自動化智能化的基本要求。
⑼ 鍵盤矩陣行反轉法的講解 有程序有注釋 但是就是不明白它怎麼實現的 我是單片機菜鳥 這是我看的第一個程序
1、行反轉法的基本概念是:
行列線的交叉位置布置按鍵。所有行和列加上拉電阻。
所有行作輸出先送低電平,然後讀入列值。 如果有任意鍵按下,那麼一定對應列值有0出現,也就知道了按下的鍵所在列。
反過來驅動這一列為0,其他列為1。把行作輸入。就可以判斷按下的鍵所在行。
2、掌握8255的介面。如何配置輸入和輸出。如何訪問他們。
根據以上兩點,和注釋,你就能讀懂程序的意圖了。
⑽ 一個關於單片機鍵盤行列反轉掃描法的問題
ucharkeyscan()//鍵盤掃描,使用行列反轉掃描法
{
ucharhigh,low,key=0;//這地方最好初始化0
P1=0x0f;
low=P1&0x0f;
if(low!=0x0f)//檢測有無按鍵按下
{
delayms(5);//去抖
low=P1&0x0f;//再讀取一次P1,不然下面的if就沒意義了
if(low!=0x0f)
{
//low=P1&0x0f;//讀入列線值沒有必要再讀取low
P1=0xf0;
high=P1&0xf0;//讀入行線值
key=high+low;
//return(key);
}
}return(key);//有鍵按下返回行列值,無鍵按下返回0
}