《微机实验及课程设计》报告1东南大学《微机实验及课程设计》课程设计报告综合测试题二小型电机控制系统姓名:学号:专业:自动化实验室:416组别:同组人员:设计时间:2013年05月24日——2013年06月4日评定成绩:审阅教师:《微机实验及课程设计》报告2目录一.课程设计目的与要求…………………………………………………………………3二.方案论证与原理设计……………………………………………………………………4三.详细(机理)设计………………………………………………………………………5四.方案实现与测试(或调试)……………………………………………………………6五.分析与总结……………………………………………………………………………14《微机实验及课程设计》报告3一.课程设计目的与要求直流电机实验要求:1)基本要求(难度系数1.0)利用DAC0832输出一串脉冲,经放大后驱动小直流电机,利用开关K0~K5控制改变输出脉冲的电平及持续时间,达到使电机加速、减速的目的,控制过程采取开环与闭环两种方式实现:(1)用开环方式按指定速度控制D/A输出实现转速变化;(2)用闭环方式按指定速度控制D/A输出实现转速变化;(3)速度参数可选择通过实验系统上的可变电位器和键盘实时修改;(4)利用转速脉冲检测电机实际转速,在PC机上显示设定速度和实际速度,并在数码管上显示速度偏差,同时用红黄绿三只发光管表示当前电机运行状态。2)设计提示直流电机可以用DA直接放大控制,实际系统中更多采用PWM脉动调宽控制,实验中小直流电机的转速是由Ub输出脉冲的占空比来决定的,正向占空比越大转速越快,反之越慢。见图5.3-1:在本实验系统中,模拟量输出Ub为双极性,当输入数字量小于80H时输出为负,输入等于80H时为0V,输入大于80H时输出为正。因而本实验中,DAC0832输入数字量只有2个(80H和FFH),通过不同的延迟时间达到改变小电机转速的目的,可选软件延时和8253定时器/计数器中断,比较不同效果。3)进一步设计要求(1)设置急停按钮功能;(2)用开关随时控制正反转方向;(3)在PC上同步显示设定和转速曲线。《微机实验及课程设计》报告4二.原理设计及流程图1、设计思路流程图判断开闭环控制判断脉冲个数,并依据脉冲个数,设置红绿灯亮灭8253计数器1初始化方式0,开始计数8253计数器2初始化,方式0,计数100,计计数器1开始计数判断有无按键判断急停按钮是否打按键为r按键为s其它按键将RESU的值给REP将SAND的值给REP退出程序开始主程序给8255赋控制字A、C输出,B口输入8253计数器0初始化方式3,计时50ms显示提示和版权信息无按键是否8253计数器1停止计数将当前值赋给RESU比较当前的RESU和SAND的值,调整低电平的时间在屏幕上显示当前RESU的值计数器2是否计时结束打开则将ZFSIT赋值ff,否则将其赋0使电判断开关开在哪一档将BUF1(即低电平时间)赋成对应的值使0832输出为高电平,进行循环将REP值输出至7段数码管显示使0832输出为低电平,进行循环将REP值输出至7段数码管显示,输出电脉冲的高低电平时间比例为BUF2:开环闭环《微机实验及课程设计》报告52、实验硬件连线8255a口接LED数码管,功能输出,a0至a6接数码管相应位,a7接个位使能,并通过非门接十位使能(小数点位dp可忽视),8255b口的b0-b5接开关K0-K5,b6接急停按钮,功能输入,p7接开闭环控制按键,pc3,pc2,pc1接红黄绿三个灯,8255c口的c0接计数器1的GATE,功能输出,8255使能接288H,0832使能接290H,输出接电机DJ,8253计数器使能接280H,8253计数器1时钟输入接电机测速,GATE接c0,计数器0输入接1MHz时钟,输出接计数器2输入时钟,计数器2输出接b7。3、基本原理初始化:显示版权信息,初始化8255的工作状态:B口输入,用于并行读入K0~K5的状态;b7,连接至8253的OUT2;c口输出,PC0连接至8253的GATE1,用于控制计数器1的启动。A口用于输出数码管。8253计数器0用于分频,外接1Mhz时钟,计数初值为50000,分出20Hz的方波。计数器1用于记录获得的脉冲个数,计数初值为0FFFFH,时钟为光电检测器的输出。计数器2用于定时,计数初值100,时钟为计数器0的输出,这样可以定时5秒。接着检测PA0是否为1,即是否经过5秒,如果没有达到5秒,继续检测;如果达到5秒,计数器1停止计数,锁存计数值,并判断开闭环按键,通过数码转换程序显示计数值在数码管,同时根据计数值设置红绿灯的亮灭。闭环情况下,如果计数所得值与所设定的标准值不相等则通过反馈模块进行修正,使电机转速发生变化。检测开关状态,根据不同的开关状态对DAC0832输出不同的占空比,达到控制电机转速的目的。其中,在控制占空比的同时,加入数码管显示模块,实现同步扫描显示。最后返回,继续下一轮的检测与控制。三.详细设计及方案论证1用开环方式按指定速度控制D/A输出实现转速变化开环设计即在每次测完脉冲后,对0832输出的方波占空比不作调整,直接进行下一次循环。2用闭环方式按指定速度控制D/A输出实现转速变化;实现闭环自动调正转速的功能,可以在测完转速后和设定的转速相比较,如果实测的转速大于设定的转速,可以控制0832输出的方波的占空比大一些;反之则小一些。3速度参数可选择通过实验系统上的可变电位器和键盘实时修改;试验中,通过8255并行输入输出接口接受K1~K5的速度设置命令,则进行开关处的检测,判断开关当前所处的档位,然后赋给相应高低电平时间(软件计时,即延时代码),然后让0832输出相应的方波,。《微机实验及课程设计》报告64利用转速脉冲检测电机实际转速,在PC机上显示设定速度和实际速度,并在数码管上显示速度偏差,同时用红黄绿三只发光管表示当前电机运行状态。计数器1用于记录获得的脉冲个数,在方式0下工作,计数初值为0FFFFH,时钟为光电检测器的输出,光带检测器每次有输出,则计数器1存储器中的值递减1。计数器2用于定时,计数初值100,时钟为计数器0的输出,这样可以定时5秒。然后进入小循环(代码中的LOOPER):该小循环在程序最底层,每顺序执行一次即进行一次循环,首先判断按键,以决定是否退出程序以及7段数码管显示的是测得值还是标准值。接着检测PB7是否为1,即是否经过5秒,如果没有达到5秒,则进行开关处的检测,判断开关当前所处的档位,然后赋给相应高低电平时间(软件计时,即延时代码),然后让0832输出相应的方波,在延时程序中,将要显示的值显示到7段数码管中,然后跳回,重新开始一遍小循环;如果达到5秒,计数器1停止计数,锁存计数值,由此计算转速,根据转速设置对应红绿灯的亮灭。并将该次的测得值与标定值(预期)进行比较,根据两者之间的差异对输出方波的占空比进行调整。然后将该次的测得值在PC屏幕上显示。接着返回,重新开始大循环,继续下一轮的检测与控制。进一步设计(1)设置急停按钮功能;K6输出为1时表示急停命令,通过检验8255Pb6端口是否为高电平可知k6的状态。当K6为1时,输出80h给0832,使得Ub输出电平为0,使得电机停止转动。从而实现急停的功能。(2)用开关随时控制正反转方向;K4输出为1为正转,输出为0实现反转。(3)在PC上同步显示设定和转速曲线。以设置值sand为横坐标,以实际值resu为纵坐标,通过int10h中断进行图形的绘制,其中每秒钟进行一次小段绘制。从而实现设定和转速曲线的绘制。四.方案实现与测试代码大致划分成了以下几块:控速模块,测速模块和显示模块,我们将反馈模块、7段数码管显示模块、PC屏幕显示模块和一个急停功能嵌套在其中。控速模块主要包括了检测开关状态部分和调节占空比的部分,代码如下:SWI:MOVDX,io8255bINAL,DX;读取开关《微机实验及课程设计》报告7MOVKEYS,ALTESTAL,01HJNZK0TESTAL,02HJNZK1TESTAL,04HJNZK2TESTAL,08HJNZK3TESTAL,10HJNZK4TESTAL,20HJNZK5JMPLOOPERK0:MOVSAND,20;假设标准MOVBUF1,0800HMOVAX,K0B2MOVBUF2,AXDELAY:MOVCX,BUF1MOVAL,80HMOVDX,io0832OUTDX,ALDELAY1:LOOPDELAY1MOVAL,0FFHMOVDX,io0832OUTDX,ALMOVCX,BUF2《微机实验及课程设计》报告8DELAY2:LOOPDELAY2JMPLOOPERK1:MOVSAND,40;假设标准MOVBUF1,0800HMOVAX,K1B2MOVBUF2,AXJMPDELAYK2:MOVSAND,60;假设标准MOVBUF1,0800HMOVAX,K2B2MOVBUF2,AXJMPDELAYK3:MOVSAND,80;假设标准MOVBUF1,0800HMOVAX,K3B2MOVBUF2,AXJMPDELAYK4:MOVSAND,100;假设标准MOVBUF1,0800HMOVAX,K4B2MOVBUF2,AXJMPDELAYK5:MOVSAND,120;假设标准MOVBUF1,0800H《微机实验及课程设计》报告9MOVAX,K5B2MOVBUF2,AXJMPDELAY其中,SAND是相应占空比的电机的转速。而代码中BUF1负责控制0832的低电平持续时间,所有的状态低电平均为一个定值,而BUF2由K0B2至K5B2这5个变量决定,它们表示不同开关状态下,高电平应该持续的时间。测速模块,代码:FINISH:MOVDX,io8255kMOVAL,00HOUTDX,AL;定时器1停止计数MOVDX,io82531INAL,DXMOVBL,ALINAL,DXMOVBH,AL;16位计数值送BXMOVAX,0FFFFHSUBAX,BX;计算脉冲个数CALLDISP;显示MOVDL,0dhMOVAH,02INT21hMOVDL,0ahMOVAH,02INT21hJMPINTK反馈模块,通过测得值和标准值进行比较以调整高电平持续的时间,从而使下次的结果可以更靠近预期值:MOVRESU,AX《微机实验及课程设计》报告10MOVDX,AXCMPDX,SANDJLLESSTHANCMPDX,SANDJGGREATERTHANJMPNEXTLESSTHAN:MOVBL,KEYSTESTBL,01HJNZCL0TESTBL,02HJNZCL1TESTBL,04HJNZCL2TESTBL,08HJNZCL3TESTBL,10HJNZCL4TESTBL,20HJNZCL5JMPNEXTCL0:SUBK0B2,0010HJMPNEXTCL1:SUBK1B2,0010HJMPNEXTCL2:SUBK2B2,0010HJMPNEXTCL3:SUBK3B2,0010HJMPNEXTCL4:SUBK4B2,0010HJMPNEXT《微机实验及课程设计》报告11CL5:SUBK5B2,0010HJMPNEXTGREATERTHAN:MOVBL,KEYSTESTBL,01HJNZCG0TESTBL,02HJNZCG1TESTBL,04HJNZCG2TESTBL,08HJNZCG3TESTBL,10HJNZCG4TESTBL,20HJNZCG5JMPNEXTCG0:ADDK0B2,0010HJMPNEXTCG1:ADDK1B2,0010HJMPNEXTCG2:ADDK2B2,0010HJMPNEXTCG3:ADDK3B2,0010HJMPNEXTCG4:ADDK4B2,0010HJMPNEXTCG5:ADDK5B2,0010HJMPNEXT《微机实验及课程设计》报告12急停功能其实就是将应该输出高电平的时后的输出强制输出为0即可,有如下语句:SWI:MOVDX,io8255bINAL,DX;读取开关MOVKEYS,ALTEST