- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
51单片机课程设计风扇风速控制
成绩
.
课程设计报告
题目 风扇风速控制
班级 电信B1101
姓名
学号
1、设计题目、要求
风扇风速控制
A.使用单片机实现风扇的风速控制
B.三个按键分别控制不同的风速,还有控制工作与停止的按键
2、设计框图
4、方案设计
本设计采用四相五线步进电机,通过NLU2003A芯片来作电机的驱动。用四个按键来模拟风扇的三个档位和停止键。
步进电机内部构造如下图:
五线:由于五线中,a和b组的公共端是连接在一起的。步进电机相关概念:
相数:产生不同对极N、S磁场的激磁线圈对数。常用m表示。拍数:完成一个磁场周期性变化所需脉冲数或导电状态用n表示,或指电机转过一个齿距角所需脉冲数,以四相电机为例,有四相四拍运行方式即AB-BC-CD-DA-AB,四相八拍运行方式即 A-AB-B-BC-C-CD-D-DA-A.八拍步距角:对应一个脉冲信号,电机转子转过的角位移用θ表示。θ=360度(转子齿数J*运行拍数),以常规二、四相,转子齿为50齿电机为例。四拍 运行时步距角为θ=360度/(50*4)=1.8度(俗称整步),八拍运行时步距角为θ=360度/(50*8)=0.9度(俗称半步)。定位转矩:电机在不通电状态下,电机转子自身的锁定力矩(由磁场齿形的谐波以及机械误差造成的)静转矩:电机在额定静态电作用下,电机不作旋转运动时,电机转轴的锁定力矩。此力矩是衡量电机体积(几何尺寸)的标准,与驱动电压及驱动电源等无关。
6、仿真图
7、制作
8、调试
这次的步进电机实验的程序调试不是很完美,起初不太了解步进电机原理。之后通过网路了解到了很多知识,通过控制延迟时间来控制电机的转速,但电机会出现顿卡的现象是因为程序的延迟和电机不协调,必须慢慢改变来使电机转的相对稳定。中断的按键扫描函数是为了让按键变得更快,单也时电机时间控制的有误差,在减少中断函数执行时间后,控制大有好转。这是我们对本程序的学习。由于硬件增加了小灯使得调试更加方便。
心得体会
在这次的单片机课程设计之中,我与我的组员们经过一段时间的学习及研究,共同完成了此次设计。当然在此次实验中,我们学习到了不少单片机知识,之前在课堂上没有理解的知识,也经由实践一一明晰。
首先,学习单片机要有一定的基础:电子技术方面要有数字电路和模拟电路等方面的理论基础,特别是数字电路;编程语言要求汇编语言或C语言。尽管汇编语言属于低级语言,编程效率低,但是较C语言具有目标代码简短,占用内存少,执行速度快等优点,更重要的是能使初学者尽快熟悉单片机的内部结构,并能对其进行精确的控制。
单片机是一门非常重视实践的技术,不能总是看书,但要学习它首先应看书,对单片机引脚、内部结构、寄存器和原理有一定地了解和感官认识,它的是怎样工作的,能干些什么?刚开始时,不明白,但这并不要紧,因为还缺乏实践经验。现在单片机应用广泛,因此各个厂家分别推出了自己的单片机,因为他们的编程方法和调试过程以及内部指令结构有一定的相似,只要学精通一款就OK了!尤其是用C语言编程,就几乎不用分什么派系,但是我们选择一款有代表性的知识范围广,并且入门容易,书籍多。
10、源程序
#include reg52.h
#include intrins.h
void delay();
#define const_key_time1 10 //按键去抖动延时的时间
#define const_key_time2 10 //按键去抖动延时的时间
#define const_key_time3 10 //按键去抖动延时的时间
#define const_key_time4 10 //按键去抖动延时的时间
#define time1 5 //1档的时间
#define time2 3 //2延时的时间
#define time3 1 //3延时的时间
unsigned char ucKeySec=0; //被触发的按键编号
unsigned int uiKeyTimeCnt1=0; //按键去抖动延时计数器
unsigned char ucKeyLock1=0; //按键触发后自锁的变量标志
unsigned int uiKeyTimeCnt2=0; //按键去抖动延时计数器
unsigned char ucKeyLock2=0; //按键触发后自锁的变量标志
unsigned int uiKeyTimeCnt3=0; //按键去抖动延时计数器
unsigned char ucKeyLock3=0; //按键触发后自锁的变量标志
unsigned int uiKeyTimeCnt4=0; //按键
文档评论(0)