系统主函数流程如图三:

①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单片机控制直流电机相关推荐

  1. 51单片机风扇转动c语言代码,基于51单片机的智能风扇控制系统设计.doc

    完美.WORD格式.整理 范文.范例.指导 基于51单片机智能风扇控制系统的设计与实现 摘要:随着气温的逐渐上升,风扇的需求量也逐渐扩大.传统风扇不能根据外界温度的变化对风扇转速快慢进行调整,也不能对 ...

  2. 51单片机风扇转动c语言代码,基于51单片机的c语言程序 电机转速测量与PWM控制...

    [实例简介] 部分源程序如下: //=================测速计数处理=================================== void timer1()interrupt ...

  3. 单片机三角波c语言代码,使用51单片机实现三角波输出系统的设计资料说明

    单片机(SCM)是单片机微型计算机(Single Chip Microcomputer) 的简称. 它是把组成微型计算机的各个功能部件:中央处理器CPU.随机存取存储器RAM .只读存储器ROM.I/ ...

  4. 51单片机抢答器c语言代码,使用51单片机实现抢答器的设计资料和代码说明

    在知识比赛中, 特别是做抢答题目的时候, 在抢答过程中,为了知道哪一组或哪一位选手先答题,必须要设计一个系统来完成这个任务.如果在抢答中,靠视觉是很难判断出哪组先答题.利用单片机系统来设计抢答器,使以 ...

  5. 51单片机的电子钟c语言程序,基于51单片机的电子钟C语言程序

    基于单片机C语言的电子钟程序代码与仿真 基于51单片机的电子钟C语言程序: 程序代码 #include #include #define uchar unsigned char #define uin ...

  6. 51单片机数控电源c语言设计,基于51单片机的数控电源

    <基于51单片机的数控电源>由会员分享,可在线阅读,更多相关<基于51单片机的数控电源(8页珍藏版)>请在人人文库网上搜索. 1.基于51单片机的数控电源摘要:学习如何以单片机 ...

  7. c语言五个按键控制八个霓虹灯代码,基于51单片机控制霓虹灯设计与制作.docx

    PAGE PAGE 1 摘要 随着城市建设和人们的消费水平的不断发展,人们对于城市美化和商铺间的广告竞争给予了更多的关注.而作为城市装饰和广告宣传的霓虹灯需求量也越来越多.虽然之前也有霓虹灯,但是它主 ...

  8. 单片机红外接收c语言代码,基于51单片机+0038红外发射与接收C程序

    #define uchar unsigned char #define uint unsigned int sbit key1=P3^3; sbit key2=P3^4; sbit key3=P3^5 ...

  9. 基于51单片机的数字电压表c语言程序,基于51单片机的数字电压表的设计..doc

    数字电压表的设计目录 TOC \o "1-3" \h \z \u HYPERLINK \l "_Toc282204562" 绪论1 HYPERLINK \l & ...

最新文章

  1. 视觉与图像系列 几何光学I 近轴光学1 Fermat原理
  2. 前端完全分离和前端不完全分离
  3. 动态分辨率是什么意思_b站么么直播最新动态里都有啥 b站什么意思
  4. linux上部署javaWeb项目
  5. React中JSX的理解
  6. 1 亿人民币的差距!硅谷初创公司工资期权调查报告里的 0.1% 与 1%
  7. Android内容提供者(群发短信)
  8. 登录邮箱,注意地址栏是否是https开头
  9. electron 里html不识别require_electron关于应用功能之旅(六)
  10. ableton 中文_Ableton live 中文 PDF.pdf
  11. 【CGAL】编译(windos)
  12. 双硬盘win10下安装ubuntu的方法
  13. 关于加油站GPS坐标所想到的解决办法
  14. 怎么恢复误删的重要文件,电脑误删重要文件怎么恢复
  15. python中运行代码时没有报错但是也没有输出而且还有exit code 0的结束标志
  16. day015异常捕获和正则
  17. 蓝牙5.1定位--蓝牙定位信标--新导智能
  18. asp.net core 防止机密信息外泄GitHub
  19. 失眠患者的功能连通性改变
  20. 高尔顿与回归分析的起源

热门文章

  1. 文本生成图像简述4——扩散模型、自回归模型、生成对抗网络的对比调研
  2. 网易云音乐中间件改造
  3. Trafodion ROLLUP函数
  4. python网络爬虫案例_Python网络爬虫案例实战
  5. 微信开发必备工具 php和java开发语言
  6. QCC3040---蓝牙名称修改
  7. linux怎么自动装驱动程序,linux中如何安装设备驱动程序
  8. 安全419《高级威胁检测与响应解决方案》系列访谈——未来智安(XDR SEC)篇
  9. 实况足球2017 for mac打不开怎么办?10.13系统无法运行实况足球2017 for mac是什么原因?
  10. Android文件下载导致进度条为负数