超简单“手把手教你写PWM程序”(基于STC89C52)


前言

学习单片机总要接触一些控制,比如电机调速,舵机驱动,步进电机驱动。这是必不可少需要用到一种控制机制———PWM(脉冲宽度调制)


提示:以下是本篇文章正文内容,下面案例可供参考

一、学习前需要掌握哪些内容?

1.掌握单片机定时器的使用方法

2.掌握c语言基础

二、开始

1.基操来一下

代码如下(示例):

#include <reg52.h>

typedef unsigned int u16;
typedef unsigned char u8; //声明变量

sbit PWM = P1^0; //定义PWM输出口

2.重头戏

以下代码就是具体实现方案

代码如下(示例):

u16 A = 0; //定义变量
u16 Speed; 
void Time0Init()	//初始化定时器
{
	TMOD|=0x01;		//配置定时器1
	TH0 = (65536-1000)/256;	//配置1ms定时
	TL0 = (65536-1000)%256;
	TR0 = 1;	
	ET0 = 1;	//打开定时器中断
	EA = 1; 	//打开总中断
		
}
//中断里面就是PWM具体实现的代码
void time()interrupt 1
{
	TH0 = (65536-1000)/256;	//配置1ms定时
	TL0 = (65536-1000)%256;
	A++;	//A开始计数,每1毫秒加一
	if(A > 1000)	//A计数到1000就清零,也就是说每经过1s就是一个
	{				//PWM周期,所以频率是1Hz
		A = 0;
	}
	//该Speed出场了,speed作为比较器跟A比较,通过调Speed来调节占空比
	if(Speed < A)
	{
		PWM = 1;	//当Speed小于A时,PWM引脚输出高电平
	}
	else
	{
		PWM = 0;	//否则就输出0
	}
	if(Speed>999)
	{
		Speed =999;
	}
	
}

所以我们只要调节Speed 的值就可以调节占空比了

Speed的值应该比A小

总结

main函数里面也比较简单

void main()
{
	Time0Init();
	while(1);
}

原理方面就介绍到这了
下篇写个蓝牙调速车的代码

学习单片机C程序设计是一项具有挑战性但也非常有趣的任务。下面我将用手把手的方式来你学习单片机C程序设计的程序。 首先,你需要准备一款可以编写C程序单片机开发板。常见的单片机开发板有Arduino、Raspberry Pi等。选择一款适合你的开发板,并确保你已经安装了相应的开发环境,如Arduino IDE或Raspberry Pi OS。 接下来,我们来学习C语言的基础知识。你可以通过阅读C语言程书籍或在线资源来学习C语言的基本语法、数据类型、运算符等。掌握好这些基础知识对于后续的单片机C程序设计至关重要。 然后,你可以从简单的实例开始编写C程序。比如,点亮一个LED灯或在LCD屏幕上显示一些文字。你可以通过查阅开发板的说明书来了解如何连接电路和控制IO口,并通过C编程来实现你的想法。 在你编写C程序的过程中,要注意一些常见的编程技巧和注意事项。比如,要注意变量的声明和作用域、函数的调用和参数传递、循环和条件语句的使用等。此外,还需要学会调试和排除程序中的错误,这对于程序的正确运行至关重要。 最后,为了提高自己的编程能力,你可以尝试解决一些更复杂的问题或挑战。比如,设计一个温度监测系统或一个遥控车。通过不断地学习和实践,你会逐渐掌握单片机C程序设计的技巧和方法。 总之,学习单片机C程序设计需要耐心和实践。通过手把手学,你可以逐步学习和掌握相关知识,并在实践中不断提升自己的编程能力。祝你学习愉快!
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值