步进电机设计.docx
- 文档编号:3788031
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:13
- 大小:126.36KB
步进电机设计.docx
《步进电机设计.docx》由会员分享,可在线阅读,更多相关《步进电机设计.docx(13页珍藏版)》请在冰豆网上搜索。
步进电机设计
步进电机通讯
一、系统功能需求分析
1、设置驱动,LCD函数,KEY函数以及TOUCH函数,并对寄存器,端口进行初始化。
2、通过DrawPicture函数,插入一张背景图片进步电机里并显示
3、通过控制触摸屏按键TOUCH函数和KEY函数来控制电机的开始,停,正转,反转,加速,减速。
4、在main主函数里调用正转函数voidzz()、反转函数voidfz()、加速函数voidjiasu()、减速函数voidjiansu()、开始函数voidstart(),停止函数。
5、实现了对两台机子的互相通讯,通过Uart_SendByte(k+'0')函数来发送对方的机子来接收
二、总体设计
三、主要功能模块的算法设计思路以及对应的工作流程图
思路:
主要通过设置驱动,寄存器端口初始化,并通过使用DrawPicture函数,插入一张背景图。
通过触摸屏按键TOUCH函数及KEY函数来控制电机的开始,停止,正转,反转,加速,减速。
在main主函数里调用正转函数voidzz()、反转函数voidfz()、加速函数voidjiasu()、减速函数voidjiansu()、开始函数voidstart()
voiddrawPicture(unsignedshort*bmp)
{
intx,y;
for(y=0;y<480;y++)
{
for(x=0;x<640;x++)
{
PutPixel(x,y,*bmp);
bmp++;
}
}
}
inty;//判断是否为正转或反转1为正转,0为反转
1.正转
unsignedcharpluse_table[]={0x01,0x09,0x08,0x0a,0x02,0x06,0x04,0x05};
voidzz()
{
inti;
for(i=0;i<8;i++){
pluse_value=pluse_table[i];
Delay(time);
}
y=1;
}
2.反转
voidfz()
{
inti;
for(i=7;i>=0;i--)
{
pluse_value=pluse_table[i];
Delay(time);
}
y=0;
}
3.加速
voidjiasu()
{
inti;
if(time<60)
{
time=60;
}
if(y==0)
{
for(i=7;i>=0;i--)
{
pluse_value=pluse_table[i];
Delay(time);
}
}
else
{
for(i=0;i<8;i++)
{
pluse_value=pluse_table[i];
Delay(time);
}
}
}
4.减速
voidjiansu()
{
inti;
if(y==0)
{
for(i=7;i>=0;i--)
{
pluse_value=pluse_table[i];
Delay(time);
}
}
else
{
for(i=0;i<8;i++)
{
pluse_value=pluse_table[i];
Delay(time);
}
}
}
5.开始
voidstart()
{
zz();
}
voidMain(void)
{
intk=0;
Target_Init();
LcdTest();//ARMII实验系统的初始化,包括CPU板
GUI_Init();
drawPicture(aca);
while
(1)
{
if((TOUCH_X>=123&&TOUCH_X<=243)&&(TOUCH_Y>=161&&TOUCH_Y<=204))
{
k=1;
}
if((TOUCH_X>=336&&TOUCH_X<=457)&&(TOUCH_Y>=161&&TOUCH_Y<=203))
{
k=2;
}
if((TOUCH_X>=126&&TOUCH_X<=248)&&(TOUCH_Y>=68&&TOUCH_Y<=112))
{
time=time-5;
k=3;
}
if((TOUCH_X>=338&&TOUCH_X<=460)&&(TOUCH_Y>=66&&TOUCH_Y<=108))
{
time=time+5;
k=4;
}
if((TOUCH_X>=234&&TOUCH_X<=354)&&(TOUCH_Y>=247&&TOUCH_Y<=288))
{
k=5;
}
Uart_SendByte(k+'0');
switch(k)
{
case1:
zz();break;
case2:
fz();break;
case3:
jiasu();break;
case4:
jiansu();break;
case5:
start();break;
}
}
}
四、主要源程序代码
MAIN
intg;
intt;
WM_HWINhf;
voiddelay(intt)
{
inti,j;
for(i=t;i>0;i--)
for(j=10000;j>0;j--);
}
voidled_test()
{
inti;
for(i=0;i<4;i++)
{
led_on(i);
delay(1000);
led_off(i);
delay(1000);
}
}
voidcbControl(WM_MESSAGE*pMsg)
{
intNCode,Id;
switch(pMsg->MsgId)
{
caseWM_NOTIFY_PARENT:
Id=WM_GetId(pMsg->hWinSrc);
NCode=pMsg->Data.v;
switch(NCode)
{
caseWM_NOTIFICATION_RELEASED:
if(Id==GUI_ID_OK)
g=0;
if(Id==GUI_ID_OK1)
g=1;
if(Id==GUI_ID_OK2)
g=2;
if(Id==GUI_ID_OK3)
g=3;
if(Id==GUI_ID_OK4)
g=4;
if(Id==GUI_ID_OK5)
g=5;
break;
}
break;
}
WM_DefaultProc(pMsg);
}
externconstunsignedshortacpic[];
voidMain(void){
chark;
externGUI_CONST_STORAGEGUI_BITMAPbmabc;
BUTTON_Handlehb0,hb,hb1,hb2,hb3,hb4,hb5;
Target_Init();
GUI_Init();
GUI_DrawBitmap(&bmabc,0,0);
//GUI_SetColor(GUI_BLUE);
//GUI_FillRect(0,0,640,480);
hf=WM_CreateWindow(0,0,640,480,WM_CF_SHOW,cbControl,0);
hb0=BUTTON_CreateAsChild(0,0,640,30,hf,GUI_ID_OK,WM_CF_SHOW);
BUTTON_SetFont(hb0,&GUI_FontHZ_Song_16);
BUTTON_SetText(hb0,"35092021许明35092026赵华祥");
hb=BUTTON_CreateAsChild(50,75,100,30,hf,GUI_ID_OK,WM_CF_SHOW);
BUTTON_SetFont(hb,&GUI_FontHZ_Song_16);
BUTTON_SetText(hb,"加速");
hb1=BUTTON_CreateAsChild(50,175,100,30,hf,GUI_ID_OK1,WM_CF_SHOW);
BUTTON_SetFont(hb1,&GUI_FontHZ_Song_16);
BUTTON_SetText(hb1,"减速");
hb2=BUTTON_CreateAsChild(50,275,100,30,hf,GUI_ID_OK2,WM_CF_SHOW);
BUTTON_SetFont(hb2,&GUI_FontHZ_Song_16);
BUTTON_SetText(hb2,"正转");
hb3=BUTTON_CreateAsChild(250,75,100,30,hf,GUI_ID_OK3,WM_CF_SHOW);
BUTTON_SetFont(hb3,&GUI_FontHZ_Song_16);
BUTTON_SetText(hb3,"反转");
hb4=BUTTON_CreateAsChild(250,175,100,30,hf,GUI_ID_OK4,WM_CF_SHOW);
BUTTON_SetFont(hb4,&GUI_FontHZ_Song_16);
BUTTON_SetText(hb4,"停止");
hb5=BUTTON_CreateAsChild(250,275,100,30,hf,GUI_ID_OK5,WM_CF_SHOW);
BUTTON_SetFont(hb5,&GUI_FontHZ_Song_16);
BUTTON_SetText(hb5,"开始");
//moto_runf(0);
//DisplayPicture_320240(acpic);
while
(1)
{
GUI_Exec();
t=Uart_GetKey();
if(t!
=0)
g=t-'0';
switch(g)
{
case0:
moto_add(0);break;
case1:
moto_sub(0);break;
case2:
moto_runz(0);break;
case3:
moto_runf(0);break;
case4:
moto_run
(1);break;
case5:
moto_run(0);break;
}
//if(k!
=0x10)
//{
//Uart_Printf("%d",k);
//}
}
}
五、调试分析过程描述:
包括测试数据、测试输出结果,以及对程序调试过程中存在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等)
六、总结
对于嵌入式,在这次实训前可以用什么都不懂来形容,真的学的蛮烂的,但是经过一个星期的实训,我发生的本质性的改变。
就在这次的实训的刚开始,一点也摸不着头脑,感觉看什么都不会,深深感觉到自身所学知识的欠缺。
但是经过慢慢的询问了解之后,我对嵌入式有了更深的了解,实训也慢慢的上了轨道。
在这次实训中深深体会最重要的是同学之间的互相帮助,团队的力量是强大的,写代码时感觉自己做的是对,但是运行就会有错误,自己还很难查出来,但是这时候让其他同学帮忙看了一下,可能只要一小会就会发现其实是个很小的错误,但是自己可能要花很久也找不出错误到底在哪,团队力量真的是很重要的。
在这次实训中了解到,我们只是学习书本上的知识,只占嵌入式很小的部分,是远远不够的,我们需要学习的还很多。
发现学习,最重要的是要会具体问题具体分析,将书本知识与实际情况相结合来解决问题。
写的时候还要仔细,很多时候可能就是多一个或者少一个符号,会让你纠结很久。
学习不仅仅是埋头苦学自己一个人慢慢摸,还得大家一起讨论研究,会加快学习的进度。
也就是体现了团队合作的重要性,体现了相互沟通,相互帮助的重要。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 步进 电机 设计