51单片机软件产生PWM驱动直流电机,频率占空比可调

发布者:三青最新更新时间:2015-04-30 来源: 51hei关键字:51单片机  PWM  驱动直流电机  频率占空比 手机看文章 扫描二维码
随时随地手机看文章
做了一个实例,以前都是用AVR直接硬件生成PWM,方便快捷,几条语句的问题,驱动能力还强,从来没仔细想过如何用51单片机软件方法做一个,现在非要用51单片机做,那就直接开始制作,首先硬件焊接,软件编程,只说程序部分,程序采用占空比可调,频率可调的思路,需要用到2个定时器,1个定时器输出占空比信号数据,另个定时器标定频率,具体的程序稍后放出,其实也不太难,问题1:如何做到定时器内的软件时间低于定时器定时中断时间 ,频率低无所谓,频率要是到了20khz,这个问题就有些困难,有些if语句进入循环后可以到20ms,这个问题解决采用51单片机特有的中断嵌套解决。

问题2 :如何做到外部中断、定时器0、定时器1中断优先级分级?解决方法就是分别在各自的服务程序中处理好中断优先级。

 



 

演示的仅仅是占空比的变化,题目为:基于51单片机的出租车计价器设计(霍尔元件版本+减速、等待计时等功能)

=============

以下测试程序为版本V1.0的测试程序,非视频中的程序,没有加入PWM控制,只是脉冲检测部分的。[page]

#include
#define uchar unsigned char
#define uint unsigned int

sbit cs1=P1^0;
sbit cs2=P1^1;
sbit cs3=P1^2;
sbit cs4=P1^3;

sbit start=P2^1;
sbit turn=P2^0;

uint s,n=500;
uint m=500;
bit val=0;
bit flag=0;

uchar code tab[]={
 0xc0,0xf9,0xa4,0xb0,
 0x99,0x92,0x82,0xf8,
 0x80,0x90
};
uchar code tabpoint[]={
 0x40,0x79,0x24,0x30,
 0x19,0x12,0x02,0x78,
 0x00,0x10
};

void delay(uint ms)
{
 uint i,j;
 for (i=ms;i>0;i--)
    for (j=110;j>0;j--);
}

void delayus(uint us)
{
 while(--us);
}

void displayday()
{

 P0=tab[n/1000];
 cs1=0;
 delayus(20);
 cs1=1;
 P0=0xff;

 P0=tabpoint[n%1000/100];
 cs2=0;
 delayus(20);
 cs2=1;
 P0=0xff;

 P0=tab[n%100/10];
 cs3=0;
 delayus(20);
 cs3=1;
 P0=0xff;

 P0=tab[n%10];
 cs4=0;
 delayus(20);
 cs4=1;
 P0=0xff;
}

void displaynight()
{

 P0=tab[m/1000];
 cs1=0;
 delayus(20);
 cs1=1;
 P0=0xff;

 P0=tabpoint[m%1000/100];
 cs2=0;
 delayus(20);
 cs2=1;
 P0=0xff;

 P0=tab[m%100/10];
 cs3=0;
 delayus(20);
 cs3=1;
 P0=0xff;

 P0=tab[m%10];
 cs4=0;
 delayus(20);
 cs4=1;
 P0=0xff;
}
void displayoff()
{
 P0=0xff;
 cs1=cs2=cs3=cs4=0;
}

void main()
{
 TMOD=0x02;
 TH0=(256-1)/256;
 TL0=(256-1)%256;
 EA=1;
 ET0=1;
 TR0=1;
 EX0=1;
 IT0=0;
 while(1)
 {
  if (start==0&&flag==0)
  {
   displayday();
  }
  if (start==0&&flag==1)
  {
   displaynight();
  }
  if (start==1)
  { 
   displayoff();
  }  
 } 
}

void jisuan() interrupt 0
{
 s++;
 delay(1);
 if (val==1&&s==1000)
 {
  n=n+130;
  m=m+200;
  s=0;
  if (n==9990)
  {
   n=0;
   val=0;
  }
  if (m==9900)
  {
   m=0;
   val=0;
  }
 }
 if (s==3000)
 {
  val=1;
  s=0;
 }

}

void jiance() interrupt 1
{
 if (turn==0)
 {
  delayus(20);
  if (turn==0)
  {
   flag=!flag;
  }

 }
}

关键字:51单片机  PWM  驱动直流电机  频率占空比 引用地址:51单片机软件产生PWM驱动直流电机,频率占空比可调

上一篇:单片机写LCD1602液晶程序源码
下一篇:51单片机中断矢量表

推荐阅读最新更新时间:2024-03-16 14:00

无损快速智能充电器的设计方法
  根据马斯定理,对电池进行快速无损充电,充电电流应等于或接近于当前电池所能接受的电流大小,以保证析气率最低,减少快速充电过程中对电池的损害。近来,先进的智能控制技术被引入到快速充电技术中,用于停充电控制或充电模式选择,提高控制精度和充电效率;但没有考虑电池自身的充电特性,缺乏自适应能力,不能跟踪电池充电特性的改变而动态调节充电电流,导致充电电流大于电池能接受的电流,致使温升过高对电池造成损害。为此,需要设计一种新型的智能充电器,能对电池进行安全、无损、快速充电。   深入研究快速充电理论,从镍镉电池特性出发,创新性地提出引入自适应模糊神经网络(ANFIS)对电池在不同荷电状态下的可接受电流进行预测,从而调整实际充电电流;同时,
[单片机]
无损快速智能充电器的设计方法
51单片机入门led闪烁程序
简介:51单片机入门led闪烁程序 这一节简单讲下proteus仿真软件的使用,关键在于需要的元器件的代号,比如电阻是resistor,电容是capacitor等等,不过不用刻意去记,用得多了自然就记住了,碰到新的元器件就网上查找。 上图中的例子是单片机的最小系统以及LED灯,...... 这一节简单讲下proteus仿真软件的使用,关键在于需要的元器件的代号,比如电阻是resistor,电容是capacitor等等,不过不用刻意去记,用得多了自然就记住了,碰到新的元器件就网上查找。 上图中的例子是单片机的最小系统以及LED灯,左侧栏里显示了这一原理图的元器件列表,如果要添加某元器件,那么就单击“P”,就会弹出选择元器件的
[单片机]
<font color='red'>51单片机</font>入门led闪烁程序
10-基于51单片机的多路温度检测调节串口传输系统仿真
具体实现功能 实现功能: 1、采用四个DS18B20温度传感器测温并用LCD1602显示四路温度值; 2、按键为设置按键、加键和减键,可设置上下限温度控制范围; 3、当每路温度值超过设定的上或下限时,相应的指示灯亮; 4、当平均温度值超过设定的上限时,继电器吸合,风扇转动表示降温; 5、当平均温度值低于设定的下限时,继电器吸合,加热膜工作表示升温; 6、利用串口传输模块实时将平均温度值发送到串口调试助手。 单片机介绍 51单片是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C51为众多嵌入式
[单片机]
10-基于<font color='red'>51单片机</font>的多路温度检测调节串口传输系统仿真
基于51单片机的脑波治疗仪研制
O 引言 社会和科学技术的迅速发展给我们带来了高质量的生活,但在复杂而充满紧张的社会变革中,人们承受的压力也在增加,失眠、抑郁、狂躁、情绪不稳等许多身心问题日益严重。因此,研制一种有效的精神治疗仪具有重要的现实意义。研究发现,在某些频率下,尤其在α和θ范围内,以节奏性闪光去刺激人脑会减轻测试者的焦虑症状;同时,科学家们又对脑波的听觉驱动进行调查,即用特殊频率的声音(如节奏性滴答声、音调或漩涡声振动)来刺激大脑,然后再用EEG(electroencephalogram脑电图)设备来监视大脑,结果发现大脑的确在与声音相同频率下,以增加大脑活动来回应节奏性听觉刺激。研究发现,在声音和光的双重诱导作用下,大脑的两脑半球进入一种更结合或
[单片机]
基于<font color='red'>51单片机</font>的脑波治疗仪研制
TC1的双路PWM输出实验
******************************************** * TC1的双路PWM输出实验 * * 实验内容:由TC1产生两路独立的PWM输出 * * 芯 片:M16 * * 工作频率:内部1M * * 编 译 器:ICCAVR 6.31A * * 输 出:PD4输出PWMB,PD5输出PWMA * * 产生的PWM频率为1M/1024约1KHZ * ********************************************/ #include iom16v.h #include macros.h //延时函数:入口time 需延时的MS数 void d
[单片机]
基于MC9S12G使用编码器(控制)输出PWM
首先是编码器的原理 A和B是对应两个光敏接收管,AB之间的距离S2小于S0和S1,所以当顺时针旋转的时候,A和B对应的初始值是1 ,1,A会首先进入初始位置左侧的S0区域,即A和B的值为0,1,接下来AB同时处于S0区域,即为0,0,接下来A先进入S1区域,B仍停留在S0区域,此时的值为1,0。以这样的循环表示顺时针,相对应的也可以得出逆时针的序列。总结下来就是: 通过判断上一时刻的值与下一时刻的值可以判断旋钮的方向,驱动大概如下,未经过验证: #include xx.h //extern PWM; #define PIN_A GPIO_X #define PIN_B GPIO_Y unsigned char flag
[单片机]
基于MC9S12G使用编码器(控制)输出<font color='red'>PWM</font>
基于51单片机实现简易密码锁功能
具体功能的实现: 按下不同的按键,在LCD1602显示屏中可以出现不同的数字密码,如果输入错误,会显示ERR,反之显示ON;如果密码输错3次,则蜂鸣器报警30s同时在此期间无法输入密码。按键的功能有重置密码,取消,确认三种功能。 器件:AT89C51,排阻,LCD1602,若干电阻,电源,按键,蜂鸣器,三极管 Proteus仿真原理图: 知识介绍: ①存储器介绍: 存储器主要芯片AT24C02: AT24C02是一个2K位串行CMOS E2PROM, 内部含有256个8位字节,CATALYST公司的先进CMOS技术实质上减少了器件的功耗。AT24C02有一个16字节页写缓冲器。该器件通过IIC总线接口进行操作,有一
[单片机]
基于DDS技术三相功率可控PWM信号的FPGA实现
    0 引言     脉宽调制技术(PWM)目前广泛应用在电力、电子、微型计算机、自动控制等多个学科领域。本设计采用基于FPGA的直接数字频率合成(DDS)技术,通过D/A转换进行程控放大,实现了三相功率可控的PWM信号。 1 系统的设计原理和实现过程 1.1 DDS的设计原理     直接数字频率合成器(DDS)的组成见图1。fc为时钟频率,K为频率控制字,N为相位累加器的字长,W波形存储器地址线位数,L为ROM数据线宽度(一般也为D/A转换器的位数),fo为输出频率。相位累加器按照时钟脉fc的时序,对输入频率控制字K进行累加,相位累加器的输出作为波形存储器的地址输入。相位累加器的输出对应于该时刻合成周期信号的相位,由于
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • Linux内核移植
    实验步骤:(1)准备工作(2)修改顶层Makefile(3)修改falsh 分区(4)配置编译内核下面以Linux2 6 30 4内核移植到gec2440为例:一、准备 ...
  • S5PV210 PWM定时器
    第一节 S5PV210的PWM定时器S5PV210共有5个32bit的PWM定时器,其中定时器0、1、2、3有PWM功能,定时器4没有输出引脚。PWM定时器使用PCLK_PS ...
  • S5PV210 NAND Flash
    NAND Flash关于NAND FlashS5PV210的NAND Flash控制器有如下特点:1) 支持512byte,2k,4k,8k的页大小2) 通过各种软件模式来进行NAND Fl ...
  • S5PV210串口
    串口设置之输入输出字符S5PV210 UART相关说明 通用异步收发器简称UART,即UNIVERSAL ASYNCHRONOUS RECEIVER AND TRANSMITTER,它用来 ...
  • S5PV210按键控制LED
    原理图如图所示:查询用户手册得到:程序例子:(完整代码见“代码下载链接”)1、轮询的方式查询按键事件 *main c* 核心代码如下:while(1 ...
  • S5PV210控制蜂鸣器
  • S5PV210的启动过程
  • S5PV210点亮LED
  • S5PV210启动过程详解
何立民专栏 单片机及嵌入式宝典

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

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