问答1 问答5 问答50 问答500 问答1000
网友互助专业问答平台

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

提问网友 发布时间:2023-10-28 07:42
声明:本网页内容为用户发布,旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:1656858193@qq.com
3个回答
热心网友 回答时间:2024-05-16 19:47
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-05-16 19:47
我没用中断,只是用循环实现的。
热心网友 回答时间:2024-05-16 19:48
#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;
}
}
以前用来控制舵机的,希望对你用用。

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

去韩国大使馆申请签证是必须提前网上预约还是直接带资料去? 山地车碟刹器那里有油,发出很响的声音。曾经用过汽油,酒精清洗过,最后... 山姆会员的商品都是特供的吗?只为山姆会员店提供,不从其他渠道... 怎么一年内修改两次? 怎么一年内修改两次? M.2接口的固态硬盘快,还是PCIe接口的固态硬盘快?为什么PCIe转接板... 关于优秀的成语 汽车空调滤芯可以清洗在用吗 就写作风格来说,村上春树和莫言,谁获得2012年诺贝尔文学奖的机会最大... 怎么从无锡飞机场到无锡高铁车站??? 请问北京私立汇佳学校附近那个宾馆比较好?急求! 步步惊心丽12集百度云 华为手机如何同时登录两个4057 公司法人还能注册其他的个体营业执照吗8 秦兵马俑的神态23 2014年编辑记者资格考试网报号忘了怎么办!!着急,求大神解...1 如何把腾讯会员视频怎么转成mp4格式!求大神们赐教!着急用!5 英语句子成分214 英语中句子的构成124 东风标致207两厢车空调继电器在哪 C语言写占空比50%PWM波的代码13 请问k202/k203车次是广州东站上车还是总站上车呀? 警方可以通过手机查询之前安装的程序么支付宝之类? 警察能查的到支付宝实名吗?43 支付宝被注销了,能不能通过警方查到交易记录13 手上有好几个闲置U盘,如何开发出更多用途?4 苷键可以被酸,碱,酶水解,通常酸可水解___,碱可水解__ 兵马俑神态各异,有的……,好像……。 写多点1274 秦兵马俑还有许多神态。6 个人可以开金融类的公司么?4 我男朋友不愿意跟我提起他的前任女友的事情,这是为什么呢?是不是他... 宫斗皇妃服饰,一定要多,要原创!发到邮箱里。1 一年内怎么改第二次 在大便里发现有小白虫子是蛔虫吗 成都西站有卖口罩的嘛? 一年只能修改两次吗? 长春珍珠公馆90㎡欧式风格装修报价,多少钱,预算 单片机学习型万能红外遥控器的设计 c语言 stc89c52rc单片机 红外接收在p... 卡密转直充 西华大学一本还是二本?3
Top