用51单片机用PWM调速C语言程序怎么写·····

如题所述

给个我自己写的程序你,我试过了,通过!
#include
#define
uchar
unsigned
char
#define
uint
unsigned
int
sbit
P0_0=P0^0;
uchar
a;
/*********************************************
*
TH0和TL0是计数器0的高8位和低8位计数器,
*
计算办法:TL0=(65536-C)%256;
*
TH0=(65536-C)/256,
*
其中C为所要计数的次数即多长时间产生一次中断;
*
TMOD是计数器工作模式选择,0X01表示选用模式1,
*
它有16位计数器,最大计数脉冲为65536,最长时间
*
为1ms*65536=65.536ms
*
*********************************************/
void
init_sys(void);
/*系统初始化函数*/
void
main
(void)
{
init_sys();
while(1);
}
void
init_sys(void)
{
TMOD=0x01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
EA=1;
ET0=1;
TR0=1;
}
void
timer0(void)
interrupt
1
{
TH0=(65536-100)/256;
TL0=(65536-100)%256;
a++;
if(a<=3)
{
P0_0=1;
if(a==3)
//改变低电平持续时间
{
//也即改变占空比
P0_0=~P0_0;
}
}
else
{
P0_0=0;
if(a==5)
//改变周期
{
a=0;
}
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2020-07-02
含糊其辞,不明不白。
其实,出题人也不想,要答案。本回答被提问者采纳

...用51单片机PWM调制 输出100khz的波形 c程序??谢谢了
C语言主程序,引脚自己改啦,呵呵void main(void){TMOD=0x02;\/\/方式2,8051的是8位计数器8052系列的是16位TH0=0xfb;\/\/若是16位应该为65531TL0=0xfb;TR0=1;ET0=0;EA=0;while(1){if(TF0==1)\/\/查询寄存器状态P1^0=~P1^0 ;}} ...

单片机C语言PWM的典型程序谢谢
sbit K1 =P1^4 ; \/\/PWM值增加键 sbit K2 =P1^5 ; \/\/PWM值减少键 sbit BEEP =P3^7 ; \/\/蜂鸣器 unsigned char PWM=0x7f ; \/\/赋初值 void Beep();void delayms(unsigned char ms);void delay(unsigned char t);\/***\/ void main(){ P1=0xff;TMOD=0x21 ;TH0=0x...

求:用AT89C51单片机实现直流电机PWM调速原理图,protues仿真、程序
define uint unsigned int \/\/自定义变量 define uchar unsigned char char gw,sw,bw,qw;uchar j; \/\/定时次数,每次20ms uchar f=5; \/\/计数的次数 sbit P10=P1^0; \/\/PWM输出波形1 sbit P11=P1^1; \/\/PWM输出波形2 sbit P12=P1^2; \/\/正反转 sbit P13=P1^3; \/...

用51单片机同时实现四路PWM波,(C语言)
当然,前两种都差不多,还有一种方法供你扩展:就是用两个定时器,然后按照时间去匹配修改。当然,51单片机那精度就不说了,不太确信可以达标,一个定时器进中断了,另一个就要停一下。。BTW,个人感觉51的单片机没有很好的pwm模块,这样写了Pwm程序,别的就干不了了。建议用用带epwm模块的mcu,直接...

跪求!想用51单片机通过按键触发来输出一个可调占空比的的PWM波形。用C...
开个定时器,0.1ms的中断周期,中断100次为一个PWM周期,得出10ms周期的PWM波,然后在这100次的中断中,前30次中断让IO口输出高,后70次让IO口输出低,然后就得出了30%占空比的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;...

求大神给写一个单片机的pwm程序,,,
在编写单片机PWM(脉冲宽度调制)程序时,以下是一个参考示例,它展示了如何配置和初始化8051微控制器的PCA(可编程计数器\/振荡器)模块以产生PWM信号。请注意,此代码是为特定硬件平台(如8051微控制器)和编译器(如Keil C)编写的,可能需要根据您的具体硬件和软件环境进行调整。```c include "reg5...

如何用51单片机定时器产生一个PWM,频率20kHz,占空比可调的PWM
sbit KEY1 = P3^1; \/\/定义调速按键 sbit PWM = P1^5; \/\/定义调速端口 unsigned char CYCLE; \/\/定义周期 该数字X基准定时时间 如果是10 则周期是10 x 0.1ms unsigned char PWM_ON ;\/\/定义高电平时间 \/***\/ \/* 延时函数 *\/ \/***...

C语言写占空比50%PWM波的代码
如果想要进步最好自己写,不要老是要人家给代码之类的。给个思路你吧。有软件PWM和硬件PWM 像51单片机没有硬件PWM只能用软件PWM:1,设定定时器并开中断(定时时间为你需要的PWM频率)2,在中断函数中设定每次中断到来输出PWM的端口电平取反。硬件PWM:根据单片机的datasheet,配置好相关的寄存器并使能PWM...

求51单片机PWM程序(一个定时器产生三路PWM 可独立运作) 简单来说就...
unsigned char counter = 0;\/\/--用于计数的 void ISR_Timer0(void) interrupt 1 \/\/---我们就用定时器0来做,不用PWM硬件 { \/\/---3.3333ms中断一次 counter++;if(counter >= 10) counter = 0;if(counter >= Set_PWM0) P1_0 = 0; else P1_0 = 1;if(counter >= Set_PWM1) ...

相似回答