当前位置:文档之家› 微机原理课程设计项目报告

微机原理课程设计项目报告

瓶装饮料生产线传送控制系统设计燕山大学机械工程学院摘要:本报告主要以程序设计的方法解决了保健饮品生产线控制问题。

以保健饮品生产线控制为工程背景,运用汇编语言的编程设计方法,实现了预置的各个状态。

同时,通过模拟和替代的方法,用实验室的现有装置包括8155芯片,8255芯片,LED数码管,步进电机以及LED灯和拨动开关来代替工程实体较好的仿真了工程实际的环境,达到了一定的效果。

以下正文为项目的相关内容和研究过程及结果。

1、项目要求某厂生产瓶装保健饮品,每10瓶装一箱,要求箱满时,启动送箱装置,先送走满箱到位(延时一定时间),再送来空箱到位(延时一定时间),满箱和空箱分别在两个不同的传送带上传送。

能人为控制生产线的启动和停止(比如键盘上,按某一键启动,启动后按任意键停止)。

能在数码管上显示当时已装满送出的箱数。

2、方案设计及实现用到的元件及各元件的功能:2.1步进电机:代表送走满箱到位和送来空箱到位2.2 LED数码管:用于计数,显示已装满送出的箱数2.3发光管:两个黄色灯交替共闪十次表示装了十瓶,红灯亮表示箱子已装满,绿灯表示送来空箱。

2.4开关:最右端开关闭合表示生产线启动,再闭合任意开关表示停止生产线2.5 8155芯片:A口控制LED数码管的段码,B口控制LED数码管的位码2.6 8255芯片:A口控制LED灯,B口读取开关状态,C口控制步进电机3、原理接线图(如下图所示)4、实物接线图(如下图所示)5、系统工作流程图工作流程:(1)开始;(2)初始化各元件,为各元件送入控制字;(3)检查最右侧开关是否闭合,没有闭合,返回继续扫描开关状态;(4)最右侧开关闭合,开始装箱;(5)一箱装满十瓶后,启动送箱装置,先送走满箱到位再送来空箱到位;(6)自动进入下一个工作循环;(7)在此期间检测是否有别的开关闭合,有则停止,没有则继续;6、各元件具体功能的实现6.1 8155芯片6.1.1 控制字的确定:A口控制要显示的位,B口控制显示位对应的数字,都为输出,其余为任意故其控制字为:00001111b8155由CS2进行片选,故其控制口、A口、B口地址分别为:0e000、0e001、0e002. 6.1.2 控制LED数码管显示的子程序:;数据段ledt db 3fh,6h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh;0~9段码shu db 0,0,0,0xiang dw 0ws dw 0xunhuan db 01h,02h,04h,08h,10h,20h,40h,80h ;显示第几位;代码段xssz proc ;8155用于数字显示push axpush dxpush cxpush sipush dimov al,0fhmov dx,0e000hout dx,almov ax,xiangmov si,0shu1: mov dx,0div n ;将各位数字送入对应位mov shu[si],dlinc simov ws,sicmp ax,0jne shu1mov cx,0fh ;重复显示次,形成视觉xianshi1: mov si,0 ;八位数码显示,huan: mov dx,0e001h ;显示这几位数字mov al,xunhuan[si] ;端口A用来控制那位数字要显示not alout dx,almov dx,0e002h ;端口B用来控制显示几mov bx,offset ledtmov al,[shu+si]xlat ;转换成对应数字的七段显示代码out dx,almov al,00hout dx,alinc sijne huanloop xianshi1pop dipop sipop cxpop dxpop axretxssz endp6.2 8255芯片6.2.1各输出口功能、端口地址及控制字各输出口功能:A口输出LED灯; PC0、PC1、PC2、PC3控制步进电机输入口功能:B口为输入口读入开关状态;各端口地址:8255由CS1进行片选,A口地址为:0f000h,输出LED灯;B口地址为:0f001h,读入开关状态控制口地址:0f003h,控制字为:10000010b6.2.2 控制步进电机转动子程序djzhuan proc ;电机转动子程序push axpush bxpush cxpush dxmov dx,0f002hmov al,01hout dx,alcall delay1mov al,02hout dx,alcall delay1mov al,04hout dx,alcall delay1mov al,08hout dx,alcall delay1pop dxpop cxpop axretdjzhuan endpdelay1 procpush axpush bxpush cxpush dxmov cx,5000begin: loop beginpop dxpop cxpop bxpop axretdelay1 endp6.2.3 检查最右端开关是否闭合begain:mov dx,0f001h ;用8255B端口检测最右端开关是否闭合 in al,dxcmp al,7fhjnz begainjmp dj_com1 ;是0开始工作6.2.4 检查是否有别的开关闭合mov dx,0f001h ;用8255B端口控制任意开关闭合结束 in al,dxcmp al,7fhjnz done7、项目程序清单stack segment stackdb 1024 dup(0)stack endsdata segmentpc = 0f002hledt db 3fh,06h,5bh,4fh,66h,6dh,7dh,07,7fh,6fhshu db 0,0,0,0xiang dw 0ws dw 0xunhuan db 01h,02h,04h,08h,10h,20h,40h,80h ;显示第几位data endscode segment 'code'assume cs:code,ds:data,ss:stackstart:mov ax,datamov ds,axmov dx,0f003h ;8255方式控制字A口输出,B口输入,C口输出 mov al,10000010bout dx,almov dx,0e000h ;8155方式控制字mov al,0fhout dx,albegain:mov dx,0f001h ;用8255B端口检测最右端开关是否闭合in al,dxcmp al,7fhjnz begainjmp dj_com1 ;是0开始工作dj_com1:mov dx,0f001h ;用8255B端口控制任意开关闭合结束in al,dxcmp al,7fhjnz donemov cx,5ten: mov dx,0f000h ;黄灯闪十次表示装十瓶mov al,11111101bout dx,alcall delay1mov dx,0f000hmov al,11011111bout dx,alcall delay1loop tenmov dx,0f000hmov al,11111011bout dx,al ;红灯亮箱子满mov dx,0f001h ;用8255B端口控制任意开关闭合结束in al,dxcmp al,7fhjnz donecall djzhuan ; 启动送箱装置送走满箱到位add xiang,1 ;计数mov cx,5000xunhuan1:call xsszloop xunhuan1 ;调用显示子程序,显示装满箱数(延时一段时间)mov dx,0f000hmov al,11111110bout dx,al ;绿灯亮启动输送空箱传送带mov dx,0f001h ;用8255B端口控制任意开关闭合结束in al,dxcmp al,7fhjnz donecall djzhuan ; 启动送箱装置送走空箱到位mov cx,5000xunhuan2:call xsszloop xunhuan2 ;调用显示子程序,显示装满箱数(延时一段时间)jmp dj_com1done: mov ax,4c00hint 21hxssz proc ;8155用于数字显示push axpush dxpush cxpush sipush dimov al,0fhmov dx,0e000hout dx,almov ax,xiangmov si,0shu1: mov dx,0div n ;将各位数字送入对应位mov shu[si],dlinc simov ws,sicmp ax,0jne shu1mov cx,0fh ;重复显示次,形成视觉xianshi1:mov si,0 ;八位数码显示,huan: mov dx,0e001h ;显示这几位数字mov al,xunhuan[si] ;端口A用来控制那位数字要显示 not alout dx,almov dx,0e002h ;端口B用来控制显示几mov bx,offset ledtmov al,[shu+si]xlat ;转换成对应数字的七段显示代码 out dx,almov al,00hout dx,alinc sicmp si,wsjne huanloop xianshi1pop dipop sipop dxpop axretxssz endpdjzhuan proc ;电机转动子程序 push axpush bxpush cxpush dxmov dx,pcmov al,01hout dx,alcall delay1mov al,02hout dx,alcall delay1mov al,04hout dx,alcall delay1mov al,08hout dx,alcall delay1pop dxpop cxpop bxpop axretdjzhuan endpdelay1 procpush axpush bxpush cxpush dxmov cx,5000begin: loop beginpop dxpop cxpop axretdelay1 endpcode endsend start8、模拟结果及结论程序运行过程良好,实验结果基本满足项目要求,达到了预期的目的,总体令人满意。

但是,在实际应用中还有需要待改进的地方。

首先,在实际应用中,控制程序定要简洁有效且不易出错,否则将会带来很大的经济损失,所以,在此程序的基础上,应追求更加简洁的程序设计,比如,可将检测任意开关闭合结束设计为子程序模块,既方便,又便于改进。

其次,还要根据实际应用中的具体控制元件来调整程序,即实际工程中用的是什么微处理器,用什么芯片控制什么样的功能,这主要是由该设备的实际定位决定的。

相关主题