① 用c語言怎麼控制pwm值的改變
你用定時器pca輸出就行了,改變占空比就是給通道賦值,20ms才50HZ應該很容易實現。
邏輯上用個switch語句就好。
② 跪求!想用51單片機通過按鍵觸發來輸出一個可調占空比的的PWM波形。用C語言的
開個定時器,0.1ms的中斷周期,中斷100次為一個PWM周期,得出10ms周期的PWM波,然後在這100次的中斷中,前30次中斷讓IO口輸出高,後70次讓IO口輸出低,然後就得出了30%占空比的PWM波,根據這個方法即可實現你的要求。
③ 單片機調整占空比的c語言程序頻率越小越好
你的要求很特別,普遍都是希望頻率越高越好。你要求頻率小,那就取一個很大的定時器值,絕對可以產生很小的頻率。
④ 用51系列C語言怎樣產生可調占空比的pwm波
不知道你在匯編中用的什麼辦法,用的是定時器嗎。在C語言中也用定時器。定義好定時器,定義一個unsigned char 變數,在定時器函數中自加。不用做任何處理加到255再加會自動回0.然後判斷這個數如果小於多少出0,大於多少出1.就可以了。
⑤ 80c51單片機用兩個定時器中斷法方式2實現占空比百分之40方波的周期500us 用c語言
; 用一個 定時器0 實現占空比可調 PWM 方波HPWM EQU 100 ; 高電平計數值 改變 占空比LPWM EQU 200 ; 低電平計數值
PWMBZ BIT 20H ; 標志位ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ZD
ORG 0030H
MAIN:
MOV TMOD,#02H
MOV TH0,#HPWM SETB TR0
SETB EA
SETB ET0
SJMP $
T0ZD:
JB PWMBZ,T0ZD2 MOV TH0,#HPWM SETB PWMBZ SETB P1.0
RETI
T0ZD2: MOV TH0,#LPWM CLR PWMBZ CLR P1.0
RETI
⑥ C8051的C語言編程產生占空比可調的PWM波
viod function(PORT,PWM)
{
int i=0;
while(1)
{
i++;
if(i<PWM)
{PORT=1;
}
if(PWM<i<100)
{PORT=0;
}
if(i=100)
{i=0;
}
}
子程序,初始化什麼的,自己參照教程加進去,在main()函數里調用這個子程序,通過改變PWM,和100的值可以改變PWM頻率
⑦ 51單片機測量PWM波的占空比的C語言程序
用定時器產生程序如下:
unsigned
int
a=0
,b=10;
void
main()
{
tmod=0x01;
th0=(65536-50000)/256;
tl0=(65536-50000)%256;
ea=1;
et0=1;
tr0=1;
}
void
pwm()
interrupt
1
{
th0=(65536-50000)/256;
tl0=(65536-50000)%256
;
a++;
p1^1=0;
if(a=20)
{
a=0;
}
if(a=b)
{
p1^1=1;
}
}
調節a
,b的值即可調節占空比,程序框架就是這樣,具體自己改吧
⑧ 8052單片機 用C語言編程 由P0.2輸出脈沖寬度1μs,信號周期4μs的脈沖序列,占空比為0.25
用這個改改占空比可調 把參數改下就行
/*
占空比可調方波 晶振為12MHz:
P2^7和P2^6;接2個按鈕,
P2^7控制頻率10HZ到50HZ,按壓改變
P2^6控制佔比10%到90%,按壓改變
*/
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
typedef int int16;
typedef char int8;
typedef unsigned int uint16;
typedef unsigned char uint8;
uint16 t=0,f=100,w=50;
sbit OUT=P0^0; // 輸出端
sbit KF=P2^7; // 改變頻率按鈕
sbit KW=P2^6; // 改變占寬按鈕
void init()
{
TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
ET0=1;
TR0=1;
EA=1;
}
void time0() interrupt 1
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
t++; //t為1ms
if(t>=f) t=0;
}
void main()
{
init();
while(1)
{
if(KF==0) //改變頻率
{
f=f-10;
if(f<=10) f=100;
while(KF==0);
w=f/10;
}
if(KW==0) //改變佔比
{
w=w+f/10;
if(w>=f) w=f/10;
while(KW==0);
}
if(t<w) OUT=1; //單個周期
else OUT=0;
}
}
⑨ 這個c程序是調節PWM波占空比從10%到90%的,我想改成0%到100%應該怎麼改
0、100,就不用定時器中斷了,直接在介面輸出 0、1,即可。