收藏 分享(赏)

第7章 MCS-51单片机常用接口.ppt

上传人:sjmd695 文档编号:10201046 上传时间:2019-10-18 格式:PPT 页数:85 大小:1.44MB
下载 相关 举报
第7章 MCS-51单片机常用接口.ppt_第1页
第1页 / 共85页
第7章 MCS-51单片机常用接口.ppt_第2页
第2页 / 共85页
第7章 MCS-51单片机常用接口.ppt_第3页
第3页 / 共85页
第7章 MCS-51单片机常用接口.ppt_第4页
第4页 / 共85页
第7章 MCS-51单片机常用接口.ppt_第5页
第5页 / 共85页
点击查看更多>>
资源描述

1、2019年10月18日星期五,1,第7章 MCS51单片机常用接口,教学目标:通过学习要求掌握MCS51单片机的最小系统;掌握存储器的扩展技术;掌握可编程接口芯片8255A的基本应用;掌握MCS51单片机键盘接口的基本原理;掌握MCS51单片机LED显示器的基本原理。 教学内容:7.1 MCS51单片机的最小系统7.2 存储器扩展7.3 输入/输出接口扩展7.4 MCS51单片机与键盘的接口7.5 MCS51单片机与LED显示器接口,2019年10月18日星期五,2,7.1 MCS-51单片机的最小系统,单片机最小系统结构 地址总线 数据总线 控制总线,地址锁存器用74LS373,最小系统:指

2、一个真正可用的单片机的最小配置。,2019年10月18日星期五,3,2019年10月18日星期五,4,7.2 存储器扩展,7.2.1 存储器扩展概述,1.MCS51单片机的存储器扩展能力,可扩展的片外最大容量64KB,地址范围:0000HFFFFH。通过不同控制信号进行访问。,2.存储器扩展的一般方法,扩展方法:译码法和线选法。,2019年10月18日星期五,5,先将扩展芯片的地址线与单片机的地址线从低位开始顺序相连后,剩余的高位地址线的一根或几根直接连接到各扩展芯片的片选线上。, 线选法,2019年10月18日星期五,6, 译码法,部分译码法是先将扩展芯片的地址线与单片机的地址总线从低位到高

3、位顺序相连,剩余的高位地址线的一部分经译码后连接到扩展的芯片的片选线上。,2019年10月18日星期五,7,全译码法是先将扩展芯片的地址线与单片机的地址总线从低位到高位顺序相连,剩余的高位地址线的全部经译码后连接到扩展芯片的片选线上。,2019年10月18日星期五,8,译码器法,译码器法就是利用译码器电路对存储器地址分配的片外扩展位进行译码,将译码输出与存储芯片的片选端相连。,用74LS138译码器连接的电路如图,常用译码器有: 24译码器74LS139; 38译码器74LS138 416译码器74LS154,2019年10月18日星期五,9,74LS138译码器功能管脚,2019年10月18

4、日星期五,10,2019年10月18日星期五,11,7.2.2 程序存储器扩展,EPROM2764,A0-A12:是13根地址线。 D0-D7: 是8根数据线。 /CE :是片选信号。 /OE :是输出允许信号。 VPP :是编程电源。 /PGM:是编程脉冲输入,1.EPROM2764(8K*8) EPROM2764是28脚双列直插式封装,其管脚配置如下图:,2019年10月18日星期五,12,2 典型EPROM扩展电路,设计要点: /PSEN与1#和2#芯片的/OE相连。 P27(A15)选通1#,P26(A14)选通2#芯片。 P0口作为地址和数据的分时复用;P2口低5位作为芯片的高5位地

5、址线。, 用线选法扩展2片程序存储器【例题7.1】利用2片EPROM2764的芯片扩展16KB的外部程序存储器。试设计连接电路及芯片地址范围?,2019年10月18日星期五,13,分析:2764程序存储器芯片是8KB*8,其地址线条数=13条即用单片机P0口8条+P2口的低5条构成。依据设计的电路图知P27=0时选中芯片1#,P26=1,P25未用。则1#芯片地址范围是:,P27 P26 P25 P24P0 单片机的P2口和P0口管脚A15 A14 A13 A12A0 程序存储器的地址线 低地址 0 1 0/1 00 4000H/6000H 高地址 0 1 0/1 11 5FFFH/7FFFH

6、因此1#芯片的地址有两组分别是 4000H5FFFH6000H7FFFH,程序存储器芯片地址的确定,2019年10月18日星期五,14,P27 P26 P25 P24P0 单片机的P2口和P0口管脚A15 A14 A13 A12A0 程序存储器的地址线 低地址 1 0 0/1 00 8000H/A000H 高地址 1 0 0/1 11 9FFFH/BFFFH 因此2#芯片的地址有两组分别是 8000H-9FFFH;A000H-BFFFH,2019年10月18日星期五,15,7.2.3 数据存储器扩展,1.6264静态数据存储器芯片结构及管脚功能,6264芯片容量是8KB=213B, A0-A1

7、2:13根地址线。 I/O0-I/O7:8根双向输入输出数据线。 /WE:写允许信号。 /OE:读允许信号。 /CE1和/CE2:片选信号。同时有效芯片选通 VCC:+5V电压;GND:接地; NC:空余。,2019年10月18日星期五,16,【例题7.2】依据下列电路设计计算6264(1),6264(2)的地址并分析其工作原理。,2019年10月18日星期五,17,7.3 输入/输出口扩展,2019年10月18日星期五,18,7.3.1 简单I/O接口扩展,1.74LS373数据锁存器管脚功能,2019年10月18日星期五,19,2.数据缓冲器74LS244管脚功能,74LS244,2019

8、年10月18日星期五,20,【例题7.3】用74LS373和74LS244扩展并行输入输出接口电路,1.用74LS373通过P1口扩展并行输出接口并驱动发光二极管。 2.用74LS244通过P1扩展并行输入接口并将开关状态反映到二极管上。 3.扩展的74LS373和74LS244视为片外存储单元,则其地址由P0和P2组成,根据连线可确定它们的地址。 4.用P2.0与读写信号线来控制对74LS373和74LS244的写与读。,设计分析:,2019年10月18日星期五,21,设计电路如下:,2019年10月18日星期五,22,根据连接的电路设计计算74LS373和74LS244的片外地址是:(取高

9、地址),即片外扩展的74LS373和74LS244的地址均为FEFFH,但对这两个地址的操作是受控制信号/WR和/RD的控制的。,2019年10月18日星期五,23,7.3.2 可编程I/O接口扩展(8255A),是可编程芯片。编程设定其功能,软件决定器件。 是并行输入/输出芯片。 内部集成锁存、缓冲及与CPU联络控制逻辑。 与MCS-51一样是Intel公司生产的。, 并行I/O接口即A口、B口、C口可编程为输入/输出 工作方式控制即A组和B组且有各自控制寄存器 数据总线缓冲器即D7-D0的8位数据线 读/写控制逻辑即控制信号分别控制A口B口C口操作,2019年10月18日星期五,24,1.

10、8255A的结构与功能,2019年10月18日星期五,25,2. 8255A的引脚功能, D0-D7:双向三态数据总线。 RESET:复位信号。 /CS:片选信号。 /RD:读信号。 /WR:写信号。 A1、A0:端口控制信号。 PA0PA7:A口双向数据线。 PB0PB7:B口双向数据线。 PC0PC7:C口双向数据/信号线 GND、VCC:电源线。,2019年10月18日星期五,26,3.8255A端口选择,端口选择由控制信号线A1和A0的值来确定A口、B口、C口和控制寄存器。,A口和B口用作数据线时具有双向功能,2019年10月18日星期五,27,4.由A1、A0、/RD、/WR及/CS

11、信号确定8255A的操作状态,2019年10月18日星期五,28,5.8255A与MCS-51单片机的连接,2019年10月18日星期五,29,6.8255A的控制字与初始化,8255A有工作方式控制字和C口置位/复位控制字两种但共用一个端口地址即控制寄存器。,地址7FFFH,向控制寄存器中写入不同的值的过程就是将A口、B口、C口设置为输入或输出及C口的某位置1或清0的过程,控制寄存器,2019年10月18日星期五,30,1)工作方式控制字,控制口地址7FFFH,如:A口为方式0输入,B口方式1输出,C口高4位输出低4位输入则控制字是多少?,2019年10月18日星期五,31,若要将PC4置为

12、1,PC7置为0,则C 口置位/复位控制字分别是多少?执行的指令序列?,2)C口置位/复位控制字,2019年10月18日星期五,32,7.8255A的三种工作方式及应用,特点:分为A组和B组管理,C口的高低4位用于A口和B口的控制与同步信号且由8255A内部定义。,特点:只适用A口,A口可作双向数据传输,C口的高5位为A口提供联络信号。,2019年10月18日星期五,33,1)工作方式0基本输入输出工作方式,8255A工作方式0功能,无条件传输方式无联络信号,思考:如何将A口、B口设置成工作方式0。,2019年10月18日星期五,34,【例题5.3】用8255A的A口接一组开关,B口接一组指示

13、灯,若要将开关的状态读入单片机的寄存器R2中,并通过B口输出送指示灯显示,试设计电路并编写程序。,MOV DPTR,#7FFFH MOV A,#90H MOVX DPTR,A MOV DPTR,#7FFCH MOVX A,DPTR MOV R2,A INC DPTR MOVX DPTR,A,根据连接电路图可计算出A口B口C口和控制口地址及控制字,2019年10月18日星期五,35,2)工作方式1选通输入工作方式,A口,方式1 A口输入引脚,方式1A口选通输入,C口的PC4 PC5 PC3作为联络控制信号,2019年10月18日星期五,36, 8255A向外设发出IBFA=0信号,外设收到后输出

14、一低电平注入STBA同时输出一组数据传送到A口输入缓冲器。输入缓冲器满后8255A又向外设发出IBFA=1信号。外设停止数据传送并向PC4注入STBA=1的信号。 初始化C口控制字PC4=1,即A口中断允许。在INTEA=1和在IBFA=1时使得INTRA=1即向CPU申请中断。 在CPU响应8255A中断请求后,在中断服务程序中执行MOVX指令,读取输入缓冲器的数据至单片机的累加器A中。 在RD信号的下降沿复位INTRA=0,在RD信号的上升沿复位IBFA=0,至此完成一个数据从外设经过8255A到CPU的选通输入过程。,方式1A口输入功能,2019年10月18日星期五,37,方式1B口的输

15、入引脚,B口,方式1B口选通输入,C口的PC2 PC1 PC0作联络控制信号用,2019年10月18日星期五,38, 8255A向外设发出IBFB=0信号,外设收到后输出一低电平注入STBB同时输出一组数据传送到B口输入缓冲器。输入缓冲器满后8255A又向外设发出IBFB=1信号。外设停止数据传送并向PC2注入STBB=1的信号。 初始化C口控制字PC2=1,即B口中断允许。在INTEB=1和在IBFB=1时使得INTRB=1即向CPU申请中断。 在CPU响应8255A中断请求后,在中断服务程序中执行MOVX指令,读取输入缓冲器的数据至单片机的累加器A中。 在RD信号的下降沿复位INTRB=0

16、,在RD信号的上升沿复位IBFB=0,至此完成一个数据从外设经过8255A到CPU的选通输入过程。,方式1B口输入功能,2019年10月18日星期五,39,3)工作方式1选通输出工作方式,方式1A口输出引脚,A口输出,8255A向CPU申请中断高电平有效,方式1A口输出,C口的PC6 PC7 PC3用作联络和控制信号。,2019年10月18日星期五,40,方式1B口输出,8255A内部中断允许高电平有效,方式1B口输出,C口的PC2 PC1 PC0用作联络和控制信号。,2019年10月18日星期五,41,方式1A口输出功能, 在WR信号有效时,在WR的上升沿使8255A的INTRA=0,OBF

17、A=0表明数据送到A口输出缓冲器中。CPU将数据写到8255A的A口中 8255A向外设发出OBFA=0信号,外设收到后,即8255A将A口中的数据输出到外设并向8255A发回ACKA=1,当INTEA=1 OBFA=1时,使INTRA=1向CPU申请中断写一个数据。,A口输出,2019年10月18日星期五,42,方式1B口输出功能, 在WR信号有效时,在WR的上升沿使8255A的INTRB=0,OBFB=0表明数据送到B口输出缓冲器中。CPU将数据写到8255A的B口中 8255A向外设发出OBFB=0信号,外设收到后,即8255A将B口中的数据输出到外设并向8255A发回ACKB=1,当I

18、NTEB=1 OBFB=1时,使INTRB=1向CPU申请中断写一个数据。,B口输出,2019年10月18日星期五,43,【例题6.4】参照下图,若打印数据已存入单片机片内RAM的30H为首地址的数据区,长度20H字节,试编制8255A工作方式1的打印驱动程序。(采用中断方式编程),MCS-51单片机,8255A, 硬件电路连接分析, 工作方式的设定及确定控制字, 8255A初始化, 编写源程序,2019年10月18日星期五,44, 工作方式的设定及确定控制字8255A的B口工作方式1输出中断方式,则工作方式控制字是84H;8255A的中断请求信号为INTRB连/INT1,则中断条件是先置PC

19、2=1即INTEB=1,因此C口置位/复位控制字是05H,工作方式控制字,C口置位/复位控制字, 8255A初始化 根据连接电路图知工作方式控制字和C口置位/复位控制字是同一地址即为7FFFH。由CPU通过数据总线缓冲器将控制字写到8255A的控制地址中。,2019年10月18日星期五,45, 编写源程序,ORG 0000HLJMP MAINORG 0013HLJMP INT1ORG 1000H MAIN: MOV R0,#30HMOV R7,#20HMOV DPTR,#7FFFHMOV A,#05HMOVX DPTR,AMOV A,#84HMOVX DPTR,AMOV DPTR,#7FFDH

20、MOV A,R0MOVX DPTR,AINC R0DEC R7SETB EX1SETB EASJMP $,ORG 2000HINT1:PUSH ACCPUSH PSWPUSH DPHPUSH DPLMOV A,R0MOV DPTR,#7FFDHMOVX DPTR,AINC R0DJNZ R7,BACKCLR EX1SETB 00HBACK: POP DPLPOP DPHPOP PSWPOP ACCRETI,2019年10月18日星期五,46,4)工作方式2-双向传送方式,仅适用于A口,A口可作双向传输,C口的高5位提供A口的联系信号。B口没有工作方式2。工作方式2A口引脚如下,2019年10月

21、18日星期五,47,8255A的输入功能, 8255A向外设发出IBFA=0信号,外设收到后复位STBA=0 并将数据传送到8255A的A口输入缓冲器,当A口输入缓冲器满置位IBFA=1,外设停止数据传送。 初始化C口控制字PC4=1,在INTE2=1和IBFA=1时,使得INTRA=1,8255A向单片机的CPU申请中断。 在CPU响应中断后,在中断服务程序中,读取A口输入缓冲器数据至单片机累加器A中,并复位IBFA=0。,2019年10月18日星期五,48,方式2A口输出功能, 在WR=0时并在其上升沿使8255A的OBFA=0,下降沿使8255AINTRA=0。即单片机将累加器A中的数据

22、写到8255A的输出缓冲器中。 外设向8255A返回一个ACKA=0信号并将输出缓冲器中的数据送到I/O线上的同时使OBFA=1。 初始化C口控制字PC6=1,在INTE1=1,OBFA=1时,使INTRA=1向CPU申请中断,在中断服务程序中将单片机累加器中的数据又一次写到8255A的输出缓冲器中。,2019年10月18日星期五,49,7.4 MCS-51单片机与键盘的接口,键盘是单片机应用系统中最常用的输入设备,操作人员一般都是通过键盘向单片机系统输入指令、地址和数据,是实现人机对话的工具。,7.4.1 键盘的工作原理,键盘是一组按键开关的集合,平时按键开关处于断开状态,当按下键时才闭合。

23、键盘的结构如右图。键盘分独立式键盘和矩阵式键盘两种。编码式键盘和非编码式键盘(单片机键盘),2019年10月18日星期五,50,MOV P1.0,#1H MOV C,P1.0 JNB P1.0,KEY,当按键开关S未按下时,S开关处于断开状态,查询P1.0的状态为高电平,当按键开关S按下时,S开关处于闭合状态,查询P1.0的状态为低电平。单片机通过读P1.0的状态可判断按钮S是否按下。若按下则P1.0的电平由1变为0;待松开后又恢复到1。,1.按键识别,2019年10月18日星期五,51,2.抖动及其消除,通常按键开关为机械式开关,由于机械触点的弹性作用,断开与闭合的瞬间都会伴随一串的抖动。按

24、键的抖动会引起一次按键被误读多次。按钮的去抖方法有硬件去抖和软件去抖。,硬件去抖是采用RS触发器实现;软件去抖执行一个延时的子程序后再次检测按键是否仍然闭合,若闭合则确定为有键按下。,2019年10月18日星期五,52,3.键位的编码,单片机应用系统中用到的按键都是通过I/O线来连接,按下一个键,通过接口电路得到该键位的编码。,(1)用连接按键的I/O线的组合编码,用4行、4列线构成的16个按键的键盘,可用一个8位的I/O线的二进制组合表示16个键的编码。这种编码简单,但不连续,处理起来不方便。编码如右图所示。,2019年10月18日星期五,53,(2)顺序排列编码,编码值=行首编码值X+列号

25、Y,如果一行有K个键,则行首编码值为n*K,n为行号,从0开始取,列号也从0开始取。按顺序排列编码如上图所示,2019年10月18日星期五,54,7.4.2 独立式键盘与单片机的接口,独立键盘是各个按键相互独立,每个按键各接一根I/O线,每个I/O口线上的按键都不相互影响。通过检测I/O口线的电平状态就能判断是哪个键被按下。从接线看有中断方式和查询方式的两种结构。,1.中断方式结构,当键盘中有任一键被按下,则向单片机请求中断,在中断服务程序中执行判键程序,判断是哪个键被按下,进而转去执行该键的功能程序。,2019年10月18日星期五,55,2.查询方式结构,查询方式是通过执行相应的查询程序来判

26、断有无键按下,是哪一个键被按下,从而转去执行相应该的功能程序。,KEY0: MOV A,#0FFHMOV P1,AMOV A,P1CPL AJZ KEY0,2019年10月18日星期五,56,【例题7.7】依据下列连接电路,采用中断方式编写键盘处理程序(用C语言实现)。每个键的功能程序未完成。,2019年10月18日星期五,57,#include #define KEY_PORT P1 /按键接在P1口 uchar key_Value; /存放键号 bit int0_flag; /中断标记 /*main函数*/ void main(void) initUart(); /初始化串行口int0_f

27、lag=0; /设置中断0标志TCON=0x55; /电平触发外部中断IE=0x81; /打开外部中断0doif(int0_flag) /如果有中断,2019年10月18日星期五,58, switch(key_Value) /根据中断源分支 case 1: printf(“key-press0 is pressedn“);break;case 2: printf(“key-press1 is pressedn“);break;case 4: printf(“key-press2 is pressedn“);break;case 8: printf(“key-press3 is pressedn

28、“);break;case 16: printf(“key-press4 is pressedn“);break;case 32: printf(“key-press5 is pressedn“);break;case 64: printf(“key-press6 is pressedn“);break;,2019年10月18日星期五,59,case 128: printf(“key-press7 is pressedn“);break;default:break;int0_flag=0; / 清中断标志 while(TRUN)void exint0(void) interrup 0 /外部中

29、断0服务程序/EA=0; /关总中断int0_flag=1;/设置中断标志key_Value=KEY_PORT/开总中断,2019年10月18日星期五,60,【例题7.8】依据下列连接电路,采用查询方式编写键盘处理程序。每个键的功能程序未完成。,START:MOV A,#0FFHMOV P1,AMOV A,P1CPL AJZ STARTJB ACC.0,K0JB ACC.1,K1JB ACC.2,K2JB ACC.3,K3JB ACC.4,K4JB ACC.5,K5JB ACC.6,K6JB ACC.7,K7SJMP START,K0:SJMP KEY0 K1:SJMP KEY1 : K6:S

30、JMP KEY7 K7:SJMP KEY7JMP START KEY0:SJMP START KEY1:SJMP START : KEY6:SJMP START KEY7:SJMP START,2019年10月18日星期五,61,7.4.3 矩阵式键盘与单片机的接口,矩阵式键盘:将单片机的I/O口线分为行线和列线,每一行线与列线的交叉处互不相通,而是通过一个按键来连通,当一个键闭合时,形成回路。,矩阵键盘的连接方法有: 直接用单片机的I/O接口线。 用扩展的并行I/O接口连接。如8255A芯片。 用可编程的键盘、显示接口芯片连接。如8279芯片。,2019年10月18日星期五,62,通过825

31、5A芯片扩展的并行I/O接口连接的48的矩阵键盘,按键设置在行、列的交叉点上,行线通过上拉电阻接+5V,没有键按下,被钳位在高电平状态。,2019年10月18日星期五,63,1.矩阵式键盘的工作过程, 检查键盘是否有键按下的方法:将列线PA送入全扫描值即输出00H(置列线低电平),再将行线PC电平状态读入累加器A并取反,判断A的值,若A的值不为0,则有键按下。, 识别哪一个键按下的方法:将列线逐列置成低电平,检查行线的状态,称列扫描。具体过程:从PA0开始,依次输出0,置对应的列线为低电平,然后从PC口读入行线状态,如全为1,则按下键不在此列;如果不全为1,则按下键必在此列,而且是该列与0电平

32、行线相交叉的交点上的哪个键。求编码,在逐列扫描时,可用计数器记录下当前扫描的列号,检测到第几行有键按下,就用该行的首行键码加列号等到当前按键的编码。,2019年10月18日星期五,64,2.矩阵式键盘的工作方式,主程序执行一次,对键盘处理程序检测一次。有键按下,通过键盘处理程序来识别按键得按键编码并编码值进行相应的处理。,利用单片机的定时器产生定时中断,当定时时间到时,CPU执行定时器中断服务程序,对键盘进行扫描。有键按下,则识别按键编码并执行相应程序。,增加一根中断请求信号,有键按下向CPU申请中断请求,CPU响应,则执行键盘中断处理服务程序。,2019年10月18日星期五,65,【例题7.

33、9】根据下面硬件线路图采用查询方式编写键盘扫描程序。,2019年10月18日星期五,66,8255A的PA口工作方式0输出;8255A的PC口工作方式0输入;单片机从A口输出从C口输入。依据电路计算A口、B口 C口和控制口地址分别是:7F00H、7F01H、7F02H、7F03H。,8255A工作方式及状态,键盘扫描,单片机先使8255A的A口的各位PA0PA7均为低电平,再读C口PC0PC3,若C口的各位不全为高电平,则先延时10ms,然后再读C口,若C口各位仍不全为高电平,说明确实有键按下。,2019年10月18日星期五,67, 确定按键编码,先置PA0=0,其余的均为1,再读C口,由C口

34、低电平位便可确定按下键位置。如PA0=0,PC0=0,则0号键按下,扫描结束。按键编码=行首键号+列号, 键盘扫描的流程图,2019年10月18日星期五,68, 汇编语言程序,KEY1:ACALL KS1 ;调用判断有无键按下子程序JNZ LK1 ;有键按下时,(A)0转消抖延时 KEY2:ACALL TM6msAJMP KEY1 ;无键按下返回 LK1: ACALL TM12ms ;调用12ms的延时ACALL KS1 ;查有无键按下,若有键按下JNZ LK2 ;键(A)0,逐行扫描AJMP KEY2 ;不是真有键按下,返回 LK2: MOV R2,#0FEH ;初始列扫描字(0列)送入R2

35、MOV R4,#00H ;初始列(0列)号送入R4 LK4: MOV DPTR,#7F00H ;DPTR指向8255A口MOV A,R2 ;列扫描字送至8255PA口MOVX DPTR,A INC DPTR,2019年10月18日星期五,69,INC DPTR ;DPTR指向8255PC口MOVX A,DPTR ;从8255PC口读入行状态JB ACC.0,LONE ;查第0行无键按下,转查第1行MOV A,#00H ;第0行有键按下,行首键码#00H送AAJMP LKP ;转求键码 LONE:JB ACC.1,LTOW ;查第1行无键按下,转查第2行MOV A,#08H ;第1行有键按下,行

36、首键码08H送AAJMP LKP ;转求键码 LTOW:JB ACC.2,LTHR ;查第2行无键按下,转查第3行MOV A,#10H ;第2行有键按下,行首键码10H送AAJMP LKP ;转求键码 LTHR:JB ACC.3,NEXT ;查第3行无键按下,转查下1列MOV A,#18H ;第3行有键按下,行首键码18H送A LKP:ADD A,R4 ;求键码,键码=行首键码+列号PUSH ACC ;键码进栈保护,2019年10月18日星期五,70,LK3:ACALL KS1 ;等待键释放JNZ LK3 ;键未释放,等待POP ACC ;键释放,键码送ARET ;键扫描结束,出口状态A=键码

37、 NEXT:INC R4 ;准备扫描下1列,列号加1MOV A,R2 ;取列扫描字送累加器AJNB ACC.7,KEND ;判断8列扫描否,扫描完返回RL A ;扫描字左移1位,变为下1列扫描字MOV R2,A ;扫描字送R2中保护AJMP LK4 ;转扫下1列 KEND:AJMP KEY1 KS1: MOV DPTR,#7F00H ;DPTR指向8255A口MOV A,#00H ;全扫描字送AMOVX DPTR,A ;全扫描字送往8255A口INC DPTR ;DPTR指向C口,2019年10月18日星期五,71,INC DPTR MOVX A,DPTR ;读PC行状态CPL A ;变正逻辑

38、,以高电平表示有键按下ANL A,#0FH ; 屏蔽高4位,保留低4位行线值RET ;出口状态:A0时有键按下 TM12ms:MOV R7,#18H ;延时12ms子程序 TM: MOV R6,0FFH TM6: DJNZ R6,TM6DJNZ R7,TMRET TM6ms: MOV R7,#0CH;延时6ms子程序 TM2: MOV R6,#0FFH TM62: DJNZ R6,TM62DJNZ R7,TM2RET,2019年10月18日星期五,72,SCAN: LCALL TESTKEYJNZ K1LCALL K11 K1: LCALL DEL12MSLCALL TESTKEYJNZ K2

39、LKMP K11 K2: MOV R2,#0FEHMOV R3,#00H K3: MOV DPTR,#0DF03HMOV A,R2MOVX DPTR,AMOV DPTR,#0DF02HMOVX A,DPTRANL A,#1FHJNZ KEYLJMP K10 KEY: JB ACC.0,K4MOV A,#00HLJMP K8,K4: JB ACC.1, K5MOV A,#06HLJMP K8 K5: JB ACC.2, K6MOV A,#0C0HLJMP K8 K6: JB ACC.3, K7MOV A,#12HLJMP K8 K7: JB ACC.4 ,K10MOV A,#18H K8: AD

40、D A, R3PUSH ACC K9: LCALL DEL12MSLCALL TESTKEYJNZ K9POP ACCRET K10: INC R3MOV A,R2JNB ACC.5 ,K12,K11: MOV A,#0FFHRET K12: RL AMOV R2,ALJMP K3 TESTKEY:MOV A,0FFHMOV DPTR,#0DF03HMOVX DPTR,AMOV DPTR,#0DF02HMOVX A,DPTRCPL AANL A,#1FHRET DEL12MS:MOV R7,#18H LP1: MOV R6,#0FFH LP2: DJNZ R6,LP2DJNZ R7,LP1RE

41、T,2019年10月18日星期五,73,7.5 MCS-51单片机与LED显示器接口,液晶显示器 发光二极管LED显示器 CRT显示器,在单片机系统中,常用LED发光二极管显示器和LCD液晶显示器。用它们来观察和监视单片机的运行情况及显示运行结果和状态信息。,LED和LCD的特点:低功耗、低成本、安装简单及寿命长。,2019年10月18日星期五,74,7.5.1 LED显示器的结构与原理,LED数码显示器是由LED发光二极管组合显示字段的显示器件,也称LED数码管。其结构图如下:,a-g管脚输入7位显示码,可显示不同的数字或字符,dp为显示小数点位。显示段与段码位的关系如下:,2019年10月

42、18日星期五,75,LED显示器根据内部结构不同分为:共阴结构和共阳结构,在共阴极数码管中,导通点亮的二极管用1表示,其余用0表示;在共阳数码管中,导通点亮的二极管用0表示,其余用1表示。,2019年10月18日星期五,76,常见的数字和字符的共阴极和共阳极字段码,2019年10月18日星期五,77,7.5.2 LED数码管显示器的译码方式,译码方式是指由显示字符转换得到对应的字段码的方式。LED数码管显示器常有硬件译码和软件译码两种。,1.硬件译码,硬件译码是指用专门的硬件电路来实现显示字符到字段码的转换。如Motorola公司生产的MC14495芯片,该芯片是共阴极一位十六进制数字段码转换

43、芯片,能输出用4位二进制数表示的一位十六进制数的7位字段码,不带小数点。,2.软件译码,软件译码是指编写软件译码程序,通过译码程序来得到要显示的字符的字段码。译码程序常为查表程序。,2019年10月18日星期五,78,3.MC14495字段码转换芯片的结构及引脚, 4位锁存器,用于输入4位二进制码。A、B、C、D为4位输入端,/LE=0时输入数据,/LE=1时数据锁存。, ag为7位字段码输出端。 h+i引脚为大于等于10的指示端,大于时为高电平,否则为低电平。 /VCR为输入为15指示端当输入数据大于15时/VCR为低电平,否则为高电平。,2019年10月18日星期五,79,7.5.3 LE

44、D数码管的显示方式,LED静态显示是将公共端直接接地(共阴极)或接电源(共阳极),各段选线分别与 I/O接口线相连要显示字符,直接在I/O线发送相应的字段码。,LED动态显示是将所有的数码管理的段选线并接在一起,用一个I/O接口控制,公共端不是直接接地或电源,而是通过相应的I/O接口控制。,2019年10月18日星期五,80,1.LED静态显示,要显示的字段由单片机的P1口送出,数码管是共阳极的。若要求循环点这09这10个字符,如何编写程序?,2019年10月18日星期五,81,ORG 0000HLJMP MAINORG 001BHLJMP DAYT1ORG 1000HMOV R0,#14H

45、MAIN: MOV TMOD,#10HMOV TH1,#3CHMOV TL1,#0B0HSETB TR1SETB EASETB ET1DJNZ R0,MAINSJMP $,ORG 1200H DAYT1:MOV TH1,#3CHMOV TL1,#0B0HMOV A,#00HLAD: MOV DPTR,#TABLEMOVC A,A+DPTRMOV P1,AINC ASJMP LADRETITABLE :DB,3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77HEND,程序代码(用中断方式),2019年10月18日星期五,82,2.LED动态显示,4个数码管的段选

46、线并接在一起通过I/O控制;4个数码管的公共端不是接在起也是通过I/O来进行控制。,2019年10月18日星期五,83,7.5.4 LED显示器与单片机的接口,1.软件译码动态显示,依据下列设计要点完成一个8位软件译码动态显示的接口电路设计。, 用8255A扩展并行I/O接口数码管,数码管为共阴极 8位数码管的段选线并联与8255A的A口通过74LS373相连 8位数码管的公共端通过74LS373分别与8255A的B口相连 8255A的B口输出位选码选择要显示的数码管。 8255A的A口输出字段码使数码管显示相应字符 8255A的A口、B口都工作于方式0 A、B、C及控制口地址:7F00H、7F01H、7F02H和7F03H,2019年10月18日星期五,84,设计电路如下:,2019年10月18日星期五,85,程序代码:,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报