• 208.50 KB
  • 13页

微机原理项目报告.doc

  • 13页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'微机原理项目七姓名:李守烨班级:08级机电2班指导老师:史艳国学号:080101010398时间:2011/5/21 目录1题目及要求22过程示意图23总体设计思路33.1步进电机的模拟33.2控制系统的启停控制33.3指示灯的控制33.4数码管静态显示34系统流程框图45系统接线示意图56程序部分67实验结果及分析127.1实验结果127.2实验分析128结论129感想12 1题目及要求瓶装饮料生产线传送控制系统某厂生产瓶装保健品饮品,每10瓶装一箱,要求箱满时,启动送箱装置,先送走满箱到位(延时一定时间),再送来空箱到位(延时一定时间),满箱和空箱分别在两个不同的传送带上传送。能人为控制生产线的启动和停止(比如键盘上,按某一键启动,启动后按任意键停止)。能在数码管上显示当时已装满送出的箱数。2过程示意图图2.1 3总体设计思路3.1步进电机的模拟用步进电机的正反转来模拟送来空箱和送走满箱。用8255的PC0~PC3作为输出给步进电机A~D口,选用单双八拍工作方式(A->AB->B->BC->C->CD->D->DA->A)。步进电机的驱动原理是通过它每相线圈的电流的顺序切换来使电机作步进式旋转,驱动电路由脉冲来控制,所以调节脉冲的频率便可改变步进电机的转速,微控制器最适合控制步进电机。3.2控制系统的启停控制用8255的PC7和PC6作为输入采集开关信号控制系统的启停。首先设置8255的工作方式为0方式,C口的高4位设为输入,然后把PC7和PC6和开关相连。系统通过采集开关信号来判别是否启动和暂停系统。3.3指示灯的控制用8255的A口作为输出来控制指示灯。绿灯代表送来空箱子,黄灯代表装箱过程,红灯代表送走满箱。3.4数码管静态显示选用8279连接数码管来静态显示所记录的箱数。8279自身有刷新数码管的频率,较之8255能更稳定地显示数字。 4系统流程框图图4.1 5系统接线示意图图5.16程序部分stacsegmentstack db1024dup(0)stacendsdatasegment;定义数据段z8279equ0bf01h;8279命令字、状态字地址8279连cs5d8279equ0bf00h;8279读写数据口的地址leddb0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,080h,90h;段码counterdw0numdb10temporarydb?dataendscodesegment"code"assumecs:code,ds:data,ss:stacstart:movax,datamovds,axstart1:moval,10000010b;对8255进行初始化movdx,0f003houtdx,almovdx,0f001hinal,dxandal,80hcmpal,0jnzstart1jzstart2start2:callinit8279;8279写入方式控制字,初始化calllightoff;系统刚启动指示灯全灭callleddisp;系统刚启动数码管显示为0calldelay;主程序start3:callstep_motor1;电动机正转,送来空箱calldelay;延时一段时间callyellowlight;装箱过程,黄灯亮calldelay;延时callStep_motor2;电动机反转,送走满箱,且计数并显示calldelaycallstop;检测是否按下停止键jmpstart3;如果没按停止键,则程序系统继续工作movax,4c00hint21h ;8279初始化init8279procmovdx,z8279;cmd_8279为写命令地址、读状地址moval,34houtdx,al;可编程时钟设置,设置分频系数(20分频)moval,0;8*8字符显示,左边输入,外部译码键扫描方式outdx,almoval,0a0h;显示禁止/熄灭命令outdx,alcallinit8279_1retinit8279endpinit8279_1proccallclearmoval,90h;从第一个数码管开始移位显示outdx,alretinit8279_1endp;清除命令clearprocmovdx,z8279moval,0dehoutdx,alwait1:inal,dxtestal,80hjnzwait1;显示ram清除完毕吗?retclearendp;段码编写writeprocdivnum;cx=ax,把计数值除十,取出余数存入ah,;商存入al,显示余数movtemporary,al商暂存在temporarymoval,ah;余数存入almovbx,offsetledxlat;换码即al=ds:[bx+al]outdx,al;输出段码 movah,0;ax高位复0moval,temporary;把商又赋给al,即商存入到ax里,为下一次;除法做准备retwriteendpleddispproc;显示子程序movdx,d8279movax,counterpushcxmovcx,8;往8279里面写8次again:callwriteloopagainpopcxretleddispendpdelayproc;延时子程序pushbxpushcxmovbx,8delay1:movcx,0delay2:loopdelay2decbxjnzdelay1popcxpopbxretdelayendpmotor_delayproc;步进电机延时子程序pushbxpushcxmovbx,5motor_delay1:movcx,500motor_delay2:loopmotor_delay2decbxjnzmotor_delay1popcxpopbx retmotor_delayendpredlightproc;红灯亮子程序movdx,0f000hmoval,11011111boutdx,alretredlightendpgreenlightproc;绿灯亮子程序movdx,0f000hmoval,01111111boutdx,alretgreenlightendpYellowlightproc;黄灯亮子程序movdx,0f000hmoval,10111111boutdx,alretyellowlightendplightoffproc;程序开始指示灯全灭movdx,0f000hmoval,0ffhoutdx,alretlightoffendpstep_motor1proc;电动机正转子程序pushcxmovcx,6callgreenlightagain1:movdx,0f002hmoval,00000001boutdx,alcallmotor_delaymoval,00000011boutdx,alcallmotor_delaymoval,00000010boutdx,al callmotor_delaymoval,00000110boutdx,almoval,00000100boutdx,alcallmotor_delaymoval,00001100boutdx,alcallmotor_delaymoval,00001000boutdx,alcallmotor_delaymoval,00001001boutdx,alcallmotor_delayloopagain1popcxretstep_motor1endpStep_motor2proc;电动机反正子程序callredlight;送走满箱红灯亮inccounter;计数值加1callleddisp;显示送走箱子个数pushcxmovcx,8again2:movdx,0f002hmoval,00001000boutdx,alcallmotor_delaymoval,00001100boutdx,alcallmotor_delaymoval,00000100boutdx,alcallmotor_delaymoval,00000110boutdx,alcallmotor_delay moval,00000010boutdx,alcallmotor_delaymoval,00000011boutdx,alcallmotor_delaymoval,00000001boutdx,alcallmotor_delaymoval,00001001boutdx,alcallmotor_delayloopagain2popcxretStep_motor2endp;暂停子程序stopprocmovdx,0f001hinal,dxandal,40hcmpal,0jzprostopjnzreturnprostop:movdx,0f001hinal,dxandal,80hcmpal,0jzreturnjnzprostopreturn:retstopendpcodeendsendstart;程序结束 7实验结果及分析7.1实验结果通过对程序的调试,基本上能模拟出该控制系统。启动程序,按下启动开关,系统才开始工作。首先步进电机正转(送来空箱子)并且绿灯亮,然后延时一段时间并且黄灯亮(装箱过程),最后步进电机反转(送走满箱)并且红灯亮,送满箱的过程中LED数码管显示的计数值加1,再延时一段时间后进电机正转(送来空箱子)并且绿灯亮,如此循环。如果拨动停止开关,系统则暂停,再拨动启动开关,系统又恢复工作。7.2实验分析刚开始用的是8255接数码管,但是调试的时候数码管不能静态显示,后来选用8279接数码管,通过调试能够静态显示所记录的个数。而且通过对实验的调试发现,在每拍之间加一个延时的程序,可以改变步进电机的转速。8结论该实验基本上能模拟出项目所要求的控制系统,但是仍有许多不足之处。比方说忽略了装箱过程,没有具体指明多少瓶饮料装一箱;没有检测部分,如果装箱质量不合格就必须重新装箱;而且该系统的停止控制只能在送走满箱后才有效,应该设计成在整个装箱过程中都有效。9感想通过这次做微机原理实验项目,使我更加感性的认识了微机原理这门学科,对汇编语言和接口技术的认识也更加深刻了,同时也锻炼了自己的实践能力。虽然是每人单独做一个项目,但是大家互相交流和学习的氛围很浓烈,每个人在这个过程都得到了提高。在做项目的过程中,发现了许多的不足,提醒自己在以后的设计中,努力做到最好,尽量不要遗漏一些关键和细节部分。'