當前位置:首頁 » 編程軟體 » pwm編程

pwm編程

發布時間: 2023-03-06 09:28:43

⑴ 單片機C語言編程:用PWM控制直流電機轉速

#include
<AT89X51.H>
#define
uchar
unsigned
char
/*****************************************************************************
*
TH0和TL0是計數器0的高8位和低8位計數器,計算辦法:TL0=(65536-C)%256;
*
*
TH0=(65536-C)/256,其中C為所要計數的次數即多長時間產生一次中斷;TMOD是計數器*
*
工作模式選擇,0X01表示選用模式1,它有16位計數器,最大計數脈沖為65536,最長時
*
*
間為1ms*65536=65.536ms
*
******************************************************************************/
#define
V_TH0
0XFF
#define
V_TL0
0XF6
#define
V_TMOD
0X01
void
init_sys(void);
/*系統初始化函數*/
void
Delay5Ms(void);
unsigned
char
ZKB1,ZKB2;
void
main
(void)
{
init_sys();
ZKB1=40;
/*占空比初始值設定*/
ZKB2=70;
/*占空比初始值設定*/
while(1)
{
if
(!P1_1)
//如果按了+鍵,增加占空比
{
Delay5Ms();
if
(!P1_1)
{
ZKB1++;
ZKB2=100-ZKB1;
}
}
if
(!P1_2)
//如果按了-鍵,減少佔空比
{
Delay5Ms();
if
(!P1_2)
{
ZKB1--;
ZKB2=100-ZKB1;
}
}
/*對占空比值限定范圍*/
if
(ZKB1>99)
ZKB1=1;
if
(ZKB1<1)
ZKB1=99;
}
}
/******************************************************
*函數功能:對系統進行初始化,包括定時器初始化和變數初始化*/
void
init_sys(void)
/*系統初始化函數*/
{
/*定時器初始化*/
TMOD=V_TMOD;
TH0=V_TH0;
TL0=V_TL0;
TR0=1;
ET0=1;
EA=1;
}
//延時
void
Delay5Ms(void)
{
unsigned
int
TempCyc
=
1000;
while(TempCyc--);
}
/*中斷函數*/
void
timer0(void)
interrupt
1
using
2
{
static
uchar
click='0';
/*中斷次數計數器變數*/
TH0=V_TH0;
/*恢復定時器初始值*/
TL0=V_TL0;
++click;
if
(click>=100)
click='0';
if
(click<=ZKB1)
/*當小於占空比值時輸出低電平,高於時是高電平,從而實現占空比的調整*/
P1_3=0;
else
P1_3=1;
if
(click<=ZKB2)
P1_4=0;
else
P1_4=1;
}只是調占空比的,希望對你有幫助,調試好的

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:742
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:1006
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:712
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:874
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:773
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1120
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:346
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:224
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:910
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:869