微机实验报告书
学号:同组名单:实验题目:实验目标:
姓名:
班级:实验日期:20121221
七段数码管的静态显示掌握数码管显示数字的原理(功能:键盘输入一位十进制数字09,用七段数
码管显示。)解题思路:
1静态显示:按图10(a)连接好电路,将8255的A口PA0PA6分别与七段数码管的断码驱动输入端ag项链,位码驱动输入端S1接5V,S0、dp接地。编程从键盘输入一位十进制数字,在七段数码管上显示出来。
2动态显示:按图10(b)连接好电路,七段数码管段码连接不变,位码驱动输入端S1,S0接8255C口的PC1,PC0。编程在两个数码管上显示“56”。
程序框图:静态显示见图11(a),动态显示见图11(b)。
f关键问题分析(静态显示):
1、按键判断和程序结束判断按键来说,由于程序中必须输入数字,所以没有必要对是否按键进行判断,只需要判断按键是否在09之间即可。用以下程序即可:cmpjlcmpjgal0exital9exitjl条件转移指令,即在小于时转移jg条件转移指令,即在大于时转移
程序中还要用到“cmp”即比较指令,用来比较输入数与0、9的大小关系。程序结束:如若输入的数字小于0或者大于9,必须直接跳出程序,即结束指令必须单独占用一个程序段,这样,程序顺序执行完毕也可以顺利返回DOS。2、七段码显示。
f实验指导书中给出了七段码的字型代码。这样一来,七段码的显示只需要用换码指令“XLAT”便可以轻松实现。前提是必须将七段码字型编成数码表以字符串的形式写进程序中。3、数字键ASCII码与数值间的转换。因为0的ASCII码为30H,所以数字键ASCII码与数值间的转换时只需减去30H即可,可用下列语句实现:subal30h
程序清单:静态显示:
dataioportio8255aio8255bledmesg1datae
dscodestartsegme
tassumecscodedsdatamovaxdata使8255的A口为输出方式10000000B,控制字PA以方式0输出显示提示信息movdsaxmovdxio8255bmoval80houtdxalzbymovdxoffsetmesg1movah09hi
t21hmovah01i
t21hcmpal0jljgexitexitcmpal9subal30hmovbxoffsetledxlatmovdxio8255aoutdxaljmpzbyexitmovah4ch转zby返回DOS是否小于0如若小于0,则跳转到exit退出程序是否大于9如若大于9,则跳转到exit退出程序将所得字符的ASCII码减30H,数字键ascii码同数值转换bx为数码表的起始地址求出相应的段码从8255的A口输出从键盘接收字符dbdbsegme
tequ0c800h0280hequioport288hequioport28bh3fh06h5bh4fh66h6dh7dh07h7fh6fh0dh0ahI
puta
um09h0dh0ah
fi
t21hcodee
dse
dstart
动态显示
dataioportio8255aio8255bio8255cledbuffer1bzdatae
dscodestartr