问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

有没有51控制pwm的c语言程序?

发布网友 发布时间:2022-05-15 16:02

我来回答

3个回答

热心网友 时间:2024-02-25 03:55

1、 利用定时器控制产生占空比可变的 PWM 波
按K1,PWM值增加,则占空比减小,电机减速。
按K2,PWM值减小,则占空比增加,电机加速。
当PWM值增加到最大值或减小到最小值时,蜂鸣器将报警。

2、例程:
/*********************************************************/

#include<reg51.h>
#include<intrins.h>

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=0xfc ; //1ms延时常数
TL0=0x66 ; //频率调节

TH1=PWM ; //脉宽调节
TL1=0 ;

EA=1;
ET0=1;
ET1=1;

TR0=1 ;

while(1)
{
do{
if(PWM!=0xff)
{PWM++ ;delayms(10);}
else Beep() ;
}
while(K1==0);

do{
if(PWM!=0x02)
{PWM-- ;delayms(10);}
else Beep() ;
}
while(K2==0);
}
}

/*********************************************************/
// 定时器0中断服务程序 (频率)
/*********************************************************/
void timer0() interrupt 1
{
TR1=0 ;
TH0=0xfc ;
TL0=0x66 ;
TH1=PWM ;
TR1=1 ;
P0=0x00 ; //启动输出
}

/*********************************************************/
// 定时器1中断服务程序 (脉宽)
/*********************************************************/
void timer1() interrupt 3
{
TR1=0 ;
P0=0xff ; //结束输出
}

/*********************************************************/
//蜂鸣器子程序
/*********************************************************/

void Beep()
{
unsigned char i ;
for (i=0 ;i<100 ;i++)
{
delay(100) ;
BEEP=!BEEP ; //Beep取反
}
BEEP=1 ; //关闭蜂鸣器
delayms(100);
}

/*********************************************************/
// 延时子程序
/*********************************************************/
void delay(unsigned char t)
{
while(t--) ;
}

/*********************************************************/
// 延时子程序
/*********************************************************/
void delayms(unsigned char ms)

{
unsigned char i ;
while(ms--)
{
for(i = 0 ; i < 120 ; i++) ;
}
}

/*********************************************************/

热心网友 时间:2024-02-25 03:56

我没用中断,只是用循环实现的。

热心网友 时间:2024-02-25 03:56

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
bit flag=0;
sbit p10=P1^0;
sbit p11=P1^1;
sbit p12=P1^2;
uchar a,b,c,d;
void main (void)
{
TMOD=0x1;
EA=1;
ET0=1;
TR0=1;//定时器中断设置
while(1)
{
while(p11==0)
{
p12=1;
a=65036/256; //舵机20ms周期; 高电平加低电平65536
b=65036%256; //500 ms
c=46036/256;//19400ms
d=46036%256;
}
while(p11)
{
p12=0;
a=63236/256;// 2300ms
b=63236%256;
c=47836/256;// 17700ms
d=47836%256;
}
}
}
//中断程序/
void timer0(void) interrupt 1 //产生舵机脉冲的中断
{

flag=!flag;
if(flag==0)
{
p10=1;

TH0=a;
TL0=b;
}
else
{
p10=0;

TH0=c;
TL0=d;
}
}
以前用来控制舵机的,希望对你用用。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... 51单片机pwm问题 猫头鹰NF-F12与猫头鹰NF-P12哪个好 猫头鹰nf-p12和nf-s12a进风选哪个 arctic f12 pwm rev.2 风扇怎么样 面试时候可以戴胸贴不穿胸罩吗? 请问20以后的女生冬天不穿胸罩可以吗? 男朋友不让我以后发我只穿个胸罩的视频给他了,他什么意思啊? 王李丹妮的胸不穿胸罩是什么样子视频 哪些动画片是水墨动画片? 哪吒闹海,大闹天宫,牧笛哪个属于我国独创的水墨动画片 如何保持中国动画电影的民族性 中国水墨动画片牧笛曾获过哪些奖? 动画片《牧笛》是怎么什么改编的? 我的羽绒服里面的羽绒有点往外掉,这羽绒服如果老掉毛,有办法往里填充点么,修衣服的地方可以么? 牧笛的介绍 水墨动画片的牧笛 牧童观后感 牧笛观后感50字 羽绒服填充多少克才保暖? 牧笛观后感150字 求:用AT89C51单片机实现直流电机PWM调速原理图,protues仿真、程序 如何用eviews求总离差平方和 送礼给亲友、领导时礼盒上标签难以去除,有什么技巧除去又不伤害礼盒? 可以绘制圆柱形图帮助分析有什么的变化规律 表格做成柱状图为什么柱不见 怎么才能使鱿鱼干在炒后,吃起来不觉得特别韧??? 什么钱最值钱,是美元还是欧元? 美元值钱还是欧元? 美元值钱还是欧元值钱, 请问1美元兑换多少欧元?请问是美元值钱还是欧元值钱? 美元英镑欧元哪个值钱 英镑,欧元,美元哪个更值钱 会员卡的积分规则怎么定好? 奔跑吧兄弟第三季第十一期里面各女神跳舞时的歌曲是什么 韩国跑男有一期节目一开始每一位成员带领一组嘉宾跳舞 奔跑吧兄弟迪丽热巴跳舞的音乐 上海火车票订票电话是多少 上海火车票是提前几天预定啊? 电话订火车票的电话是多少,是从上海到云南的? 上海火车票可以电话订购然后去火车站拿票吗? 请问从上海出发的火车票有没有网上预定,或者电话预定的.如果有的话,请告知网址及电话