完整的单片机控制步进电机程序

上传人:卷*** 文档编号:151319410 上传时间:2022-09-13 格式:DOC 页数:4 大小:21KB
收藏 版权申诉 举报 下载
完整的单片机控制步进电机程序_第1页
第1页 / 共4页
完整的单片机控制步进电机程序_第2页
第2页 / 共4页
完整的单片机控制步进电机程序_第3页
第3页 / 共4页
资源描述:

《完整的单片机控制步进电机程序》由会员分享,可在线阅读,更多相关《完整的单片机控制步进电机程序(4页珍藏版)》请在装配图网上搜索。

1、#include reg52.h#include INTRINS.H#include #include #define uint unsigned int#define uchar unsigned charvoid check_addr(void); /*地址核对*/uchar code slave_addr4=00, 01, 02, 255; /*从机地址*/uchar idata T0low, T0high,common_count,input_order,cmd_in_permit,interval;uchar sent_ok,speed_change,start_up,start_e

2、nd,address_true,i;uint y1;uint code add100=60006,62771,63693,64154,64430,64614,64746,64845,64922,64983,65033,65075,65111,65141,65167,65190,65211,65229,65245,65260,65273,65285,65296,65306,65315,65323,65331,65339,65345,65352,65358,65363,65368,65373,65378,65382,65387,65390,65394,65398,65401,65404,65407

3、,65410,65413,65416,65418,65421,65423,65425,65428,65430,65432,65434,65435,65437,65439,65441,65442,65444,65445,65447,65448,65450,65451,65452,65453,65455,65456,65457,65458,65459,65460,65461,65462,65463,65464,65465,65466,65467,65468,65469,65469,65470,65471,65472,65472,65473,65474,65475,65475,65476,65477

4、,65477,65478,65478,65479,65480,65480,65481;sbit P2_0=P20;/*作输入步进电机的脉冲信号发送口*/sbit P2_2=P22;/*作输入步进电机的旋转方向信号发送口*/sbit P1_0=P10; /*作串口输出信号的使能口, P1_0=0时接通串口,输出信号*/sbit WD=P17; /*看门狗*/main() P2_0=0;P2_2=0;/*步进电机的旋转方向待试验后确定*/P1_0=1;/*开机时需要关断,串口发送功能,需要时再接通*/WD=1; /*看门狗先为1,电平翻转为喂狗*/i=0;common_count=0;cmd_in

5、_permit=0;input_order=0;interval=0;address_true=1;speed_change=0;start_up=0;start_end=0;sent_ok=0; /允许发送 EA=1;/*开放总中断*/ TMOD=0x21;TH1 = 0xFD;/ 波特率9600TL1 = 0xFD;SCON = 0xd0;/ 设定串行口工作方式PCON &= 0x00;/ 波特率不倍增SM2=1;TR1 = 1;ES=1; / 启动定时器1T2MOD=00;T2CON=0x00;RCAP2H =0xEE; /赋T2的预置值0xA600,25MS,0xB800,20MS,0

6、xCA00,15MS,0xDC00,10MS,0xEE00,5MSRCAP2L =0x00; TR2=1; /启动定时器 ET2=1; /打开定时器2中断do if(address_true=1) address_true=0;check_addr(); if(start_up=1&start_end=0) /第一次启动 y1=addcommon_count;T0high = (uchar)(y18) ; /*取y1的高8位*/T0low = (uchar)(y1&0x00ff); /*取y1的低8位*/TR0 = 1;ET0=1;/*允许T/C0中断*/start_end=1; if(spe

7、ed_change=1) if(interval=0&intervalcommon_count) common_count=common_count+1; if(intervalcommon_count) common_count=common_count-1; speed_change=0;if(sent_ok=1) sent_ok=0; P1_0=0; for(i=0;i=20;i+) _nop_(); TI=0; SBUF=T0high; while(TI=0);TI=0; TI=0; SBUF=T0low; while(TI=0);TI=0; P1_0=1; for(i=0;i8) ;

8、 /*取y1的高8位*/T0low = (uchar)(y1&0x00ff); /*取y1的低8位*/TH0=T0high;/*高8位T0high送定时器0的TH0*/TL0=T0low;/*低8位T0low送定时器0的TL0*/void timer2(void) interrupt 5 using 2 TF2=0;/*T2溢出中断需软件清0*/ speed_change=1; /速度可以改变标示,以便主程序处理 WD=!WD; /*MAX813喂狗*/ void inte_SERIAL() interrupt 4 using 1 /*串口0中断服务子程序*/uchar key_in ;key

9、_in=0;if(RI) key_in=SBUF; RI=0;if (SM2=1) if(key_in=slave_addr2)SM2=0;address_true=1;if (SM2=0)& (RB8=0) if(key_in=0xff)SM2=1; if(key_in=0xfe) /*接收主机命令引导字节,准备接收主机命令*/ cmd_in_permit=1;if(cmd_in_permit=1) input_order=input_order+1;if (input_order=2) /*接收主机命令,使从机开始调节电机*/cmd_in_permit=0;input_order=0;/*interval代表控制器发给电机的转速期望值*/interval= key_in;sent_ok=1;if(start_up=0)start_up=1; void check_addr(void) /*地址核对成功,发送从机地址给主机*/TB8=1;RB8=0;P1_0=0; for(i=0;i=25;i+) _nop_(); SBUF=slave_addr2;/*发送地址核对成功,发送从机地址给主机*/do while(TI=0); TI=0;P1_0=1; for(i=0;i=25;i+) _nop_(); TB8=0;

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!