微机系统与接口教学资料 第8章3 习题课二-8255实验-李晓东ppt课件_第1页
微机系统与接口教学资料 第8章3 习题课二-8255实验-李晓东ppt课件_第2页
微机系统与接口教学资料 第8章3 习题课二-8255实验-李晓东ppt课件_第3页
微机系统与接口教学资料 第8章3 习题课二-8255实验-李晓东ppt课件_第4页
微机系统与接口教学资料 第8章3 习题课二-8255实验-李晓东ppt课件_第5页
已阅读5页,还剩57页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、习题课二:习题课二:82558255实验实验李晓东指点教师:陆尧胜教师:6340914608255A8255A内部构造:内部构造:数据数据总线总线缓冲器缓冲器内部控制线内部控制线内部数据线内部数据线D0D7A组组控制控制A组组端口端口AA组组端口端口C上部上部B组组控制控制B组组端口端口BB组组端口端口C下部下部读写读写控制控制逻辑逻辑PC0PC3PB0PB7PC4PC7PA0PA7RDWRA0A1CSRESETCPU接口接口内部逻辑内部逻辑外设接口外设接口82558255端口寻址端口寻址l 3个数据端口A、B、C和1个控制端口l控制字存放器对A、B、C端口进展控制,以决议其任务方式。CS*

2、A1 A0读操作读操作RD*写操作写操作WR*0 0 00 0 10 1 00 1 1读端口读端口A读端口读端口B读端口读端口C非法非法写端口写端口A写端口写端口B写端口写端口C写控制字写控制字8255A8255A的任务方式的任务方式u方式方式0:根本输入输出方式:根本输入输出方式u与外设只需数据信号线,没有控制、形状等联络信号;与外设只需数据信号线,没有控制、形状等联络信号;u适用于无条件传送和查询方式的接口电路适用于无条件传送和查询方式的接口电路;u方式方式1:选通输入输出方式:选通输入输出方式u与外设除数据信号线外,还有控制、形状等联络信号;与外设除数据信号线外,还有控制、形状等联络信号

3、;u适用于查询和中断方式的接口电路适用于查询和中断方式的接口电路;u方式方式2:双向选通传送方式:双向选通传送方式u与外设除数据信号线外,还有控制、形状等联络信号;与外设除数据信号线外,还有控制、形状等联络信号;u适用于查询和中断方式的接口电路适用于查询和中断方式的接口电路实验一:键盘扫描实验实验一:键盘扫描实验图1所示为8255检测矩阵式键盘电路,其特点是由按键组成一个83矩阵,矩阵的行线和列线分别作为两个传输方向相反的I/O接口信号线,比如行线作为输出接口信号线,列线作为输入接口信号线,或反之。A口接键盘矩阵的行线,B口接矩阵键盘列线标题要求:将按下的按键所代表标题要求:将按下的按键所代表

4、的字符显示在屏幕上的字符显示在屏幕上检测特点:行线输出列线输入行线和列线:传输方向相反的I/O接口信号线键盘检测方案:键盘检测方案:按键检测思绪: 1确定有没按键按下 2假设有按键按下,检测按下按键的键码 键码即按键的行坐标和列坐标 3根据键码表,查找相应的字码表,得到 按下按键所代表的字码,并在屏幕显示键盘检测方法:行扫描法和线反转法键码表和字码表的区别键码表和字码表的区别键码表:按键按下时对应输出口A端口和输入口B端口此时的值即表示该按键的键码,一切键码组成的表即键码表。字码表:即按键所代表的字符如:0、1、2、A等键码相当于按键的坐标,而字码即是按键所代表的字符。键码表的每一个键码与子码

5、表的每一个字符是一一对应的。方法方法1 1:行扫描法:行扫描法STEP1: 检查能否有键按下1一切行输出0;2读列形状,检查能否全1; 假设否,那么有能够有键按下3延时20ms,再读列线,能否全1; 假设否,有键按下STEP2:读键码行扫描法1行扫描; 逐行输出02读列形状。 被扫描到的行有键按下,列形状才会改动按键消抖STEP3:键分析1行值送AL2列值送AH3经过AX得键码STEP4:键处置1查表 拿键值与键值表比较,一样那么记录下对应的字符码2显示字符按键抖动按键闭合及断开的瞬间均伴随有一连串的抖动,如以下图。抖动时间的长短由按键的机械特性决议,普通为5ms10ms。 影响:导致一次按键

6、被CPU误读几次按键去抖动按键去抖动硬件方法:滤波延时电路或单稳态电路来避开按键的抖动硬件方法:滤波延时电路或单稳态电路来避开按键的抖动时间。时间。 如以下图如以下图 是由是由R 和和C 组成的滤波延时消抖电路,只组成的滤波延时消抖电路,只需使电容时间常数大于或等于需使电容时间常数大于或等于20ms 即可避开按键抖动的即可避开按键抖动的影响。影响。软件方法:在第一次检测到有键按下时,软件方法:在第一次检测到有键按下时, 执行延时程序执行延时程序约约20ms,使键的前沿抖动消逝后再检测一次。,使键的前沿抖动消逝后再检测一次。行扫描的过程:行扫描的过程:0 0行行1 1行行2 2行行3 3行行4

7、4行行5 5行行6 6行行7 7行行0 0列列1 1列列2 2列列1 2 31 2 34 5 6 4 5 6 7 8 9 7 8 9 A B C A B C D E F D E F 0 + - 0 + - ( ( ) R ) R列线列线PB0-3PB0-3行线行线PA0 PA0 | | PA7PA7行号:第行号:第0 0行行第第7 7行逐行输出行逐行输出0 0 行扫描值:行扫描值: A A口逐行输出口逐行输出 (FE,FD,FB,F7,EF,DF,BF,7F) (FE,FD,FB,F7,EF,DF,BF,7F) FEH = 1111 1110 B( FEH = 1111 1110 B(初次扫描

8、初次扫描) ) FDH = 1111 1101 B (2 FDH = 1111 1101 B (2次扫描次扫描) ) FBH = 1111 1011 B (3 FBH = 1111 1011 B (3次扫描次扫描) ) F7H = 1111 0111 B (4 F7H = 1111 0111 B (4次扫描次扫描) ) EFH = 1110 1111 B (5 EFH = 1110 1111 B (5次扫描次扫描) ) DFH = 1101 1111 B (6 DFH = 1101 1111 B (6次扫描次扫描) ) BFH = 1011 1111 B (7 BFH = 1011 1111

9、B (7次扫描次扫描) ) 7FH = 0111 1111 B (8 7FH = 0111 1111 B (8次扫描次扫描) )列值:列值: (FE,FD,FB) (FE,FD,FB)从从B B口低口低3 3位读进位读进( (高高5 5位做置位做置“1 1 处置处置) ) FFFF:表示此行无键按下。:表示此行无键按下。FEFE、FDFD、FBFB:此行的:此行的0202列有键列有键按下。按下。主程序流程图:主程序流程图:设置数据段,显示提示信息调键盘扫描子程序KEY字符能否为RNY开场终了置8255A控制字82H,A口输出,B口输入A口输出低电平,B口读入数据标识位BL清零列线全为高电平(B

10、L)=1?YN延时去抖动BL置1NY开场键盘扫描子程序流程图行扫描法:键盘扫描子程序流程图行扫描法:按键消抖标志第1行输出低电平保管行值列线全为高电平行扫描终了取行值行值左移1位指向下一行NYYN与表无任一键一样Y在屏幕上显示此键对应的字符从A口输出00,从B口读入列值输入字符的ASCII码存放在(DL)中键能否已释放前往YN列值送(AH),行值送(AL),经过(AX)查表NPA55EQU218H ;端口A的地址PB55EQU219H ;端口B的地址P55CTLEQU21BH ;控制字存放器的端口地址DATASEGMENTTABLE DWFEFEH, FDFEH, FBFEH;键码表DWFEF

11、DH, FDFDH, FBFDHDWFEFBH, FDFBH, FBFBHDWFEF7H, FDF7H, FBF7HDWFEEFH, FDEFH, FBEFHDWFEDFH, FDDFH, FBDFHDWFEBFH, FDBFH, FBBFHDWFE7FH, FD7FH, FB7FHCHARDB123;字符码表DB 456DB789行扫描法源程序1 of 8 DBABCDBDEFDB0+- DB*/(DB) R ;中间是空格MESDBINPUT ANY KEY IN THE DBSMALL KEYBOARD.DB0AH,0DH;回车换行DBIT WILL BE DISPLAY DB ON TH

12、E SCREEN!DBEND WITH R DB0AH,0DH, $DATAENDSCODESEGMENT行扫描法源程序2 of 8 MAINPROC FARASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX;DS指向数据段MOVDX,OFFSET MESMOVAH,09 ;显示提示信息INT21HKY:CALLKEY;调键盘扫描子程序CMPDL,R;键入字符不是R,转KYJNZKYMOVAX,4C00HINT21HRETMAINENDP行扫描法源程序3 of 8 KEY PROC NEAR ;键盘扫描子程序MOVAL,82H ;设置8255A控制字任务

13、在方 ;式0,端口A输出,端口B输入MOVDX,P55CTL OUTDX,AL ; 控制字送控制字存放器端口BEGIN:MOVBL,00H ;标识位清零WAIT1:MOVAL,00H ;端口A输出全0,一同检测MOVDX,PA55OUTDX,ALMOVDX,PB55INAL,DX;从端口B读入列值ANDAL,07HCMPAL,07HJZBEGIN ;假设为07H,无键按下行扫描法源程序4 of 8 CMPBL,01H JZKPRESS ;假设为1,已消抖动 MOVCX,1000HDLY:LOOP DLY;延时去抖MOVBL,01H;标识位置1JMPWAIT1KPRESS:MOVAL,0FEH

14、;第一行输出0RSCAN:MOVDX,PA55 OUTDX,ALPUSH AX;保管行值MOVDX,PB55INAL,DX ;读入列值ANDAL,07HCMPAL,07H行扫描法源程序5 of 8 JZNEXTR;列值全为1,跳转OR AL,F8H;得到键码列值MOVAH,AL;列值送(AH)POPBX;弹出行值放BXMOVAL,BL;得出键码MOVSI,OFFSET TABLE;键码表首址MOVDI,OFFSET CHAR;字符码表首址MOVCX,24TT:CMPAX,SI;键码相符转NNJZNNDECCXJZBEGIN ;比较完仍不相符跳转ADDSI,2INCDIJMPTT;继续比较行扫描

15、法源程序6 of 8 NN:MOVDL,DIMOVAH,02 ;显示该键码对应字符INT21HPUSH DX ;字符ASCII码入栈WAIT2:MOVAL,00 ;端口A输出全0MOVDX,PA55OUTDX,ALMOVDX,PB55 ;从端口B读进列值INAL,DXCMPAL,0FFHJNZWAIT2;等待键释放POPDX;字符ASCII码出栈JMPDONE行扫描法源程序7 of 8 NEXTR:POPAXCMPAL,07FH;判端能否到最后一行了JEBEGINROLAL,1;行值左移一位,指向下一行JMPRSCANDONE:RET ;键盘扫描子程序终了KEY ENDPCODEENDSEND

16、START行扫描法源程序8 of 8 原理:原理: 由行线输出全由行线输出全“0 0,读入读入 列线,判有无键按下。列线,判有无键按下。 假设有键按下假设有键按下, ,再将读再将读入的列入的列 线值由列线输出线值由列线输出, ,读进读进展线展线 的值。的值。 由第一步读进的列线由第一步读进的列线值与值与 第二步读进的行线值第二步读进的行线值那么可那么可 以得到代表此键的独以得到代表此键的独一的一的 键码。键码。 线反转法因输入与输线反转法因输入与输出线出线 反过来用而得名。反过来用而得名。 优点是判键速度快,优点是判键速度快,两次两次 即可。即可。0 0行行1 1行行2 2行行3 3行行4 4

17、行行5 5行行6 6行行7 7行行0 0列列1 1列列2 2列列1 2 31 2 34 5 6 4 5 6 7 8 9 7 8 9 A B C A B C D E F D E F 0 + - 0 + - ( ( ) R ) R列线列线PB0-3PB0-3行线行线PA0 PA0 | | PA7PA7列线列线PB0 PB0 | | PB3PB3方法方法2 2:线反转法:线反转法线反转法图例线反转法图例经过两次输出与读入,即可得到经过两次输出与读入,即可得到被按下按键的键码,并存在被按下按键的键码,并存在AX AX 中中(AH:(AH:列位置;列位置;ALAL:行位置:行位置) )0 0行行1 1行

18、行2 2行行3 3行行4 4行行5 5行行6 6行行7 7行行0 0列列1 1列列2 2列列1 2 31 2 34 5 6 4 5 6 7 8 9 7 8 9 A B C A B C D E F D E F 0 + - 0 + - ( ( ) R ) R列线列线PB0-3PB0-3行线行线PA0 PA0 | | PA7PA7设设:第第2行行/第第0列结点有键按下列结点有键按下首先首先: “0000 0000 PA然后读然后读PB: PB “ xxxx x110 将高将高5位置位置“1: AH= 1111 1110反转输出:反转输出:“1111 1110 PB然后读然后读PA: PA “ 111

19、1 1011 (AL = 1111 1011)列线列线PB0 PB0 | | PB3PB3反转输出时应重新写入命令字:90H置8255A控制字82H,A口输出,B口输入A口输出低电平,B口读入数据标识位BL清零列线全为高电平(BL)=1?YN延时去抖动BL置1NY开场键盘扫描子程序流程图线反转法:键盘扫描子程序流程图线反转法:按键消抖标志列值高5位置“1,并保管列值经过AX查表,与表按键一样保管行值NY置8255A控制字90H,B口输出,A口输入B口输出列值,A口读入数据在屏幕上显示此键对应的字符从B口输出00,从A口读入列值输入字符的ASCII码存放在(DL)中键能否已释放前往YNKEYPR

20、OC NEAR ;线反转法子程序START1:MOVAL,82H ;设置8255A控制字MOVDX,P55CTL;任务在方式0,端OUTDX,AL ;口A输出,端口B输入BEGIN:MOVBL,00H ;标识位清零WAIT1:MOVAL,00H ;端口A输出全0MOVDX,PA55OUTDX,ALMOVDX,PB55INAL,DX;端口B读入列值MOV AH,AL;暂存列值ANDAL,07HCMPAL,07HJZBEGIN ;假设为07H,无键按下线反转法源程序1 of 4 CMPBL,01H JZKPRESS ;假设为1,已消抖动 MOVCX,1000HDLY:LOOPDLY;延时去抖MOV

21、BL,01H;标识位置1JMPWAIT1KPRESS:ORAH,F8H ;列值高5位置“1PUSHAX;保管列值MOVAL,90H ;设置8255A控制字,任务在方 ;式0,端口B输出,端口A输入MOVDX,P55CTL; OUTDX,AL ; MOVAL,AH;端口B输出列值MOVDX,PB55OUTDX,ALMOV DX,PA55INAL,DX;端口A读入行置线反转法源程序2 of 4 POPBX;弹出列值MOVAH,BH ;得出键码MOVSI,OFFSET TABLE;键码表首址MOVDI,OFFSET CHAR;字符码表首址MOVCX,24TT:CMPAX,SI;键码相符转NNJZNN

22、DECCXJZSTART1 ;比较完仍不相符跳转ADDSI,2INCDIJMPTT;继续比较NN:MOVDL,DIMOVAH,02 ;显示该键码对应字符INT21H PUSHDX ;字符ASCII码入栈线反转法源程序3 of 4 WAIT2:MOV AL,00 ;端口A输出全0MOV DX,PB55OUTDX,ALMOV DX,PA55 ;从端口B读进列值INAL,DXCMPAL,0FFHJNZWAIT2;等待键释放POPDX;字符ASCII码出栈JMPDONEDONE:RETKEYENDPCODEENDSENDSTART线反转法源程序4 of 4 行扫描法与线反转法的总结:行扫描法与线反转法

23、的总结:行扫描法:从第一行至最后一行逐行发出低电平信号,检测列线端口,那么得到的是全“1信号,那么没有按键按下;否那么,那么有按键按下。线反转法:先从行线输出全“0信号,读入列线的值,假设所按键按下,那么得到的是非全“1信号;接着将读到的列线值输入,然后读行线的值。线反转发比行扫描法速度快,但是每次反转输入时需重写控制存放器。实验二:点阵实验二:点阵LEDLED显示实验显示实验8X8点阵LED由64个发光二极管组成,每个二极管在行线和列线的交叉点上,当对应点的某一行置1电平,某一列置0电平,那么相应的二极管发亮。接线方案8位串入并出移位存放器3态8位反相缓冲驱动器8位边沿触发器点阵led程序流

24、程图设设8255任务方式任务方式设置显示行指针设置显示行指针取代码取代码设置代码指针设置代码指针从从8255的的PC0、PB0口发送行指口发送行指针针代码指针加代码指针加1显示行指针加显示行指针加1=0?NY初始化初始化LEDADD EQU 0A000H ; LED ADDRESS PORTA EQU 0B000H ; Port A PORTB EQU 0B001H ; Port B PORTC EQU 0B002H ; Port C CADDR EQU 0B003H ; 控制字地址 MODE EQU 80H ; 方式0,PA,PB, PC输出STACK SEGMENT STACK STA D

25、B 64 DUP(0) TOP DB 0 STACK ENDS LED显示源程序 1 of 9 DATA SEGMENT DISPLAY_CODE DB 10H,0FEH,92H,0FEH,92H,0FEH,11H,1FH ; 电 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACKLED显示源程序 2 of 9 11111111111111111111111111111111111START PROC NEAR ; 主程序 MOV AX, DATA ; 程序初始化 MOV DS, AX ; 送数据段地址 MOV AX, STACK

26、MOV SS, AX ; 送堆栈段地址 LEA SP, TOP ; 送栈指针 MOV AL, MODE ; 初始化8255 MOV DX, CADDR OUT DX, AL ; 输出控制字 MOV AL, 0 MOV DX, PORTB OUT DX, AL ; PB 输出 0 LED显示源程序 3 of 9 MOV DX, PORTC OUT DX, AL ; C口输出 0 MOV DX, LEDADD ; 列数据 MOV AL, 00H ; 全灭 OUT DX, AL RD_DISP: MOV BL,01H ;BL存在行数据 MOV CX,08 ;8行,循环8次 MOV SI,OFFSET

27、 DISPLAY_CODERDISP_1: MOV DX, LEDADD MOV AL, 00H ;全灭 OUT DX, AL LED显示源程序 4 of 9 MOV AL,BL ;行数据送至AL CALL SEND_164 ;把AL对应的行开启 MOV AL,SI ;送列数据 INC SI MOV DX, LEDADD OUT DX,AL ;点亮某一行 MOV AH,00 ;时间常数 CALL DELAY ;延时 SHL BL,1 LOOP RDISP_1 JMP RD_DISP START ENDPLED显示源程序 5 of 9 ;延时子程序DELAY PROC NEAR PUSH CX

28、MOV AL,0A0H MOV CX,AX LOOP $ POP CX RET DELAY ENDPLED显示源程序 6 of 9 74LS164时序图74LS164内部构造;串入并出 74LS164的驱动子程序;PC0-DATA;PB0-CLK;把存放器AL的数输出到74LS164的Q7 Q0SEND_164 PROC NEAR PUSH AX PUSH CX MOV CX, 0008H DLP: PUSH AX ;保管8 bits的数据 MOV AH, 00H ;AH = 0 TEST AL, 80H ;测试D7能否为1 JNE GN1 ;假设D7 = 0,那么AH = 00H MOV A

29、H, 01H ;假设D7 = 1,那么AH = 01H LED显示源程序 7 of 9 GN1: MOV DX, PORTB MOV AL, 00H ;时钟0 OUT DX, AL MOV DX, PORTC MOV AL, AH ;数据位 OUT DX, AL ;放进数据,等待触发 MOV DX, PORTB MOV AL, 01H ;时钟1 OUT DX, AL NOPLED显示源程序 8 of 9 MOV AL, 00H ;时钟0 OUT DX, AL POP AX SHL AL, 1 LOOP DLP POP CX POP AX RET SEND_164 ENDPCODE ENDS E

30、ND STARTLED显示源程序 9 of 9 子程序运转结果:假设AL = 08H,74LS164的输出Q0-Q7为00001000。双色LED灯由一个红灯LED和绿灯LED管芯封装在一同,公共 负端红灯:红色端高电平,绿色端低电平绿灯:红色端低电平,绿色端高电平黄灯:两端都高电平实验三:模拟交通灯实验实验三:模拟交通灯实验交通灯变化规律:南北红灯,东西红灯东西南北01010101南北绿灯,东西红灯南北绿灯闪几次黄灯,东西红灯南北红灯,东西绿灯南北红灯,东西绿灯闪几次黄灯东西南北双色LED灯3态8路缓冲驱动8255与双色led接口电路端口地址:A口:0A000H;B口:0A001H;C:0A002H;命令口:0A003H模拟交通灯程序流程图设置设置8255各口为输出各口为输出清清LED四灯全红,延时四灯全红,延时南北绿灯,东西红灯,延时南北绿灯,东西红灯,延时南北黄灯、绿灯闪三次南北黄灯、绿灯闪三次南北黄灯,延时南北黄灯,延时南北红灯,东西绿灯,延时南北红灯,东西绿灯,延时东西黄灯、绿灯闪三次东西黄灯、绿灯闪三次东西黄灯,延时东西黄灯,延时初始化初始化MODE EQU 082H ; 方式0,PA,PC输出,PB输入 PORTA EQU 0A000

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论