1、 硬件课程设计 中国矿业大学计算机学院 题 目: 压力控制系统 班 级: 信息安全11-2班 学 号: ********* 姓 名: * * * 指导教师: 周世斌
2、2023年 11 月—3013 年 12 月 目 录 1. 设计任务与规定 …………………………………………………………….3 1.1 设计任务………………………………………………………………..…3 1.2 设计规定…………………………………………………………………..3 2. 总体方案与说明…………………………………………………………… ..3 2.1 模拟信号的转换与显示…………………………………………………..3 2.2 键盘数据的输入与显示…………………………………………………..4 2.3 数据的解决与显示………………………………………………………..
3、4 2.4 显示说明…………………………………………………………………..4 3. 硬件框图与说明 ……………………………………………………………..5 3.1 8086原理简介…………………………………………………………….5 3.2 8255原理简介…………………………………………………………….6 3.3 0809的应用……………………………………………………………….9 3.4 液晶显示屏…………………………………………………… …………11 3.5 键盘……………………………………………………………… ………14 4.电路原理图与说明……………………………
4、…………………………… 16 4.1 电路原理图…………………………………………………… …………16 4.2 硬件运营过程说明…………………………………………… …………17 5.软件重要模块与说明………………………………………………………17 5.1 主程序流程图…………………………………………………… ………18 5.2 0809转换及数据解决流程………………………………………………19 6.源程序清单与注释明………………………………………………………17 7.问题分析与解决方案………………………………………………………28 8.结论与体会………………………………
5、……………………………………30 8.1 实验运营结果…………………………………………………………….30 8.2 体会……………………………………………………………………….31 9.参考资料 ……………………………………………………………………32 1.设计任务与规定 1. 1设计任务 运用相关硬件,结合自己的编程技术,设计简朴的电子秤,并实现其基本功能,是本次模拟压力控制系统的硬件课程设计。在完毕课程设计的过程中,需要学生独立思考,积极发挥发明力和动手能力,进一步学习各种软硬件的功能和提高编程能力。 电子秤的设计,是通过实验台左下角电位器RW1输出0~5V直流
6、电压,模拟压力信号,送入A/D转换器,将模拟信号转换成数字信号并显示在LCD字符图形液晶显示屏的第一行上,作为称重的重量。同时,从键盘输入数据,并在LCD字符图形液晶显示屏的第二行上显示出来,作为价格。最后在第三行显示出重量与单价的乘积及总价。实现电子秤的基本功能,达成模拟压力控制系统课程设计的基本规定。 1. 2设计规定 (1)模拟电子秤开机后,改变模拟信号的大小,模拟重量的值必须实时的显示在液晶显示屏上; (2)模拟的单价初始值默认为零,从键盘输入单价完毕后,需在液晶显示器上显示输入的单价; (3)模拟价格必须随模拟重量改变,并实时的显示在液晶显示器上。 2. 总体方
7、案与说明 本次实验需要要使用ADC0809数模转换器,四乘四键盘,可编程控制接口8255,0~5V直流电压,128*64LCD字符图形液晶显示屏。 2.1模拟信号的转换与显示 用滑动变阻器代替压力传感器,模拟压力的变化。将模拟电压输入ADC0809通道0(IN0),ADC0809的IN0口地址为280H, CS接地址译码输出的280h~287h。8255的A口接LCD的D7~DO. 8255CS接地址译码输出的288h~28fh。8255的PB0~PB2分别接LCD的D/I、RW、E接口。编程采集IN0输入的电压,将压力传感器的模拟信号转化为数字信号,之后进行转换,换算为设定量程
8、下实际情况的值,然后将模拟重量的电压数据存放到CPU寄存器中用于下一步计算。同时将模拟重量的电压数据从8255的A口输出并在LCD屏幕的第一行作为重量显示出来。 2.2 键盘数据的输入与显示 8255的C0~C3接键盘的列0~列3,C4~C7接键盘的行0~行3),从键盘输入两位数,然后在LCD的第二行作为单价显示出来,并存放到CPU寄存器中用于下一步计算。 2.3 数据的解决与显示 通过编程将第一步与第二步寄存在CPU中的模拟重量与模拟价格相乘解决后输入到LCD的第三行作为总价显示出来。 2.4 LCD显示说明 液晶显示屏是一种内置128×64-12汉字图形点阵的液晶显
9、示控制模块,用于显示汉字及图形。12864A-1汉字图形点阵液晶显示模块集成ST7920驱动器,可显示汉字及图形,内置8192个中文汉字(16×16点阵)、128个字符(8×16点阵)及64×256点阵显示RAM(GDRAM)。如图2.4。 液晶显示屏共显示四行字符,每行可以显示八个字符。 0-14 重量:****斤 16-30 价格:****元 32-46 总价:***** 48-62 值班人员:*** 图2.4 LCD接线图 3.硬件框图与说明 3.1 8086原理简介 3.1.1 8086CPU 8
10、086是Intel系列的16位微解决器,它采用HMOS工艺技术制造,芯片采用40系列线封装,单一的+5V电源,时钟频率为5~10MHz。 8086有16根数据线和20根地址线,可以解决8位和16位数据,寻址1MB的储存单元和64KB的I/O端口。如图3.1.1。 图 3.1.1 8086引脚图 3.1.2 8086CPU的编程结构 编程结构:是指从程序员和使用者的角度看到的结构,亦可称为功能结构。从功能上来看,8086CPU可分为两部分,即总线接口部件BIU(Bus Interface Unit)和执行部件EU(Execution Unit)。8086CPU的内部功能结构如图
11、图3.1.2所示: 图3.1.2 3.2 8255原理简介 3.2.1 8255原理及接线图 8255A是Intel系列的并行接口芯片,常作为微机系统与外部设备接口。由于它是可编程的,可以通过软件来设立芯片的工作方式,因此,用它连接外部设备时,一般不需要在附加外部电路,给使用带来很大方便。如图3.2.1 图3.2.1 3.2.2芯片8255 A在本设计中的功能作用 8255是并行的I|O接口芯片,内部有三个互相独立的8为数据端口。8255实现了外设与8086之间的数据传输。8255的A口地
12、址为288H,B口地址为289H,C口地址为28AH, 控制口地址为28BH,A口作为LED显示屏数据总线D0~D7,B口控制LED灯,蜂鸣器,电机,C口的低三位分别接LED显示屏的D/I,RW,E。 3.2.3芯片8255的功能分析 1、8255A是可编程并行接口,内部有3个互相独立的8位数据端口,即A口、B口和C口。三个端口都可以作为输入端口或输出端口。A口有三种工作方式:方式0、方式1和方式2;B口可以工作在方式0或方式1下;C口通常作为联络信号使用。8255的工作只有当片选CS有效时才干进行工作,而控制逻辑端口实现对其他端口的控制。当8255工作在方式0时,即基本输入输出方式
13、时,可将三个数据端口划分为四个独立的部分:A口和B口作为两个8位端口,C口的高4位和低4位可以用作两个4位的输入输出口,各个端口都可独立地用作输入或输出。 2、数据总线缓冲器是一个8位双向三态缓冲器,三态是由读/写控制逻辑控制的,它可与系统的DB直接相连,实现CPU和8255A之间的信息传送;读写控制器用于管理数据、控制字或状态字的传送,接受来自CPU的地址信息及一些控制信号,然后向A组、B组控制电路发送命令,控制端口数据的传送方向。 3、8255引脚:RESET:复位输入线,当该输入端处在高电平时,所有内部寄存器(涉及控制寄存器)均被清除,所有I/O口均被置成输入方式。 CS:芯片
14、选择信号线,当这个输入引脚为低电平时,即/CS=0时,表达芯片被选中,允许8255与CPU进行通讯;/CS=1时,8255无法与CPU做数据传输. RD:读信号线,当这个输入引脚为低电平时,即/RD=0且/CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。 WR:写入信号,当这个输入引脚为低电平时,即/WR=0且/CS=0时,允许CPU将数据或控制字写入8255。 D0~D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。 P
15、A0~PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入锁存器。 PB0~PB7:端口B输入输出线,一个8位的I/O锁存器, 一个8位的输入输出缓冲器。 PC0~PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入缓冲器。端口C可以通过工作方式设定而提成2个4位的端口, 每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。 A0,A1:地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器. 当A0=0,A1=0时,PA口被选择;当A0=0,A1=1时,PB
16、口被选择;当A0=1,A1=0时,PC口被选择;当A0=1.A1=1时,控制寄存器被选择。 3.2.4 8255具有三种基本的工作方式 基本输入/输出方式(方式0) 选通工作方式(方式1) 双向传送方式(方式2) 方式0: 相称于三个独立的8位简朴接口 各端口既可设立为输入口,也可设立为输出口,但不能同时实现输入及输出。C端口可以是一个8位的简朴接口,也可以分为两个独立的4位端口 常用于连接简朴外设(适于无条件或查询方式)。 方式1: 运用一组选通控制信号控制A端口和B端口的数据输入输出 A口、B口作输入或输出口,C口的部分位用作选通控制信号 A口、B口在作为输入和输出
17、时选通信号不同 方式2: 双向输入输出方式-------可以既作为输入口,又作为输出口 只有A端口可工作在方式2下。 3.3 0809的应用 3.3.1 0809内部特性 (1)8路输入通道,8位A/D转换器,即分辨率为8位。如图3.3.1。 (2)具有转换起停控制端。 (3)转换时间为100μs (4)单个+5V电源供电。 (5)模拟输入电压范围0~+5V ,不需要零点和满刻度校准。 (6)工作温度范围为-40~+85摄氏度。 (7)低功耗,约15mW 图3
18、3.1 3.3.2外部特性(引脚功能) 图3.3.2 ADC0809芯片有28条引脚,采用双列直插式封装,如图所示。下面说明各引脚功能。IN0~IN7:8路模拟量输入端。2-1~2-8:8位数字量输出端。ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路。ALE:地址锁存允许信号,输入,高电平有效。START:A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。EOC: A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。OE:数据输出允许信号,输入
19、高电平有效。当A/D转换结束时,此端输入一个高电平,才干打开输出三态门,输出数字量。CLK:时钟脉冲输入端。规定期钟频率不高于640KHZ。REF(+)、REF(-):基准电压。Vcc:电源,单一+5V。GND:地。 3.3.3量程转换方法: INO单极性输入电压与转换后的数字的关系为: N=Ui/(UREF/256) 3.4 液晶显示屏 3.4.1 液晶屏简介和重要特性 液晶显示屏是一种内置128×64-12汉字图形点阵的液晶显示控制模块,用于显示汉字及图形。12864A-1汉字图形点阵液晶显示模块集成ST7920驱动器,可显示汉字及图形,内置8192个中文汉字(16×1
20、6点阵)、128个字符(8×16点阵)及64×256点阵显示RAM(GDRAM)。重要技术参数和显示特性: 电源:VDD 3.3V~+5V(内置升压电路,无需负压); 显示内容:128列× 64行; 显示颜色:黄绿; 显示角度:6:00钟直视; LCD类型:STN; 与MCU接口:8位或4位并行/3位串行; 2MHZ时钟频率; 配置LED背光; 多种软件功能:光标显示、画面移位、自定义字符、睡眠模式等 3.4.2液晶显示屏引脚说明 引脚号 引脚名称 电平 功能说明 1 VSS - 模块的电源地 2 VDD - 模块的电源正端 3 V0 -
21、 LCD驱动电压输入端 4 RS(/CS) H/L 并行的指令/数据选择信号,L-指令;串行的片选信号 5 R/W(SID) H/L 并行的读写选择信号;串行的数据口 6 E(CLK) H/L 并行的使能信号;串行的同步时钟 7 DB0 H/L 数据0 8 DB1 H/L 数据1 9 DB2 H/L 数据2 10 DB3 H/L 数据3 11 DB4 H/L 数据4 12 DB5 H/L 数据5 13 DB6 H/L 数据6 14 DB7 H/L 数据7 15 PSB H/L 并/串行接口选择:H-
22、并行;L-串行 16 NC 空脚 17 /RET H/L 复位 低电平有效 18 NC 空脚 19 LED_A - 背光源正极(LED+5V) 20 LED_K - 背光源负极(LED-OV) 表128X64 引脚说明 逻辑工作电压(VDD):4.5~5.5V 电源地(GND):0V 工作温度(Ta):0~60℃(常温) / -20~75℃(宽温) 3.4.3汉字编码查询表 图3.4.3 3.4.4液晶显示流程图: 图3.4.4 3.4.5液晶显示原理图:
23、 图 3.4.5 3.5 键盘 键盘的工作原理是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。在行线和列线的每一个交叉点上,设立一个按键。这样键盘中按键的个数是4×4个。这种行列式键盘结构可以有效地提高单片机系统中I/O口的运用率。 3.5.1键盘原理流程图 图3.5.1 3.5.2键盘电路图 图3.5.2 3.5.3键盘的扫描过程 (1)检测是否所有键都松开了,若没有则继续检测。 (2)档所有键都松开了,在检测是否有键按下,若无这继续检测。 (3)若有键
24、按下,要消除键盘抖动,确认有键按下。 (4)对压下的键进行编码,将该键的行列信号转换成16进制,由此拟定有哪个键按下了。假如出现有多个键反复按下的情况,只有在其他键所有释放后,仅剩一个键按下时,才把此键当作按下的键。 (5)该建释放后在回到(2) 4.电路原理图与说明 4.1电路原理图 4.1.1 电路连接图与说明: (1)0809的通道0的地址为298H,通道0与0~+5V相连接,片选地址为280H~287H (2)8255的片选地址为288H~29DH,A口地址为288H,B口地址为289H,C 口地址为28AH,PA0~PA7接LCD数据总线D0~D7,PB0~PB
25、2接LCD的D/I、RW、E。PC0~PC7接键盘的DO~D7。 图4.1.1 4.1.2 硬件接线实物图 图4.1.2 4.2 硬件运营过程说明 4.2.1过程说明 初始化压力传感器,将压力传感器的信号传至A/D转换器(由于没有压力传感器,实验中用滑动变阻器替代),然后将压力传感器的模拟信号转化为数字信号,之后进行转换,换算为设定量程下实际情况的值,将值送到8255,8255控制液晶屏显示,将换算之后的值显示出来。并使当前数据随时间一直不断变化。当压力大小相对稳定期,从4*4键盘输入一个2为数,通过8255链接
26、的LCD显示器显示在显示屏的第二行。然后计算模拟重量乘以价格得到总价输出到LCD液晶显示屏的第三行。 5.软件重要模块与说明 程序软件模块分为主程序,键盘程序,0809转换程序,液晶显示程序,计算子程序五个部分,键盘程序,液晶显示程序流程图在硬件部分已有叙述,下面重要描述主程序,0809转换程序的具体过程,主程序完毕8255初始化,调用0809转,完毕LCD准备工作,调用键盘函数,调用计算函数等一系列主干过程。 5.1 主程序流程图 图5.1 5.2 0809转换及数据解决流程 5.2.1
27、数据解决流程图 图5.3.1 5.2.2数据转换代码如下 TRANSFORM PROC ;启动0809 MOV DX,280H OUT DX,AL MOV CX,0FFH AGAIN: LOOP AGAIN IN AL,DX ;读取0809的值 MOV BL,2 ;量程转换,100-1000 MOV AH,0 MUL BL MOV [HUANCH+64] ,AX MOV DX,0 MOV CX,100
28、 ;将转换量程后的值进行拆分,使之能在LED屏上显示 DIV CX ADD AX,0A3B0H MOV [HUANCH+6],AX ;储存百位数值,显示 MOV AX,DX MOV DX,0 MOV CX,10 DIV CX ADD AX,0A3B0H MOV [HUANCH+8],AX ;储存十位数值,显示 MOV AX,DX ADD AX,0A3B0H MOV [HUANCH+12],AX ;储存个位数值至缓冲区 RET TRANSFORM ENDP 6.源程序清单与注释 IO_ADDRESS EQU 2
29、88h IO_ADDRESS EQU 288H a8255 equ 288H ;8255 A口 c8255 equ 28aH ;8255 C口 k8255 equ 28bH ;8255控制口分 DATA SEGMENT HUANCH DW 0D6D8H, 0C1BFH,0A3BAH,0C1A6H,0A1C3H,0A3AEH,0A3CBH,0BDEFH ;0-14 显示kg,+6,最后一个存数据,+16 DW 0BCDBH,0B8F1H,
30、0A3BAH,0A3B0H,0A3AEH,0A3B0H,0A1A0H,0D4AAH ;16-30 单价XXX.X帕 DW 0D7DCH,0BCDBH,0A3BAH,0A3AEH,0A3AEH,0A3AEH,0A3AEH,0A3AEH ;32-46 显示状态 DW 0D6B5H,0B0E0H,0C8CbH,0D4B1H,0A1C3H,0D1EEH,0BDA8H,0A1A0H ;48-52 显示值班人员 DW 64,66,68,0,72; CC DB 10; HZ_ADR DB ? table1 DW 0770h,0B70h,0D70h,0E70h,07B
31、0h,0BB0h,0DB0h,0EB0h DW 07D0h,0BD0h,0DD0h,0ED0h,07E0h,0BE0h,0DE0h,0EE0h ;键盘扫描码表 char DB 'ABCDEF' ;字符表 DATA ENDS DATA ENDS STACKS SEGMENT STACK ;堆栈空间 DB 100 DUP (?) STACK ENDS ;jianpan CODE SEGMENT ASSUME CS:COD
32、E,DS:DATA,SS:STACKS,ES:DATA START: CLI MOV AX,DATA MOV DS,AX MOV ES,AX ;????????????????? MOV AX,stacks MOV SS,AX MOV DX,IO_ADDRESS+3 MOV AL,81H OUT DX,AL ;8255初始化 CALL TRANSFORM ;调用0809 ok CALL CLEAR ;LC
33、D 清除 LEA BX,HUANCH MOV CH,1 ;显示第1行信息 CALL LCD_DISP CALL JISUAN LEA BX, HUANCH MOV CH,2 ;显示第1行信息 CALL LCD_DISP LEA BX, HUANCH MOV CH,3 ;显示第1行信息 CALL LCD_DISP LEA BX,HUANCH MOV CH,4 ;显示第4行信息 CAL
34、L LCD_DISP MOV DX,c8255 MOV AL,0fh OUT DX,AL IN AL,DX ;读行扫描值 AND AL,0fh CMP AL,0fh JZ START ;未发现有键按下则转 MOV DL,3fh MOV AH,2 INT 21h CALL JIANPAN MOV DL,[CC] ADD DL,30H MOV AH,02 INT 21h ;显示查找到的键盘 MOV BL,[
35、CC]; MOV BH,0; MOV [HUANCH+66],BX ADD BX,0A3B0H MOV [HUANCH+22],BX CALL JIANPAN MOV DL,[CC] ADD DL,30H MOV AH,02 INT 21h ;显示查找到的键盘 MOV BL,[CC]; MOV BH,0 MOV [HUANCH+68],BX ADD BX,0A3B0H MOV [HUANCH+26],BX MOV BL,10 MOV AX,[HUANCH+66] MOV
36、AH,0; MUL BL ADD AX,[HUANCH+68] MOV [HUANCH+70],AX; MOV DX,IO_ADDRESS+3 MOV AL,81H OUT DX,AL ;8255初始 LEA BX, HUANCH MOV CH,2 ;显示第2行信息 CALL LCD_DISP LEA BX, HUANCH CALL JISUAN MOV CH,3 ;显示第3行信息 CALL LC
37、D_DISP l1: JMP START CLEAR PROC MOV AL,0CH MOV DX,IO_ADDRESS OUT DX,AL ;设立CLEAR命令 CALL CMD_SETUP ;启动LCD执行命令 RET CLEAR ENDP TRANSFORM PROC ;启动0809 MOV DX,280H OUT DX,AL MOV CX,0FFH AGAIN: LOOP AG
38、AIN IN AL,DX ;读取0809的值 MOV BL,2 ;量程转换,100-1000 MOV AH,0 MUL BL MOV [HUANCH+64] ,AX MOV DX,0 MOV CX,100 ;将转换量程后的值进行拆分,使之能在LED屏上显示 DIV CX ADD AX,0A3B0H MOV [HUANCH+6],AX ;储存百位数值,显示 MOV AX,DX
39、MOV DX,0 MOV CX,10 DIV CX ADD AX,0A3B0H MOV [HUANCH+8],AX ;储存十位数值,显示 MOV AX,DX ADD AX,0A3B0H MOV [HUANCH+12],AX ;储存个位数值至缓冲区 RET TRANSFORM ENDP FUNCUP PROC MOV AL,34H ;LCD显示状态命令 OUT DX,AL CALL CMD_SETUP RET FUNCUP
40、 ENDP LCD_DISP PROC LEA BX, HUANCH CMP CH, 1 ;判断是否为第一行 JZ DISP_SEC1 CMP CH,2 ;判断是否为第二行 JZ DISP_SEC2 CMP CH,3 ;判断是否为第三行 JZ DISP_SEC3 CMP CH,4 ;判断是否为第三行 JZ DISP_SEC4 MOV BYTE PTR HZ_ADR,98h
41、 ;第四行起始端口地址 ADD BX,48 ;指向第四行信息 JMP NEXT DISP_SEC1: MOV BYTE PTR HZ_ADR,80H ;第一行起始端口地址 ADD BX,0 ;指向第一行信息 JMP NEXT DISP_SEC2: MOV BYTE PTR HZ_ADR,90H ;第二行起始端口地址 ADD BX,16 ;指向第二行信息 JMP NEXT DISP_SEC3: MOV BYTE PTR
42、HZ_ADR,88H ;第三行起始端口信息 ADD BX,32 ;指向第三行信息 JMP NEXT DISP_SEC4: MOV BYTE PTR HZ_ADR,98H ;第三行起始端口信息 ADD BX,48 ;指向第三行信息 JMP NEXT NEXT: MOV CL,8 CONTINUE: PUSH CX MOV AL,HZ_ADR MOV DX,IO_ADDRESS OUT DX, AL CALL CMD_SETUP ;设定DDRAM地址命令 MOV AX,[BX] PUS
43、H AX MOV AL,AH ;先送汉字编码高位 MOV DX,IO_ADDRESS OUT DX,AL CALL DATA_SETUP ;输出汉字编码高字节 CALL DELAYTIME ;延迟 POP AX MOV DX,IO_ADDRESS OUT DX, AL CALL DATA_SETUP ;输出汉字编码低字节 CALL DELAYTIME INC BX INC BX ;修改显示内码缓冲区指针 INC BYTE PTR HZ_ADR
44、 ;修改LCD显示端口地址 POP CX DEC CL JNZ CONTINUE RET LCD_DISP ENDP CMD_SETUP PROC MOV DX,IO_ADDRESS ;指向8255端口控制端口 ADD DX,1 NOP MOV AL,00000000B ;PC1置0,pc0置0 (LCD I端=0,W端=0) OUT DX, AL CALL DELAYTIME NOP MOV AL,00000100B ;PC2置1 (LCD E端=1) OU
45、T DX, AL NOP CALL DELAYTIME MOV AL, 00000000B ;PC2置0,(LCD E端置0) OUT DX, AL CALL DELAYTIME RET CMD_SETUP ENDP DATA_SETUP PROC MOV DX,IO_ADDRESS ;指向8255控制端口 ADD DX,1 MOV AL,00000001B ;PC1置0,PC0=1 (LCD I端=1) OUT DX, AL NOP CALL DEL
46、AYTIME MOV AL,00000101B ;PC2置1 (LCD E端=1) OUT DX, AL NOP CALL DELAYTIME MOV AL, 00000001B ;PC2置0,(LCD E端=0) OUT DX, AL NOP DELAYTIME PROC ;延时子程序 MOV CX,0FFFFH D1: LOOP D1 RET DELAYTIME ENDP DATA_SETUP ENDP JISUAN PROC MOV AX,[HUANCH+
47、70] MOV BX,[HUANCH+64] MUL BX MOV DX,0; MOV BX,10000 DIV BX ADD AX,0A3B0H MOV [HUANCH+38],AX MOV AX,DX MOV BX,1000 MOV DX,0; DIV BX ADD AX,0A3B0H MOV [HUANCH+40],AX MOV AX,DX MOV BX,100 MOV DX,0; DIV BX ADD AX,0A3B0H MOV [HUANCH+42],AX MOV AX,DX MOV BX,10
48、 MOV DX,0; DIV BX ADD AX,0A3B0H MOV [HUANCH+46],AX MOV AX,DX RET JISUAN ENDP JIANPAN PROC MOV DX,k8255 ;初始化8255控制字 MOV AL,81h OUT DX,AL key_loop: MOV DX,c8255 MOV AL,0fh OUT DX,AL IN AL,DX ;读行扫描值 AND AL,0fh CMP AL,0fh JZ
49、 key_loop ;未发现有键按下则转 CALL DELAY ;delay for amoment MOV AH,AL MOV DX,k8255 MOV AL,88h OUT DX,AL MOV DX,c8255 MOV AL,AH OR AL,0f0h OUT DX,AL IN AL,DX ;读列扫描值 AND AL,0f0h CMP AL,0f0h JZ key_loop ;未发现有键按下则转 M
50、OV SI,offset table1 ;键盘扫描码表首址 MOV DI,offset char ;字符表首址 MOV CX,16 ;待查表的表大小 key_tonext: CMP AX,[SI] ;cmp (col,row) with every word JZ key_findkey ;in the table DEC CX JZ key_loop ;未找到相应扫描码 ADD SI,2 INC DI
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818