湖南大学课程设计步进电机控制器

上传人:第*** 文档编号:62206833 上传时间:2018-12-18 格式:DOC 页数:20 大小:506KB
返回 下载 相关 举报
湖南大学课程设计步进电机控制器_第1页
第1页 / 共20页
湖南大学课程设计步进电机控制器_第2页
第2页 / 共20页
湖南大学课程设计步进电机控制器_第3页
第3页 / 共20页
湖南大学课程设计步进电机控制器_第4页
第4页 / 共20页
湖南大学课程设计步进电机控制器_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《湖南大学课程设计步进电机控制器》由会员分享,可在线阅读,更多相关《湖南大学课程设计步进电机控制器(20页珍藏版)》请在金锄头文库上搜索。

1、单 片 机 课 程 设 计 报 告题目: 步进电机控制器专业:电气工程及其自动化班级:学号:姓名:指导老师: 目 录一、开发板按键说明2二、步进电机控制实验计说明3(一)设计要求3(二)硬件电路41、CPU42、步进电机53、LCD6(三)流程图71、步进电机控制模式7 2、速度显示模式.83、时间设置模式8(四)源程序9三、课程设计心得体会19一、 开发板键盘使用说明1、键盘按键ABCDA键:初次按下,进入时间设置模式;再次按下另光标左右移动,选择时、分进行设置;在电机控制模式可以控制电机启动,停止。B键:在时间设置模式中,对时间数值进行加法运算,可以调节时间;在电机控制模式中,控制电机正反

2、转。C键:在电机控制模式控制电机加减速。D键:初次按下可退出时间设置模式;在电机控制模式可以控制电机归零。AB键:A、B键同时按下,可以退出电机控制模式,进入时间设置模式。二、 步进电机设计说明(一)设计要求显示方式:1602LCD编程语言:c语言1、任务设计一个步进电机控制器。2、要求1)可同时控制一至多台步进电机能按某种差补算法联动运行2)同过小键盘,能分别给定步进电机的运行速度,要求可供选择的步进速度有十种,且多台电机能以不同的速度运行3)步进电机可分别正转、反转4)按下“回零”命令键后,步进电机能准确返回到原点5)可分别显示多台步进电机运行的速度和当前状态6)显示北京时间,可调整3、硬

3、件配置a、接通插针9以驱动步进电机;b、插针10下面两脚接跳线帽,作为独立按键输入。c、开发板上的步进电机接口从上至下依次为D、C、B、A,最后两脚为DVDD,使用时连接步进电机相应接口即可。d、实验盒的步进电机从右至左分别是+5V,D,B,C,A(二)硬件电路1、CPU2、步进电机3、LCD(三)流程图1、步进电机控制模式2、速度显示模式开始进入电机控制模式是否是电机控制模式? N Y同步显示速度 3、时间设置模式开始进入时间设置模式是否设置? N Y按下A键选择时或分按下D键按下B键设置数值显示修改的时间进入电机控制模式是否退出时间设置? YN(四)源程序#include#define W

4、rite_Data 1#define Write_Command 0bit Run_flag = 0; /启动/停止标志位bit Driection_Flag = 0; /正/反转标志位unsigned char Speed_Flag; /速度控制变量char counter=0; /脉冲计数器unsigned char code table = 0x01,0x02,0x04,0x08,0x08,0x04,0x02,0x01; /电机正反转I/O口高低电平对照表unsigned char hou=23,min=59,sec=0 ;unsigned char code table1 = 0123

5、456789;unsigned char idata table26;unsigned char code table3 = Speed:State:Time:;sbit E = P33; /液晶使能端(E)sbit RW = P35; /液晶读写选择端(RW)sbit RS = P36; /液晶数据指令选择端(RS)unsigned char CT=0;unsigned char code table4 = Welcome!Push1:TSOther:MC;bit ch_time=0;/时间设置选择位void Delay2(void)unsigned char i;for(i = 0;i 5

6、0;i+);void Check_Busy(void)P0 = 0xff; /P0口作为输入Delay2();RS = 0;RW = 1;E = 1;Delay2();while(P0&0X80);E = 0;RW = 0;P0 = 0X00;void Write_Lcd(bit Com_Data,unsigned char Dat)Check_Busy();if(Com_Data)/若为写数据指令RS = 1;elseRS = 0;RW = 0;P0 = Dat;Delay2();E = 1;Delay2();E = 0;void Init_Lcd(void)E = 0;RW = 0;RS

7、= 0;Write_Lcd(Write_Command,0x38); /设置16x2显示,5x7点阵,8位数据接口Write_Lcd(Write_Command,0x0c); /开显示,不显示光标Write_Lcd(Write_Command,0x06); /地址指针加1,且光标加1,整屏显示不移动Write_Lcd(Write_Command,0x01); /清屏void delay(unsigned char n) /延时函数unsigned int i,j;for(i = 0;i n;i+)for(j = 0;j =0)Table_Begin=4;while(counter)for(i

8、= 0 + Table_Begin;(i 4 + Table_Begin)&counter!=0;i+,counter-)P2 = tablei; /读取控制电机转动I/O口表delay(80);/根据速度控制函数返回值调节延时时间elseTable_Begin=0;while(counter)for(i = 0 + Table_Begin;(i 4 + Table_Begin)&(counter!=0);i+,counter+)P2 = tablei; /读取控制电机转动I/O口表delay(80);/根据速度控制函数返回值调节延时时间P2 &= 0xf0;Run_flag = 0; voi

9、d GetKey(void)static unsigned char KeyHaveFree = 1;unsigned char temp;P1 &= 0xf0; /P1口低四位作为数字输入时应往相应引脚写0temp = P1&0x0f; if(KeyHaveFree) if(temp != 0x0f) / P1口低四位不全为1,则有键被按下 delay(2); / 消抖 if(temp = (P1&0x0f) if(P1&0x0f) = 0x0e) / 启动/停止键按下Run_flag = Run_flag; / 启动/停止标识取反else if(P1&0x0f) = 0x0d)/ 正/反转

10、键按下Driection_Flag = Driection_Flag;else if(P1&0x0f) = 0x0b) /加速键按下Speed_Flag+; if(Speed_Flag = 10) Speed_Flag = 0;else if(P1&0x0f) = 0x07) replace_(); KeyHaveFree = 0; else if(temp = 0x0f)|(P1&0x0f) = 0x0f)KeyHaveFree = 1; unsigned char Speed_Ctl(void) /速度控制函数unsigned char Speed;if(Speed_Flag = 0)Sp

11、eed = 80;else if(Speed_Flag = 1)Speed = 72;else if(Speed_Flag = 2)Speed = 64;else if(Speed_Flag = 3)Speed = 56;else if(Speed_Flag = 4)Speed = 48;else if(Speed_Flag = 5)Speed = 40;else if(Speed_Flag = 6)Speed = 32;else if(Speed_Flag = 7)Speed = 24;else if(Speed_Flag = 8)Speed = 16;else if(Speed_Flag = 9)Speed = 10;return Speed

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号