关于MCS-51单片机实现PWM的方法
PWM 是“脉冲宽度调制”的意思。
PWM 实际上是在单片机的某个引脚输出一系列的矩形波,其周期一般是固定的;而其高电平、低电平所占用的时间,是可以受控调整的。高电平、低电平所占用的时间之比,称为占空比,其值为0~1之间。PWM 的应用很广,简单的说,它可以控制灯光的亮度、可以控制直流电机的转速,甚至还可以输出语音信号。
新型的单片机,往往都含有硬件的 PWM 模块,编写程序就很简单;而老式的MCS-51系列,就不具备这个条件。
其实,在没有 PWM 硬件的单片机上实现 PWM,也并不难,只需一个定时器,令其工作在中断方式即可。下面以网上的一个题目为例,说明实现 PWM 方法。
题目链接:http://zhidao.baidu.com/question/170790790.html?push=core
题目:AT89C52单片机输出可调 PWM 波。
要求:
1。单片机的晶振是12MHz,输出周期为1s。
2。用两个开关控制占空比的增加和减少,分20等级。针对这个题目,做而论道设计了一个简单的实验电路:
在 P2 口的 8 条线输出 PWM 波形;
在 /INT1、/INT0 外接了两个按键,用来调整占空比;
在 P0 口外接了两个 BCD 数码显示器,用来显示当前的占空比的等级。
实验的时候,可以使用示波器来观察 P2 口输出的波形。
如果把 PWM 波形的频率提高,也可以用 LED 观察到渐亮渐暗的效果,目前看,只是闪烁的时间发生变化。
//程序如下:
//==========================================
#include
unsigned int a, b;
//------------------------------------------
void main()
{
TMOD = 0x01; //T0定时方式1
TH0 = (65536-50000) / 256; //50ms@12MHz
TL0 = (65536-50000) % 256;
TR0 = 1; ET0 = 1;
EX0 = 1; EX1 = 1;
IT0 = 1; IT1 = 1;
EA = 1; a = 0;
b = 10;
while(1);
}
//------------------------------------------
void time0() interrupt 1
{
TL0 = (65536-50000) % 256;
TH0 = (65536-50000) / 256; //50ms@12MHz
a++;
if(a == 20) a = 0; //在这里调整周期.
if(a < b) P2 = 0xff; //在这里调整占空比.
else P2 = 0x00;
P0 = ((b / 10) << 4) + b % 10; //显示占空比等级
}
//------------------------------------------
void X0_INT() interrupt 0
{
b++;
if(b > 19) b = 19; //占空比等级最大为19
}
//------------------------------------------
void X1_INT() interrupt 2
{
b--;
if(b < 1) b = 1; //占空比等级最小为1.
}
//==========================================
关键字:MCS-51 单片机 PWM
引用地址:
关于MCS-51单片机实现PWM的方法
推荐阅读最新更新时间:2024-03-16 14:43
MCU中如何通过外设提高CPU效率
现代 MCU 添加了广泛的新功能,正确使用这些功能可以显着提高应用效率。特别是使用智能外设,可以独立于 CPU 运行的外设,允许 CPU 并行执行其他任务或进入低功耗睡眠模式。使用这些技术中的任何一种都将提高整体处理效率并节省电力。 DMA 控制器 在进行基于 MCU 的设计时,首先遇到的智能外设之一是直接存储器访问 (DMA) 控制器。这个专门的硬件块可以在内存和/或外围设备之间传输数据,而无需 CPU 参与每次传输。先进的 DMA 控制器,例如包含在STMicroelectronics 的 STM32F4系列可以通过使用灵活的数据流分配和传输管理功能进一步减轻 CPU 的负担。让我们更详细地了解其中的一些功能,
[单片机]
单片机控制步进电机正反转
步进电机模块: 原理图: 两相六线步进电机,步进角7.5度,额定工作电压12V,完全可以使用5V做实验。 以下是引用 gguoqing 在 2006-6-11 15:10:02 的发言: 使用伟纳定做的20CM杜邦头实验连接线,可以很方便的将ME300与步进电机模块连接起来。 http://www.willar.com/shop_view.asp?id=47 在ME300B上使用时,可从J7上引出5V电源到步进电机模块J1上。 将J1(ICE)上的P1.0-P1.3用杜邦头实验连接线连接到步进电机模块J2上。 产品详情: ht
[单片机]
液晶显示模块与8031单片机的接口电路及编程
液晶显示器(LCD)具有功耗低、体积小、重量轻、超薄等许多其他显示器无法比拟的优点,近年来被广泛用于单片机控制的智能仪器、仪表和低功耗电子产品中。LCD可分为段式LCD、字符式LCD和点阵式LCD。其中,段式LCD和字符式LCD只能用于字符和数字的简单显示,不能满足图形曲线和汉字显示的要求;而点阵式LCD不仅可以显示字符、数字,还可以显示各种图形、曲线以及汉字、动画,并且可以实现屏幕滚动、反转、闪烁等功能,用途十分广泛。本文主要阐述点阵式液晶显示模块QPYD-03与单片机8031的接口及编程方法。 QPYD-03液晶显示控制器是北京精电蓬远显示技术有限公司开发的液晶显示控制IC。其特点为: 控制彩色320*3*240
[单片机]
Spansion针对汽车推Traveo™ MCU 家族,紧扣最新行业标准
如今汽车电子的发展趋势是怎样的?就这个问题,Spansion公司微控制器与模拟业务部门市场部营销总监王钰介绍到,汽车的模型库的开发工具会越来越重视,从人机界面HMI来联想,对于图形控制的芯片的需求越来越多,从过去的2维的图形控制芯片,到现在三维图形控制芯片,以及越来越多的客户追求高清显示,所有的这些都需要图形控制芯片来完成;另外汽车对环境的保护要求越来越高,EV和HEV会是整个汽车行业发展趋势;所有的EVHEV其中最关键最核心的技术就是电源控制和电机系统,以及低功耗,这个是对所有的车载的芯片所要求的一个最基本的参数。另外,还有一个比较大的趋势就是多核系统管理会越来越普遍,特别是在目前的生产里面,双核系统会是将来的主流,特别是在
[单片机]
单片机DAC0832+LM324波形发生器程序设计
单片机源程序如下: #include reg51.h #include string.h #define uchar unsigned char #define uint unsigned int sbit RS=P3^0; sbit RW=P3^1; sbit EN=P3^3; sbit K1=P2^0; sbit K2=P2^1; sbit K3=P2^2; sbit K4=P2^3; sbit K5=P2^4; uchar WaveChoice=1; uchar ys=30; uchar i,a=0; uchar sqar_num=128; uint freq; uchar code Sin ={
[单片机]
51单片机学习笔记——基于汇编语言(1)
该系列文章基于80C51单片机,Keil2(这个版本是比较古老,不过keil2和keil5其实区别不大) 1、80C51系列单片机硬件结构 在开始讲单片机之前,相信大家已经对进制转换与码值已经有了一定的了解,如果完全没学过,可以随便弄本C语言啥的书,一般应试教育的计算机入门类教材第一章都会讲这个2333。 学单片机我们就要先了解一下它的硬件结构 1.1 内部结构 单片机的硬件组成有 1、1个8bit的CPU 2、1个片内振荡器和时钟电路 3、程序存储器,4KB(其实我用的有64K,相信大部分人也是,4k估计是Intel原始设计)的掩膜ROM,用于存放程序、原始数据和表格 4、数据存储器 5、64KB总线扩展控制器(
[单片机]
C51单片机程序编写注意事项
1.特殊功能寄存器的操作注意事项 在操作特殊功能寄存器时,要注意其他各位的影响。 例如,TMOD定时器的操作。 它控制定时器0和定时器1,高四位控制定时器1,低四位控制定时器0。当我们用字节操作其内容时,一次赋值就是改变其八位的全部内容,。此时,若定时器0在另一个函数中应用,经过次操作就改变了定时器0的内容,是不允许的。所以,最好用位操作的方式。 例: 字节操作:TMOD = 0x01; 改为: 位操作: TMOD |= 0x01;TMOD &= 0xfd; 2.定时器定时的计算: 要定时NS,那么, NS = T * (NT / TSOC ) NS:N秒,NT:是几T的单片机,例如51是12T的,那么NT =
[单片机]
图形点阵式液晶显示模块与51单片机的接口设计
引 言 液晶作为一种显示器件,以其特有的优势正广泛应用于仪器、仪表、电子设备等低功耗产品中。以往的测控仪器的显示部分大都采用LED式液晶显示屏进行参数设定和结果显示,其显示信息量少、形式单一、人机交互性差、操作人员要求较高。而液晶显示器(LCD)具有功耗低、体积小、质量轻、超薄和可编程驱动等其他显示方式无法比拟的优点,不仅可以显示数字、字符,还可以显示各种图形、曲线、及汉字,并且可实现屏幕上下左右滚动、动画、闪烁、文本特征显示等功能;人机界面更加友好,使用操作也更加灵活、方便,使其日益成为智能仪器仪表和测试设备的首选显示器件。本文在介绍以ST7920为驱动器的WGM-12832液晶显示模块的引脚、结构、功能的基础上,详述了与AT
[单片机]