基于51单片机的PWM+L293d控制直流电机程序

发布者:科技探险者最新更新时间:2020-03-02 来源: 51hei关键字:51单片机  PWM  L293d  控制直流电机 手机看文章 扫描二维码
随时随地手机看文章

左侧开关减速,右侧加速。l293d芯片驱动直流电

单片机源代码:


#include

#define Tpwm 0xfc18//PWM周期对应的计数值1ms,基于12MHz晶振

unsigned int duty[]={0,/*0*/

0xff9c/*100us*/,0xff38/*200us*/,0xfed4/*300us*/,

0xfe70/*400us*/,0xfe0c/*500us*/,0xfda8/*600us*/,

0xfd44/*700us*/,0xfce0/*800us*/,0xfc7c/*900us*/,

0xfc18/*1000us*/};//PWM高电平时间 

unsigned char i=0;

sbit P32 = P3^2;

sbit P33 = P3^3;

sbit PWMOUT = P2^0;

sbit PWMIN1 = P2^1;

sbit PWMIN2 = P2^2;

bit flag = 1;//PWM输出电平状态,1为输出高电平时间,0为输出低电平时间    

void delay10ms(int n); 

void  main(void)

{

  PWMOUT = 0;//初始化L293D ,停止电机

  PWMIN1 = 0;

  PWMIN2 = 1;

  EA = 1;  //开总中断

  IT0 = 1;  //中断方式为跳变

  IT1 = 1;

  EX0 = 1;  //打开外部中断0  

  EX1 = 1;  //打开外部中断1 

  ET0 = 1;  //开定时器0中断允许

  TMOD = 0x01; //设置定时方式

  while(1)  //等待中断

  {

  /*在此可以实现其它任务*/

  }

}

//10ms延时函数

void delay10ms(int n)

{

    int i=0,j;

  while(n--)

  { 

     for(i=0;i<10;i++)

     {

          for(j = 0; j < 125; j++);

      }

  }

}

void keySpeeddownISR() interrupt 0 //按键中断服务程序

{

  EA = 0;   //关中断

  delay10ms(2);  //延时消抖

  if (!P32)    //确认按键按下,滤除键盘抖动干扰

  {//减少PWM高电平时间 

   if(i>0)

    i--;  

   if((TR0=1) && (i == 0))

   {   

    TR0 = 0;   

    PWMOUT = 0;

   }

  }

  EA = 1;

}

void keySpeedupISR() interrupt 2 //按键中断服务程序

{

  EA = 0;   //关中断

  delay10ms(2);  //延时消抖

  if (!P33)    //确认按键按下,滤除键盘抖动干扰

  {//增加PWM高电平时间 

   if(i<=10)

    i++;

   if((TR0 == 0) && (i > 0))   

   {//启动PWM,电机顺时针旋转

    PWMIN1 = 0;

    PWMIN2 = 1;

    PWMOUT = 1;

    TH0 = duty[i]>>8;

    TL0 = duty[i]&0xff;

    TR0 = 1;

    flag = 1;   

   }

  }

  EA = 1;

}

void T0ISR() interrupt 1 //定时器0中断服务程序

{

  EA = 0;   //关中断

  if(flag)

  {//高电平时间结束,输出低电平补齐PWM周期

   PWMOUT = 0;

   TH0 = (65535-(duty[i]-Tpwm))>>8;

   TL0 = (65535-(duty[i]-Tpwm))&0xff;

   flag = 0;  

  }else

  {//周期结束

   PWMOUT = 1;

   TH0 = duty[i]>>8;

   TL0 = duty[i]&0xff;

   flag = 1;

  } 

  EA = 1;

}


关键字:51单片机  PWM  L293d  控制直流电机 引用地址:基于51单片机的PWM+L293d控制直流电机程序

上一篇:51单片机+TM1638驱动数码管测试程序
下一篇:4*4矩阵按键《行列反转法》扫描依次显示0-f

推荐阅读最新更新时间:2024-11-07 07:32

51单片机音乐盒的仿真课程设计(8首歌)
仿真成功 初始化显示P.521061P. 显示歌曲编号。 8首歌的音乐盒课程设计。 一个很简单的程序 分享一下 仿真原理图如下 单片机源程序如下: ////////////////////////////////////////////// //51单片机音乐播放器程序 // //共三个按键:上一曲、下一曲、播放暂停 // //播放完一首歌曲无按键按下时顺序播放下一曲 // ////////////////////////////////////////////// #include REG51.H //#define sound_amount 5 //歌曲的数量
[单片机]
<font color='red'>51单片机</font>音乐盒的仿真课程设计(8首歌)
36-基于51单片机土壤湿度检测及自动浇花系统
具体实现功能 系统由STC89C52单片机+ADC0832+LCD1602液晶+yl-69土壤湿度传感器+5V抽水电机+按键+蜂鸣器构成。 具体功能: 1、液晶第一行显示实际湿度,液晶第二行显示湿度上限值与湿度下限值; 2、按键说明:减键、加键、设置键。 3、可以设置湿度上下限报警范围,具有掉电保存功能,上电无需重新设置。 4、当湿度低于下限值时,打开水泵进行抽水且声光报警,当湿度高于上限值时,自动关闭水泵停止抽水。 设计背景 在科技发达的当下,人们的生活水平也在奔向小康。在家里养养花逐渐变成了人们兴趣的一种境界,养花可以陶冶情操。因此,盆花和花圃被越来越多的人接纳。 花的生长需要水的滋养,因此。浇水的
[单片机]
36-基于<font color='red'>51单片机</font>土壤湿度检测及自动浇花系统
S5PV210 PWM
定时器PWM输出 原理图 GPD0CON, R/W, Address = 0xE020_00A0 CON, R/W, Address = 0xE250_0008 相关文章:http://blog.csdn.net/zhangxuechao_/article/details/77841192 举例 #define TCFG0 (*(unsigned int*)0xE2500000) #define TCFG1 (*(unsigned int*)0xE2500004) #define CON (*(unsigned int*)0xE2500008) #define TCNTB1 (*(unsigned int*)0xE2500
[单片机]
S5PV210 <font color='red'>PWM</font>
8051单片机原理
    8051是MCS-51系列单片机的非常典型的产品,我们用这一个代表性的型号进行系统的单片机原理讲解。     8051单片机包含中央处理器、数据存储器(RAM)、定时/计数器、程序存储器(ROM)、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别对其原理加以说明:     ·数据存储器(RAM):     8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。     ·中央处
[单片机]
80<font color='red'>51单片机</font>原理
51单片机串口通讯详解
串口,作为单片机程序开发中最常用、最方便,也是应用最广泛的程序调试方法;无论是作为调试工具,打印出调试信息,还是对功能模块进行通信,串口是每个单片机开发人员最常用的单片机外设。 由于大部分51单片机不支持在线调试功能,所以串口作为一种有效的调试功能,所以在51单片机程序开发时,无法进行在线调试,不妨可以多采用串口来进行调试。 1.串口配置 51单片机配置除了需要配置2个8位寄存器SCON、PCON外,还要配置定时器1的控制寄存器TMOD,因为串口在进行收发需要使用定时器来采样。 (1)状态控制寄存器 SCON SCON 是一个逐位定义的 8 位寄存器,用于控制串行通信的方式选择、接收和发送,指 示串口的状态,SCO
[单片机]
<font color='red'>51单片机</font>串口通讯详解
二极管在逆变器中的应用结合PWM逆变器分析
随着科技的快速发展, 逆变器 已经越来越多的出现在人们的生活中。目前,逆变器的已经在很多领域应用到,比如电脑、电视、洗衣机、空调、家庭影院、电动砂轮、电动工具、缝纫机、录像机、按摩器、风扇、照明等等。逆变器是一种能够进行电能转换的器件,当输入的是直流电是,输出就会变成交流电,而且一般是为220v50HZ正弦或方波。它与应急电源的工作原理是相反的,逆变器一般由控制逻辑、滤波电路和逆变桥组成。本文将首先介绍二极管在逆变器中的应用,然后结合一种简单的逆变器电路图,具体分析 PWM 逆变器的工作原理。 二极管在逆变器中的应用 在家电应用中,最主要的就是高效率和节能,三相无刷直流电机正是因为具有效率高、尺寸小的优点,被广泛的应用在家电设
[电源管理]
二极管在逆变器中的应用结合<font color='red'>PWM</font>逆变器分析
51单片机C语言教程(七) 表达式1
上课到这一课相隔了好长一段时间,这些日子里收到不少网友的来信支持和鼓励,要求尽快完成余下的部分。出门在外的人不得不先为吃饭而努力,似乎这也成为我的借口,以后每晚抽空打一些吧这样大家也就可以不用隔太久就能看到一些新东西。或许我的笔记并不是很正确,但我尽量的保证每课的实验都会亲自做一次,包括硬件的部分,已求不会误人子弟。 随着访问量不断的增加,网站已启用了www.cdle.net的国际域名,在这里我感谢各位一直支持磁动力工作室的朋友,更要感激身在远方一直默默支持我的女友。                     明浩 2003-7-14 晚   呵,费话少说了。上两课说了常量和变量,先来补充一个用以重新定义数据类型的的语句吧。这个语句
[单片机]
<font color='red'>51单片机</font>C语言教程(七) 表达式1
51单片机AT89C52与DS18B20的接口电路及源代码
本文将介绍51单片机AT89C52与温度传感器芯片DS18B20构成测温系统,并提供源程序供读者参考.其测量的温度精度达到0.1度,测量的温度的范围在-20度到+50度之间,用4位数码管显示出来。 硬件电路原理图 图2 AT89S52与DS18B20组成的测温系统原理图 工作原理 DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计。DS18B20产品的特点 (1)、只要求一个I/O口即可实现通信。 (2)、在DS18B20中的每个器件上都有独一无二的序列号。 (3)、实际应用中不需要外部任
[单片机]
<font color='red'>51单片机</font>AT89C52与DS18B20的接口电路及源代码
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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