预实验报告

时间:2024.3.20

蛋白质与酶工程

包埋法制备固定化微生物

预实验报告

[实验目的]

1 、考察PYD是否与麦芽汁培养基一样可发酵酵母。

2 、考察干酵母活化与酵母培养过夜活化固定后活力的异同。

[实验材料]

菌种 活性干酵母菌 1%Cacl2 PYD培养基 海藻酸钠 注射器 酵母膏 葡萄糖 麦芽汁 牛肉膏 均116°C 20min灭菌

[实验基本原理]

海藻酸钠溶解状态与菌混合包埋,注射器滴入1%Cacl2中生成海藻酸钙珠,钙还有交联作用.

[实验步骤]

1 活化酵母 称取4克活性干酵母加入2%蔗糖 25°C 5h 5%接入PYD中培养基过夜 离心收集细胞

2 将活化后的酵母与40°C 3%海藻酸钠20ml混合,用注射器吸取滴入1%Cacl2 ,成球,滴定用无菌水洗一次,在加入1%Cacl2中化2 h

3 将制备好的固定化细胞分别加入麦芽汁 PYD培养基中 28°C过夜,同时做固定化培养的对照实验

观察结果

1 固定化珠 :硬度适中 ,珠形, 球形较规整一致。

2 干酵母活化与培养后的酵母均能使麦芽汁发酵。

3 PYD培养基培养与麦芽汁培养一样可出现酵母生长产气变混的改变。

[结论]

为在7小时内完成实验,可以将活性干酵母加入2%蔗糖活化,不需培养。 为解决麦芽汁的制备困难,可以以PYD培养基代替麦芽汁,进行发酵试验。

薛胜平

2006,10,22


第二篇:微机原理预实验报告


一、题意分析及解决方案

1题意需求分析

电梯运行的动力来自于电机运动,电梯控制要求电机以额定速度运行,电梯运行至相应楼层触发楼层感应开关,控制器记忆楼层信号,当其他相应楼层有请求信号触发时,控制器将请求信号比对,从而判定电机的下一步运行动作,应用STAR ES598PCI单板开发机设计一个电梯控制器,能实现对十层楼的5楼以上各楼层上下控制,同时根据操作动作显示电梯到达楼层。

2、解决问题的方法与思路

1)硬件部分

实验采用:

8279芯片,DAC0832芯片,七段LED显示器,4×4矩阵键盘,直流电机。

2)软件部分

① 首先要对8279进行初始化设计,设置8279的工作方式并确定8279的端口地址,实现电梯在5层、6层、7层、8层、9层、10层各种情况的处理;

② 扫描键盘并记录各楼层请求;

③ 将电梯各楼层请求在LED上显示出来;

④ 设计开门延时及运行延时程序方便在电梯运行的程序中调用;

⑤ 通过DAC0832数模转换器控制直流电机运转。

二、硬件设计

1、 可编程键盘显示器接口芯片8279

1) 8279在本设计中的作用

8279是可编程的键盘、显示接口芯片。它既具有按键处理功能,又具有自动显示功能。8279内部有键盘FIFO(先进先出堆栈)/传感器,双重功能的8*8=64BRAM,键盘控制部分可控制8*8阵列方式的传感器。该芯片能自动消抖并具有双键锁定保护功能。

2) 8279的功能分析

1、8279内部结构:

 8279内部结构图如下:

图2-1 8279内部结构图

(1)数据缓冲器

它连接内、外总线,暂时CPU与8279芯片之间传送的命令、数据或状态。

(2)I/O控制

它用于控制信息的流向及区分信息的特征。CS=1时,由RO或WR控制从8279读出或向8279写入;A0=0时,选中数据寄存器,输入/输出均为数据。A0=1时,选中命令、状态寄存器,输入时位命令,输出时位状态。

(3)控制与定时寄存器

它用来寄存键盘和显示的工作方式,以及由CPU编程的其他操作方式,并通过译码产生

相应的控制信号,完成规定的控制功能。

(4)定时控制

它对外部时钟信号CLK分频至内部所需要的100kHz时钟。

(5)扫描计数器

它可根据编程命令按编码或译码方式工作。

编码方式:4位计数器按二进制计数,计数状态从扫描线SL0~SL3输出,经外部译码器译码后,为键盘和显示器提供16个扫描信号。

译码方式:扫描计数器最低两位被译码后从SL0~SL3输出,可直接作为键盘和显示器扫描信号。此时键盘矩阵为4×8,显示字符为4位。

(6)键盘去抖与控制

键盘去抖电路:在键盘扫描方式中,当有键闭合时,按命令指定方式去抖动后读入键值。

控制电路:按命令指定方式控制去抖电路的工作过程,以及对返回信号进行处理。

(7)返回缓冲器

它锁存来自RL0~RL7的回复信号,在键盘扫描方式中,返回线与键盘矩阵列线相连,在逐行扫描时搜寻一行中闭合键所在的列。当有键闭合时,经去抖动后经行、列编码和附近的移位、控制状态一起形成键盘数据送至FIFO存储器,供CPU读取。

D7     D6    D5  D4   D3   D2  D1  D0

表2-1 键盘数据格式

其中,控制和移位由两个独立的附加开关决定;SL2 SL1 SL0为按下键的行编码,来自扫描计数器的低3位;R2 R1 R0是根据返回信号确定的列编码。

(8)FIFO RAM

它是一个8×8RAM,在键盘输入方式时遵循先入先出(FIFO)原则。

(9)FIFO RAM的状态寄存器

它用来存放FIFO RAM的状态,例如RAM空、满等。当工作在键盘方式FIFO存储器不空时,将产生IRQ=1信号向CPU申请中断。

(10) 显示RAM、显示地址寄存器

显示RAM用来存储显示数据。容量为168位。在显示过程中,存储的显示数据轮流从显示寄存器输出。显示寄存器分别为A、B两组,OUTA0~3和OUTB0~3可以单独送数,也可以组成一个8位的字。显示寄存器的输出与显示扫描配合,不断从显示RAM中读出显示数据,同时轮流驱动被选中的显示器件,以达到多路复用的目的,使显示器件呈现稳定的显示状态。
显示地址寄存器用来寄存由CPU进行读/写显示RAM的地址,它可以由命令设定,也可以设置成每次读写或写入之后自动递减。

(11)显示寄存器

它存放显示内容。在显示过程中它与显示扫描配合,轮流从显示RAM中读出显示信息并依次驱动被选中的显示器件,循环不断地刷新显示字符编码,使显示器件呈现稳定的显示字符。8位显示寄存器分为A、B两组,OUTA0~3和OUTB0~3可以单独送树,显示4个字符也可以组成一个8位字符。

(12)显示地址寄存器

它寄存读/写显示RAM地址,即对应显示字符从哪一位开始。它由命令设定,并可设置成每次读出或写入之后自动加1。

B.芯片8279是一种具有40条引脚的双列直插式芯片,它的外部引脚如下图所示:

CS(片选):输入线,当CS=0时8279被选中,允许CPU对其读、写,否则被禁止。

D0~D7(数据总线):双向、三态总线,和系统数据总线相连;用于CPU和8279间的数据/命令传递。

A0:地址线,进行片内端口选择。为0时,选中数据寄存器;为1时选中命令/状态寄存器。

RD、WR(读、写信号):输入线。低电平有效,来自CPU的控制信号,控制8279的读、写操作。

CLK:系统时钟,为8279芯片提供内部定时。

RESET:复位线,高电平时复位8279到:16个字符显示(左进方式);编码扫描键盘(双键锁定);时钟设置为31。

IRQ(中断请求):输出线。高电平有效。

    8279外部引脚图如下:

图2-2 8279外部引脚图

2、8279的方式控制字极格式

8279有三种工作方式:键盘工作方式、显示工作方式和传感器工作方式。

键盘工作方式:双键互锁和N键轮回。双键互锁是指当有两个以上按键同时按下时,只能识别最后一个被释放的按键,并把其键值送入内部FIFO RAM中。N键轮回是指当有多个按键同时按下时,所有按键的键值均可按扫描顺序依次存入FIFO RAM中。

显示工作方式:是指CPU输入至8279内部FIFO RAM的数据的输出格式,有8个字符左端入口显示、16个字符左端入口显示、8个字符右端入口显示、16个字符右端入口显示四种方式。

传感器方式:是指扫描传感器阵列时,一旦发现传感器的状态发生变化就置位INT向CPU申请中断。

选择不同的工作方式均是通过CPU对8279送入命令来进行控制。8279共有8种命令,命令寄存器为8位,其中D7~D5为命令特征位,D4~D0为命令的控制位。CPU对8279写入的命令数据为命令字,读出的数据为状态字。

8279共有八条命令,其功能及命令字格式分述如下。

(1)键盘/显示方式设置命令字

命令格式:

       

 D7    D6    D5    D4    D3    D2    D1    D0

         0     0     0     D     D     K     K     K

其中:D7、D6、D5=000为方式设置命令特征位。DD(D4、D3):用来设定显示方式,如表2-2所示。

表2-2  显示方式选择

所谓左入口 ,即显示位置从最左一位(最高位)开始,以后逐次输入的显示字符逐个向右顺序排列;所谓右入口,则是显示位置从最右一位(最低位)开始,以后逐次输入显示字符时,已有的显示字符依次向左移动。

KKK(D2、D1、D0):用来设定七种键盘/显示扫描方式,如表2-3所示。

表2-3  键盘/显示扫描方式

(2)时钟编程命令

命令格式:

          D7    D6    D5    D4    D3    D2    D1    D0

          0     0     1     P     P     P     P     P

其中:D7、D6、D5=001为时钟命令特征位。

PPPPP(D4、D3、D2、D1、D0)用来设定外部输入CLK时钟脉冲的分频系数N。N取值范围为2~31。如CLK输入时钟频率为2MHZ,PPPPP应被置为10100(N=20),才可获得8279内部要求的100KHZ的时钟频率。

(3)读FIFO/传感器RAM命令

命令格式:

         D7    D6    D5    D4    D3    D2    D1    D0

         0     1     0     AI     X     A     A     A

其中:D7、D6、D5=010为读FIFO/传感器RAM命令特征位。该命令字只在传感器方式时使用。在CPU读传感器RAM之前,必须用这条命令来设定所读传感器RAM中的地址。

AAA(D2、D1、D0)为传感器RAM中的八个字节地址。

AI(D4)为自动增量特征位。当AI=1时,每次读出传感器RAM后地址自动加1使地址指向下一个存储单元。这样,下一个数据便从下一个地址读出,而不必重新设置读FIFO/传感器RAM命令。

在键盘工作方式中,由于读出操作严格按照先入先出顺序,因此,不需使用这条命令。

(4)读显示RAM命令

命令格式:

          D7    D6    D5    D4    D3    D2    D1    D0

          0     1     1     AI    A     A     A      A

其中:D7、D6、D5=011为读显示RAM命令字的特征位。该命令字用来设定将要读出的显示RAM地址。

AAAA(D3、D2、D1、D0)用来寻址显示RAM中的存储单元。由于位显示RAM中有16个字节单元,故需要4位寻址。

AI(D4)为自动增量特征位。AI=1时,每次读出后地址自动加1,指向下一地址。

(5)写显示RAM命令

命令格式:

         D7    D6    D5    D4    D3    D2    D1    D0

         1     0     0     AI    A     A     A      A

其中:D7、D6、D5=100为写显示RAM命令字的特征位。在写显示RAM之前用这个命令字来设定将要写入的显示RAM地址。

AAAA(D3、D2、D1、D0)为将要写入的显示RAM中的存储单元地址。

AI(D4)为自动增量特征位。AI=1时,每次写入后地址自动加1,指向下一次写入地址。

(6)显示禁止写入/消隐命令

命令格式:

         D7    D6    D5    D4    D3    D2    D1    D0

         1     0     1     X    IW/A  IW/B  BL/A   BL/B

其中:D7、D6、D5=101为显示禁止写入/消隐命令特征位。

IW/A、IW/ B(D3、D2)为A、B组显示RAM写入屏蔽位。当A组的屏蔽位D3=1时,A组的显示RAM禁止写入。因此,从CPU写入显示器RAM数据时,不会影响A的显示。这种情况通常在采用双4位显示器时使用。因为两个四位显示器是相互独立的。为了给其中一个四位显示器输入数据而又不影响另一个四位显示器,因此必须对另一组的输入实行屏蔽。

BL/A、BL/ B(D1、D0)为消隐设置位。用于对两组显示输出消隐。若BL=1,对应组的显示输出被消隐。当BL=0,则恢复显示。

(7)清除命令

命令格式:

         D7     D6    D5    D4      D3    D2     D1    D0

         1      1     0     CD      CD    CD     CF    CA 

其中:D7、D6、D5=110为清除命令特征位。清除显示RAM方式如表2-4所示。

表2-4  显示RAM清除方式

CF(D1)用来置空FIFO存储器,当CF=1时,执行清除命令后,FIFO  RAM被置空,使INT输出线复位。同时,传感器RAM的读出地址也被置为0。

CA (D0)为总清的特征位。它兼有CD和CF的联合效能。在CF =1时,对显示的清除方式由D3、D2的编码决定。

显示RAM清除时间约需160us。在此期间状态字的最高位Du=1,表示显示无效。CPU不能向显示RAM写入数据。

(8)结束中断/错误方式设置命令

命令格式:

         D7     D6    D5    D4      D3     D2     D1     D0

         1      1     1     E       X      X      X       X

其中:D7、D6、D5=111为该命令的特征位。此命令有两种不同的作用。

①作为结束中断命令。在传感器工作方式中使用。每当传感器状态出现变化时,扫描检测电路就将其状态写入传感器RAM,并启动中断逻辑,使INT变高,向CPU 请求中断,并且禁止写入传感器RAM。此时,若传感器RAM 读出地址的自动递增特性没有置位(AI=0),则中断请求INT在CPU第一次从传感器RAM读出数据时就被清除。若自动递增特征已置位(AI=1),则CPU对传感器RAM 的读出并不能清除INT,而必须通过给8279写入结束中断/错误方式设置命令才能使INT变低。因此,在传感器工作方式中,此命令用来结束传感器RAM的中断请求。

②作为特定错误方式设置命令。在8279已被设定为键盘扫描N键轮回方式以后,如果CPU给8279又写入结束中断/错误方式设置命令(E=1),则8279将以一种特定的错误方式工作。这种方式的特点是:在8279的消抖周期内,如果发现多个按键同时按下,则FIFO状态字中的错误特征位S/E将置1,并产生中断请求信号和禁止写入FIFO RAM。

上述八种用于确定8279操作方式的命令字皆由D7D6D5特征位确定,输入8279后能自动寻址相应的命令寄存器。因此,写入命令字时唯一的要求是使数据选择信号A0 =1。

3、8279的状态字及格式

8279的FIFO状态字,主要用于键盘和选通工作方式,以指示FIFO  RAM中的字符数和有无错误发生。其格式为:

        D7       D6      D5    D4      D3    D2     D1    D0

        DU      S/E      O     U       F     N      N      N

其中:Du(D7)为显示无效特征位。当 Du=1表示显示无效。当显示RAM由于清除显示或全清命令尚未完成时,Du=1,此时不能对显示RAM写入。

S/E(D6)为传感器信号结束/错误特征位。该特征位在读出FIFO 状态字时被读出。而在执行CF =1的清除命令时被复位。当8279工作在传感器工作方式时,若S/E=1,表示传感器的最后一个传感器信号已进入传感器RAM;而当8279工作在特殊错误方式时,若S/E=1则表示出现了多键同时按下错误。

O、U(D5、D4)为超出、不足错误特征位。对FIFO  RAM 的操作可能出现两种错误:超出或不足。当FIFO  RAM 已经充满时,其它的键盘数据还企图写入FIFO  RAM ,则出现超出错误,超出错误特征位O(D5)置1;当FIFO  RAM已经置空时,CPU还企图读出,则出现不足错误,不足错误特征位U(D4)置1。

F(D3)表示FIFO  RAM中是否已满标志,若F=1表示已满。

NNN(D2、D1、D0)表示FIFO  RAM中的字符数据个数。

4、数据输入/输出格式

对8279输入/输出数据不仅要先确定数据地址口,而且数据存放也要按一定格式,其格式在键盘和传感器方式有所不同。

(1) 键盘扫描方式数据输入格式

键盘的行号、列号及控制键格式如下:

图2-3 键盘的行号、列号及控制键格式

控制键CNTL、SHIFT为单独的开关键。CNTL与其它键连用作特殊命令键,SHIFT可作上、下挡控制键。

(2)传感器方式数据输入格式

此种方式8位输入数据为RL0~RL7的状态。

格式如下:

       D7    D6    D5     D4    D3    D2    D1   D0

       RL7    RL6   RL5   RL4   RL3   RL2   RL1   RL0

3)8279的技术参数

8279技术参数如下:

表2-5 8279主要技术参数

2、 DAC0832数模转换器

1) DAC0832在本设计中的作用

 实验中通过DAC0832控制直流电机运转从而模拟电梯的运行和停止过程。需要将8086送来的8位数字量化成模拟电流量,在设计中将数字信号转换为模拟信号,故选取DAC0832数模转换器。

2) DAC0832的功能分析

DAC0832是8位数/模转换芯片,输入数字量具有双缓冲功能,可以工作在双缓冲,单缓冲或直接输入三种方式。直接输入方式是将8086送来的8位数据量直接送入数/模转换器,不进行锁存;单缓冲只锁存一次数据(即80856送来的数据量进行锁存);双缓冲方式的工作原理:输入寄存器经过总线收发器与数据总线连接,当ILE,有效时,8位数据量被打入输入寄存器,当有效时,输入寄存器中数据送至DAC寄存器并输出,则将这个数据锁存在DAC寄存器中,并开始转换。

DAC0832芯片采用CMOS工艺,四象限乘法型DAC与微机兼容,数据输入能与双缓冲,单缓冲或直接缓冲通过三种方式工作。

3)DAC0832的技术参数

主要参数如下:

表2-6 DAC0832主要技术参数

3、 七段LED显示器

1) 七段LED显示器在本设计中的作用

    实验中用七段LED显示器显示对应楼层的请求,有相应按键请求对应LED显示器显示呼叫楼层,并能显示电梯当前运行状态及电梯当前运行楼层。

2) 七段LED显示器的功能分析及技术参数

物理构造:LED发光二级管,采用砷化镓、镓铝砷、和磷化镓等材料制成,其内部结构为一个PN结,具有单向导电性。当在发光二极管PN结上加正向电压时,PN结势垒降低,载流子的扩散运动大于漂移运动,致使P区的空穴注入到N区,N区的电子注入到P区,这样相互注入的空穴与电子相遇后会产生复合,复合时产生的能量大部分以光的形式出现。将七个发光管进行组合,排列成数字图形8,再根据需要控制七个管的亮与灭,即可显示出定义数字。有段选码和位选码确定数字1~8的输出并在延时程序中保持复位。它是一种当外加电压超过额定电压时发生击穿,并因此而产生可见光的器件。这种数码管是有7段或8段笔画显示器组成一个字符而形成的。

其结构图如下:

阴极阳极

图2-4 LED结构图

LED数码管字形码表如下:

表2-7 LED数码管字形码表

4、4×4矩阵键盘的作用

1) 4×4矩阵键盘的作用

   本设计中采用矩阵键盘模拟实现电梯运行过程中的对应楼层的呼叫请求。按下对应按键表明相应楼层有呼叫请求。

2) 4×4矩阵键盘的功能分析

通常使用的键盘是矩阵结构的。对于4×4=16个键的键盘,采用矩阵方式只要用8条引线和2个8位端口便完成键盘的连接。如图,这个矩阵分为4行4列,如果键5按下,则第1行和第1列线接通而形成通路。如果第1行线接低电平,则键5的闭合,会使第1列线也输出低电平。矩阵式键盘工作时,就是按行线和列线的电平来识别闭合键的。

图2-5  4×4键盘矩阵图

行扫描法识别按键的原理如下:先使第0行接低电平,其余行为高电平,然后看第0行是否有键闭合。这是通过检查列线电位来实现的,即在第0行接低电平时,看是否有哪条列线变成低电平。如果有某列线变为低电平,则表示第0行和此列线相交位置上的键被按下;如果没有任何一条列线为低电平,则说明第0行没有任何键被按下。此后,再将第1行接低电平,检测是否有变为低电平的列线。如此重复地扫描,直到最后一行。在扫描过程中,当发现某一行有键闭合时,也就是列线输入中有一位为0时,便退出扫描,通过组合行线和列线即可识别此刻按下的是哪一键。

实际应用中,一般先快速检查键盘中是否有键按下,然后再确定按键的具体位置。为此,先使所有行线为低,然后检查列线。这时如果列线有一位为0,则说明必有键被按下, 采用扫描法可进一步确定按键的具体位置。

5、硬件总逻辑图及其说明

连线说明:

F3:OUT ——  F1:CTRL

CS  ——  A2:CS2

E5:CLK  ——  B2:2M

CS  ——  A3:CS1

A0 ——  ES-PCI: A0

A ——  G5:A

B ——  G5:B

C ——  G5:C

D ——  G5:D

实验硬件总逻辑图如下:

badlyo

图2-6 硬件总逻辑图

三、控制程序设计

1、 控制程序设计思路说明

电梯的运行基本过程是:由外部呼叫信号给出呼叫,控制系统判断电梯目前所处位置,并于呼叫楼层进行对照,同方向还是反方向。若反方向,则改变方向到呼叫层,若同方向,则直接运行到呼叫层。在方向上,以同方向呼叫优先。

要求电梯匀速运行,其运行动力来自于电动机,本实验中采用直流电机作为控制对象。

采用8279芯片对LED显示器及键盘控制。电梯在每一层的外部分别设置一个向上以及一个向下的呼叫按钮,当楼层发出呼叫信号,电梯根据当前运行方向做出判断是否响应该楼层呼叫,若与当前电梯运行方向一直,电梯运行至呼叫楼层暂停开门延时一段时间待乘客进入电梯选择目的楼层,关电梯门继续运行直至相应楼层,电梯运行过程中要继续判断运行方向上是否还有呼叫信号,并做出判断。

楼层指示及状态显示均通过LED七段数码管的显示来实现。每层楼的指示用到一个七段数码管,加上指示电梯当前运行楼层的七段数码管指示,以及显示电梯运行方向6(向上)9(向下)的七段数码管,一共用到五个LED七段数码管。

信号输入用到了4×4矩阵键盘,根据初始化定义1层向上、1层、2层向下、2层向上、2层、3层向下、3层分别用0到6七个按键表示,所以按照定义顺序1层向上、2层向上、2层向下、3层向下按键请求分别用0键、2键、3键、5键表示。

D/A转换器与直流电机相连,直流电机驱动电梯的运行,直流电机的匀速转动带动电梯匀速转动,直流电机的转动表示电梯处于运行状态,直流电机停止则表示电梯相应开门请求或者当前无请求。

下面对电梯运行过程做具体分析:

电梯正常运行时以每2 秒1层的速度上升或下降,当没有呼叫请求的情况下电梯总是自动保持静止状态在1楼,当外部有呼叫信号的时候,电梯运行。

设电梯当前停止在某一楼层(8个LED灯全灭)键入请求(仅为请求)

如键入的请求与当前电梯楼层相同,不发生任何动作,若不同,则相应楼层LED灯亮,再按运行键,电梯自动判别上下行方向,运行至相应楼层(八段显示码显示该楼层,相应LED灯灭)

设电梯当前正处于上行或下行,此时八段码显示楼层变化,LED指示希望到达楼层,键入新楼层则相应LED灯亮,对同方向请求未到楼层能到,对反方向请求楼层则是待电梯到达最高请求楼层之后调整方向再相应请求。

例如:

①      电梯当前状态为1层向上运行,LED显示请求在3层向下运行

此时按2上,则在2层停,再按运行键,电梯行运至3层停

此时按2下,则先运行至3层停,再按运行键向下运行至2层停

此时按3或3下,则直接运行至3层停

② 电梯当前状态为1层向上运行,LED显示请求在2层向上运行

此时按1上或1,电梯直接开门

此时按2上或2下或2,电梯运行至二楼停止

此时按3下或3,电梯先运行至2层再按运行键运行至3层

③  电梯当前状态为2层向上运行,LED显示请求在3层向下运行

此时按2或2上,则在2层停,再按运行键,运行至3层停

此时按2下,则先运行至3层停,再按运行键,向下运行至2层停

此时按3下或3,则直接运行至3层停

此时按1或1上,则先运行至2层停,再按运行键向下运行至1层停

④  电梯当前状态为2层向下运行,LED显示请求在1层向上运行

此时按2下或2,则在2层停,再按运行键,运行至1层停

此时按2上,则先运行至1层,再按运行键向上运行至2层停

此时按1或1上,则直接运行至1层停

此时按3或3下,则先运行至1层,再按运行键,向上运行至3层

⑤  电梯当前状态为3层向下运行,LED显示请求在1层向上运行

此时按2下或2,则在2层停,再按运行键,运行至一层停

此时按2上,则先运行至1层停,再按运行键,向上运行至2层停

此时按1或1上,则直接运行至1层停

⑥ 电梯当前状态为3层向下运行,LED显示请求在2层向下运行

此时按1上或1,电梯先运行至2层再按运行键运行至1层

此时按2上或2下或2,电梯运行至2层停止

此时按3下或3,电梯直接开门

根据以上分析,电梯每运行到一层都先查看按键是否被按下,并进行相应判断。

首先进行此时状态判断,同时根据不同的按键操作进行不同的处理

2、 控制程序流程图

图 3-1 电梯位于一层程序流程图

图3-2 电梯二层上行程序流程图

图3-3 电梯二层下行程序流程图

图3-4 电梯位于三层程序流程图

3、 控制程序


.MODEL TINY

PCIBAR3    EQU 1CH ;8位I/O空间基地址(它就是实验仪的基地址,

           ;也为DMA & 32 BIT RAM板卡上的8237提供基地址)

Vendor_ID  EQU 10EBH  ;厂商ID号

Device_ID  EQU 8376   ;设备ID号

    .STACK     100

    .DATA 

IO_Bit8_BaseAddress   DW ?  

msg0       DB  'BIOS不支持访问PCI $'

msg1       DB  '找不到Star PCI9052板卡 $'

msg2       DB  '读8位I/O空间基地址时出错$'

KEYCOUNT                 DB  ?

JILU       db       ?

UP_OR_DOWN DB  0

dangqian   db  0  

KEY_TAB      DB    00000001B           ;1层外部上行请求   01H

            DB    00000010B           ;1层内部请求      02H

            DB    00000100B           ;二层外部下行请求  04H

             DB    00001000B           ;二层外部上行请求  08H

            DB    00010000B           ;二层内部请求      10H

            DB    00100000B           ;三层外部下行请求  20H

            DB    01000000B           ;三层内部请求      40H

LED_TAB    DB  0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H ;共阳极选码

    DB      080H,90H,88H,83H,0C6H,0A1H,86H,8EH

    DB      0FFH

CMD_8279                 DW  00F1H  ;8279命令字、状态字地址

DATA_8279                DW  00F0H  ;8279读写数据口的地址

ADDR_0832     DW  00E0H  ;0832的入口地址

.CODE

START: MOV    AX,@DATA

    MOV DS,AX

    NOP

    CALL   InitPCI   

    CALL   ModifyAddress ;根据PCI提供的基地址,将偏移地址转化为实地址

ms: CALL    INIT8279  ;初始化8279子程序

    CALL   OPEN_DOOR

    mov al,1

    call   disp       ;显示当前在1层  

    mov     UP_OR_DOWN,0

   

    MOV     JILU,0

s:

    call   Fscan      ;按键扫描

    jNC s  

s1:

    MOV AH,JILU

    and al,0Fh          ;al高四位清零

    lea BX,KEY_TAB    ;将请求信号记录

    xlat

    or  AH,al

    MOV JILU,AH

First_load:  

    call   clear  ;清显示   

    call   dis8play   ;显示所有楼层请求

    mov al,1

    MOV DANGQIAN,1

    call   disp     ;显示单个数据

;==========当前电梯位于一层,判断接下来要去往哪层=========================

    Test   jilu,01H

       JNZ     First

       Test       jilu,02H

    JZ  Three

First: CALL  open_delay     ;开门延时

    and jilu,0FCH  ;将一层请求清空

    call   clear

    jmp First_load ;若当前请求为一层,返回S

Three: Test   jilu,40H   ;查看有无三层请求

    JNZ Second

    Test   jilu,20H     

    JNZ Second

    Test   jilu,10H      ;查看有无二层请求

    JNZ Second

    Test   jilu,08H

    JNZ Second

    Test   jilu,04H

    Jz  ms

Second:

    call   clear 

        MOV     UP_OR_DOWN,1   

        call  dis8play;显示当前所有楼层信息

       mov dangqian,1

        mov   al,dangqian

        call  disp   ;显示单个信息

        CALL  dianji_delay  ;向上运行电机

     

   ;     CALL Two_loader_up  ;呼唤二层子程序

    jmp two_up_start

reload:

    jmp First_load

;=====================二层向上行子程序===================================

Two_loader_up     proc  NEAR

two_up_start:

        MOV   UP_OR_DOWN,1

    mov dangqian,2

    CALL   DISPLAY_DANGQIAN         ;显示当前在二层及请求信息

   

    Test   jilu,10H         ;有二层内部请求?

    JNZ   Two_hold1      ;有

    Test   jilu,08H         ;判断有二层外部上行请求?

       JZ     Two_third_quest1 ;无,判断有无三层请求

Two_hold1:

    CALL  Open_delay   ;在二层开门

       and jilu,67H   ;取消二层的请求

       CALL   DISPLAY_DANGQIAN  ;显示当前所有信息

Two_third_quest1:         

       Test   jilu,20H     ;判断有无三层内部请求

    JNZ    Third_up_answer1   ;有,前往三层        

       Test   jilu,40H     ;判断有无三层外部下行请求

       JZ     Two_down_first_quest1;无,跳入1层请求信号判断

Third_up_answer1:

    CALL   dianji_delay  ;运行转动电机,楼层转换延时操作

    mov     dangqian,3

    call    display_dangqian

    jmp Third_loader    ; 调用三层子程序

Two_down_first_quest1:

        TEST  jilu,04H         ;判断有无二层下行请求信号

        jmp   two_down_start       ;若有外部下行请求,则跳转至二层下行   

   

    Test   jilu,02H   ;判断有无一层内部请求信号

    JNZ first_quest1  ;有,前往一层

    Test   jilu,01H   ;判断有无一层向上请求信号

    JNZ First_quest1    ;有,前往一层

    JZ  TIAOZHUAN     ;所有请求均无,返回初始处

      

First_quest1:

        mov     up_or_down,2

        call    display_dangqian

        CALL      dianji_delay      ;运行转动电机,楼层转换延时操作

           jmp First_load

    RET

Two_loader_up ENDP

;==============================================================

TIAOZHUAN:

    JMP m

m:

    call   Fscan      ;按键扫描

    jNC m  

s2:

    MOV AH,JILU

    and al,0Fh          ;al高四位清零

    lea BX,KEY_TAB    ;将请求信号记录

    xlat

    or  AH,al

    MOV JILU,AH

    jmp   two_up_start

;=====================二层下行子程序=========================================

;Two_loader_down proc  near

two_down_start:

    MOV UP_OR_DOWN,2

    MOV DANGQIAN,2

    CALL   DISPLAY_DANGQIAN

;显示当前在二层及请求信息

   

    Test   jilu,10H      ;判断有无二层内部请求

    JNZ    Two_hold2     ;有

    Test   jilu,04H         ;判断有二层外部下行请求?

       JZ     Two_first_quest2 ;无,判断有无三层请求

Two_hold2:

       CALL  Open_delay   ;在二层开门,取消请求

       and jilu,0EBH  ;取消二楼的请求

       CALL   DISPLAY_DANGQIAN  ;显示当前在二层及请求信息

Two_first_quest2:

    Test   jilu,02H      ;判断有无一层内部请求信号

    JNZ First_answer2 ;有,前往一层

    Test   jilu,01H      ;判断有无一层外部上行请求信号

    JZ Two_third_quest2 ;判断有无三层请求

First_answer2:

    CALL  DIANJI_DELAY

    jmp First_load

Two_third_quest2:

    Test   jilu,20H     ;判断有无三层内部请求

    JNZ    Third_answer2   ;有,前往三层        

        Test   jilu,40H     ;判断有无三层外部下行请求

    JNZ Third_answer2

    Test   jilu,08H     

    JZ    two_down_tiao

    jmp two_up_start

Third_answer2:        

    CALL    DIANJI_DELAY ;楼层转换延时操作

    mov dangqian,3

    CALL   DISPLAY_DANGQIAN 

    JMP Third_loader

    two_down_tiao:

    call    DISPLAY_DANGQIAN

    jmp tiaozhuan

;   RET

;Two_loader_down  endp

;=============================================================

TIAOZHUAN2:

    JMP  n

n:

    call   Fscan      ;按键扫描

    jNC n  

s3:

    MOV AH,JILU

    and al,0Fh          ;al高四位清零

    lea BX,KEY_TAB    ;将请求信号记录

    xlat

    or  AH,al

    MOV JILU,AH

    jmp     third_loader

;========================三层向下子程序======================================

;Third_loader proc  near

third_loader:

   

    mov dangqian,3

    mov     up_or_down ,2

    CALL   DISPLAY_DANGQIAN     ;显示当前在三层及请求信息

   

    Test   jilu,40H

    JNZ Third_hold

    Test   jilu,20H

    JZ  Third_first_quest

Third_hold:

    CALL   Open_delay  ;开门延时操作

   

    and jilu,9FH   ;取消三层的请求

       CALL   DISPLAY_DANGQIAN  ;显示当前所有信息

Third_first_quest:

    Test   jilu,02H

    JNZ Third_down_Two

    Test   jilu,01H

    JNZ Third_down_Two

Third_two_quest:

    Test   jilu,10H

    JNZ Third_down_Two

    Test   jilu,08H

    JZ  two_up_quest

Third_down_Two:

    MOV UP_OR_DOWN,2

    CALL   dianji_delay   ;电机转动运行至二层

    jmp two_down_start

Two_up_quest:

    Test   jilu,04H

    JZ  TIAOZHUAN2

    call    dianji_delay

    jmp Two_up_start

;   RET

;Third_loader ENDP  

;======================================================

   

Fscan proc      near    

FSCAN:

    CALL   IfExit

    JZ     FSCAN11   

    JMP    Exit  

FScan11:

    MOV     DX,CMD_8279     ;命令/状态口地址

    IN      AL,DX         ;读取状态字 

FREAD_FIFO:   AND AL,7          

           JZ      FNO_KEY         

FREAD:     MOV     AL,40H          ;读FIFO RAM命令

       OUT     DX,AL    

       MOV     DX,DATA_8279   

       IN      AL,DX         

           STC        ;有键CF置1

          

FSCAN_END: ret

FNO_KEY:   CLC    ;无键按下,清CF

           JMP     Fscan_end    ;没有按键

      

Fscan endp

   

       

   

;=============================开门延时=============================  

OPEN_delay proc   near

   

    call   open_door

mov cx,0FFFFH

;mov   dx,200d

delay1:

;   call   clear

    call   scan  

;   CALL   DISPLAY_DANGQIAN

;   inc dx

;   jnz delay1

;   ret

loop   delay1

    RET

OPEN_DELAY endp

OPEN_DOOR  PROC  NEAR

    MOV  AX,0

        MOV  DX,ADDR_0832

        OUT  DX,AL

    RET

OPEN_DOOR  ENDP

;=============================电机延时================================

DIANJI_DELAY  PROC   NEAR  

    CALL   START_DIANJI

;   mov dx,3d

dianji:

delay2:

   

    call   scan

;   CALL   DISPLAY_DANGQIAN

loop   delay2

;   inc   dx

;   jnz dianji

    ret

DIANJI_DELAY  ENDP

START_DIANJI PROC  NEAR

    MOV  AX,0FFh

    mov  dx,ADDR_0832

    OUT  DX,AL

    RET

START_DIANJI  ENDP

;==========扫描并记录===================       

scan proc      near     

SCAN: 

CALL   IfExit

    JZ     SCAN11

    JMP    Exit  

Scan11:

    MOV     DX,CMD_8279     ;命令/状态口地址

    IN      AL,DX         ;读取状态字 

READ_FIFO: AND AL,7          

           JZ      NO_KEY          

READ:      MOV     AL,40H          ;读FIFO RAM命令

       OUT     DX,AL    

       MOV     DX,DATA_8279   

       IN      AL,DX         

           STC        ;有键CF置1

           jmp start2

NO_KEY:    CLC    ;无键按下,清CF

           JMP     scan_end     ;没有按键

START2:

    MOV AH,JILU

   

    and al,0Fh

    lea BX,KEY_TAB   ;    将请求信号记录

    xlat

    or  AH,al

    MOV JILU,AH   

SCAN_END:  ret   

scan endp

;=====================================================

DISPLAY_DANGQIAN  PROC NEAR

CALL   CLEAR

CALL   DIS8PLAY

MOV  AL,DANGQIAN

CALL DISP

RET

DISPLAY_DANGQIAN ENDP

;================显示当前有请求的楼层=======================

DIS8PLAY PROC NEAR

    MOV AH,JILU

   test   JILU,01H

   jnz load1      ;若无一层请求,跳转至二层断判

   test   JILU,02H

   jz  load2

load1: mov al,1H 

   call disp

load2:  

   mov    al,10H

   call disp

   test jilu,04h

   jnz  load22

   test jilu,10h

   jnz  load22

   test jilu,08h

   jz  load3 ;若无二层请求,跳转至三层判断

load22: mov al,2H

   call disp

load3:

   mov  al,10H

   call disp

   test jilu,20H  ;若无三层请求,判断当前电梯处于上或下行

   jnz load33

   test jilu,40h

   JZ  UP_DOWN

load33: mov al,3  

    call disp

UP_DOWN:MOV  AL,UP_OR_DOWN 

   CMP  AL,1      ;判断是否为上行

   JNZ  DOWN      ;不是,跳转判断是否为下行  

   MOV  AL,6H

   JMP  DIS8EXIT

  

DOWN:  cmp  AL,2       ;判断是否为下行

    JNZ   DISPLAY_RET

    mov  al,9H

    jmp  dis8exit

 DISPLAY_RET: 

    Mov  al,10H

  DIS8EXIT:

    CALL   disp

    RET

Dis8play   endp

;========================进行显示单个数据=========================

disp  proc  near

        CALL  KEY_NUM

    LEA BX,LED_TAB

    XLAT

    CALL   WRITE_DATA

    RET

disp  endp

KEY_NUM    PROC    NEAR

           AND     AL,3FH  ;键值转化成键号,8位中的后6位

           RET  

KEY_NUM    ENDP

WRITE_DATA PROC   NEAR  

    MOV DX,DATA_8279

    OUT DX,AL 

    RET   

WRITE_DATA ENDP  

 ;==============================================================

IfExit     PROC   NEAR

       PUSH   AX

       PUSH   DX

       MOV AH,06H

       MOV DL,0FFH

       INT 21H

       POP DX

       POP AX

       JZ  IfExit1

       JMP Exit

IfExit1:   RET

IfExit     ENDP

;==============================================================

InitPCI       PROC   NEAR

           MOV AH,00H

           MOV AL,03H

           INT 10H        ;清屏

       MOV AH,0B1H

       MOV AL,01H

       INT 1AH

       CMP AH,0

       JZ  InitPCI2

       LEA DX,msg0

InitPCI1:  MOV AH,09H

       INT 21H

       JMP Exit

InitPCI2:  MOV AH,0B1H

       MOV AL,02H

       MOV DX,Vendor_ID

       MOV CX,Device_ID

       MOV SI,0

       INT 1AH

       JNC InitPCI3      ;是否存在Star PCI9052板卡

       LEA DX,msg1

       JMP InitPCI1

InitPCI3:  MOV DI,PCIBAR3

       MOV AH,0B1H

       MOV AL,09H

       INT 1AH        ;读取该卡PCI9052基地址

       JNC InitPCI4

       LEA DX,msg2

       JMP InitPCI1

InitPCI4:  AND CX,0FFFCH

       MOV IO_Bit8_BaseAddress,CX

       RET

InitPCI       ENDP

;=============================================================

ModifyAddress  PROC   NEAR

;   MOV    AX,IO_Bit8_BaseAddress

    ADD CMD_8279,CX;偏移地址转化为实地址

    ADD DATA_8279,CX

    ADD     ADDR_0832,CX

    RET

ModifyAddress ENDP     

;=============================================================

;8279初始化

INIT8279          PROC   NEAR  

    MOV DX,CMD_8279   ;CMD_8279为写命令地址、读状地址

    MOV     AL,34H    ;可编程时钟设置,设置分频系数(20分频)00110100

    OUT     DX,AL

    MOV        AL,10H;8*8字符显示,左边输入,外部译码

    OUT     DX,AL

    CALL   INIT8279_1

    RET   

INIT8279   ENDP      

INIT8279_1 PROC   NEAR  

    CALL   CLEAR  ;清显示

    MOV AL,90H     ;从第一个数码管开始移位显示

    OUT DX,AL 

    RET   

INIT8279_1 ENDP      

;==============================================================

CLEAR  PROC   NEAR  

    MOV DX,CMD_8279

    MOV AL,0DEH    ; 清除命令

    OUT DX,AL 

WAIT1: IN  AL,DX 

    TEST   AL,80H

    JNZ WAIT1      ; 显示RAM清除完毕吗?

    RET   

CLEAR  ENDP

CLEAR_FIFO PROC   NEAR

    MOV    DX,CMD_8279

    MOV AL,0C2H    ; 清除FIFO RAM命令

    OUT DX,AL 

    RET

CLEAR_FIFO ENDP  

;============================================================

Exit:  MOV AH,4CH

    INT    21H

END START


更多相关推荐:
预实验报告

预实验报告随机对一期学员进行调查并做了简单统计统计项目还未做全初步结果如下总人数85人其中男41女44按学历分为两组大专以上学历组的人数为47占总人数553其中男25女22高中及以下学历组的人数为38占总人数4...

预测实验报告

学院实验报告专业名称实验室实验课程姓名学号实验日期

实验三预做实验报告

计算机组成原理预做实验报告实验三存储器实验1实验目的和要求掌握静态随机存储器6116的工作原理及数据的读写方法2实验设备JYS4计算机组成原理教学实验装置导线若干3实验内容及步骤1实验原理实验所用的半导体静态存...

预处理实验报告

实验报告1实验报告2实验报告3实验报告4实验报告5

实验四预做实验报告

计算机组成原理预做实验报告实验四数据通路的组成1实验目的和要求在JYS4实验装置上模拟计算机最基本的工作过程打通键盘CPURAM之间的数据通路掌握计算机的数据通路组成及其工作原理2实验设备JYS4计算机组成原理...

CAE预作实验报告

重庆理工大学材料成形CAE报告课程名称材料成形CAE姓名班级学号日期20xx年11月

编译预处理实验报告二

电子信息学院实验报告适用于计算机课程课程名称编译原理实验项目名称源程序的预处理实验时间20xx10班级计算机122姓名李鹏辉学号20xx10704214实验目的设计并实现一个预处理功能的程序加深对编译中词法分析...

微机原理预实验报告

一题意分析及解决方案1题意需求分析电梯运行的动力来自于电机运动电梯控制要求电机以额定速度运行电梯运行至相应楼层触发楼层感应开关控制器记忆楼层信号当其他相应楼层有请求信号触发时控制器将请求信号比对从而判定电机的下...

数据库原理实验课 预习报告 实验报告 要求

数据库原理实验课实验预习报告题目院系计算机科学与工程学院班级姓名学号1数据库原理实验课实验报告题目院系计算机科学与工程学院班级姓名学号2预习报告格式预习内容实验报告格式实验题目实验目的及要求实验步骤操作说明及相...

化学工程实验报告C2

化学工程实验报告C2离心泵性能的测试实验者学号装置组别实验日期辅导教师合作者钱尚宇1100011707第2套装置C2组2号20xx422陈建童炳琦摘要本实验分别通过手动和自动的方法测绘了实验装置中离心泵的特性曲...

“化学实验报告” 型试题例析

化学实验报告型试题例析化学是一门以实验为基础的学科化学实验不仅有利于学生理解和巩固化学知识更重要的是可以培养学生科学的思维方式和科学的研究方法提高分析解决实际问题的能力化学的实验教学形式多样从认识方法上可分为验...

(人教版)初中化学实验报告[1]222

麻虎中学化学实验报告九年级班号姓名实验日期年月日实验名称用实验证明我们吸入的空气和呼出的气体中的氧气含量有什么不同实验目的氧气有助燃性木条燃烧越旺说明氧气含量越高一实验器材药品水槽集气瓶250ml两个玻片两片饮...

预实验报告(24篇)