收藏 分享(赏)

第4章 单片机的扩展与接口技术.ppt

上传人:hwpkd79526 文档编号:10068999 上传时间:2019-10-04 格式:PPT 页数:81 大小:2.76MB
下载 相关 举报
第4章 单片机的扩展与接口技术.ppt_第1页
第1页 / 共81页
第4章 单片机的扩展与接口技术.ppt_第2页
第2页 / 共81页
第4章 单片机的扩展与接口技术.ppt_第3页
第3页 / 共81页
第4章 单片机的扩展与接口技术.ppt_第4页
第4页 / 共81页
第4章 单片机的扩展与接口技术.ppt_第5页
第5页 / 共81页
点击查看更多>>
资源描述

1、第七章 8051单片机系统扩展与接口技术,第一节 8051 单片机系统扩展概述,第二节 单片机外部存储器扩展,第三节 单片机输入输出(I/O)口扩展及应用,第四节 LED显示器接口电路及显示程序,第五节 单片机键盘接口技术,第六节 单片机与数模(DA)及模数(AD)转换,一半导体存储器的分类,第一节 8051 单片机系统扩展概述,一、总线,1、地址总线(Address Bus,简写为AB),2、数据总线(Data Bus,简写为DB),3、控制总线(Control Bus,简写为CB),总线,3、控制总线(Control Bus,简写为CB) 控制总线实际上就是一组控制信号线,包括单片机发出的

2、,以及从其它部件送给单片机的各种控制或联络信号。 对于一条控制信号线来说,其传送方向是单向的,但是由不同方向的控制信号线组合的控制总线则表示为双向的。 总线结构形式大大减少了单片机系统中连接线的数目,提高了系统的可靠性,增加了系统的灵活性。此外,总线结构也使扩展易于实现,各功能部件只要符合总线规范,就可以很方便地接入系统,实现单片机扩展。,1、地址总线(Address Bus,简写为AB) 地址总线可传送单片机送出的地址信号,用于访问外部存储器单元或I/O端口。 A 地址总线是单向的,地址信号只是由单片机向外发出。 B 地址总线的数目决定了可直接访问的存储器单元的数目。例如N位地址,可以产生2

3、N个连续地址编码,因此可访问2N个存储单元,即通常所说的寻址范围为 2N个地址单元。MCS51单片机有十六位地址线,因此存储器展范围可达216 = 64KB地址单元。 C 挂在总线上的器件,只有地址被选中的单元才能与CPU交换数据,其余的都暂时不能操作,否则会引起数据冲突。,2、数据总线(Data Bus,简写为DB) 数据总线用于在单片机与存储器之间或单片机与I/O端口之间传送数据。 A 单片机系统数据总线的位数与单片机处理数据的字长一致。例如MCS51单片机是8位字长,所以数据总线的位数也是8位。 B 数据总线是双向的,即可以进行两个方向的数据传送。,二、单片机总线构成 MCS51单片机的

4、P0口,是一个地址/数据分时复用口。即在某些时钟周期时, P0口传送低八位地址,这时ALE为高电平有效 ; 而在其它时钟周期时传送数据, 这时ALE为无效的低电平。利用P0口输出低八位地址和ALE同时有效的条件,即可用锁存器(74LS373)把低八位地址锁存下来。所以系统的低八位地址是从锁存器输出端送出的. 而P0口本身则又可直接传送数据。高八位地址总线则是直接由P2口组成的。CPU的每一条控制信号引脚的组合,即构成了控制总线。,8位地址锁存器 74LS373、8282,例:程序存储器的扩展,第二节 单片机外部存储器扩展,7-2-1 随机读写存储器RAM,7-2-2 只读存储器ROM,7-2-

5、3 存储器的连接,DRAM动态RAM:使用电容作存储元件,需要刷新电路。集成度高,反应快,功耗低,但需要刷新电路。,7-2-1 随机读写存储器(RAM),存储器中的信息可读可写,但失电后会丢失信息。 1.双极型:由TTL电路组成基本存储单元,存取速度快。 ( SRAM:静态RAM。存储单元使用双稳态触发器,可带电信息可长期保存。,7-2-1-1 常见数据存储器静态RAM Intel 6116、6264,INTEL公司62系列MOS型静态随机存储器产品有:6264,62128,62256,62512等。,6264是容量为8K8位的静态随机存储器芯片, 6116的容量仅2K8位,注意存储容量的计算

6、,7-2-2 只读存储器(ROM),工作时,ROM中的信息只能读出,要用特殊方式写入(固化信息),失电后可保持信息不丢失。 1.掩膜ROM:不可改写ROM 由生产芯片的厂家固化信息。在最后一道工序用掩膜工艺写入信息,用户只可读。 2.PROM:可编程ROM 用户可进行一次编程。存储单元电路由熔丝相连,当加入写脉冲,某些存储单元熔丝熔断,信息永久写入,不可再次改写。,7-2-2 只读存储器(ROM),3.EPROM:可擦除PROM 用户可以多次编程。编程加写脉冲后,某些存储单元的PN结表面形成浮动栅,阻挡通路,实现信息写入。用紫外线照射可驱散浮动栅,原有信息全部擦除,便可再次改写。 4.EEPR

7、OM:可电擦除PROM 既可全片擦除也可字节擦除,可在线擦除信息,又能失电保存信息,具备RAM、ROM的优点。但写入时间较长。,7-2-2-1 常见程序存储器- EPROM,INTEL公司只读存储器芯片(EPROM)的产品有:2716,2732,2764,27128,27256,27512等。,2764具有8K(10248)字节容量, 共需要有13根地址线(213=8192) A12A0进行寻址,加上8条数据线D7D0、一条片选信号线CE、一条数据输出选通线OE、一条编程电源线Vpp及编程脉冲输入线PGM, 另外有一条正电源线UCC及接地线GND,其第26号引脚为NC,使用时应接高电平。在非编

8、程状态时UPP及PGM端应接高电平。其中片选信号为保证多片存贮系统中地址的正确选择,数据输出选通线保证时序的配合,编程电源线及编程脉冲输入线可实现程序的电编程。,注意容量计算,系列数字27后面的数据除以8即为该芯片的K数。如:27256为32K容量。,7-2-2-2常见程序存储器- EEPROM 2816、2817、2864,7-2-3-1 存储器与单片机的连接,存储器与微型机三总线的一般连接方法和存储器读写时序。 1.数据总线与地址总线为两组独立总线。,7-2-3 存储器的连接,通常把扩展的ROM称之为外部ROM,把扩展RAM称之为外部RAM。,7-2-3-1 存储器与单片机的连接,2.微型

9、机复用总线结构 数据与地址分时共用一组总线。,8位地址锁存器 74LS373、8282,MCS51单片机的P0口,是一个地址/数据分时复用口。即在某些时钟周期时, P0口传送低八位地址,这时ALE为高电平有效 ; 而在其它时钟周期时传送数据, 这时ALE为无效的低电平。利用P0口输出低八位地址和ALE同时有效的条件,即可用锁存器(74LS373)把低八位地址锁存下来。所以系统的低八位地址是从锁存器输出端送出的. 而P0口本身则又可直接传送数据。高八位地址总线则是直接由P2口组成的。CPU的每一条控制信号引脚的组合,即构成了控制总线。,MCS-51用于扩展存储器的外部总线信号: P0.00.7:

10、 8位数据和低8位地址信号,复用总线AD07。 P2.02.7: 高8位地址信号AB815 ALE: 地址锁存允许控制信号 PSEN: 片外程序存储器读控制信号 RD: 片外数据存储器读控制信号 WR: 片外数据存储器写控制信号 EA: 程序存储器选择,7-2-3-2 存储器与单片机的连接实例,7-2-3-2 存储器与单片机的连接实例,一.扩展程序存储器电路:,8031扩展 2KB EPROM Intel 2716,常用EPROM芯片:Intel 2716(2K8位)、2732(4KB)、2764(8KB)、27128(16KB)、27256(32KB)、27512(64KB)。,8051扩展

11、程序存储器2764,二. 扩展数据存储器电路:,常用EPROM芯片: Intel 6116(2KB)、6264(8KB)、62256(32KB)。,8031扩展 2KB RAM Intel 6116,8051扩展数据存储器器6264,注意关于地址重叠,四.单片机扩展存储器实用电路,单片机连接 8KB EPROM 2764 和 8KB RAM 6264 各一片,7-2-3-3 存储器芯片的扩充,用多片存储器芯片组成微型计算机系统所要求的存储器系统。 要求扩充后的存储器系统引出线符合微型计算机机的总线结构要求。,一.扩充存储器位数 例用2K8位存储器芯片组成2K16位存储器系统。,例三片8KB的存

12、储器芯片组成 24KB 容量的存储器。,确定各存储器芯片的地址空间:,设CE1、CE2、CE3分别连接微型机的高位地址总线AB13、AB14、AB15,ABi 15141312 111098 7 6 5 4 3 2 1 015141312 111098 7 6 5 4 3 2 1 0 :1100 0000 0000 00001101 1111 1111 1111=C000HDFFFH :1010 0000 0000 00001011 1111 1111 1111=A000HBFFFH :0110 0000 0000 00000111 1111 1111 1111=6000H7FFFH,掌握要点

13、,什么情况下需要扩展数据存储器和程序存储器? 锁存器的作用,何时需要,如何应用连线? 数据存储器容量计算及其与地址线的关系? 程序存储器容量计算及其与地址线的关系? EA脚的作用? 程序存储器扩展时的连线,特别是控制线? 数据存储器扩展时的连线,特别是控制线? 程序存储器地址重叠问题,第三节 单片机输入输出(I/O)口扩展及应用,概述 一、I/O接口电路 把CPU与外设连接起来的电路。 二、 CPU与外设之间通过I/O口交换的信息 1、数据信息 2、控制信息 3、状态信息,三、I/O接口的作用,消除CPU与外设之间的差异。 1、速度协调。 (1)数据锁存。(2)三态缓冲。 2、数据格式转换。

14、3、电平转换。,四、数据交换的方式,1、无条件传送方式 定时已知的简单外设。 2、条件传送方式(查询方式) 定时未知的中低外设。 3、中断方式 4、DMA方式,五、通信方式,主机与外设之间信息交换称为通信。 1、并行通信 数据的各位同时传送,并行接口实现。 2、串行通信 数据的各位分时一位一位顺序传送,串行接口实现。,六、I/O接口的编址方式,1、统一编址方式外部I/O接口与外部RAM统一编址,共用一个地址空间。用访问外部RAM的指令MOVX 访问外部I/O口。 2、独立编址方式外部I/O接口有独立的地址空间,有专用的I/O接口输入/输出指令。,第三节 单片机输入输出(I/O)口扩展及应用,7

15、-3-1 单片机简单I/O口应用及扩展,7-3-2 8155作单片机的I/O扩展,一、8155引脚,RESET: 复位信号线,高电平有效。,CE:片选端,低电平有效。该端 加一低电平时,芯片被选中,可以与单 片机交换信息。 AD7AD0:三态地址/数据总 线,分时传送8位地址信号和数据号。 ALE:地址锁存器启用信号线,高电平有效,其有效信号可将AD7AD0的地址信号、以及片选信CE,IO/M信号锁存起来。,IO/M:I/O口和RAM选择信号线,高电平选择I/O口,低电平选择RAM。,RD:读信号线,低电平有效,当片选信号与RD有效时,此时如果IO/M为低电平,则RAM的内容读至AD7AD0;

16、如果IO/M为高电平,则选中的I/O口的内容读到AD7AD0。,TIN:定时/计数器输入信号线,定时/计数器的计数脉冲由此输入。 TOUT:定时/计数器输出信号线,输出信号为方波还是脉冲则由定时/计数器的工作方式而定。 VCC:电源线,接5V直流电源。 VSS:接地线。,WR:写信号线,低电平有效,当片选信号和WR信号有效时,AD7AD0上的数据将根据IO/M的极性写入RAM或I/O口中,PB7PB0:端口B的输入输出信号线,通用的8位I/O口,输入/输出方向通过命令/状态寄存器的编程来选择。 PC5PC0:端口C的输入/输出线,6位可编程I/O口,也可用作A和B的控制信号线,通过对命令/状态

17、寄存器编程来选择。,PA7PA0:输入/输出口A的信号线,通用8位I/O口,输入/输出的方向通过对命令/状态寄存器的编程来选择。,二、结构,三、8155的RAM和I/O口寻址,8155在8051系统中的RAM和I/O口是按外部存储器统一编址的,为16位地址。其高8位提供 和 输入信号。低8位地址由8051的P0口送到8155芯片地址线AD0AD7确定。当 为0时,单片机对8155RAM读/写,RAM低8位编址为00HFFH;当 为1时,单片机对I/O口进行读写,8155内部I/O及定时器的低8位编址如表,四、8155寄存器,8155内部共有7个寄存器,其中命令寄存器(只写)和状态寄存器(只读)

18、共用一个地址X X X X X 0 0 0B,故称命令/状态寄存器,由读写指令来区别,定时器寄存器的高8位和低8位各有其地址,X X X X X 1 0 1B和X X X X X 1 0 0B,1 命令寄存器(COMMAND,只写)可以把一个命令写入X X X X X 0 0 0B地址中改变命令寄存器的内容实现编程,即控制I/O接口的工作方式和数据流向。工作方式控制字的格式及功能如图所示,2 状态寄存器 (STATUS,只读) 状态寄存器和命令寄存器的地址相同,当读地址XXXXX000B的内容时,则可查询I/O口和定时/计数器的状态。状态寄存器中各位的意义如表所示:,6 定时/计数器8155片

19、内的定时/计数器是一个14位的减法计数器,另外两位是用于确定输出方式。因此它是两个8位寄存器。 低8位地址为XXXXX100B和高8位地址为XXXXX101B。计数初值由程序预置,每次预置一个字节,该寄存器的013位规定了下一次计数的长度,14、15位规定了定时/计数器的输出方式,该寄存器的定义如表所示。,两个寄存器有双重作用,在写操作时,可送入定时常数和输出方式的指令;在读操作时,可把定时/计数器的当前值和方式位读出。上述读写均要分两次传送进行。,对定时器编程首先要计数常数和定时器的方式字送入地址口04H和05H。,定时常数范围:2H3FFFH。定时/计数器的启动和停止命令送命令寄存器(00

20、H)的最高位。,定时/计数器是递减计数器,定时/计数器对TIN端的时钟脉冲进行计数,并在达到最后计数值(TC)终值时给出一个方波或脉冲。高字节寄存器中的M1和M2是输出波形控制位。波形如图所示。,五、8155的使用,1、作片外256字节RAM,2、作扩展I/O口使用,3、作定时器扩展用,IO/M脚接低电平,8155作片外RAM用,地址高8位接片选端CE和IO/M端,低8位为00HFFH,与其它片外数据存储器统一编址。,IO/M脚接高电平,8155作扩展I/O口用,此时PA、PB、PC口的口地址低等位分别为01H、02H、03H(设无关位为0)。I/O方式的选择是对命令寄存器(命令口)设定命令控

21、制字。,定时器的方式选择 定时器的编程,六、MCS51芯片和 8155的连接和编程,1、连接方法,2、8155软件,设下例中按上图连接,课本例子,现用8155作为外部256个RAM扩展及六位LED显示器接口电路,要求外部RAM地址范围是0200H02FFH;A口输出,作为LED显示器八位段控输出口,地址是0301H;C口输出,作为六位LED的位控输出口,地址是0303H,试设计硬件电路并写出初始化程序。 解:由题意可得硬件电路如719所示:,由图可得:P2.1=1,CE =0时芯片选中;P2.0= 0,选中RAM单元; P2.0= 1,选中I/O口。显然地址信号在0200H02FFH范围内可选

22、中8155中256个RAM单元。(P2.1 P2.0=10,A7A0从0000000011111111B变化),8155中六个I/O地址如下:,又根据题意可得8155控制字如下:,初始化程序如下:MOV DPTR, #0300H ;指向命令寄存器地址。MOV A, #05H ;控制字送A。MOVX DPTR,A ;控制字送命令寄存器。,命令状态寄存器地址: 0300H (P2.1,P2.0=11,A2 A1 A0=000)口A地址: 0301H (P2.1,P2.0=11,A2 A1 A0=001)口C地址: 0303H (P2.1,P2.0=11,A2 A1 A0=011),第四节 LED显

23、示器接口电路及显示程序,一LED显示器工作原理,LED显示器用于显示工业控制参数、过程状态。 1. LED数码管 共阴极LED和共阳极LED 当LED字段引线与数据线连接,每个显示字形对应一个字形码。,D7 D6 D5 D4 D3 D2 D1 D0 h g f e d c b a,二、LED显示器与单片机的接口电路,显示多位数据的两种电路: 1静态显示,2动态显示,多位LED共用一个8位字段口,各位LED公共端用字位口控制,扫描输出显示不同字形。,每个LED需要一个8位并行口,例:8155接6位LED动态显示,三、显示程序任务:,1.设置显示缓冲区,存放待显示数据和字符(位置码)。 2.显示译

24、码:程序存储器中建立字形码常数表,查表得出对应数据和字符的字形码。 3.输出显示:输出字形码到显示端口。,1、显示缓冲区与多位LED对应关系:,例: MOV DPTR,#WTAB;指向字形码表首地址MOV A,R0 ;取显示缓冲区中数据MOVC A,A+DPTR;查表显示译码MOV P1,A ;输出显示 WTAB: DB 3FH,06H,5BH ;字形码表,2、译码,3、显示程序:,DIS: MOV R0,#7AH ;指向显示缓冲区起始单元 MOV R3,#01H ;字位码初值R3MOV A,R3 ;取字位码 DLP: MOV DPTR,#PAAR;指向字位口 (PA口) MOVX DPTR,

25、A ;输出字位码,显示其中1位 MOV A,R0 ;取一个显示数据ADD A,#0CH ;查表偏移量MOVC A,A+PC ;取出字形码INC DPTR ;指向字段口(PB口)MOVX DPTR,A ;输出字形码ACALL DLY1MS ;延时1msINC R0 ;指向显缓区下一单元MOV A,R3 ;修改字位码RL A ;显示下一位MOV R3,AJNB ACC.6,DLP ;未显示到最右边LED,继续显示 RET ;全部扫描一遍,结束 DTAB:DB 0C0H,0F9H,0A4H ;字形表,共阳极LEDDB 0B0H,99H, DLY1MS: ;延时1ms子程序,课本例子,1. 建立显示缓

26、冲区通常在内部RAM中开辟显示缓冲区,显缓区单元个数与LED位数相同。例如对六位LED显示器,可设显示缓冲区单元为79H7EH,对应关系如下:,显示缓冲区中可按显示次序放入所显示字符的编码,或直接放入所显示的字符,然后再通过查字形代码表找出相应字符编码作为段控码送LED显示器。,2编写显示程序 现用六位LED显示”008031”六个字符,设A口地址为0301H,C口地址为0303H,用查表方式来求得相应编码并显示。可事先在显示缓冲区中依次放入待显示字符如下:,例:8155接6位LED动态显示,显示参考程序如下:(考虑反相驱动器反相作用)DIS:MOV R1, #79H ;指向显缓区首址。MOV

27、 R2, #00000001B ;从右面第一位开始显示。LD0:MOV A, #00HMOV DPTR, #0303H ;送字形前先关显示。MOVX DPTR,A MOV A, R1 ;取显示字符。MOV DPTR, TABLE ;指向字符代码表首址。MOVC A, A+DPTR ;取字符相应编码。MOV DPTR, #0301H ;指向段控口。MOVX DPTR, A ;字符编码送A口(段控口)。MOV A, R2 ;位控码送A。MOV DPTR, #0303H ;指向位控口。MOVX DPTR,A ;位控码送C口(位控口)。 ACALL DELAY ;延时。INC R1 ;指向下一显缓单元

28、。MOV A, R2 ;取当前位控码。JB ACC.5, LD1, ;是否扫描到最左边,是返回。RL A ;否,左移一位。MOV R2, A ;保存位控码。AJMP LD0 ;继续扫描显示。LD1:RET ;返回。ORG 3000H ;依次建立字符代码表。TABLE:DB 0C0H ;0DB 0F9H ;1DB 0A4H ;2DB 0B0H ;3DB 99H ;4DB 92H ;5. . . . .,几点说明:1单片机定期调用上述显示子程序,使字符显示稳定。2由于考虑反相驱动器的反相因素,所以用共阳极LED字符代码表。同时设位控端为”1”时对应LED点亮。3如不用查表方式求得字符编码,也可直接

29、向显示缓冲区中写入待显示字符编码,再将上述程序稍加修改后即可。,第五节 键盘与单片机接口,1.键输入 检查键盘是否有键被按下,消除按键抖动。确定被按键的键号,获取键号。 硬件电路消除抖动或软件消除抖动。,键盘处理程序任务,2.键译码 键号为键盘位置码,根据键号查表得出被按键的键值。键值:数字键09、字符键0AH0FH、功能键10H 。,3.键处理 根据键值转移到不同程序段。 若键值属于数字、字符键,则调用显示数字和字符的子程序。 若键值属于功能键,则进行多分支转移,执行各个功能程序段。,7-5-1 独立式键盘电路,7-5-2 矩阵式键盘,1.扫描法 列线输出,行线输入。 列线逐行输出0,某行有

30、按键,行线输入有0,若无按键,行线输入全部为1。 2.反转法 行列线交换输入、输出,两步获取按键键号。,每个按键单独占有一根I/O接口引线。,按键处理程序:,课本举例,三、独立式按键 独立式按键是指直接用I0口线构成的单个按键电路。每个独立式按键单独占有一根IO口线,每根IO口线上的按键的工作状态不会影响其它10口线的工作状态。图723为一种独立式四按键电路,键值由软件用中断或查询方式获得。,1、K0 K3四个按键在沒有按下时,P1.0 P1.3均处于高电平状态;只要有键按下,则相应的I/O口线就变成低电平;一个按键与一根I/O口线状态相对应。,3、显然,在中断服务程序中,应设计键盘去抖动延时

31、程序和读键值程序。 4、等待键释放以后,再退出中断服务程序,转向各键定义的各功能程序。这样可以避免发生一键按下、多次处理的現象。,2在图中,为了使CPU能及时处理键盘功能,四根键盘状态输出线被送到四与门输入端。这样,只要有任一键按下,该四与门输出端便由高电平变成低电平,再通过 INT0向CPU发出中断请求。,ORG 0000HAJMP MAIN ;转向主程序。ORG 0003H AJMP JSB ;设置键识别中断服务程序入口。ORG 0030H MAIN: MOV SP, #30H ;设置堆栈。SETB EA ;开中断。,SETB EX0 ;允许INT0中断。MOV P1, #0FFH ;设P

32、1口为输入方式。 HERE: SJMP HERE ;等待键闭合。键识别中断服务程序:ORG 0120H JSB:PUSH ACC ;保护现场。CLR EA ;暂时关中断。MOV A, P1 ;取P1口当前状态。ANL A, #0FH ;屏蔽高4位。 CJNE A, #0FH, KEY ;有键按下,转键处理KEY。 SETB EA ;开中断。POP ACC ;现场恢复。RETI ;返回。 KEY:MOV B, A ;保存键闭合信息到B。LCALL DELAY10 ;延时10ms,消去键闭合抖动。 LOOP:MOV A, P1 ;取P1口状态。ANL A, #0FH ;屏蔽高4位。CJNE A,

33、#0FH, LOOP ;等待键释放。LCALL DELAY10 ;延迟10ms,消去键释放抖动。MOV A, B ;取键闭合信息。JNB ACC.0, KEY0 ;若K0按下,转键处理程序KEY0。JNB ACC.1, KEY1 ;若K1按下,转键处理程序KEY1。JNB ACC.2, KEY2 ;若K2按下,转键处理程序KEY2。AJMP KEY3 ;转键处理程序KEY3。,四、行列式键盘,行列式键盘必须由软件来判断按下键盘的键值。其判别方法是这样的: 如图724所示,首先由CPU从PA口输出一个全为 0的数据,也就是说,这时PA.7PA.0全部为低电平,这时如果没有键按下,则PB.0PB.

34、3全部处于高电平。所以当CPU去读8155 PB口时,PB.3PB.0全为 1 表明这时无键按下。,从硬件图中我们可以看到,只要是第4列键按下,CPU读8155 PB口时 PB.3始终为0。其PB口的读得值为XXXX0111B,这就是第4列键按下的特征。如果此时读得PB口值为XXXX1101 B,显然可以断定是第2列键被按下。,現在我们假设第5行第4列键是按下的(即图中箭头指着的那个键)。由于该键被按下,使第4根列线与第5根行线导通,原先处于高电平的第4根列线被第5根行线箝位到低电平。所以这时CPU读8155 PB口时 PB.3 = 0;,列值,这种操作方式,就好像PA口为0的这根线,从最低位

35、开始逐位移动(称作扫描),直到PA.7为0为止。很明显,对于我们上例中的第5行第4列键按下,必然有: 在PA口输出为 11101111 B时PB.0PB.3不全为1,而是XXXX0111B。,读取被按键盘的行值,可用扫描方法。即首先使8155PA口输出仅PA.0为0、其余位都是1然后去读PB口的值,如读得PB.3PB.0为全1;则接着使PA.1为0其余位都是1,再读PB口,若仍为全1;再继续使PA.2为0,其余位为1,再读PB口 直到读出PB.0PB.3不全为1或0位移到PA.7为0为止。,行值,键值 此时行输出数据和列输入数据中0位置,即表示了该键的键值。,综上所述,行-列式键盘的扫描键值可

36、归结为二个步骤: 判断有无键按下; 判断按下键的行、列号, 并求出键值,,键值 行号10H列号,若求得键值,则可利用散转指令,去执行键盘各自的功能程序。,假如在图7-23硬件图中,设定: 行号=0,1,2,3,4,5,6,7; 列号=0,1,2,3; 可得键值如图所示:,下面是图7-24所示电路的键盘扫描及识别程序(JSB)算法及清单(约定FFH为无效键值,设8155A口地址为FE01H,B口地址为FE02H):,2程序清单; JSB: ACALL KSl ;调用按键判断子程序,判断是否有键按下。JNZ LK1 ;有键按下时,(A0)转去抖动延时。MOV A, #0FFH AJMP FH ;无

37、键按下返回。LK1: ACALL DELAY12 ;延时12MS。ACALL KS1 ;查有无键按下,若有,则为键真实按下。JNZ LK2 ;键按下(A0)转逐列扫描。MOV A, #0FFH AJMP FH ;没有键按下,返回 。 LK2: M0V R2, OFEH ;首行扫描字送R2。M0V R4, 00H ;首行号送R4。 LK4: M0V DPTR, FE01H ;指向A口。MOV A, R2 M0VX DPTR,A ;行扫描字送至8155PA口。INC DPTR ;指向8155PB口。 MOVX A, DPTR ;8155 PB口读入列状态。,JB ACC0, LONE ;若第0列无

38、键按下,转查第1列。 M0V A, 00H ;第0列有键按下,将列首键号00H 送A。AJMP LKP ;转求键值。 LONE:JB ACC.1, LTWO ;若第1列无键按下,转第2列。 M0V A, 01H ;第1列有键按下,将列号 01H 送A。 AJMP LKP ;转求键值。 LTWO:JB ACC.2, LTHR ;若第2列无键按下,转查第3列。M0V A, #02H ;第2列有键按下,将列号02H送A。AJMP LKP ;转求键值。 LTHR:JB ACC.3, NEXT ;若第3列无键按下,改扫描下一行。 M0V A, #03H ;第3列有键按下,将列号03H 送A。 LKP:

39、MOV R5, A ;列号存R5。MOV A, R4 ;取回行号。MOV B, 10HMUL AB ;乘10H 。ADD A, R5 ;求得键号 (行号*10H+列号)。PUSH ACC ;键号进栈保护。 LK3: ACALL KS1 ;等待键释放。JNZ LK3 ;末释放,继续等待。POP ACC ;键释放,键号送A。FH: RETI ;键扫描结束,出口状态为(A)=键号。,NEXT:INC R4 ;指向下一行,行号加 1。M0V A, R2 ;判8行扫描完没有? JNB ACC7,KND ;8行扫描完,返回。 RL A ;末完,扫描字左移一位。MOV R2, A ;暂存A中。 AJMP L

40、K4 ;转下一行扫描。 KND:MOV A, #0FFH JMP FH,按键判断子程序KS1: KS1:MOV DPTR, #FE01H ;指向PA口。MOV A, #00H ;全扫描字00H=00000000B。M0VX DPTR,A ;全扫描字送PA口。INC DPTR ; 指向PB口。MOVX A, DPTR ;读入PB口状态。CPL A ;变正逻辑,以高电平判定是否有键按下。ANL A, #0FH ;屏蔽高4位。RET ;返回 。,7-6 A/D转换器接口,7-6-1 集成A/D转换器 ADC 0809/0808为8路输入通道、8位逐次逼近式A/D转换器,可分时转换8路模拟信号。,一结

41、构 一个8位逐次逼近式A/D转换器、8路模拟转换开关、3-8地址锁存译码器和三态输出数据锁存器。,二引脚 8路模拟量输入信号端:IN0IN7 8位数字量输出信号端:D0D7 通道选择地址信号输入端:ADDA、ADDB、ADDC,三ADC 0809与单片机连接,A/D转换程序: MOV DPTR,#0FE00H ;ADC口地址MOV A,#00 ;转换IN0MOVX DPTR,A ;启动A/D转换LCALL DELAY ;等待转换结束MOVX A,DPTR ;取转换结果,2、最后执行MOV A,DPTR产生RD信号使OE端有效,打开输出锁存器三态门,8位数据就读入CPU中。,四、启动ADC080

42、9的工作过程,1、先送通道号地址到A、B、C,由ALE信号锁存通道号地址,然后让START有效启动A/D转换。 即执行一条MOVX DPTR, A指令产生WR信号,使ALE、START有效,锁存通道号并启动A/D转换。A/D转换完毕,EOC端发出一正脉冲,表示转换结束。,五、举例:,7-6-2 D/A转换器接口,7-6-2-2 集成D/A转换器 DAC 0832:8位双缓冲器结构的D/A转换器。,7-6-2-1 D/A转换原理 n位数字量与模拟量的关系式:VO = VREF / 2n D (VREF - 参考电压),D7D0:数据输入线,TTL电平,输入有效保持时间应大于90ns ILE:数据

43、锁存允许控制信号输入线,高电平有效。,CS:片选信号输入线,低电平有效。,WR1:输入锁存器写选通输入线,负脉冲有效,在ILE,CS信号有效时,WR1为”0”时可将当前D7D0状态锁存到输入锁存器。,XFER:数据传输控制信号输入线,低电平有效。,WR2:DAC寄存器写选通输入线,负脉冲有效,当XFER为”0”时,WR2有效信号可将当前输入锁存器的输出状态传送到DAC寄存器中。,Iout1:电流输出线,当输入全为1时Iout最大。Iout2:电流输出线,Iout2+Iout1为常数。Rfb:反馈信号输入线,改变Rfb端外接电阻值可调整转换满量程精度。Vref :基准电压输入端,Vref取值范围

44、为10V+10V。VCC:电源电压端,Vcc取值范围为+5V+15V。,Agnd:模拟地。,Dgnd:数字地。,DAC 0832与单片机连接,直通方式: 输入寄存器和DAC寄存器共用一个地址,同时选通输出。,双缓冲器方式: 输入寄存器和DAC寄存器分配有各自的地址,可分别选通用同时输出多路模拟信号。,例子:,1输出锯齿波电压信号MOV DPTR, #4000H ;指向0832地址。MOV A, #00H ;初值置零。LOOP:MOVX DPTR, A ;数字信号送0832。INC A ;数字信号加1。LCALL DELAY ;延时。AJMP LOOP ;循环输出。,2输出方波电压信号MOV D

45、PTR, #4000H ;指向0832地址。LOOP:MOV A, #0FFH ;建立高电平输出数据。MOVX DPTR,A ;数字信号送0832。LCALL DELAY1 ;高电平延时。MOV A, #00H ;建立低电平输出数据。MOV DPTR,A ;送0832。LCALL DELAY2 ;低电平延时。AJMP LOOP ;循环输出。,例:D/A转换程序,用DAC 0832输出05V锯齿波,电路为直通方式。 设VREF= - 5V,DAC 0832地址为7FFFH,脉冲周期要求为100ms。,DACS:MOV DPTR,#7FFFH;0832 I/O地址MOV A,#0 ;开始输出0V DACL:MOVX DPTR,A ;输出模拟量INC A ;升压ACALL DELAY ;延时100ms/256AJMP DACL ;连续输出 DELAY: ;延时子程序,

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

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

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


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

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

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