永发信息网

如何用pic单片机写PWM信号的产生

答案:3  悬赏:10  手机版
解决时间 2021-12-04 05:57
如何用pic单片机写PWM信号的产生
最佳答案
假设PPWM的脉宽为20,TH是高电平输出时间,TL是低电平输出时间,你只要在程序中满足TH+TL = 20就可以了
假设用延时程序来实现,delay(char i);为延时100us的程序,i为循环次数
void delay(uchar i)
{
uint x,y;
for(x=i;x>0;x--)
for(y=100;y>0;y--);
}
void main()
{
uchar pwm = 1,h = 20;
while(1)
{
RC3 =1;
delay(pwm);
RC3 = 0;
delay(h - pwm);
}
}
改变pwm的值(1-19)就可以改变输出高电平的宽度

例如:
//利作RC3控制输出PWM信号,控制电机正反转及转速,
//RC2为按键,默认为上拉高电平,当RC2按下为低电平时,RC1为电机以一定的速度转动,(松开默认为停止)长按停止
//MOS3205控制电机的管,高电平导通,低电平停止
//PIC16F877A,晶振4MHz

#include
#define uchar unsigned char
#define uint unsigned int
__CONFIG(0x3B31);
//uint initnum,Speed,motor;//定义一个溢出中断的变量
void delay_ms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=100;y>0;y--);
}
void init()//初始化接LED的RD端口为输出,及设置OPTION寄存器关闭TMR0定时计时器
{
TRISC0=0;
TRISC1=1;
TRISC2=1;
TRISC3=0;
TRISC4=0;
RC0=0;
RC1=1;
RC2=1;
RC3=0;
RC4=0;

}
void delay_us(uint i)//1表示100us,2表示200us
{
uint a,b;
for(a=i;a>0;a--)
{
for(b=7;b>0;b--);
}
}

void main()
{
uchar aa,pwm=10,h=20;
init();
while(1)////判断按键状态////长按可以调光
{
if(RC2==0)//判断RC2按下
{
delay_ms(10);
while(!RC2)
{
for(aa=0;aa<255;aa++)//当前输出延时一段时间,这样才能看出速度的变化
{
RC3=1;
delay_us(pwm);
RC3=0;
delay_us(h-pwm);
}
if(++pwm > 19)
pwm = 10;
}
}
else
{
RC3=0;
}
}
}
来自:求助得到的回答
全部回答
用CCP模块 配置成PWM模式
首先初始化CCP和Timer2模块
然后令CCPRxL = 占空比(8 bits精度)
这个是一节课的内容,这里不容易讲清楚,请看请参考北航的《PIC16系列单片机C程序设计与PROTEUS仿真》一书,里面有这个内容的实际程序与线路图。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
太原到祁县有多少公里
唯路时手表好不好啊?
从上顿度怎么去抚州五皇殿
您的储蓄卡账户向石遵华ATM转帐支出人民币474
服装商场丢了衣服 需要员工赔偿吗
2.24是什么星座的?
途观L330豪华和旗舰我的疑惑,求解答
崴脚后不得不在7-8天后参加比赛该怎么办?
谁能把我爱周婷这句话用一首藏头诗写出来
我的快件被圆通快递公司弄丢了
美瞳滑片找不到了,如果滑到身体里该怎么办?
我是1999年11月12日出生的 什么时候才年满18
分子间到了一定的距离后,引力会消失吗
我是一个13岁女生,不胖也不瘦,上胸围是90,
魔兽世界问题,大号金币可以邮寄给小号的对吧
推荐资讯
设要将序列(Q, H, C, Y, P, A, M, S, R, D,
我想在大学食堂档口做面条请问大师什么面条最
生地蒸瘦肉怎么弄
华县大明镇
锐志故障码p0018怎么解决
佛说佛名经是大藏经里面的吗?
满山的红叶像什么
求不等式组的非负整数解.
鲁荣渔2682号渔船什么“失而复得”还有人员下
谁有acdsee2019注册机啊?求分享一个
西藏气压有多低,高原反应如何防治?
耕心园瑜伽地址在什么地方,想过去办事,
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?