1、微机原理及应用课程设计说明书微型直流电机调速系统设计微机原理及应用课程设计说明书设计题目:微型直流电机调速系统设计课程设计任务:微型直流电机调速系统设计一、设计目的通过步进电机控制系统的设计,使同学们进一步掌握:(1) 汇编语言程序的设计和调试;(2) 直流电机的基本工作原理和控制驱动方法;(3) D/A接口芯片DAC0832的应用;(4) 微机基本应用系统的设计方法;二、设计内容 利用实验装置,设计一个直流电机控制系统的原理线路,编制应用程序,实现直流电机的转速控制。操作和功能要求如下:(1) 开始运行,直流电机停止;(2) 按下“加速”键,直流电机升速;按下“减速”键,直流电机减速;(3)
2、 可以改变直流电机的转向。三、设计要求(1) 设计原理线路;(2) 编制应用程序;(3) 联合调试,实现上述功能;(4) 编写设计说明书(含原理图,程序及说明,实验方法,过程及结果)。评分:基础知识掌握情况(占10)课设完成情况(占30)课设创新(占10)答辩(占10)设计报告(占20)考勤(占10)总评成绩:指导教师:一、系统功能要求分析1二、方案设计及其说明2三、原理线路设计31 原理线路2 工作原理说明3 操作时序分析4 特点说明四、程序设计41 程序结构及流程2 程序算法分析3 关键程序段说明4 源程序清单五、系统调试及结论51 调试方法2 重点问题及解决方法3 运行结果及结论六、设计
3、体会6参考文献 7一、系统功能要求分析此设计要求利用实验装置,设计一个直流电机控制系统的原理线路,编制应用程序,实现直流电机转速控制的功能,并且进一步可增加转速测量的功能。系统功能具体要求及分析如下:(1)开始运行,电机停止:未按任何键之前,设定初值,使经DA0832转换后的电流为零,电机不转。(2)按档调速功能:直流电机可有三个转速,分为一、二、三档,其中按下按键“一”电机在低速档运行;按下按键“二”电机在中速档运行;按下按键“三”电机在高速档运行。(3)连续调速功能:按下“加速”键,编程控制DA0832输入数字量累加,直流电机可在原速基础上升速;按下“减速”键,编程控制DA0832输入数字
4、量自减,直流电机可相对原速减速。(4)停止功能:设有停止键,控制电机的停止运行。调节电位器改变DA0832的基准电压,使得初值00H对应的输出电流为0,从而电机停止运行。(5)改变转向功能:原理上,调节DAC0832的基准电压,使得某一中间值对应转速为零,则在输入数字量大于此值时为正电压,电机正转;再输入数字量小于此值时为负电压,电极反转。(6)测速功能:在一定时间内对霍尔元件产生的脉冲数计数,从而求得电机转速,并在数码管显示。二、方案设计及其说明(一)硬件设计在硬件上,所用到的芯片主要有:CPU8086、并行通信接口芯片8255A、可编程定时计数芯片8253、可编程中断控制器8259A、以及
5、键盘扫描显示芯片8279。(1)电机转速的控制:电机转速大小的控制可以通过改变加于电机两端的电压来实现,选用DAC0832芯片实现数字量到模拟量的转化,设置电机转速给定值,不同的数字量对应输出不同的电流,再通过一个高输入阻抗的线性运算放大器LM324得到相应的模拟电压信号,从而控制电机转速。(2)按键状态的检测及显示:设K1、K2、K3为一、二、三档,K4为停止键,K5、K6为加速和减速键。选用8255芯片PA口读取按键状态从而控制电机在不同档运行以及电机加速或减速,并且可以通过8255 的PB口输出控制相应按键指示灯的亮灭以及利用8279芯片得到数码管相应的显示,如:在一档,其灯亮,且显示“
6、1”。(3)转速的测量及显示:利用霍尔传感器产生转速脉冲,用8253芯片设计定时/计数电路通过脉冲计数测得转速。可用8253的CT0记脉冲数,CT1定时到利用8259产生中断,显示计数。经分析,实验时电机旋转一圈可产生4个脉冲,则可以定时0.25S产生中断,利用8279对计数进行显示,即为转速。(二)软件设计设计中用到的有8253、8255,8259的初始化程序,各开关状态检测及电机速度控制子程序,以及调用库函数DISPLAY8显示程序,中断服务程序,延时子程序等。三、原理线路设计3.1原理框图: 3.2工作原理说明1、数模转换模块:利用DAC0832芯片,其工作原理如下:DAC0832是采样
7、频率为八位的D/A转换芯片,集成电路内有两级输入寄存器,使DAC0832芯片具备双缓冲、单缓冲和直通三种输入方式。 其由倒T型R-2R电阻网络、模拟开关、运算放大器和参考电压VREF四大部分组成。运算放大器输出的模拟量与输入的数字量成正比,从而实现DA转换。DAC0832输出的是电流,本设计中需用输出电压控制电机转速,所以还必须经过一个外接的运算放大器转换成电压。DAC0832外部线路如图所示。2、按键控制模块: 利用并行接口通信8255芯片, 其有三个8位的并行I/O端口为PA、PB、PC ,一个控制端口,运用可编程功能对控制端口写入不同的控制字可定义PA、PB、PC的工作方式或者直接对C口
8、进行操作。8255有两个控制字如图: 图2.1 C口置位/复位控制字 图2.2 工作方式控制字 在此设计中,用PA、和PB工作在基本输入输出方式,PA输入开关状态,PB作为输出口控制8个LED的亮灭。8255接线原理如图2.3图2.33、测速模块:利用8253和8259芯片。8253有3个完全独立的16位定时计数器:CT0、CT1、CT2,均为减法计数器,可预置计数初值,有6种可选择的工作方式,写入相应控制字,以实现计数、定时、分频等功能。8253接线原理如图3.1. 图3.1在此设计中,选用计数器0工作在方式二作为计数器,对霍尔元件产生的转速脉冲进行计数;用计数器1工作在方式二作为定时器,定
9、时0.25S,可循环定时,每次定时到会产生负脉冲,利用其上升沿作为8259的中断信号,在中断服务中对所计数进行显示。方式二为计数分频方式,工作方式如图3.2。4、显示模块:利用可编程键盘/显示接口8279,8279可为64键的接触式按键阵列提供扫描接口,显示部分能为发光二极管、数码管、液晶显示器等提供扫描显示接口。由于它本身可提供扫描信号,因而可代替微处理器完成键盘和显示器的控制,单个芯片就能完成键盘输入和LED显示控制两种功能。在此设计中,通过调用8279显示函数在晶体管上显示开关状态和电机运行速度。3.3操作时序分析(1)开始运行时,电机停止,未按键前,状态灯全灭,状态显示00,转速显示0
10、0。(2)按下K1键LED1亮,状态显示01,表示为一档,电机以低速运行,晶体管高两位显示相应速度。(3)按下K2键LED2亮,状态显示02,表示为二档,电机以中速运行,晶体管高两位显示相应速度。(4)按下K3键LED3亮,状态显示03,表示为三档,电机以高速运行,晶体管高两位显示相应速度。(5)按下K4键LED4亮,状态显示04,为停止档,电机停止运行,晶体管高两位显示00。(6)按下K5键LED5亮,状态显示AA,为连续加速档,电机在原速上逐渐加速,直至最高速度后以最高速度运行,速度显示增加至显示最高速。(7)按下K6键LED6亮,状态显示DD,为连续减速档,电机在原速上逐渐减速,直至停止
11、,速度显示逐减至显示00。3.4特点说明(1)在调速方面既可以直接的选择低、中、高某一档位让电机运行,要想更精准的调速,可使用连续加减速按键加或减至自己想要的速度让电机以此速度运行。可见,此系统的调速是灵活的。(2)本设计有速度显示功能,将此刻的电机转速成为可观量,切实的掌握电机转速,从而按主覌要求要求进行调速。(3)在测速时,采用定时到产生中断进行计数显示的方法,时延比较小,较为精确。四、程序设计4.1程序结构及流程中断服务程序流程: 电机加速程序流程: 4.2 程序算法分析在主程序中有8253、8255、8259的初始化以及开关状态检测程序,检测到某开关闭合转入相应的档位子程序或连续加减速
12、子程序并进行速度的输出,控制电机的调速。为实现测速,加入了中断服务程序,0.25S产生一次中断,即0.25S采一次值,进入中断服务程序,锁存计数值并计算得所记脉冲数进行显示,即为电机的转速。4.3关键程序段说明1、显示程序段LedDisplay PROC NEAR ;输出显示速度,状态 CALL DELAY MOV AL,COUNTER2 MOV AH,AL AND AL,0FH ;取低四位 MOV Buffer,AL ;显示速度低位 AND AH,0F0H ;取高四位 ROR AH,4 MOV Buffer + 1,AH ; ;显示速度高位 MOV Buffer + 2,10H ;中间4位不
13、需要显示 MOV Buffer + 3,10H MOV Buffer + 4,10H MOV Buffer + 5,10H MOV AL,COUNTER1 MOV AH,AL AND AL,0FH MOV Buffer+6,AL ;显示状态低位 AND AH,0F0H ROR AH,4 MOV Buffer + 7,AH ;显示状态高位 LEA SI,Buffer CALL DELAY CALL Display8 ;调用现实函数 RET LedDisplay ENDP2、中断服务程序段INT_0 PROC NEAR CLI ;关中断 PUSH DX ;寄存器入栈保护 PUSH AX MOV D
14、X,TCL ;写8253控制字 MOV AL,00000000B OUT DX,AL XOR BX,BX ;BX清零 MOV DX,T0 ;读T0的低字节,存放BL IN AL,DX MOV BL,AL IN AL,DX ;读T0的高字节,存放BH MOV BH,AL MOV AX,Counter3 ;取T0上次中断时的CE SUB AX,BX ;计算脉冲数存放AX MOV Counter3,BX ;中断后的CE存放Counter3数组 MOV COUNTER1,AL ;脉冲数输出显示 MOV DX,IO8259_0 ;8259的IR0中断 MOV AL,20H OUT DX,AL POP A
15、X ;寄存器出栈 POP DX STI ;开中断 IRET ;中断返回 I NT_0 ENDP 4.4源程序清单(见附录)五、系统调试及结论5.1调试方法先在星研软件下编好程序进行编译链接,若无语法错误,则与硬件连接,全速运行,看预期功能是否实现,若有逻辑错误,可进行:(1)加跳转指令进行调试:若程序中出现逻辑错误,可在某一句的后边加跳转指令,跳过下一段指令,以检测前面的程序是否有问题。这样可以缩小查找问题的范围,以发现问题之所在。(2)单步进入进行调试:星研软件中可进行单步调试,这样可以掌握指令的执行顺序及跳转的位置,并可观察每一步运行后寄存器内值的变化,从而发现一些问题。5.2重点问题及解
16、决方法问题一:状态灯显示混乱,开关与LED没有对应显示。解决:通过对实验箱上的LED进行电平测试,发现所采用的8个LED灯是在接低电平的情况下亮的,由此,应对8255的A口输入量取反后再由B口输出控制灯的亮灭,这样开关状态刚好与状态灯的亮灭对应,解决了此问题。问题二:测速时,速度显示为不变值或一直显示00。解决:经请教老师,发现是设计思路有误。开始时,我们是用8255检测按键状态,通过对PC口的置位和复位控制计数器8253的门控信号,以此控制计数的停止来产生中断再显示计数。老师讲每个芯片的工作都是有时延的,这样连接下来,时延就比较大了,不能准确的测速,甚至不能正常的显示。分析后我们直接用定时计
17、数器1的OUT1作为8259的中断信号,利用其计数定时到的上升沿产生中断,对计数进行显示。问题三:测速时,电机以恒速运行,速度显示却不停变化。解决:8253计数器为减1计数,则初值减现值得计数值。对程序进行调试分析,0.25S采一次数,发现在下一次计数时计数初值并没有重新装入,起初认为是8253计数器0工作方式的问题,但改变其工作方式并未解决问题,最后修改程序,用上次计完数的值减此次计数后的值得计数值进行显示,成为一个累减的过程。这样修改后显示正确,但是减为零时的计数值需避过,否则会有错误。问题四:程序在单步运行时结果正确,全速运行时结果混乱。解决:原理上单步运行和全速运行所得结果是一样的,其
18、差别主要在于单步时指令执行间时差更大,经分析,DAC0832的D/A转换是需要一定时间的,所以输出时必须要加延时程序,给它足够的转换时间。问题五:直流电机转速不受控制。解决:查资料知DAC0832输出的是电流,要输出电压,必须经过一个运算放大器转换。5.3运行结果及结论运行结果 :开始运行时,电机停止,状态灯全灭,速度显示为零,按下按键后,相应状态灯亮并显示相应的电机速度,按停止键后,电机停止运行。结论:运行结果与预期要求相符,利用实验装置完成小直流电机调速系统的原理线路设计,编制应用程序,实现了直流电机的转速控制和速度显示等一系列功能,达到了设计要求并且进行了功能的扩展。 六、设计体会通过本
19、次微机原理课程设计,我深刻体会到了微机原理课程的实用性及重要性。让我知道学习并不是停留于课本和知识表面的,真正的学习是理论与时间的糅合,是将抽象化的知识变为切实可用的事物。在设计的过程中,也是对自身的一种考验,考验知识的娴熟度,动手的能力,创新的思维,细心和耐心等,当然这也是一个发现不足的过程,知不足而后进,其中收益是很大的。在设计的过程中,我们遇到了各种各样的问题,有失落过,却也有解决后的欣喜。在摸索中,我进一步认识和掌握了各个芯片的功能及用法,练习了编程及调试,提高了独立思考的能力和解决问题的思维。总之,在这几天中,自己的探索,老师的指导及与同学的讨论让我获益匪浅。由于本次设计时间比较短,
20、我们完成的设计达到了预期要求,但并不是尽善尽美的,还有很多进步的空间。所以我会继续努力的,饱含信心和热情的去学习。 参考文献1 微机接口实验系统使用手册2 微机接口实验系统实验指导书3 微机原理及应用课程设计指导书4 微机原理及接口技术项目教程 5 微型计算机原理及应用附录:源程序代码.MODEL TINY EXTRN Display8:NEAR IO8259_0 EQU 0D000H IO8259_1 EQU 0D001HDAC0832 EQU 0F000HPA EQU 0E000HPB EQU 0E001HPC EQU 0E002HPTL EQU 0E003HT0 EQU 0C000HT1
21、 EQU 0C001HT2 EQU 0C002HTCL EQU 0C003H .STACK 100 .DATA BUFFER DB 8 DUP(?) Counter1 DB ? ;定义速度数组Counter2 DB ? ;定义电机状态数组Counter3 DW ? ReDisplayFlag DB 0 ;中断标志 .CODE START: MOV AX,DATA MOV DS,AX MOV ES,AX NOP ; CALL Init8259 CALL WriIntver MOV DX,PTL ;8255初始化 MOV AL,10010000BOUT DX,ALMOV DX,DAC0832 ;初
22、速度为0MOV AL,00HOUT DX,AL MOV DX,TCL MOV AL,00110010B;计数器T0,工作方式1,初值0FFFFH OUT DX,AL MOV AL,01110100B;定时器T1,工作方式2,实现0.25秒定时 OUT DX,AL MOV DX,T1 ;定时器T1装初值 MOV AX,31250 OUT DX,AL MOV AL,AH OUT DX,AL MOV DX,T0 ;计数器T0装初值 MOV AX,200 OUT DX,AL MOV AL,AH OUT DX,AL AGAIN: STI ;开中断 NOPMOV CX,0FFFFHLOOP $MOV DX
23、,PA ;读开关状态IN AL,DXTEST AL,00000001BJE NEXT1CALL ONEJMP AGAINNEXT1:TEST AL,00000010BJE NEXT2CALL TWOJMP AGAINNEXT2:TEST AL,00000100BJE NEXT3CALL THREEJMP AGAINNEXT3:TEST AL,00001000BJE AACALL TINGZHIJMP AGAINAA:TEST AL,00010000BJE CCCALL JIASUJMP AGAINCC:TEST AL,00100000BJE WUCALL JIANSUJMP AGAINWU:N
24、OT ALMOV DX,PBOUT DX,ALMOV Counter2,00H;CALL LedDisplayCALL DELAY NOP NOP CALL LedDisplayJMP AGAIN SHUCHU0:CALL SHUCHU JMP AGAIN JIANSU PROC NEAR ;减速函数NOT ALMOV DX,PBOUT DX,ALPOP BXPOP CXPOP AXCMP AL,00HJBE SHUCHU0SUB AL,05HPUSH AXPUSH CXPUSH BXMOV DX,DAC0832OUT DX,ALMOV Counter2,0AAHCALL LedDisplay
25、RETJIANSU ENDPJIASU PROC NEAR ;加速函数NOT ALMOV DX,PBOUT DX,ALPOP BXPOP CXPOP AXCMP AL,0FFHJAE SHUCHU0ADD AL,05HPUSH AXPUSH CXPUSH BXMOV DX,DAC0832OUT DX,ALMOV Counter2,0DDHCALL LedDisplayRETJIASU ENDPONE PROC NEAR ;1档运行函数MOV DX,PBNOT ALOUT DX,ALMOV AL,70HCALL SHUCHUMOV Counter2,01HCALL LedDisplayRETON
26、E ENDPTWO PROC NEAR ;2档运行函数MOV DX,PBNOT ALOUT DX,ALMOV AL,0A0HCALL SHUCHUMOV Counter2,02HCALL LedDisplayRETTWO ENDPTHREE PROC NEAR ;3档运行函数MOV DX,PBNOT ALOUT DX,ALMOV AL,0F0HCALL SHUCHUMOV Counter2,03HCALL LedDisplayRETTHREE ENDPTINGZHI PROC NEAR ;停止档位函数MOV DX,PBNOT ALOUT DX,ALMOV AL,0HCALL SHUCHUMOV
27、 Counter2,04HCALL LedDisplayRET TINGZHI ENDPSHUCHU PROC NEAR ;速度输出函数CALL DELAYMOV DX,DAC0832;MOV AL,0HOUT DX,ALPOP DXPOP CXPUSH AX ;保存原速度,以供连续调速PUSH CXPUSH DXRETSHUCHU ENDP Init8259 PROC NEAR ;中断初始化 MOV DX,IO8259_0 MOV AL,13H OUT DX,AL MOV DX,IO8259_1 MOV AL,08H OUT DX,AL MOV AL,09H OUT DX,AL MOV AL
28、,0FEH OUT DX,AL RET Init8259 ENDP WriIntver PROC NEAR ;中断向量表 PUSH ES MOV AX,0 MOV ES,AX MOV DI,20H LEA AX,INT_0 STOSW MOV AX,CS STOSW POP ES RET WriIntver ENDP INT_0 PROC NEAR CLI PUSH DX ;中断服务 PUSH AX MOV REDISPLAYFLAG,1 MOV DX,TCL MOV AL,00000000B OUT DX,AL XOR BX,BX MOV DX,T0 IN AL,DX MOV BL,AL IN AL,DX MOV BH,AL MOV AX,Counter3 SUB AX,BX MOV Counter3,BX MOV COUNTER1,AL MOV DX,IO8259_0 MOV AL,20H OUT DX,AL MOV DX,T0 ;计数器T0装初值 MOV AX,0FFFFH OUT DX,AL MOV AL,AH OUT DX,AL POP AX POP DX STI IRET INT_0 ENDP LedDisplay P
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1