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

...STC89C52单片机,用到定时器通过L298N调PWM控制一个电机的加速和减速...

提问网友 发布时间:2025-01-12 21:32
声明:本网页内容为用户发布,旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:1656858193@qq.com
3个回答
热心网友 回答时间:2025-02-14 11:00
STC89C52好象不带硬件PWM功能,建议用STC12C5A系列 和STC89C52管脚兼容,带AD和PWM功能,如果用不了那么多管脚的话,也可用STC12C5410 或STC12C5628系列 
我可以给你一个手动PWM程序供参考
STC单片机单/双键控制LED亮度PWM调光程序
输出口为P3.7(PWM0) S2 S3为亮度调节(可用来调速)按钮
液晶屏LCD1602用来显示1-20亮度或速度级数,可以去掉
 ************************************************/
#include<STC12C54.H>
#define uchar unsigned char
#define uint unsigned int
uchar vx=10;
//vx=10 在上电时为半亮度状态,可根据自己的用途及要求任意设定 vx=20为最亮
sbit rw=P1^4;
sbit rs=P1^3;
sbit lcden=P1^5;
sbit s2=P3^2;
sbit s3=P3^3;
sbit led=P3^7;
#define db P2
void Delay1ms(uint i) //1ms延时程序
{
uint j;
for(;i>0;i--)
{
for(j=0;j<125;j++)
{;}
}
}

void write_com(uchar com) //液晶屏写命令
{
db=com;
rs=0;
rw = 0;
lcden=0;
Delay1ms(10);
lcden=1;
Delay1ms(10);
lcden=0;
}
void write_date(uchar date)//液晶屏写数据
{
db=date;
rs=1;
rw = 0;
lcden=0;
Delay1ms(10);
lcden=1;
Delay1ms(10);
lcden=0;
}
void init2()//液晶屏初始化
{
rw=0;
write_com(0x38);
Delay1ms(10);
write_com(0x0f);
Delay1ms(10);
write_com(0x06);
Delay1ms(10);
write_com(0x01);
Delay1ms(10);
}

void display_brightness (uchar temp1) //I液晶屏显示程序 级数
{
uchar A1,A2;
init2();
A1=temp1/10;
A2=temp1%10;
write_com(0x80);
Delay1ms(10);
write_date(0x30+A1);
write_com(0x81);
Delay1ms(10);
write_date(0x30+A2);
}

/*******************************************************************************/
void PWM_init (void){//PWM初始化函数
CMOD=0x02; //设置PCA定时器
CL=0x00;
CH=0x00;
CCAPM0=0x42; //PWM0设置PCA工作方式为PWM方式(0100 0010)
CCAP0L=0x00; //设置PWM0初始值与CCAP0H相同
CCAP0H=0x00; // PWM0初始时为0
CR=1; //启动PCA定时器
}
/******************************************************************************/
void PWM1_set (uchar a){//PWM1占空比设置函数
CCAP0L=a; //设置值直接写入CCAP1L
CCAP0H=a; //设置值直接写入CCAP1H
}
/*****************************************************************************/
void DelayM(unsigned int a){//延时函数 1mS/次(用于1T单片机)
unsigned char n,i,j;
while(--a!=0){
for(n=1;n>0;n--)
for(j=222;j>0;j--)
for(i=12;i>0;i--);
} }
/****************************************************************************/
void main(void)
{
s2= 1;
s3 = 1;
PWM_init ();
display_brightness (vx);
while(1)
{
PWM1_set(vx*12);//数字12是配合vx调试取得的,此时vx的赋值范围约为1-20对应最暗-最亮
if (s2 == 0 )//--------减调整---------//
{
DelayM(20); //延时20毫秒消抖动
if(s2 == 0) //如果20SM后KEY_L还是0状态则确认下调键是按下的
{
vx--;
if(vx<1) //如果设定vx=20,将语句改为if(vx<1){vx=10;}则为单按键循环控制,则可去除加调整控制部分
{
vx=10;
}
}
display_brightness (vx);
while(s2 == 0);//等待键松开
}
//--------加调整---------//
if (s3== 0 )
{
DelayM(20);
if(s3 == 0)
{
vx++;
if(vx>20)
{
vx=10;
}
}
display_brightness (vx);
while(s3 == 0);
}
}
}
热心网友 回答时间:2025-02-14 11:01
什么哦。。
热心网友 回答时间:2025-02-14 10:59
控制与定时器什么关系啊,。不懂为什什么用定时器。

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

制作视频的软件有哪位,哪个最好用??? icloud照片一直更新不出来 - 知百科 蔚来校招意向后一般多久offer啊 蔚来接受offer填信息一定要去吗? 白血病治疗为什么要做“腰穿” 买房子多少岁以后不能贷款吗 房贷最小年龄是多少 我想知道贷款买房对年龄有什么要求啊?有人知道吗? 木兰妈妈中的几个孩子是谁生的 清镇三中的领导班子成员有谁 集资诈骗认定标准 集资诈骗的法律立案标准 三菱空调显示屏1闪是什么原因 三菱空调PC1交替显示是什么意思? internet的应用功能有哪些? 猫头鹰中药价值 猫头鹰市场价多少一只 上汽名爵suv自动挡报价 笨小孩剧情简介 刘德华的《笨小孩》 谢运祥主要论文 标准信封尺寸规格有几种 信封尺寸不标准可以寄吗 请问这是什么植物?买的时候说是葫芦树,不见结果啊, 街头买的葫芦树是真的还是假的? 自家种的葫芦可以辟邪吗-家里栽葫芦对主人好不好 我要的是葫芦,而她却把整颗葫芦树,叶子,藤蔓,都想着把整个娘家都给了... 浇地平后要浇多久水 如何浇地平 浇地平需要哪些材料 浇地平多久可以使用 地暖浇地平多少钱 王者荣耀 王者荣耀信誉积分怎么恢复? 王者荣耀 王者荣耀信誉积分低于80怎么恢复? 王者荣耀 王者荣耀低于80分怎么恢复信誉积分? 求《「セイシュンTIP-OFF!!~MVP黛.》罗马音歌词 真的非常 非常 非常... ...今夜はブギー·バック (Feat. 清水翔太 &amp; SHUN) 罗马音歌词... 相田丽子的角色歌 求エンノシタ☆レギュラー罗马音! 想一个作文名 绕过山河错落你是人间烟火啥意思
Top