版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、大连理工大学本科设计报告题目: 步进电机转速控制系统设计 步进电机转速控制系统设计一、 设计要求使用步进电机作为被控制对象;由ZLG7290做人机对话平台;利用单片机的P1(8位)和P3(部分口线)构造系统。利用ZLG7290的键盘控制直流电机,也可以利用ADC模块(与电位器配合),利用电位器控制转速;利用ZLG7290的8位LED数码管显示电机转向、转速参数显示。二、 设计分析及系统方案设计系统分析: 程序为无限循环结构。先调用A/D转换程序,再调用BCD转换程序,利用ZLG7290不断显示数码管的数字,中断程序包括键盘输入电机旋转方向,电位器控制电机转速。算法描述:1)30H-37H(DA
2、TA1):显示缓冲区,装载待显示的字形码,实验中只用到4个数码管,分别是30H,31H,34H,35H,不需要的32H,33H,36H,37H赋熄灭码#00H。不断调用WRNBYT子程序将数据写入ZLG7290的10H-17H,显示数据。2)单双八拍相序放在20H-27H中,高四位都赋F,这样不会影响低四位步进电机相序节拍信号的输出,为接下来中断控制方向和转速做准备。3)设定定时器T1定时方式1,TH1和TL1赋初值#00H(TH1原始为#00H),A/D转换的数据传送给TH1,每当T1定时时间到时,通过P1口的低四位(P1.0-P1.3)发出步进电机的一个相序节拍,定时时间的改变就可改变电机
3、转动的速度。4)拆分子程序。将累加器A中的数据拆分为两个四位16进制数并查表,为显示方向和电机速度做准备。5)中断服务程序INT_7290,2A-2D装载从ZLG7290的00H单元开始读出的连续4个字节数据,其中2BH中的就是键值。当S1或S2键按下时,利用ZLG7290的/INT信号引发单片机的一个中断,取键值后调用拆分查表程序将方向显示在数码管上。其中S1键按下电机逆时针转动,S2键按下电机顺时针转动。6)控制转速子程序T1_INT,将A/D转换结果送给累加器A,低四位清零后送给定时器高八位,判断方向位,利用CJNE命令,若方向位是1则执行接下来的语句,若不是则跳转到LOOP11,再判断
4、时候等于2,若是则执行下来的语句,若不是则跳转到DO,不做任何操作,即电机停止转动。7)A/D转换子程序,将转换结果送3FH中,再经过数据滤波,采集256次相加再取高8位数据即为平均值送3EH中。8)BCD转换子程序,将3EH中数据与#0F0相与,取出高四位,再半字节交换,寄存器B中送10,相除后A中为十位数,B中为个位数,在此调用拆分子程序查表的相应字形码后送30H,31H显示。三、系统电路图四、 外围接口模块硬件电路功能描述步进电机是一种将脉冲信号变换成相应角位移或线位移的电磁装置,当有脉冲输入时步进电机一步一步的转动,每给一个脉冲信号,就转过一定的角度。步进电动机的角位移量和输入脉冲的个
5、数严格成正比,在时间上与输入脉冲同步,因此只要控制输入脉冲的数量、频率及电动机绕组通电的相序,便可获得所需的转角、转速及转动方向。ZLG7290B:ZLG7290B是数码管动态显示驱动、键键盘扫描管理芯片。能够驱动8位共阴极结构的LED数码管或64位独立的LED,同时还能扫描管理多达64个按键(S1-S56、F0-F7)的扫描识别。本实验用到了4个数码管显示方向和速度,两个按键S1,S2控制方向的改变。TLC549是被广泛应用的CMOS8位A/D转换器。该芯片有一个模拟输入端口,三态的数据串行输出接口可以方便地和微处理器或外围设备连接。TLC549仅仅使用输入/输出时钟和芯片选择信号控制数据。
6、本实验中通过电位器将连续的模拟的电阻值经过TLC549转换成8为二进制数字信号。五、 主程序中主要变量定义变量名称RAM单元/寄存器功能DATA130H显示缓冲区首地址20H相序首地址28HA/D转换数据滤波求和中的高八位29HA/D转换数据滤波求和中的低八位2AH-2DH读出的ZLG7290de 00H-03H数据存放地址2EH相序循环次数8FX2FH控制转向标志3CH相序列表中最后一个相序地址3DH相序列表中第一个相序地址3EH滤波结果存放地址3FHA/D转换结果存放地址六、系统软件中各个子程序的功能描述子程序名称入口参数出口参数功能 描述CFR3、R4R3、R4将数据拆分为两位16进制数
7、查表得对应字形码INT_7290R0、R7、R2、R3、R4R3、R4显示电机转动方向T1_INT3FHA控制电机转动速度ADZH无A模拟信号转换为数字信号BCD_CONTAR3、R416进制数转换为10进制数DELAYR0、R1R0、R1延时子程序使显示稳定RDADDR0,R2,R3,R4,R7R0到R0+7多字节读操作WRNBYTR0,R2,R3,R7无多字节写操作STA无无IC启动信号STOP无无IC停止信号MACK无无发送IC应答信号MNACK无无发送IC非应答信号CACK无F0IC应答检测WRBYTA无IC发送一个字节RDBYT无R2IC接收一个字节七、主程序程序流程图T1定时时间到
8、/INT0主程序入口TL1赋初值#00HTH 1赋AD转换结果读出ZLG7290B内部00H-03H的数据于2A-2D中对ZLG7290B复位开INT0,T1中断NFX=#01?设定T1工作方式和初值NY取键值、拆分查表建立相序表FX=#02?逆时针转相序加1送显示缓冲区Y建立变量缓冲区停止顺时针转相序减1RETIAD转换模块INT_7290中断服务子程序BCD转换模块调WRNBYT写入数据到ZLG7290的显示缓冲区NDJNE 3EHMOV 3EH,#08HMOV 3DH,#20HMOV 3CH,#27H延时子程序Y主程序流程图DORETIT1_INT中断服务子程序八、程序清单;#ADC模块
9、连线#DATBITP3.3CLKBITP3.4CSBITP3.5;#键盘控制模块连线#SDABITP1.4SCLBITP1.5 WSLAEQU070HRSLAEQU071HFXEQU2FH;将控制转向标志放在2FH单元DATA1EQU30H;变量缓冲区的首地址;*ORG8000HLJMP8100HORG8003HLJMPINT_7290;控制转向的中断服务程序ORG801BHLJMPT1_INT;控制转速的中断服务程序;*; 初始化部分 ;*ORG8100HSTART: MOVSP,#60HCLRP1.7 ;7290复位LCALLDELAYSETBP1.7SETBEA ;开INT0中断SETB
10、EX0SETBIT0 ;触发极性为下降沿 SETBET1;开T1中断SETBTR1MOVTMOD,#10H;设定定时器T1工作方式及初值MOVTH1,#00HMOVTL1,#00HMOV3DH,#20HMOV3CH,#27HMOV2EH,#08HMOVFX,#00HMOV20H,#0F8H;相序放在20H27H中MOV21H,#0FCHMOV22H,#0F4HMOV23H,#0F6HMOV24H,#0F2HMOV25H,#0F3HMOV26H,#0F1HMOV27H,#0F9H;*MOV 34H,#0DAH MOV 35H,#0FCH;用34H、35H显示FLAG;用30H31H显示ADC转换
11、结果MOVDATA1+7,#00H;熄灭MOVDATA1+6,#00H;熄灭MOVDATA1+3,#00H;熄灭MOVDATA1+2,#00H;*;向7290B写入数据;*LOOP:LCALLADZH;数据滤波LCALLBCD_CONT;转换成十进制MOVR7,#08HMOVR2,#10HMOVR3,#WSLAMOVR0,#DATA1LCALLWRNBYT;调显示子程序LCALLDELAY ;使显示稳定 SJMPLOOP ;*LEDSEG:DB0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E4H;0-7的字形码DB0FEH,0F6H,0EEH,3EH,9CH,7AH,9E
12、H,8EH;8-F的字形码DB0FAH,1EH,12H,00H;a,t,= 和熄灭码;*;拆分程序(将A中的数据拆分为两个四位16进制数并查表);( 结果在R4、R3中 ) ;*CF:PUSH02H ;将A中的数据拆分为两个四位16进制数并查表PUSHDPH PUSHDPLMOVDPTR,#LEDSEGMOVR2,AANLA,#0FHMOVCA,A+DPTRMOVR3,AMOVA,R2SWAPAANLA,#0FHMOVCA,A+DPTRMOVR4,APOPDPLPOPDPHPOP02HRET ;*; 中断服务程序 INT_7290:(INT0),显示FLAG值;*INT_7290:PUSH00
13、HPUSH02HPUSH03HPUSH04HPUSH07HPUSHACCPUSHPSWMOVR0,#2AH;状态数据区首址MOVR7,#04H;取状态数据个数MOVR2,#00H ;内部数据首地址MOVR3,#WSLA;取器件地址(写)MOVR4,#RSLA;取器件地址(读) LCALLRDADD;读出7290的00H-03H数据存于2AH-2DH NOP;设定一个断点,以观察读出的4个数据MOVFX,2BH;取健值,存放在2BH内MOVA,FX;显示FLAGLCALLCF;拆分、查表MOVDATA1+4,R3MOVDATA1+5,R4POPPSWPOPACCPOP07HPOP04HPOP03
14、HPOP02HPOP00HRETI;*; 中断服务程序 改变转向;*T1_INT:PUSH00HPUSH01HMOVR0,3DHMOVR1,3CHMOVTL1,#00HMOVA,3FHANLA,#0F0HMOVTH1,ALOOP1:MOVA,FXCJNEA,#01H,LOOP11;若FLAG=02H则跳转到LOOP11,左循环,逆时针MOVA,R0MOVP1,AINC3DHSJMPLOOP12LOOP11: CJNEA,#02H,DOMOVA,R1MOVP1,ADEC3CHLOOP12:DJNZ2EH,DO;一个相序周期完成MOV2EH,#08HMOV3DH,#20HMOV3CH,#27HDO
15、:POP01HPOP00HRETI;#ADC的相关子程序#ADZH: PUSH00HPUSH02HLOOP2:MOV R2,#0FFHLCALLTLC549_ADCMOVA,3FHMOV29H,AMOV28H,#00H;放累加和高八位的内存单元28H清0LOOP20:LCALLTLC549_ADCCLRCADDA,29HMOV29H,A;29H放低位MOVA,#00HADDCA,28HMOV28H,A;28H放高位DJNZR2,LOOP20MOV3EH,A;将数据滤波的结果放在3EH中POP02HPOP00HRETTLC549_ADC:PUSH07HCLRACLRCLKMOVR7,#08HCL
16、RCSLOOP3: SETBCLKMOVC,DATRLCACLRCLKDJNZR7, LOOP3MOV3FH,A;将ADC转换的结果放在3FH中SETBCSCLRCLKPOP07HRET;*BCD_CONT: PUSH07HPUSH06HPUSH05HPUSH02HMOVA,3EH ANL A,#0F0H SWAP AMOVB,#0AH;B中放入10DIVABMOVR6,A;R6中得十位数 MOVR5,B;R5中得个位数MOVA,R6LCALLCF;调拆分子程序(入口A出口R4,R3-字形码)MOVDATA1+1,R3MOVA,R5LCALLCF;调拆分子程序(入口A出口R4,R3-字形码)M
17、OVDATA1+0,R3POP02HPOP05HPOP06HPOP07HRET DELAY:PUSH00HPUSH01HMOVR0,#00HDELAY1:MOVR1,#00HDJNZR1,$DJNZR0,DELAY1POP01HPOP00HRET;*;通用的I2C通讯子程序;相关子程序WRBYT、STOP、CACK、STA;*WRNBYT:PUSHPSWPUSHACCWRADD:MOVA,R3;取外围器件地地址(包含r/w=0)LCALLSTA;发送起始信号S LCALLWRBYT;发送外围地址LCALLCACK;检测外围器件的应答信号JBF0,WRADD;如果应MOVA,R2LCALLWRB
18、YT;发送内部寄存器首地址LCALLCACK;检测外围器件的应答信号JBF0,WRADD;如果应答不正确返回重来 WRDA:MOVA,R0LCALLWRBYT;发送外围地址LCALLCACK;检测外围器件的应答信号JBF0,WRADD;如果应答不正确返回重来INCR0DJNZ R7,WRDALCALLSTOP POPACCPOPPSWRET ;*;通用的I2C通讯子程序(多字节读操作);入口参数R7字节数;;R0目标数据块首地址;R2从器件内部子地址;;R3器件地址(写);R4器件地址(读);相关子程序WRBYT、STOP、CACK、STA、MNACK ;*RDADD: PUSHPSW;从PC
19、F8563的02H单元读入7个参数PUSHACC;存放于20H-26H单元RDADD1:LCALLSTA MOVA,R3;取器件地址(写)LCALLWRBYT;发送外围地址LCALLCACK;检测外围器件的应答信号JBF0,RDADD1;如果应答不正确返回重来MOVA,R2;取内部地址LCALLWRBYT;发送外围地址LCALLCACK;检测外围器件的应答信号JBF0,RDADD1;如果应答不正确返回重来LCALLSTAMOVA,R4;取器件地址(读)LCALLWRBYT;发送外围地址LCALLCACK;检测外围器件的应答信号JBF0,RDADD1;如果应答不正确返回重来RDN:LCALLRD
20、BYT MOVR0,ADJNZR7,ACKLCALLMNACKLCALLSTOPPOPACCPOPPSWRETACK:LCALLMACKINCR0SJMPRDN ;(3)I2C各个信号子程序;*;启动信号子程序S ;*STA:SETBSDA;启动信号SSETBSCLNOP;产生4.7US延时NOPNOPNOPNOPCLRSDANOP;产生4.7US延时NOPNOPNOPNOP CLRSCLRET ;*;停止信号子程序P ;*STOP:CLRSDA ;停止信号PSETBSCLNOP;产生4.7US延时NOPNOPNOPNOPSETBSDANOP;产生4.7US延时NOPNOPNOPNOPCLRS
21、CLCLRSDARET ;*;应答信号子程序 MACK;*MACK:CLRSDA;发送应答信号ACKSETBSCLNOP;产生4.7US延时NOPNOPNOPNOPCLRSCLSETBSDARET;*;非应答法信号子程序MNACK;*MNACK:SETBSDA;发送非应答信号NACKSETBSCLNOP;产生4.7US延时NOPNOPNOPNOPCLRSCLCLRSDARET;*;应答检测子程序CACK;*CACK:SETBSDA;应答位检测子程序SETBSCL CLRF0MOVC,SDA;采样SDAJNCCEND;应答正确时转CENDSETBF0;应答错误时F0置一CEND:CLRSCLRET;*;发送一个字节子程序WRBYT;*WRBYT:PUSH06HMOVR6,#08H;发送一个字节子程序 WLP:RLCA ;(入口参数A)MOVSDA,CSETBSCLNOP;产生4.7US延时NOPNOPNOPNOPCLRSCLDJNZR6,WLPPOP06HRET;*;接收一个字节子程序RDBYT ;*RDBYT: PUSH06HMOVR6,#08H;接收一个字节子程序RLP:SETBSDASETBSCL; *NOP;!产生大于15微秒的延时!NOP ;注意这是专门为ZLG7290N
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 创新保安服务合同解读
- 长期信用借款保证书模版
- 教师与家长携手承诺发展
- 链家改进版房屋买卖协议
- 版供水工程劳务分包合同
- 文明停车维护市容的使命
- 葡萄购销合同模板
- 景观石料购买协议
- 招标信息酒店建设项目
- 啤酒花购销合约
- 2023-2024学年安徽省合肥市小学数学五年级上册期末自测题
- 宁氏谱系条目汇总表2016318支系名称家谱世系字辈-简明
- GB/T 702-2017热轧钢棒尺寸、外形、重量及允许偏差
- 四年级上册英语试题-Unit 12 Peter can jump high 湘少版(含答案)
- 信息系统运行维护服务与方案(IT运维服务与方案)
- 培训宏业系统门店简易操作手册
- 《故都的秋》《荷塘月色》联读课件15张-统编版高中语文必修上册
- 自考《中国现代文学史》考试(重点)题库(含详解)
- 初中篮球教学案例八年级体质课案-【教学参考】
- 毽球知识考题
- 高考作文写作备考:君子善假于物也 导写及范文示例
评论
0/150
提交评论