步进电机驱动正转反转文档格式.docx
- 文档编号:16650978
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:16
- 大小:16.75KB
步进电机驱动正转反转文档格式.docx
《步进电机驱动正转反转文档格式.docx》由会员分享,可在线阅读,更多相关《步进电机驱动正转反转文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
19//反转
#definekey51<
20//停止
#defineKEYCON0x001f0000//LED控制字
#defineMOTOCON0x00003c00//MOTO控制字
#defineGPIOSET(PIN)IO0SET=PIN//方便修改置位端口
#defineGPIOCLR(PIN)IO0CLR=PIN//方便修改清位端口
#defineRS1<
9//P0.9
#defineSID1<
6//P0.6
#defineE1<
4//P0.4
#definePSB1<
2//P0.2并行或串行,选择低电平串行模式
#defineRST1<
25//P1.25,复位脚
unsignedcharIC_DAT1[64]="
电机运行方式组成:
A-B-C-D单四拍步距角1.8"
;
unsignedcharIC_DAT2[64]="
AB-BC-CD-DA双四拍步距角0.9"
unsignedcharIC_DAT3[64]="
电机运行方式组为A-AB-B-BC-C-CD-D单双八拍步距角0.45"
unsignedcharIC_DAT4[64]="
电机反转"
unsignedcharIC_DAT5[64]="
电机停止"
unsignedcharIC_DAT6[64]="
自动化0901班张凯龙衡海龙步进电机细分控制卢祖起郭亚楠"
voidTransferCom(unsignedchardata0);
voidTransferData(unsignedchardata1);
voiddelay(unsignedintm);
voiddelay_10ms(uint32n);
voidlcd_mesg(unsignedchar*adder1);
voidDelayNS(uint32dly);
voidMOTO_Mode1(uint8i);
//A-B-C-D
voidMOTO_Mode10(uint8i);
voidMOTO_Mode2(uint8i);
//AB-BC-CD-DA-AB
voidMOTO_Mode20(uint8i);
voidMOTO_Mode3(uint8i);
//A-AB-B-BC-C-CD-D-DA-A
voidMOTO_Mode30(uint8i);
/****************************************************************************
*名称:
main()
根据表DISP_TAB来控制LED显示。
intmain(void)
{
/*PINSEL2使用启动代码的默认配置,切勿任意配置PINSEL2,否则总线会受到干扰*/
PINSEL0=0x00000000;
PINSEL1=0X00000000;
PINSEL2&
=~(0x00000006);
//设置所有I/O口为普通GPIO口
IO0DIR=MOTOCON;
//配置LED控制I/O方向
LCD12864_init();
initinal();
//液晶端口初始化
while((IO0PIN&
key1)&
&
(IO0PIN&
key2)&
key3)&
key4)&
key5)!
=0)
{
lcd_mesg(IC_DAT6);
//显示界面
}
while
(1)
{
if((IO0PIN&
key1)==0)
MOTO_Mode1(15);
if((IO0PIN&
key4)==0)
MOTO_Mode10(20);
key2)==0)
MOTO_Mode2(15);
MOTO_Mode20(20);
key3)==0)
MOTO_Mode3(8);
MOTO_Mode30(10);
key5)==0)//停止
lcd_mesg(IC_DAT5);
IO0CLR=MOTOCON;
};
return(0);
}
DelayNS()
长软件延时
*入口参数:
dly延时参数,值越大,延时越久
*出口参数:
无
voidDelayNS(uint32dly)
{uint32i;
for(;
dly>
0;
dly--)
for(i=0;
i<
5000;
i++);
MOTO_Mode1()
单四拍程序
uint8i延时参数,值越大,延时越久
voidMOTO_Mode1(uint8i)//A-B-C-D
{
lcd_mesg(IC_DAT1);
//显示汉字界面1
/*A*/
GPIOSET(MOTOA);
DelayNS(i);
GPIOCLR(MOTOA);
/*B*/
GPIOSET(MOTOB);
GPIOCLR(MOTOB);
/*C*/
GPIOSET(MOTOC);
GPIOCLR(MOTOC);
/*D*/
GPIOSET(MOTOD);
GPIOCLR(MOTOD);
voidMOTO_Mode10(uint8i)//A-B-C-D
lcd_mesg(IC_DAT4);
MOTO_Mode2()
双四拍程序
voidMOTO_Mode2(uint8i)//AB-BC-CD-DA-AB
lcd_mesg(IC_DAT2);
//显示汉字界面2
/*BC*/
/*CD*/
/*DA*/
voidMOTO_Mode20(uint8i)//AB-BC-CD-DA-AB
/*DC*/
/*CB*/
/*BA*/
MOTO_Mode3()
单双八拍程序
voidMOTO_Mode3(uint8i)//A-AB-B-BC-C-CD-D-DA-A
=0)
{
lcd_mesg(IC_DAT3);
/*AB*/
voidMOTO_Mode30(uint8i)//A-AB-B-BC-C-CD-D-DA-A
/*************************************************************
*名称:
delay()
*功能:
延时程序
**************************************************************/
voiddelay(unsignedintm)
unsignedinti,j;
i<
m;
i++)
for(j=0;
j<
50;
j++);
delay_10ms()
voiddelay_10ms(uint32n)
uint32i,j;
n;
2000;
initinal()
LCD12864字库初始化
initinal(void)
delay_10ms(4);
//大于40ms的延时程序
IO0SET=PSB;
//设置为串行工作方式
delay
(1);
IO1CLR=RST;
//复位
IO1SET=RST;
//复位置高
delay(10);
TransferCom(0x30);
//8bit设置。
RE=0.G=0,图片显示关
delay(100);
TransferCom(0x0C);
//D=1,显示开
TransferCom(0x01);
//清屏
delay_10ms
(1);
TransferCom(0x06);
//模式设置,光标从右向左加1位移动
/****************************************************************
lcd_mesg()
在LCD12864上显示汉字
*****************************************************************/
voidlcd_mesg(unsignedchar*adder1)
unsignedchari;
TransferCom(0x80);
32;
TransferData(*adder1);
adder1++;
TransferCom(0x90);
for(i=16;
64;
/******************************************************************
SeddByte()
发送1字节数据
*******************************************************************/
voidSendByte(unsignedcharDbyte)
8;
IO0CLR=E;
if((Dbyte&
0x80)==0x80)
IO0SET=SID;
else
IO0CLR=SID;
Dbyte=Dbyte<
1;
//左移一位
IO0SET=E;
/***************************************************************
TransferCom()
向LCD12864发送命令
****************************************************************/
voidTransferCom(unsignedchardata0)
IO0SET=RS;
SendByte(0xf8);
//11111,RW(0),RS
(1),0
SendByte(0xf0&
data0);
//高4位
data0<
4);
//低4位
IO0CLR=RS;
TransferData()
向LCD12864发送数据
voidTransferData(unsignedchardata1)
SendByte(0xfa);
data1);
data1<
/***************************************************************************************
LCD12864_init()
LCD12864端口初始化函数
*****************************************************************************************/
LCD12864_init(void)
IO0DIR|=(E|SID|RS);
//设置为输出
IO0CLR=(E|SID|RS);
IO1DIR|=RST;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 步进 电机 驱动 反转