单片机控制直流电机c语言代码,用51单片机控制直流电机
系统主函数流程如图三:
①PWM脉宽控制:本设计中采用软件延时方式对脉冲宽度进行控制,延时程序函数如下:
void delay(unsigned char dlylevel){
int i=50*dlylevel;
while(--i);}
此函数为带参数DLYLEVEL,约产生DLYLEVEL*400us的延时,因此一个脉冲周期可以由高电平持续时间系数hlt和低电平持续时间系数llt组成,本设计中采用的脉冲频率为25Hz,可得hlt+llt=100,占空比为hlt/(hlt+llt),因此要实现定频调宽的调速方式,只需通过程序改变全局变量hlt,llt的值,该子程序流程图如图四。
②键盘中断处理子程序:采用中断方式,按下键,单片机P3.2脚产生一负跳沿,响应该中断处理程序,完成延时去抖动、键码识别、按键功能执行。
调速档、持续加/减速:调速档通过(0-6)共七档固定占空比,即相应档位相应改变hlt,llt的值,以实现调速档位的实现。而要实现按住加/减速键不放时恒加或恒减速直到放开停止,就需在判断是否松开该按键时,每进行一次增加/减少1%占空比(即hlt++/--;llt--/++),其程序流程图如图五。
③显示子程序:利用数组方式定义显示缓存区,缓存区有8位,分别存放各个LED管要显示的值。显示子程序为一带参子程序,参数为显示缓存的数组名,通过for(i=0;i<8;i++)方式对每位加上位选码,送到P0口并进行一两毫秒延时。
该显示子程序只对各个LED管分别点亮一次,因此在运行过程中,每秒执行的次数不应低于每秒24次。
④定时中断处理程序:采用定时方式1,因为单片机使用12M晶振,可产生最高约为65.5ms的延时。对定时器置初值3CB0H可定时50ms,即系统时钟精度可达0.05s。当50ms定时时间到,定时器溢出则响应该定时中断处理程序,完成对定时器的再次赋值,并对全局变量time加1,这样,通过变量time可计算出系统的运行时间。
对于一个数的显示,先应转成BCD码,即取出每一个位,分别送入显示缓存区,对于转BCD的算法,应对一个数循环除10取模,直至为0,程序如下:
do{dispbuff[bcd_p]=bechange%10; //dispbuff为显示缓冲区数组
bcd_p++;}while(bechange/=10) //disp_p为数组指针
软件设计中的特点:
1、 对于电机的启停,在PWM控制上使用渐变的脉宽调整,即开启后由停止匀加速到默认速度,停止则由于当前速度逐渐降至零。这样有利于保护电机,如电机运用于小车上,在启动上采用此方式也可加大启动速度,防止打滑。
2、 对于运行时间的计算、显示。配合传感器技术可用于计算距离,速度等重要的运行数据。
3、 键盘处理上采用中断方式,不必使程序对键盘反复扫描,提高了程序的效率。
三、 测试结果与分析:
结束语
本设计在硬件上采用了基于PWM技术的H型桥式驱动电路,解决了电机马驱动的效率问题,在软件上也采用较为合理的系统结构及算法,提高了单片机的使用效率,且具有一定的防飞能力。但该设计也有不足之处,主要是在关于速度的反馈上,无法提供较为直观的速度表示方式,因此,有必要引入传感器技术对速度进行反馈,以rpm或rps表达当前的转速进行显示。
[1] [2]
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
单片机控制直流电机c语言代码,用51单片机控制直流电机相关推荐
- 51单片机风扇转动c语言代码,基于51单片机的智能风扇控制系统设计.doc
完美.WORD格式.整理 范文.范例.指导 基于51单片机智能风扇控制系统的设计与实现 摘要:随着气温的逐渐上升,风扇的需求量也逐渐扩大.传统风扇不能根据外界温度的变化对风扇转速快慢进行调整,也不能对 ...
- 51单片机风扇转动c语言代码,基于51单片机的c语言程序 电机转速测量与PWM控制...
[实例简介] 部分源程序如下: //=================测速计数处理=================================== void timer1()interrupt ...
- 单片机三角波c语言代码,使用51单片机实现三角波输出系统的设计资料说明
单片机(SCM)是单片机微型计算机(Single Chip Microcomputer) 的简称. 它是把组成微型计算机的各个功能部件:中央处理器CPU.随机存取存储器RAM .只读存储器ROM.I/ ...
- 51单片机抢答器c语言代码,使用51单片机实现抢答器的设计资料和代码说明
在知识比赛中, 特别是做抢答题目的时候, 在抢答过程中,为了知道哪一组或哪一位选手先答题,必须要设计一个系统来完成这个任务.如果在抢答中,靠视觉是很难判断出哪组先答题.利用单片机系统来设计抢答器,使以 ...
- 51单片机的电子钟c语言程序,基于51单片机的电子钟C语言程序
基于单片机C语言的电子钟程序代码与仿真 基于51单片机的电子钟C语言程序: 程序代码 #include #include #define uchar unsigned char #define uin ...
- 51单片机数控电源c语言设计,基于51单片机的数控电源
<基于51单片机的数控电源>由会员分享,可在线阅读,更多相关<基于51单片机的数控电源(8页珍藏版)>请在人人文库网上搜索. 1.基于51单片机的数控电源摘要:学习如何以单片机 ...
- c语言五个按键控制八个霓虹灯代码,基于51单片机控制霓虹灯设计与制作.docx
PAGE PAGE 1 摘要 随着城市建设和人们的消费水平的不断发展,人们对于城市美化和商铺间的广告竞争给予了更多的关注.而作为城市装饰和广告宣传的霓虹灯需求量也越来越多.虽然之前也有霓虹灯,但是它主 ...
- 单片机红外接收c语言代码,基于51单片机+0038红外发射与接收C程序
#define uchar unsigned char #define uint unsigned int sbit key1=P3^3; sbit key2=P3^4; sbit key3=P3^5 ...
- 基于51单片机的数字电压表c语言程序,基于51单片机的数字电压表的设计..doc
数字电压表的设计目录 TOC \o "1-3" \h \z \u HYPERLINK \l "_Toc282204562" 绪论1 HYPERLINK \l & ...
最新文章
- 视觉与图像系列 几何光学I 近轴光学1 Fermat原理
- 前端完全分离和前端不完全分离
- 动态分辨率是什么意思_b站么么直播最新动态里都有啥 b站什么意思
- linux上部署javaWeb项目
- React中JSX的理解
- 1 亿人民币的差距!硅谷初创公司工资期权调查报告里的 0.1% 与 1%
- Android内容提供者(群发短信)
- 登录邮箱,注意地址栏是否是https开头
- electron 里html不识别require_electron关于应用功能之旅(六)
- ableton 中文_Ableton live 中文 PDF.pdf
- 【CGAL】编译(windos)
- 双硬盘win10下安装ubuntu的方法
- 关于加油站GPS坐标所想到的解决办法
- 怎么恢复误删的重要文件,电脑误删重要文件怎么恢复
- python中运行代码时没有报错但是也没有输出而且还有exit code 0的结束标志
- day015异常捕获和正则
- 蓝牙5.1定位--蓝牙定位信标--新导智能
- asp.net core 防止机密信息外泄GitHub
- 失眠患者的功能连通性改变
- 高尔顿与回归分析的起源
热门文章
- 文本生成图像简述4——扩散模型、自回归模型、生成对抗网络的对比调研
- 网易云音乐中间件改造
- Trafodion ROLLUP函数
- python网络爬虫案例_Python网络爬虫案例实战
- 微信开发必备工具 php和java开发语言
- QCC3040---蓝牙名称修改
- linux怎么自动装驱动程序,linux中如何安装设备驱动程序
- 安全419《高级威胁检测与响应解决方案》系列访谈——未来智安(XDR SEC)篇
- 实况足球2017 for mac打不开怎么办?10.13系统无法运行实况足球2017 for mac是什么原因?
- Android文件下载导致进度条为负数