一、直流电机工作原理
1、直流电机正反转
——通过高低电平反转实现
2、电机调速通过PWM波实现
——PWM通过51单片机定时器输出,实现占空比调整。
二、功能程序
端口定义
#include sbit PWM1=P2^0; //电机输入1 sbit PWM2=P2^1; //电机输入2 sbit tiaosu=P2^2; //调速按键 sbit stop=P2^3; //停止按键 sbit left=P2^4; //逆时针按键 sbit right=P2^5; //顺时针按键 变量定义 typedef unsigned int uint; typedef unsigned char uchar; uint t0=25000,t1=25000;//初始占空比为1/2 t0低电平,t1高电平 uint a=25000;//设置定时器装载初值 uchar flag=1; //选择不同的装载初值 uchar dflag; //左右转标志位 uchar sudu; //速度 ms延时函数 void delay(uchar z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } 定时器和中断函数 void time_init() { TMOD=0X01; //定时器0 方式1 TH0=(65535-a)/256; TL0=(65535-a)%256; //装载初值 ET0=1; //开启定时器中断使能 EA=1; //开启总中断 TR0=0; } void timer0()interrupt 1 using 0 { if(flag) { flag=0; PWM1=PWM2=1; a=t0; TH0=(65535-a)/256; TL0=(65535-a)%256; //重新装载初值 } else { flag=1; if(dflag==0) { PWM1=0;PWM2=1;; } else { PWM1=1;PWM2=0; } a=t1; TH0=(65535-a)/256; TL0=(65535-a)%256; //重新装载初值 } } 按键扫描函数 void keyscan() { if(stop==0) { TR0=0; PWM1=PWM2=1;//关闭定时器,便可停转电机 } if(left==0) { TR0=1; dflag=1; } if(right==0) { TR0=1; dflag=0; } if(tiaosu==0) { delay(5); //消抖 if(tiaosu==0) { while(tiaosu==0) sudu++; if(sudu==1) { t0=20000; t1=30000; //占空比3/5 } if(sudu==2) { t0=15000; t1=35000; //占空比7/10 } if(sudu==3) { t0=10000; t1=40000; //占空比4/5 } if(sudu==4) { t0=5000; t1=45000; //占空比9/10 } if(sudu==5) { sudu=0; } } } } 主函数 void main() { time_init();//定时器初始化 while(1) { keyscan(); //按键扫描 } }
上一篇:51实验1:通过位定义控制任意灯的亮灭
下一篇:51驱动两相四线步进电机
推荐阅读最新更新时间:2024-11-17 07:20
推荐帖子
- 初学者求助一段VHDL代码
- 下面这段代码在quartusII中编译的时候提示语法错误,请问错在哪里?libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityaddress3960isport(CLOCK,RESET:instd_logic;address_data1:o
- xmllf FPGA/CPLD
- 大家好啊 谁能介绍用户接口电路芯片PBL38710与CPLD的接口电路?
- PBL38710/1在用户电路中的连接如图3所示。用户话机通过TIP,RING线与OVP相连,然后接至PBL38710/1的TIPX和RINGX引脚。OVP为过压保护器,可防止电话线上的过压(主要是对地保护与抗雷电保护等)。PBL38710/1完成用户摘挂机检测、馈电、2/4线变换、振铃等功能。图4为语言发送支路,由PBL38710/1的VTX端输出的话音信号送至运放TL082放大输出(VIT1)。图5为在话音接收支路,接收的模拟信号(VIR1)经运放TL082放大输入到PBL38710/
- bhyangyong FPGA/CPLD
- 【开源第一弹】小车机器人传感器设计
- 简单开源小车机器人系统设计(本设计在开源机器人开发路线图中第一步,几乎没有技术难点。仅为协调小组成员分工方式,相互协同工作能力,验证组织架构形式可行度;以及初步实现小组成员间的交流,活跃小组氛围) 目标:系统采用专用芯片做传感器管理,中控芯片可更换的方式。开发低端入门级学生用车型机器人。使开发者可以摆脱底层开发设计,注重算法层面的开发学习,提高开发效率。 整机包括4个方面:传感器设计、管理层设计、控制
- kevinrobot DIY/开源硬件专区
- 亚嵌《嵌入式linux系统暑期强化班》全面启动
- 亚嵌《嵌入式linux系统暑期强化班》全面启动亚嵌-10年嵌入式技术研究6年嵌入式技术专业教学亚嵌强调技术的严肃性、并向所有尊重技术、热爱技术的人们致敬!权威嵌入式研发机构**************************************************************************************************嵌入式职业生涯第一步!----《嵌入式linux系统暑期强化班》开课时间:2009
- woshijingshui Linux与安卓
- 关于modelsim仿真问题!
- 本帖最后由guaiguaidou于2015-7-2710:48编辑 最近学习特权同学的《深入浅出玩转FPGA》一书,想对里面的一个实验进行功能仿真(在书的p60)但一直都得不到理想情况,请问这个是什么原因?这是verilog代码:modulehandshack(inputclk,inputrst_n,inputreq,//请求信号,高电平有效inputdatain,outputack,//应答信号,高电平
- guaiguaidou FPGA/CPLD
- ADPCM音频信号数据解码的问题!
- 我用OKIMSM7570-01的芯片,采集的声音信号格式为G726,32kbps,数据采集正常,但在用播放G726的专用软件工具却无法放出清晰的声音,郁闷很久了,请高手解答!!!ADPCM音频信号数据解码的问题!没人会吗?播PCM或者其他音频流也不可以吗?难道是硬件故障?可能是硬件故障,查查谢谢各位,已经解决,原来是A律和U律的问题
- 随心所欲007 嵌入式系统
设计资源 培训 开发板 精华推荐
- EVAL-ADN2525-NTZ,用于 ADN2525 的光学评估套件 a 10 Gbps、有源反向端接、差分激光二极管驱动器
- LTC3634IFE 降压稳压器的典型应用电路,具有使用两个输入电源的 2 相 VTT 终端
- 先进的 TCA 热插拔控制器简化了配电
- DC1998A,用于 LTC3892EUHF 双路同步降压控制器的演示板,6V = VIN = 60V,VOUT1 = 5V @ 8A,VOUT2 = 12V @ 5A
- AD8506ARMZ-REEL四极巴特沃斯滤波器在血糖仪中的典型应用电路
- KIT34845EPEVME: Evaluation Kit - 34845, LED Backlight Driver, Power Supply
- Flipper Zero :基于STM32W55B的开源极客多功能工具
- MIKROE-2553,基于 LTS 6-NP 电流传感器和 MCP3201 ADC 转换器的 LEM CLICK 板
- 【实物已验证】JLink&STLink SWD转JTAG转接板
- ADP166CP-EVALZ,ADP166 TSOT LDO 线性稳压器评估板