单片机 改进.docx
- 文档编号:14081148
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:11
- 大小:70.83KB
单片机 改进.docx
《单片机 改进.docx》由会员分享,可在线阅读,更多相关《单片机 改进.docx(11页珍藏版)》请在冰点文库上搜索。
单片机改进
目录
1引言1
2步进电机设计方案及原理1
2.1电路基本理论1
2.2方案设计1
3硬件设计2
3.1硬件设备2
3.2设计思路2
3.3步进电机模块2
3.4控制模块2
3.5指示灯模块3
4软件设计4
4.1程序流程图4
4.2中断延时程序4
5总结5
参考文献5
附录A硬件仿真图6
附录B源程序代码8
1引言
本设计根据步进电机的结构、原理及应用,在keiluVision2软件中利用C语言编写程序,然后在Proteus7.0仿真软件中运行调试,实现单片机对步进电机的正反转控制。
2步进电机设计方案及原理
2.1电路基本理论
步进电机是机电控制中一种常用的执行机构,它的用途是将电脉冲转化为角位移,它的的驱动电路根据控制信号工作,控制信号由单片机产生。
当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,控制换相顺序,即通电控制脉冲必须严格按照一定顺序分别控制各相的通断。
通过控制脉冲个数即可以控制角位移量,从而达到准确定位的目的。
控制步进电机的转向,即给定工作方式正序换相通电,步进电机正转,若按反序通电换相,则电机就反转。
控制步进电机的速度,即给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步,两个脉冲的间隔越短,步进电机就转得越快。
同时通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
2.2方案设计
基于单片机的步进电机控制电路的基本组成如图1所示。
图1步进电机控制电路的原理框图
在该设计方案中,硬件部分实现用单片机控制电机转动显示功能,包括控制开关模块;电机转动模块和电机转向显示模块。
软件部分实现对步进电机的控制功能,主要设计思想通过控制台控制程序的开关来控制电机的转动,以及控制电动机指示灯的显示。
3硬件设计
3.1硬件设备
在该设计中,经过分析,硬件器件选择有:
单片机AT89C51,四相六线步进电机,电机驱动器LUN2003,LED显示灯,按钮,电阻,电源等。
3.2设计思路
用AT89C51做主控芯片,按钮作为外部输入控制信号从P3口输入。
用单片机的P2口作输出口,P2.0~P2.3分别与驱动器LUN2003的1B~4B口相连接,进行脉冲的分配与放大,接着从1C~4C口输出控制电机转动。
又从单片机P2.4~P2.6口输出信号分别控制LED指示灯D2、D1、D3表示电机的正反转及停止状态。
3.3步进电机模块
步进电机受控模块如图2所示,其功能为:
将单片机输出的信号经过电机驱动器ULN2803给步进电机一个脉冲信号,使电机实现正转或反转。
图2步进电机受控模块
3.4控制模块
控制模块如图3所示,其功能为:
通过3个按钮向单片机输入控制信号与程序结合来控制电机的正反转及停止。
以及1个按钮控制复位电路让电机恢复到初始状态。
图3单片机控制模块
3.5指示灯模块
指示灯模块如图4所示,其功能为:
通过单片机输出的信号点亮LED灯来显示步进电机的工作状态。
D3红灯表示电机停止工作,D2绿灯表示电机正向运转,D1绿灯表示电机反向运转。
图4LED显示灯
4软件设计
4.1程序流程图
本设计程序的主流程图如图5所示。
图5程序流程图
4.2中断延时程序
在中断程序设计中使用定时器T0作中断定时器,所以设定TMOD=0x11。
定时时间设为1ms,则T0高八位、第八位分别为TH0=0xFC,TL0=0x18。
允许外部中断,在主函数中设定EA=1,ET0=1。
通过外部中断程序就可以用控制电路中按钮产生的信号控制电机的转动方向,并且每过1ms检测一次是否有外部中断信号产生。
中断程序代码如下:
voidtimeint(void)interrupt1//定时器0中断处理
{
TH0=0xFC;
TL0=0x18;//设定时每隔1ms中断一次
count++;
}
在延时程序中用do…while语句作循环延时。
循环次数设定为1000次。
延时程序代码如下:
voiddelay()
{
endcount=1000;
count=0;
do{}
while(count } 5总结 本设计采用51单片机AT89C51(晶振频率为12MHZ)对四相六线制步进电机进行控制。 通过I/O口输出的具有时序的脉冲信号经过驱动芯片ULN2003驱动步进电机。 单片机AT89C51的21~24引脚接驱动器ULN2003的1~4输入端。 控制电路中用按钮对步进电机的运行状态进行控制,并用LED灯显示电机的运行状态。 设计的步进电机基本能实现预期目标,不足之处是实现控制比较简单,接下来的工作就是实现更多更复杂的步进电机的控制,如加减速控制,转换单双拍工作模式等。 通过该设计运用了所学的很多内容,如单片机原理,C语言等。 并且更加熟悉了Proteus7和keiluVision2等软件的使用。 参考文献 [1]李华,王思明,张金敏.单片机原理及应用[M].兰州: 兰州大学出版社,2003: 75-105. [2]何钦铭,颜辉.C语言程序设计[M].北京: 高等教育出版社,2010: 40-73. [3]柴钰.单片机原理和应用[M].西安: 西安电子科技大学出版社,2006: 66-68. [4]张靖武.单片机系统的PROTUSE设计和仿真[M].电子工业出版社,2007: 23-30. 附录A硬件仿真图 硬件仿真全电路图如图6所示。 单片机AT89C51左边是复位电路,下边是3个按钮的输入控制电路。 单片机右边的上边为指示灯模块,下边为驱动器及步进电机模块。 图6硬件全电路图 附录B源程序代码 该设计程序主要实现步进电机的正反转及停止控制。 程序中用单片机的P3口作外部信号输入口,用单片机P2口作控制信号输出口。 当单片机接收到外部信号经判断后进入指定程序,依次给P2.0~P2.3口输出高电平控制电机正反转。 主要函数有: 主函数main(),延时函数delay(),定时器中断函数timeint()。 该设计中主要用到的软件有: Proteus7.0和keiluVision2。 #include staticunsignedintcount; staticunsignedintendcount; voiddelay(); voidmain(void) { count=0; P2_0=0; P2_1=0; P2_2=0; P2_3=0; EA=1;//允许CPU中断 TMOD=0x11;//设定时器0和1为16位工作方式1 ET0=1;//定时器0中断允许 TH0=0xFC; TL0=0x18;//设定时每隔1ms中断一次 TR0=1;//开始计数 while (1){ P2_4=1; P2_5=1; P2_6=0; if(P3_7==0)//停止控制 { P2_6=0;//D3亮 P2_0=0; P2_1=0; P2_2=0; P2_3=0; } elseif(P3_5==0)//正转控制 { P2_6=1;//D3灭 P2_4=0;//D2亮 P2_0=0; P2_1=0; P2_2=0; P2_3=1; delay(); P2_0=0; P2_1=0; P2_2=1; P2_3=0; delay(); P2_0=0; P2_1=1; P2_2=0; P2_3=0; delay(); P2_0=1; P2_1=0; P2_2=0; P2_3=0; delay(); } elseif(P3_6==0)//反转控制 { P2_6=1;//D1灭 P2_5=0;//D3亮 P2_0=1; P2_1=0; P2_2=0; P2_3=0; delay(); P2_0=0; P2_1=1; P2_2=0; P2_3=0; delay(); P2_0=0; P2_1=0; P2_2=1; P2_3=0; delay(); P2_0=0; P2_1=0; P2_2=0; P2_3=1; delay(); } } } voidtimeint(void)interrupt1 { TH0=0xFC; TL0=0x18;//设定时每隔1ms中断一次 count++; } voiddelay()//延时子函数 { endcount=1000; count=0; do{}while(count }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 改进