89C52 PWM输出程序

发布者:TranquilMind88最新更新时间:2012-10-30 来源: 21ic 关键字:89C52  PWM  输出程序 手机看文章 扫描二维码
随时随地手机看文章

#include //Keil header file name
#include "use.h"
#include "Ver.h"

//extern void LedOut(unsigned char *pLed);
#define Pmax 55000 //55000 //42666(18.4320)
#define Ki 2.2       //i=2

//----------------------------
sbit PwinPin=P3^5;
//----------------------------

typedef union
{
    unsigned int Pwm;     //pwm的数据
    unsigned char PwmUse[2]; //[0]=H;[1]=L
}PWM;

//----------------------------
PWM       PwmData;
unsigned int PwmBak;
//----------------------------
unsigned char PwmF=0;     //输出的1,0的标志
/*****************************************
PWM计算,输出
t0=T50ms(b0/[fs-fo]+Sgn(U)*20%+a1
;T50ms=Pwm50+Ah
;B00V;Must Bo In(Fo-Fs)
*******************************************/
void PwmOut(void)
{
   float Pwm,i,k,j;
   k=Pmax+(Mp1.AH+OminH)*Ki;
   i=(PminL+Mp1.AL)*Ki;

//----------------------------
//LedOut(LedBuf);        //LED显示输出
//----------------------------
   j=(LedMenu.B-Mp1.Fo)/(Mp1.Fs-Mp1.Fo);
   if(j<0) j=0;
   if(j>1) j=1;
   Pwm=j*k; //Bo/(Fs-Fo)*Pk
   j=Pwm*0.8+k*0.2+i; //先计算
   if(Mp1.U==1) {Pwm=j;}
   else Pwm=Pwm+i;
   TR0=0;
   PwmBak=(unsigned int)Pwm; //更新数据
   TR0=1;
}
//-------------------------------
void Init_Pwm(void)
{
   PwmData.Pwm=0;
   PwmPin=0;          //输出0 (地点平)
// PwmOut();
}
//定时器0 中断处理 pwmout()
void T0_Do(void) interrupt 1{
   TR0=0;
   if(PwmF==0)  //输出高电平
   {
      PwmData.Pwm=-PwmBak;
      TH0=PwmData.PwmUse[0];
      TL0=PwmData.PwmUse[1];
      PwmPin=1;         //0 输出
      PwmF=1;
    }else{
      PwmData.Pwm=-PwmData.Pwm;
      TH0=PwmData.PwmUse[0];
      TL0=PwmData.PwmUse[1];  
      PwmPin=0;         //1 输出
      PwmF=0;
    }
    TR0=1;
}

关键字:89C52  PWM  输出程序 引用地址:89C52 PWM输出程序

上一篇:51单片机测变周期脉冲信号的简便方法
下一篇:精密程控电流源的设计及应用

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

基于UC3638的PWM控制器在TEC温控中的应用
摘要:阐述了基于UC3638的PWM双极性电流控制器构成的半导体热电致冷器(TEC)温控系统。对UC3638增强型PWM电机控制IC的特点进行了介绍。给出了由UC3638构成的TEC双极性电流驱动器的设计方法。给出的温控实验结果证明了基于UC3638的控制器是可行的。 关键词:UC3638;半导体热电致冷器;脉宽调制;双极性电流控制 0 引言 半导体热电致冷器(Thermo-E1ectric Cooler,简称TEC)具有体积小、无噪音、无污染等特点。广泛应用于航天、军事、光电、机电、医疗、汽车、通讯等领域。在某类仪器研制过程中,需要对金属块迅速加热制冷和恒温,进行热循环工艺控制,TEC能很好满足这种要求。TEC依靠热交换,
[应用]
[nrf52832][nrf52840][nrf52810][nrf52820][bsp_pwm] PWM配置和使用
PWM—脉宽调制 PWM模块可以在GPIO上产生脉宽调制信号。 该模块实现了一个上行或上下计数器,具有四个PWM通道,驱动分配的gpio。 三个PWM模块可以提供多达12个PWM通道与单独的频率控制组多达4个通道。 此外,内置的解码器和EasyDMA功能可以在没有CPU干预的情况下操纵PWM占空比。 任意占空比序列可从数据RAM中读取,并可链接以实现循环缓冲或重复进入复杂循环。 这里列出了一个PWM模块的主要特点: 固定的PWM基频与可编程时钟分频器 多达四个PWM通道,各自的极性和占空比值 沿PWM通道或中心对齐的脉冲 Data RAM中定义的多个占空比阵列(序列) 通过EasyDMA从内存直接自动和无故障更新占空比值
[单片机]
[nrf52832][nrf52840][nrf52810][nrf52820][bsp_<font color='red'>pwm</font>] <font color='red'>PWM</font>配置和使用
顺应电源管理集成趋势,芯片厂商妙招不断
在提高功率密度的需求下,用于工业的电源模块不仅向着低电压大电流的方向不懈努力,而且体积也从1/4砖、1/8砖、到1/16砖不断缩小着;与此同时,便携设备配套的电源部分在PCB板上占据的“地盘”也被挤得越来越小。 为了满足设备对电源提出的持续缩小尺寸、降低成本等苛刻要求,电源芯片厂商正尝试把线性稳压器、DC/DC转换器、PWM控制器、LDO和充电IC等不同元件集成到单个器件上,以提供完整的电源解决方案。很明显可以发现:功率集成技术越来越简化了电源的结构。 功率器件被广泛的集成 在AC/DC转换器中集成PFC或PWM,能有效减少电网污染并提高转换效率,这已经得到广泛普及。此外,很多功率器件,如MOSFET、二极管等也与PWM控制
[焦点新闻]
Cortex-M3 (NXP LPC1788)之PWM
PWM即脉宽调制,可用于输出一定占空比的方波。LPC1788有两个PWM,每个PWM可以由6路的输出,PWM1~PWM6。下面介绍使用PWM0.1输出PWM波。 1,PWM使用公共的PCLK,因此要配置系统时钟和外设时钟。之前的文章中有具体的时钟配置过程。 2,使能PWM模块。配置外设功率配置寄存器PCONP,使能PWM0的时钟控制位。 3,PWM0.1的输出管脚和P1_2管脚复用,因此要配置IOCON_P1_02寄存器,将其设置成PWM0.1的输出。 4,设置PWM的脉冲宽度,基本的原理就是比较PWM定时器计数器TC和匹配寄存器MR中的值,如果匹配我们可以通过匹配控制寄存器MCR选择操
[单片机]
STM32CubeMX系列教程4:PWM
1.PWM简介 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调试。是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。广泛应用在从测量、通信到功率控制与变换的许多领域中。 例如上图中,图b)是微处理输出的数字信号,实际上他接到电机等功率设备上时,效果相当于图a)。这就是PWM调制。例如输出占空比为50%,频率为10Hz的脉冲,高电平为3.3V.则其输出的模拟效果相当于输出一个1.65V的高电平。脉冲调制有两个重要的参数,第一个就是输出频率,频率越高,则模拟的效果越好。第二个就是占空比。占空比就是改变输出模拟效果的电压大小。占空比越大则模拟出的电压越大。 2.
[单片机]
STM32CubeMX系列教程4:<font color='red'>PWM</font>
ATmega128单片机PWM设计
脉宽调制(PWM:(Pulse Width Modulation)是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。只要带宽足够,任何模拟值都可以使用PWM进行编码。本文提出AVR单片机ATmega128的PWM的设计方法。 1.定时/计数器PWM设计要点   根据PWM的特点,在使用ATmega128的定时/计数器设计输出PWM时应注意以下几点:   1)首先应根据实际的情况,确定需
[单片机]
基于A3972的步进电机驱动模块设计
  引言    步进电机 作为执行器件,广泛用于各种类型的自动控制系统。它是一种将离散的电脉冲信号转化成相应的角位移或线位移的电磁机械装置。它输出的角位移与输入的脉冲数成正比、转速与脉冲频率成正比,是一种输出与输入脉冲对应的增量驱动元件。然而由于其步距角较大,往往满足不了某些高精密定位、精密加工等方面的要求,因此实现细分驱动是减小步距角、提高步进分辨率、增加电机运行平稳性的一种行之有效的方法。   在实际应用中,往往要求电机运转过程中在转速满足要求的同时,力矩要足够大,而电机的转速与力矩恰是一对矛盾体,转速相同时电机的起动力矩要小于运行力矩,所以实际应用中要根据电机负载力矩来确定启动频率与运行频率。   本文将给出一种基于
[工业控制]
基于PWM技术的数控恒流源电路设计
  现今,电源设备有朝着数字化方向发展的趋势。然而绝大多数数控电源设计是通过高位数的A/D和D/A芯片来实现的,这虽然能获得较高的精度,但也使得成本大为增加。本文介绍一种基于AVR单片机PWM功能的低成本高精度数控恒流源,能够精确实现0~2A恒流。   系统框图   图1为系统的总体框图。本系统通过小键盘和LCD实现人机交流,小键盘负责接收要实现的电流值,LCD 12864负责显示。AVR单片机根据输入的电流值产生对应的PWM波,经过滤波和功放电路后对压控恒流元件进行控制,产生电流,电流再经过采样电阻到达负载。同时,对采样电阻两端信号进行差分和放大,送入ADC。单片机根据采集到的值调整PWM输出,从而调整了输出电流。如此反复,
[单片机]
基于<font color='red'>PWM</font>技术的数控恒流源电路设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

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

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