參考:51微控制器按鍵控制輸出pwm的占空比
原理圖:
這兩個小燈意味著電流方向,到時候是可以控制電機的正轉反轉的
程式:
#include
#define uint unsigned int
#define uchar unsigned char
sbit pwm=p1^0;
// p1.0輸出pwm
sbit k1=p1^4;
//占空比加5
sbit k2=p1^5;
//占空比減5
sbit k3=p1^6;
//正轉
sbit k4=p1^7;
//反轉
sbit led0=p2^0;
//sbit led1=p2^1;
//uchar time;
// 定義占空比的變數
//uchar count=30;//定義占空比上限
int count=30;
void
main()
else
if(k2==0)
//占空比加5
else
if(k3==0)
//正轉
else
if(k4==0)
//反轉
else;}
}void
tim0
() interrupt 1
void
control
() interrupt 0
//中斷函式測試
}
我覺得唯一要注意的是判斷語句裡的while語句:
if
(k1==0)
//占空比減5
因為是按鈕,所以只能持續一瞬間,所以用while語句這樣執行完count+=5語句後就一直在while中迴圈,直到下一次按下按鈕後才會繼續操作,最好還能加上消抖:參考: 51微控制器 PWM
pwm,全稱pulse width modulation,譯為脈衝寬度調製。功能 改變脈衝寬度,實現不同效果。可用數碼訊號達到模擬訊號的效果 pwm在微控制器中應用廣泛,不同的應用場合意義不盡相同。先看一張圖 這是乙個週期為10ms,頻率為100hz的波形。每個週期內的高低電平脈衝寬度各不相同,這就...
51微控制器學習 PWM
pwm 脈衝寬度調調製,它是按一定規律改變脈衝序列的脈衝寬度,以調節輸出量和波形的一種調製方式。我們在控制系統中最常用的矩形pwm訊號,在控制時需要調節pwn波的占空比 指的是高電平持續時間在乙個週期時間內的百分比 當用微控制器io口輸出pwm訊號時,可採用下面三種方法 1 利用軟體延時。當高電平延...
基於51微控制器步進電機控制
1 用矩陣鍵盤設定電機目標轉速及旋轉方向,範圍 100 300 轉 分 2 測量 顯示電機實際轉速和方向 正轉顯示 p 反轉顯示 n 從實現功能上分析,軟體可以分解3個功能模組 1,步進電機控制模組 2,矩陣鍵盤輸入模組 3,顯示輸出模組 步進電機通過輸入脈衝訊號進行控制,即電機的總轉動角度由輸入脈...