版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、控制步进电机正反转的实际应用程序/* 这是一个控制步进电机正反转的实际应用程序 */* 选用的是三相步进电机驱动器 ,p14 口线用做步进电机的脉冲控制 */*p13 口线用做步进电机的方向控制。 p15,p16,p17 是光耦开关量输入 */*信号端,p20,p21,p22,p23与X25045看门狗存储器相连*/*k7,k8 键是设定步进电机转动速度参数的加减键 */*k9是启动运行键,按一下k9,步进电机开始运行,直到p17 口线有信号输入 才停止*/*k10 是停止键,任何时候按下 k10 都将停止步进电机当前的运行 */*k11 是步进运行键,按一下,步进电机动一下 */*k12键是
2、反向运行键,按一下,步进电机开始反向运行,知道p15 口线有信号才停止*/*如果p16 口线有信号输入,则只有k12键才起作用,其它键都没反应。*/ START:do;$INCLUDE(REG51.DCL)DECLARE (addrl,n,I,j,ok,ds) byte; /*定义变量 */declare l(5) byte;declare (dat,data) byte at (30h);declare delay word;DECLARE AC0(11) BYTE CONSTANT (05h,9fh,23h,0bh,99h,49h,/* 定义 LED段码 表*/41h,1fh,01h,09
3、h,00h);declare si literally 'p21',sck literally 'p20' /*X25045囗线定义*/declare so literally 'p22',cs literally 'p23'dog:procedure; /* 初始化看门狗 X25045 */cs=1;call time(1);cs=0;call time(1);cs=1;end dog;run:procedure; /* 步进电机运行脉冲输出程序 */ if ok=1 thencall dog;do;p14=0;call tim
4、e(1);p14=1;call time(1);end;end run;DISPLAY:PROCEDURE(L0,L10); /*显示子程序 */DECLARE (L0,L10) BYTE; /* 定义显示二位 */n=L10;n=aco(n); /* sbuf=n; /* do while ti=0; /* call dog; /* end;n=L0; n=aco(n); sbuf=n; /*十位数BCD码译成段码*/十位数送 164 显示 */ 等待发送结束 */ 看门狗定时器复位 */个位数送 164 显示 */do while ti=0;call dog;end;end display
5、; outbyt: procedure(da);/* 向看门狗存储器写入一字节 */将要写入的字节赋给临时变量 J */ 左移 8 位,送到口线 si */每移一位数据,跟一个时钟信号 */declare (i,da) byte;j=da; /* do i=0 to 7; /* sck=0; j=scl(j,1); si=cy;sck=1; /*end;end outbyt;inbyt: procedure; /* 从看门狗存储器读出一字节 */ declare (i,di) byte;j=0;do i=0 to 7;sck=1;sck=0;cy=so;j=scl(j,1); /* 从看门狗存
6、储器读出一字节送入临时变量 j*/ end;dat=j;end inbyt;wrenable:procedure; /* 置看门狗写使能 */sck=0;cs=0; /* write enable command */call outbyt(06h); /* x25045写使能指令 06h */cs=1;sck=0;end wrenable;wrdisable: procedure; /*置看门狗写禁止 */sck=0;cs=0; /* write disable command */call outbyt(04h); sck=0;cs=1;end wrdisable;wrregister:
7、procedure; /* 写状态寄存器 */ sck=0;cs=0;dat=01h; /* write register command */call outbyt(dat); /* 00h-1.4S, 20h-200MS, 10h-600MS, 30h-disable Wdog */ call outbyt(00h); /* 设定看门狗定时时间 */Jsck=0;cs=1;call time(200); /* wait to complete writting cycle */ end wrregister;rdregister:procedure; /* 读看门狗状态寄存器 */ sck
8、=0;cs=0; /* register read command */call outbyt(05h);call inbyt; /* status register read in <DAT> */ sck=0;cs=1; end rdregister;wbyte:procedure; /* 看门狗存储器字节写入子程序 */ declare comm byte;sck=0;cs=0;comm=02h; /* 写指令 02h */ call outbyt(comm);call outbyt(addrl);call outbyt(dat); /* send one byte data
9、 to X25043 */ cs=1;sck=0;call time(150);end wbyte;rbyte:procedure; /* 看门狗存储器字节读出子程序 */declare comm byte;sck=0;cs=0;comm=03h; /* read command */ call outbyt(comm);call outbyt(addrl);call inbyt; /* read one byte to <DAT> */ sck=0;cs=1;end rbyte;incdata: procedure; /*参数修改 -" 加" 键处理子程序 +
10、 */if p10=0 then/*如果 K7键按下 */do;do while p10=0; /*等待键松开有效 */call dog;/*程序将被看门狗复位 */此处必需调用看门狗复位子程序( " 喂狗" ),否则end;data=data+1; /*设定值+1 */if data>99 then data=1; /*规定设定值的上限 */L(1)=data MOD 10; /*/将设定值的十位数拆出来送给十位数显示变量 L(1)*/L(2)=data/10; /*将设定值的个位数拆出来送给个位数显示变量将改变后的设定值送 164显示出来 */ 延时 */L(2)
11、 */call display(L(1),L(2); /*call time(200);/*call dog;call time(200);call dog;call wrenable;/*addrl=00h;/*dat=l(1);call wbyte;/*call wrenable;addrl=01h;dat=l(2);call wbyte;/*end;end incdata;置存储器写使能 */置存储器地址 */将变量 L(1) 的值写入存储器 00h 位置 */将变量 L(2) 的值写入存储器 01h 位置 */decdata: PROCEDURE;IF p11=0 THEN /* k8
12、/*参数修改 -" 减"键处理子程序 - */键处理子程序 */do;do while p11=0;call dog;end;DATA=DATA-1; /*设定值-1 */if data=0 then data=99;L(1)=data MOD 10;L(2)=data/10;call display(l(1),l(2);call dog;call time(200);call dog;call time(200);call dog;call wrenable;addrl=00h;dat=l(1);call wbyte;call wrenable;addrl=01h;dat
13、=l(2);call wbyte;end;END decdata;starton: PROCEDURE;/* start */declare sd byte;if p12=0 THEN /* K9 键处理子程序 */ do;do while p12=0;call dog; end;if p17=0 then ok=0; /*(停止运行) */如果 p17 口线上有信号输入,则运行标志置 0p13=1; /* call time(200);置步进电机正向运转 */call dog;do while ok=1; /*当运行标志为 1 时,执行速度延时操作 */do sd= 0 to data; /
14、* 行时的脉冲给定速度 */根据设定值 data 的数值延时来确定步进电机运call dog;end;end;END starton;step: PROCEDURE; declare sd byte;/* step */p13=1; /*call time(200);置步进电机正向运转 */call dog;IF p33=0 THEN /* k11 do;键处理子程序 */if p17=0 then ok=0; /* do while p33=0;如果 p17 上有信号输入,则停止运行 */do sd= 0 to data; /*调用延时,调整步进电机的运行速度 */call dog;call
15、 time(2); end; call run; call dog;end;end;ok=0;反向运行处理子程序 */END step;back: PROCEDURE; /* declare sd byte;IF p34=0 THENdo;do while p34=0; call dog;end;if p15=0 then ok=0; /* 步进电机运行 */反向运行时,如果遇到 p15 上有信号输入,则停止p13=0; /* call time(200);置步进电机反向运行 */call dog;do while ok=1;do sd=0 to data; /*根据设定值调节步进电机的运行速
16、度 */call dog; call time(2);end;call run;if (p15=0 or p32=0 ) then ok=0; /* p15或 p32 口线任意一个有信号输入,停止运行 */end;end;END back;MAIN$PROGRAM:/* 初始化主程序 */ea=0; /*关中断 */SCON=00h; /*置串口方式 0 ,串行数据输出模式 */PCON=00h; tmod=11h; et0=1;enable; /*SCK=0;cs=1; /*开中断 (ea=1) */ 定义存储器口线初始状态 */call wrenable; call wrregister; /* call wrenable;call dog; p2=0ffh; /*看门狗存储器 初始化 */初始化各个口线的状态 */p1=0ffh;ok=0;p14=1;p32=1;p33=1;p34=1;p13=1;ADDRL=00h; /* 上电复位后从存储器中读出设定的速度值 CALL rbyte;l(1)=dat;addrl=01h;call rbyte;l(2)=dat;DATA=L(1)+L(2)*10; /* 将读出的值合并成十进制,存入变量 /* 以下是主循环程序 */LOOP:IF p10=0 THEN CALL incdata
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 3D打印钛网在颅底脑脊液漏修补中的应用
- 广东省建筑工程集团控股有限公司2026届校园招聘备考题库及一套答案详解
- 2025年在线问诊合作五年发展行业报告
- 3D打印人工血管的血流动力学模拟
- 3D可视化技术在神经外科手术中的标准化评估体系
- 2025年广州星海音乐学院公开招聘工作人员15人备考题库及参考答案详解
- 2025年苏州交投新基建科技有限公司公开招聘12名人员备考题库含答案详解
- 2025年智慧农业技术应用报告
- 2025年山东新华书店集团有限公司微山分公司外包人员招聘备考题库及1套完整答案详解
- 怀化市部分市直事业单位2025年下半年集中公开招聘、公开选调工作人员备考题库有答案详解
- 西安市2024陕西西安市专职消防员管理中心招聘事业编制人员笔试历年参考题库典型考点附带答案详解(3卷合一)
- 吉安市农业农村发展集团有限公司及下属子公司2025年第二批面向社会公开招聘备考题库有答案详解
- 文冠果整形修剪课件
- 2025年盐城港控股招聘面试题库及答案
- 2026年益阳医学高等专科学校单招职业技能测试题库附答案
- 国家开放大学《商务英语4》期末考试精准题库
- 2025秋季《中华民族共同体概论》期末综合考试-国开(XJ)-参考资料
- 机械通气患者误吸预防及管理规范
- 浙江省宁波市海曙区2023-2024学年一年级上学期数学期末试卷(含答案)
- 2025年应急环境监测车行业分析报告及未来发展趋势预测
- AI生成时代虚拟生产力与生产关系变革
评论
0/150
提交评论