51单片机入门 - 模拟PWM调制控制实验

发布者:神光骑士最新更新时间:2022-05-28 来源: eefocus关键字:51单片机  控制实验 手机看文章 扫描二维码
随时随地手机看文章

PWM(脉冲宽度调制)

  • 对模拟信号电平进行数字编码的方法

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

设计要求:

  • 由于AT89系列单片机没有PWM控制器,所以通过定时器产生PWM

  • 通过按钮控制P2.0输出高低电平的时间,占空比可调范围:0~100%,每次按下按钮以10%步进,通过示波器看到对应波形。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

电路功能:

第一个放大器的作用是反相,将P2.0口输出的电压反相,得到一个绝对值相等的负电压。R1和R2阻止相同,不放大。

第二个放大器的作用是放大电压,并再次反相。放大倍数是R4:R5=1000:100=10倍。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

实验现象:

  • 首次按下按钮时,n=0,占空比0%,P2.0低电平10ms,高电平0ms,电机不转。

  • 第二次按下按钮,n=1,占空比10%,P2.0低电平9ms,高电平1ms,电机转1ms停9ms。

  • 第三次按下按钮,n=2,占空比20%,P2.0低电平8ms,高电平2ms,电机转2ms停8ms。

  • ...

  • 十次循环过后n=0,重新开始

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

元件清单:

  • BUTTON

  • AT89C51

  • MOTOR

  • RES,p.s.严格对应图中阻止

  • OPAMP

  • COUNTER TIMER,p.s.COUNTER TIMER(频率计)设置OperatingMode项为frequency

  • Digital Oscilloscope

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

实现代码:


#include

typedef unsigned char uchar;

typedef unsigned int uint;

sbit PWM = P2 ^ 0;

uchar n = 0;

void Delay(uchar m)

{

    uchar a, b, c;

    while(m--)

        for (c = 19; c > 0; --c)

            for (b = 20; b > 0; --b)

                for (a = 130; a > 0; --a);

}

void PWMout(uchar n)

{

    PWM = 0; //先置PWM信号为低电平,此时可以看到在波形图上出现波峰

    Delay(10 - n); //延时10-n(ms)

    PWM = 1; //置PWM信号为高电平,此时波形图出现波谷

    Delay(n); //延时n(ms)

}

int main()

{

    EA = 1; //通过按钮中断来修改n的值

    EX0 = 1;

    IT0 = 1;

    while(1)

    {

        PWMout(n); //脉冲输出子程序

    }

}

void Int0()interrupt 0

{

    if (n == 10) //n在0-10中循环

        n = 0;

    else ++n;

}


关键字:51单片机  控制实验 引用地址:51单片机入门 - 模拟PWM调制控制实验

上一篇:51单片机入门 - 矩阵键盘行扫描实验
下一篇:单片机入门 - 模电、数电与单片机

推荐阅读最新更新时间:2024-11-10 10:16

C51单片机学习——8×8LED点阵屏学习笔记
1.8×8LED点阵屏电路图 8×8LED点阵屏由8行8列共64个LED灯组成。 通过控制其中部分LED灯亮可以组成图形或者数字,和数码管类似。 点阵分为共阳极和共阴极,行控制线接的LED阳极的点阵称为共阳极点阵,行控制线接的LED阴极的点阵称为共阴极点阵。 如何点亮LED灯:正极给高电平,负极给低电平 2.74HC595芯片 芯片查询链接 管脚说明: 3.点阵模块电路图 4.开发板1602液晶接口电路原理图 5.实践编程 ①显示一个点 参考程序: #include sbit DIO = P3^4; sbit SCK = P3^5; sbit RCK = P3^6; void mian()
[单片机]
C<font color='red'>51单片机</font>学习——8×8LED点阵屏学习笔记
19-基于51单片机的倒计时系统
具体实现功能 系统由STC89C52单片机+按键电路+复位电路+晶振电路+LCD1602显示模块构成。 具体功能: (1)六位LED显示,从59分59秒99开始倒计时; (2)倒计时精度为0.01秒,能正确地进行倒计时; (3)复位后倒计时重新回到初始状态。 设计背景 近年来随着科技的飞速发展,单片机的应用正在不断的走向深入。本文阐述了基于单片机的数字电子秒表倒计时设计,倒计时精度达0.01s了,解决了传统的由于倒计时精度不够造成的误差和不公平性,是各种体育竞赛的必备设备之一。本设计的数字电子秒表倒计时系统采用8051单片机为中心器件,利用其定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及外部中断
[单片机]
19-基于<font color='red'>51单片机</font>的倒计时系统
基于51单片机的红外线遥控程序编写代码
#include reg52.h #define uchar unsigned char #define uint unsigned int unsigned char code smg_du ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; unsigned char code smg_we ={0x08,0x18,0x28,0x38,0x48,0x58,0x68,0x78}; uchar irtime; uchar startflag; uchar irdata ; uchar bitn
[单片机]
基于FPGA和8051单片机IP核的多功能频率计的设计与实现
  频率是电信号中重要的物理量,在电子、通信系统中,信号的频率稳定度决定了整个系统的性能,准确测量信号的频率是系统设计的重要内容。   单片机广泛地应用于电子系统设计,其性价比高,大量的外围接口电路,使基于单片机的电子系统设计方便,周期缩短。然而,单片机的串行工作特点决定了它的低速性和程序跑飞,另外还存在抗干扰能力不强等缺点。EDA(Electronic Design Automation)技术以计算机为工具,在Quartus II软件平台上,对以硬件描述语言Verilog HDL/VHDL为系统逻辑描述手段完成的设计文件,自动地完成逻辑编译、化简、综合及优化、逻辑仿真,直至对特定目标芯片的适配、编译、逻辑映射和编程下载等工作,
[单片机]
基于FPGA和80<font color='red'>51单片机</font>IP核的多功能频率计的设计与实现
51单片机独立键盘原理
我这按键是机械弹性按键,所以具有弹性,按键在按下和松开的瞬间均伴随有一连串的抖动,键抖动会引起一次按键被误读多次,然后为了保证cpu对键的一次闭合仅作一次处理,所以我们必须去除抖动。去除抖动有2种,硬件消抖和软件消抖。 其中一软件消抖最方便。所以我就以软件消抖为例。 独立按键的原理图和led的原理图如上,8个led的阳极都接了vcc(vcc认为是电源正极,gnd认为是电源负极),所以只需要led的阴极接的p2i(i取值0到7)口输入低电平(即0v)对应的led就可以发亮了. 接下来看看独立按键的原理图,首先K1是和rxd管脚相连的,然后rxd管脚又是和P3^1口连接的,所以可以P3^1口是和k1开关连接的,可以
[单片机]
<font color='red'>51单片机</font>独立键盘原理
51单片机中断心得整理
如果在中断服务函数 ISR 中使用寄存器,那么必须处理好 using 的使用问题: 1、中断服务函数使用 using 指定与主函数不同的寄存器组(主函数一般使用 Register bank 0)。 2、中断优先级相同的ISR 可用 using 指定相同的寄存器组,但优先级不同的 ISR 必须使用不同的寄存器组, 在ISR 中被调用的函数也要使用 using 指定与中断函数相同的寄存器组。用reentranr指明可重入函数。 3、如果不用 using 指定,在 ISR 的入口,C51 默认选择寄存器组0,这相当于中断服务程序的入口首先执行指令: MOV PSW #0 这点保证了,没使用 using 指定的高优先级中断。可以
[单片机]
51单片机——74HC595、LED点阵、直流电动机C语言入门编程
74HC595: 是一个8位串行输入、并行输出的位移缓存器,其中并行输出为三态输出(即高电平、低电平和高阻抗)。移位寄存器和存储器是单独的时钟。数据放在SER中,在SCK的上升沿输入,在RCK 的上升沿进入到存储器中。移位寄存器有一个串行输入(DS),和一个串行输出(Q7非),和一个异步的低电平复位,存储寄存器有一个并行 8 位的,具有三态的总线输出,当 MR 为高电平,OE为低电平时,数据在SHCP上升沿进入移位寄存器,在STCP上升沿输 出到并行端口。(先发高位后发低位) 15和1到 7脚 QA--QH→并行数据输出;9脚QH非→串行数据输出;10脚SCLK非(MR)→低电平复位引脚;11脚SCK(SHCP)→ 移
[单片机]
<font color='red'>51单片机</font>——74HC595、LED点阵、直流电动机C语言入门编程
51单片机软件(程序)复位
51单片机软件复位汇编代码 POP ACC ; pop return address POP ACC ;弹出PC MOV SP,#30H ;复位后SP为07H ,这样就会复位椎栈 MOV PSW,#00H ;清寄存器 CLR A ; push 0 as new PUSH ACC ; return address to stack PUSH ACC ;重置PC=0并压到椎栈中 RETI ; execute return of interrupt ;程序又开始从0000H处开始运行,但寄存器内的值不确定! 用C51实现软件复位 方法1: void(*SoftReset)(); SoftReset=0;
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved