汽车速度控制系统设计
课程名称: 微机接口课程设计 设计题目: 汽车速度控制系统 学 院: 班 级: 姓 名: 学 号: 指导教师:
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
日期:
任 务 书
一、课程名称:微机接口课程设计
二、设计题目:汽车速度控制系统
三、设计目的:使学生将所学的理论知识和实践有机结合,初步掌握计算机应用系统设计的步骤和接口设计方法,提高分析和解决实际问题的能力,锻炼和提高同学们的实践动手能力。
四、设计要求:独立思考、共同合作、保质保量、按时完成。
五、设计地点:全部设计均在J11,313进行并完成。 六、设计内容:在现场有一PC机系统,负责采集控制信息(通过键盘信号表示速度控制信号),再通过PC机控制汽车速度,处理完后再用LED数码管显示当前速度,并用LED灯显示当前档位;当遇到紧急情况时,通过中断处理紧急情况。 三、设计应解决下列各主要问题:[1] 建立一个完整的微机控制系统;
[2] 工程技术资料查询方法与技巧;
[3] 单元电路的测试方法及其工作原理;
[4] 软硬件统调方法; 四、设计报告书应附有下列图纸: PROTEL99SE画出的电气原理图。 五、设计开始日期: 设计完成日期:
设计指导教师(签章)
教研究室主任(签章)
指导教师评语
指导教师:
日 期:
目录
1 序言 ............................................................. 1
2 总体设计 ......................................................... 2
2.1 总体设计框图 ............................................................................................. 2
2.2.系统工作原理 .............................................................................................. 2 3 硬件设计 ......................................................... 3
3.1 中央处理器模块 ......................................................................................... 3
3.2 8255人机接口模块 ..................................................................................... 8
3.3 汽车速度显示模块 .................................................................................... 11 4 软件设计 ........................................................ 14
4.1 主程序模块 ............................................................................................... 14
4.2 显示模块 ................................................................................................... 16
4.3 串行通信模块 ........................................................................................... 17 5 总结 ............................................................ 18
6 致谢词 .......................................................... 19
参考文献 .......................................................... 20
附录: ............................................................ 21
附录1:程序清单 ........................................................................................... 21
附录2:8088应用系统电路原理图 ............................................................... 26
附录3:8255A扩展按键、LED显示模块电路图 ........................................ 27
1 序言
现在许多轿车都有速度控制系统。速度控制系统(Speed Control System)又称为巡航控制系统(Crusle Control System),缩写为CCS其作用是:按司机要求的速度合开关之后,不用踩油门踏板就自动地保持车速,使车辆以固定的速度行驶。采用了这种装置,当在高速公路上长时间行车后,司机就不用再去控制油门踏板,减轻了疲劳,同时减少了不必要的车速变化,可以节省燃料。
顾名思义,速度控制系统的基本功能就是速度控制,当按下车速调置档位后,就能存储该时刻的车速并能自动保持这个车速。当出现紧急情况时,按紧急停车键停车。速度控制系统除以上基本功能外还可以增加以下功能:加速(Accelerate)或减速(Coast)功能,继续按动开关进行连续加速或者减速,以不按动开关时的车速进入速度控制系统。
本设计是一个用键盘控制实现汽车速度档位控制的系统,该系统是由 8088作为微处理器,扩展可编程并行I/O接口8255A芯片, LED数码管及键盘和发光二极管等芯片及元器件,再辅以其他外围电路和软件程序集合而成。
通过本系统的设计,我们将所学的常用芯片的知识结合起来综合运用建立一个完整的单片机温度监控系统。在此设计过程中,可以深刻体会并加以运用了这学期所学的《单片机原理及应用技术》所讲的知识和原理,有利于我们以后的进一步学习和工作。
1
2 总体设计
2.1 总体设计框图
I/O接口模块 LED数码显示模块 中断
CPU
键盘控制 发光
二极管 驱动器
图1 汽车速度控制系统设计框图
2.2.系统工作原理
本系统是将在现场采集到的速度控制信息(用键盘模拟控制信息,通过I/O接口芯片将信息读入),经I/O接口芯片将键盘控制信息送至微处理器。然后,计算机按照读入的键盘号对汽车速度进行相应的控制,再将当前速度一路送至I/O接口芯片并在显像管中显示当前的汽车速度; 当确定档位后通过发光二极管显示当前的档位;设置紧急情况为不可屏蔽中断,当出现紧急情况时触发中断紧急处理情况。
在键盘管理模块中,按“1”键启动系统,汽车以最低速度行驶,同时用1盏发光二极管灯显示挡位,数码管显示速度(最低速度为5Km/h)。当需要档位时,用键盘键入2、3键,并用不同颜色的发光二极管灯来显示,同时在数码管上显示相应的速度。汽车慢加速时用“4”键,急加速时用“5”键,慢刹车时用“6”键,急煞车时用“7”键。加速和刹车时用数码管显示相应的速度变化;当汽车需紧急停车时,键入“8”键,所有发光二极管熄灭,同时数码管显示“0”
2
3 硬件设计
3.1 中央处理器模块
3.1.1 中央处理器模块功能
中央处理器模块处理与控制外部与内部信息。
3.1.2中央处理器模块组成
该模块由8088芯片及其附属支持芯片组成,包括8284时钟发生器,8288总线控制器,两片74LS373地址锁存器,两片62512存储器及其74LS245三态输出锁存器。
3.1.3中央处理器模块工作原理
8284时钟发生器为8088系统设计的单片时钟发生器。它为CPU提供时钟、READY、RESET等信号。
两片74LS373地址锁存器锁存分时复用的地址。74LS245输出八位数据。两片容量为64K的62512组成容量为1MB的存储器。
3.1.4中央处理器相应电路设计
(1) 8088小应用系统电路设计
8088微处理器芯片为40只引脚(线)的双列直插式封装。运用引脚多路复用技术解决引脚不够的矛盾。引脚复用的实质是两个信号合用同一引脚分时传输信号,即同一个引脚在不同的时间段代表不同的信号。
8086和8088两个微处理器芯片的共同点是采用20位地址线,而且指令系统与操作方式也是相同的。都采用分时复用的地址总线和数据总线,有一部分引脚具有地址线和数据线两种功能。主要差别在于数据线引脚的位数不同。8086数据线引脚为16个;8088数据线引脚为8个。
8086与8088微处理器都具有两种工作模式,即最小模式和最大模式。最小与最大模式的确定是通过一条引脚MN,MN所接的逻辑电平是“1”是“0”来完成。
在最小(MN)方式下,微处理器被用来构成一个小规模的单处理机系统,微处理器本身必须提供全部的控制信号给外围电路。
3
在最大(MX)方式下,微处理器被用来构成一个较大规模的多机系统。由于外围电路芯片数目较多,有的信号要经系统总线转插件送到另外的板卡上去,控制信号的负载加重不能直接由微处理器的引脚信号来驱动
。 基本引脚信号
AD15—AD0(输入输出,三态):8086的地址,数据线复用引脚。
8088微处理器对外只有8位数据线,因此只复用AD 7—ADo,AD15—AD8:是独立的地址信号引脚。
(2)A19,S6一A16,S3(输出,三态):地址,状态分时复用引脚。在微处理器执行片外访问操作时,先发送高4位地址码,后发送处理器的状态信息。
S6为0,表示AD15—AD0作为数据线使用;
S5为1表示处理器开中断。为0表示处理器关中断;
S4和S3组合表示当前段寄存器的使用情况。
0 0 ES; 0 1 SS; 1 0 CS; 1 1 DS
(3)BHE,S7(输出,三态):高8位数据线允许,状态分时复用引脚。当处理器执行访问存储器或输入输出设备时,首先给出BHE信号以确定是否进行高8位数据的传输。
(4)NMI(输入):非屏蔽中断请求输入线,上升边触发。
4
(5)INTR(输入):可屏蔽中断请求输入线,高电平有效。
(6)RD(输出,三态):读命令(或叫作读选通)信号,低电平有效,此信号启动一次数据从存储器或输入输出设备读入处理器中的过程。
(7)CLK(输入):时钟信号,占空比1:3,由外部时钟产生电路提供。
(8)RESET(输入):复位信号,它至少保持4个时钟周期的高电平,使处理器停止正在进行的操作,并使标志寄存器、IP、DS、SS、ES和指令队列置0,代码段寄存器CS置成FFFFH(全“l”)。因此复位信号有效作用后(处理器从FFFFOH存储单元取指令并开始执行。
(9)READY(输入):准备好信号。处理器在进行存储器或输入输出设备的访问时,不断检测READY引脚的状态。在被访问者没有完成数据传送之前READY引脚处于低电平(无效电平),处理器自动在操作过程中插入一个或几个等待状态来延长访问过程。
(10)TEST(输入):测试信号,低电平有效。当处理器执行WAIT指令时,每隔5 个时钟周期对于面引脚进行一次测试。如果是高电平,处理器仍处于等待状态;为低电平时,处理器脱离等待状念。
(11)MN/MX(输入):最大,最小工作模式的选择信号。
(12)VCC(输入):处理器的电源输入引脚,接十5V电源。
(13)GND:处理器的地线引脚,接至系统地线。
最小工作模式下的有关控制引脚信号
(1)INTA(输出):最小工作模式的中断响应信号。
(2)ALE(输出):地址锁存允许(选通)信号。
(3)DEN(输出、三态):数据允许信号,用来控制数据总线双向缓冲器的接通与断开,低电平有效。
(4)DT,R(输出,三态):数据发送,接收控制信号。DT,R为高电平时,缓冲器发送数据(写),当DT,R为低电平时,缓冲器接收数据(读)。
(5)M/IO(输出,三态):存储器、输入输出设备的选择信号。高电平则表明访问操作是对存储器的,为低电平则访问操作是对输入输出设备的。
(6)WR(输出,三态):写命令信号,低电平有效。
(7)HOLD(输入):总线请求信号,高电平有效,当处理器以外主模块需要使
5
用总线时发出HOLD有效信号,直至总线使用完毕时释放总线并撤消HOLD信号。 (8)HLDA(输出):总线请求响应信号,高电平有效。当占用总线的主模块收到HOLD请求信号后,在完成当前总线操作后发出HLDA有效信号,表明
申请
关于撤销行政处分的申请关于工程延期监理费的申请报告关于减免管理费的申请关于减租申请书的范文关于解除警告处分的申请
使用总线的其他主模块可以使用总线。
(9)SS0(输出):8080最小模式下周期状态信号
最大工作模式下的有关控制引脚信号
(1) QS1、QS0(输出):指令队列状态信号,用于表示当前指令队列的状态。
0 0 :无操作 0 1 :取第一字节
1 0 :队列空 1 1 :取后续字节
(2)S2、S1、S0(输出,三态):最大模式下总线周期状态信号。这三个信号送给8288总线控制器,8288输出各种操作的控制信号。
(3)LOCK((输出,三态):总线封锁信号。
(4)RQ/GT0、RQ/GT1(输入输出):最大模式下的总线请求,总线响应信号。
RQ/GT0优先级高于RQ/GT1。
, 8288介绍
, 8284介绍
, 地址译码
74LS138是3-8译码器,通过给ABC送入不同的值来控制Y0~Y7的线选。我们这个系统就是用74LS138来实现地址扩展。下表为74LS138的真值表:
6
地址线A2、A3、A4送入译码器输出Y0、Y1来控制ADC0809与DAC0832端口地址。
, 存储器扩展地址范围
8088 A19 A18 „A0
74LS138 G1 G2A G2B C B A
62256(1) CS A15A14A13 62256(2) CS A15A14A13
根据以上表格可以得知,62512(1)的地址范围为:62512(1)的地址范围为: 由于8088复位以后,CS=0FFFFH,IP=0000H,PA0=
经过分析可知:
7
图1 8088综合模块图
3.2 8255人机接口模块
3.2.1 I/O接口模块功能
CPU与I/O设备之间的连接及信息处理和CPU与存储器之间的连接及信息处理相类似。但实际上,I/O设备的种类繁多,CPU与其交换信息相比之下更为复杂,因此,通常I/O设备并不直接与CPU进行信息交换,而是通过相应的I/O接口来进行的。I/O接口是CPU与I/O设备之间进行信息交换的环节。 3.2.2 I/O接口模块组成
键盘,发光二极管,74LS138译码器组成。
INTEL 8255A 是可编程通用并行接口芯片,具有两个8位(A和B口)和两个4位(C口高,低四位),通过读写PA,PB,PC三口状态实现信息交换。
74LS138是3-8译码器,通过给ABC送入不同的值来控制Y0~Y7的线选。这个系统就是用74LS138来实现地址扩展。地址线A2~A7送入译码器输出Y0来控制8255A各端口地址。
由电路图可知8255A的各端口地址分别为:0020H、0021H、 0022H、0023H。
8
3.2.3 I/O接口模块工作原理
(1)I/O接口芯片设计
8255A是一个具有两个8位(A和B口)和两个4位(C口高,低四
位),最多可达24位的并行输入输出端口的接口芯片,可执行功能很强,
内容丰富的两条命令(方式字和控制字)为用户如何根据外界条件(I,O
设备需要哪些信号线以及它能提供哪些状态线)来使用8255A构成多种接口
电路,为组建微机应用系统提供了灵活方便的编程环境,是一种名副其实的
通用并行接口芯片。同时它是一个单一+5V电源供电40个引脚的 双列直插
式组件,其外部引线如图六所示。
图2 8255A引脚
作为接口电路的8255A具有面向主机系统总线和面向外设两个方向的连接能力。它的引脚正 是为了满足这种连接要求而设置的。如
D0,D7:双向数据线。CPU通过它向8255A发 送命令、数据;8255A通过它向CPU回送状态、数据。
:选片信号线,该信号低电平有效,由系统地址总线经 I / O 地址译码器产生。CPU通过发高位端口地址信号使它变成低电平时,才能对8255A进行读写操作。当为高电平时,切断CPU与芯片的联系。
A1,A0:芯片内部端口地址信号线,与系统地址 总线低位相连。该信号用来寻址8255A内部寄存器。两位 地址,可形成片内四个端口地址。
:读信号线,该信号低电平有效"CPU通过 执行IN指令,发读信号将数据或状态信号从8255A读至CPU。
9
:写信号线,该信号低电平有效, CPU通过执行OUT指令,发写信号,将命令代码或数据写入8255A。
RESET:复位信号线,该信号高电平有效。它清除控制寄存器并将8255A的A、B、C三个端口均置为输入方式;输出寄存器和状态寄存器被复位,并且屏蔽中断请求;24条面向外设的信号线呈现高阻悬浮状态。这种势态一直维持,直到用方式命令才能改变,使其进入用户所需的工作方式。
面向I,O设备的信号线有: PA0,PA7:端口A的输入输出线, PB0,PB7:端口B的输入输出线,PC0,PC7:端口C的输入输出线,这24根信号线均可用来连接I,O设备,通过它们可以传送数字量信息或开关量信息。在本课程设计中我们用PC口来控制发光二极管的闪烁,用A口来连接LED数码管显示。它的端口选择的基本操作如表三所示。
表一 8255A的基本操作
(2)键盘电路设计
1)工作原理
用电平逻辑开关输出高低电平来代替键盘按键。按“1”键启动系统,汽车以最低速度行驶,同时用1盏发光二极管灯显示挡位,数码管显示速度(最低速
10
度为5Km/h)。当需要档位时,用键盘键入2、3键,并用不同颜色的发光二极管灯来显示,同时在数码管上显示相应的速度。汽车慢加速时用“4”键,急加速时用“5”键,慢刹车时用“6”键,急煞车时用“7”键。加速和刹车时用数码管显示相应的速度变化;当汽车需紧急停车时,键入“8”键,所有发光二极管熄灭,同时数码管显示“0”
在单片机中开辟三个数据缓冲区,分别存放当前汽车速度的个位、十位和百位,送入数码管缓冲区,通过8255的PA、PB口分别控制字形口与字位口,从而控制LED对时间动态的显示。
将已存放在数据缓冲区内的汽车速度数据(已将数据由十六进制数转化为BCD码)送入数码管缓冲区,通过8255的PA、PC口分别控制字形口与字位口,从而控制LED对汽车速度的动态显示。
2)电路设计
用键盘输出高低电平来代替速度控制信息。键盘的两端分别与上拉电阻与地线相接,当有键盘按下时,PB口的逻辑状态由高电平变为低电平,从而实现键盘管理模块的功能。
图3 键盘管理电路
3.3 汽车速度显示模块
11
3.3.1 汽车速度显示模块功能
通过三位LED数码管动态显示汽车当前速度值。
3.3.2 LED数码管汽车速度显示电路设计
LED显示器有8个发光二极管按“日”字排列,其中7个发光二极管组成“日”字形的笔画断,另一个发光二极管为圆点形状,安装在显示器的右下脚做小数点。分别控制各笔画段的LED,使其中的某些发光,从而可以显示出0-9的阿拉伯数字符号以及其他能由这些笔画段构成的各种字符。其内部结构由两种——共阴极数码管和共阳极数码管。我们采用了共阳极数码管。要显示0-9时,其编码依次为:
C0H,F9H,A4H,B0H,99H,92H,82H,F8H,80H,90H,88H,83H,C6H,A1H,86H,8EH,8CH,8
9H.
LED显示器的显示方法有两种——静态显示法和动态扫描显示法。静态显示就是每一个显示器各笔画段都要独占具有所存功能的输出口线,CPU把要显示的字符代码送到输出口上,就可以是显示器显示所需的数字后符号。但由于它站用的I/O口线较多,硬件成本高。所以我们选用了动态扫描显示法。它把所有显示器的8个笔画段a-h的个同名端互相并接在一起并把它们接到字段输出接口上。各个显示器的公共端接到位输出接口上。这样LED显示器需要有两组信号来控制-段码和位码。在着两组信号的控制下,可以1位一位的轮流点亮各个显示器显示各自的数码以实现动态扫描显示。在轮流点亮的过程中,每位显示器点亮的时间则是极为短暂的,但由于LED具有余辉性以及人眼的惰性,尽管各位显示器实际上是分时段续的显示,但只要选取扫描频率,给人的视觉印象就是在连续稳定的显示。其显示接口电路如图4所示:
12
图4 3.3.3 汽车速度显示相应电路
图5 LED动态显示电路
13
4 软件设计
4.1 主程序模块
4.1.1 主程序设计思想
首先初始化8255A、建立中断向量表,紧急刹车为外部非屏蔽中断。查询是否有档位键按下,若有,则显示该档位下的初速度,然后查询是否有功能键按下,若有,则处理对应的功能并显示此时汽车的速度。当查询到紧急刹车键按下使,产生非屏蔽中断,转入中断服务子程序使汽车速度为零并显示。
14
4.1.2 主程序流程图
主程序
8255
初始化
定义中断
向量表
一档?
一挡地址送BX
调用显示子程序
调用功能子程序
2档?
NO2地址送到BX
调用显示子程序
调用功能子程序3档?
调用显示子程序 NO3的地址送BX
调用功能子程序
结束
图7 主程序流程图
15
4.2 显示模块
4.2.1设计思想
首先在内存中的数据段中定义三个显示缓冲区,分别存入显示数据的个位、十位和百位,然后再定义显示段码区。在该模块中设置了三个LED数码管,用以显示汽车速度的个位,十位和百位,读入键盘信息后,汽车速度做相应的功能改变。然后将改变的汽车速度值经PA口分别送入KL1、KL2、KL3,以便动态显示当前汽车速度值。
4.2.2 程序流程图
显示子程序
入栈保护
位选KL1
送段码显示
延时
位选KL2
送段码显示
延时
位选KL3
送段码显示
延时
返回
16
4.3 串行通信模块
4.3.1中断程序设计思想
将紧急刹车键设为非屏蔽中断,当紧急刹车键按下时,产生中断信号由NMI送入CPU,最后由CPU处理中断服务子程序。在中断服务子程序中将速度清零,发光二极管熄灭。
4.3.2 中断服务子程序流程图
中断服务
子程序
显示数送0
调用显示子程序
4.4 功能服务程序设计
4.4.1功能服务程序设计思想 返回
读入键盘信息后,进入功能服务子程序,判断几号功能键按下,确定后将汽车速度做相应改变并将其放入相应的显示缓冲区。
17
4.4.2 程序流程图
功能子程序
调用显示子程序N
慢加速键?改变对应车速超过最大值?送最大值YY
N
快加速键?改变对应车速Y
N
N
慢减速键?改变对应车速低于最小值送最小值YY
N
Y快减速键?改变对应车速
N
子程序返回
5 总结
微机接口技术课程设计" 作为电气工程及其自动化本科生教学的主要基础课之一,课程紧密结合电气工程及其自动化的专业特点,围绕微型计算机原理和应用主题,以Intel8088CPU为主线,系统介绍微型计算机的基本知识,基本组成,体系结构和工作模式,从而使学生能较清楚地了解微机的结构与工作流程,建立起系统的概念。
这次微机原理课程设计历时两个星期,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。以前在上课的时候,老师经常强调在写一个程序的时候,一定要事先把程序原理流程图画出来,但是开始总觉得这样做没必要,很浪费时间。但是,这次课程设计完全改变了以前的那种
18
错误的认识,以前接触的那些程序都是很短、很基础的,但是在课程设计中碰到的那些需要很多代码才能完成的任务,画程序流程图是很有必要的。因为通过程序流程图,在做设计的过程中,我们每一步要做什么,每一步要完成什么任务都有一个很清楚的思路,而且在程序测试的过程中也有利于查错。
其次,以前对于编程工具的使用还处于一知半解的状态上,但是经过一段上机的实践,对于怎么去排错、查错,怎么去看每一步的运行结果,怎么去了解每个寄存器的内容以确保程序的正确性上都有了很大程度的提高。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
6 致谢词
在这短短的一个周的时间里,我们经过全体小组成员的全体努力完成了本次课程设计的题目即现场温度智能测控系统。
在设计的过程中,我们遇到了很多的问题,但是这些问题的解决都在我们本次课程设计指导教师吕英俊老师的指导下和我们小组的全体成员的努力之下顺利地解决并完成。
衷心感谢本次课程设计老师们耐心的指导,没有他们的虚心教导和指引,辛勤的帮助,本次课程设计不会有这样令人欣慰的成果,同时谢谢同学们在设计过程中给与的帮助,为我进一步的学习实际工作提供了宝贵的财富。
19
参考文献
[1] 胡汉才. 单片机原理及其接口技术,北京:清华大学出版社,2002 [2] 吴宁. 80X86/Pentium微型计算机原理及应用,北京:电子工业出版社,2000 [3] 薛琳,吕英俊.80X86微机原理及其接口技术实验指导书,青岛:山东科技大学校内
20
附录:
附录1:程序清单 DATA SEGMENT
NO1 DB 2,5
NO2 DB 5,7
NO3 DB 10,20
SCAN1 DB ?
SCAN2 DB ?
SCAN3 DB ?
TABLE DB 0C0H,0F9H,0A4H,0B0H,099H,92H,82H
DB 0F8H,080H,90H,88H,83H,0C6H,0A1H
DB 86H,8EH,0FFH,8CH,89H,8EH,0BFH,0F7H ;;;LED显示码
P8255_A DW 0020H
P8255_B DW 0021H
P8255_C DW 0022H
P8255_CR DW 0023H
DATA ENDS
STACK SEGMENT
DW 100 DUP (?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:MOV AX,DATA
MOV DS,AX
MOV DX,P8255_CR
MOV AL,82H
OUT DX,AL
PUSH DS
MOV AX,0000h
MOV DS,AX
MOV BX,0008H
LEA AX,INTPROC
MOV [BX],AX
MOV AX,SEG INTPROC
MOV [BX+2],AX
POP DS ;中断初始化
A1: MOV DX,P8255_B
21
IN AL,DX
CMP AL,0FEH
JNE A2
MOV PC5,0 ;发光二极管亮
LEA BX,NO1
MOV SCAN1,5
MOV DX,P8255_C
MOV AL,20H
OUT DX,AL
CALL DISPLAY
CALL FUNCTION A2: MOV DX,P8255_B
IN AL,DX
CMP AL,0FDH
JNE A3
MOV PC6,0 ;发光二极管亮
LEA BX,NO2
MOV SCAN1,5
MOV SCAN2,2
MOV DX,P8255_C
MOV AL,40H
OUT DX,AL
CALL DISPLAY
CALL FUNCTION A3: MOV DX,P8255_B
IN AL,DX
CMP AL,0FBH
JNE A1
MOV PC7,0 ;发光二极管亮
LEA BX,NO3
MOV SCAN1,0
MOV SCAN2,6
MOV DX,P8255_C
MOV AL,80H
OUT DX,AL
CALL DISPLAY
CALL FUNCTION
MOV AH,4CH
INT 21H
DISPLAY PROC FAR
PUSH DX
PUSH CX
PUSH BX
PUSH AX ;保护现场
22
MOV DX,P8255_C
MOV AL,04H
OUT DX,AL ;KL1位选择
LEA BX,TABLE
MOV DX,P8255_A
MOV AL,SCAN1
XLAT
OUT DX,AL ;显示字段
MOV CX,000H
LOOP $
MOV DX,P8255_C
MOV AL,02H
OUT DX,AL ;KL2位选择
MOV DX,P8255_A
MOV AL,SCAN2
XLAT
OUT DX,AL ;显示字段
MOV CX,000H
LOOP $
MOV DX,P8255_C
MOV AL,01H
OUT DX,AL ;KL3位选择
MOV DX,P8255_A
MOV AL,SCAN3
XLAT
OUT DX,AL ;显示字段
MOV CX,000H
LOOP $
POP AX
POP BX
POP CX
POP DX ;出栈
RET
DISPLAY ENDP
FUNCTION PROC FAR A4: CALL DISPLAY
MOV DX,P8255_B
IN AL,DX
CMP AL,0F7H
JE MJ1
A5: MOV DX,P8255_B
IN AL,DX
CMP AL,0EFH
JE KJ1
23
A6: MOV DX,P8255_B
IN AL,DX
CMP AL,0DFH
JE MJI1
A71: MOV DX,P8255_B
IN AL,DX
CMP AL,0BFH
JE KJI1
JMP BACK
MJ1: MOV AL,SCAN1
ADD AL,[BX+1]
CMP AL,10
JNA PDMAX1
INC SCAN2
SUB AL,10
JMP PDMAX1
KJ1: MOV AL,SCAN1
ADD AL,[BX+2]
CMP AL,10
JNA PDMAX1
INC SCAN2
SUB AL,10
JMP PDMAX1 PDMAX1: MOV SCAN1,AL
MOV AH,SCAN2
SUB AH,2
JC A4
SUB AL,5
JC A4
MOV SCAN1,5
MOV SCAN2,2
JMP A4 MJI1: MOV AL,SCAN1
SUB AL,[BX+1]
JNC PDMIN1
DEC SCAN2
ADD AL,10
JMP PDMIN1
KJI1: MOV AL,SCAN1
SUB AL,[BX+2]
JNC PDMIN1
DEC SCAN2
ADD AL,10
JMP PDMIN1
24
PDMIN1: MOV SCAN1,AL
MOV AH,SCAN2
SUB AH,0
JNC A4
SUB AL,5
JC A4
MOV SCAN1,5
JMP A4
BACK: RET
FUNCTION ENDP
INTPROC PROC FAR
MOV SCAN1,0
MOV SCAN2,0
MOV SCAN3,0
CALL DISPLAY
IRET
INTPROC ENDP
CODE ENDS
END START
25
附录2:8088应用系统电路原理图
26
附录3:8255A扩展按键、LED显示模块电路图
27