版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第七章
8051单片机系统扩展与接口技术
第一节
8051单片机系统扩展概述第二节
单片机外部存储器扩展第三节单片机输入输出〔I/O〕口扩展及应用第四节
LED显示器接口电路及显示程序第五节
单片机键盘接口技术第六节单片机与数模〔D/A〕及模数〔A/D〕转换一.半导体存储器的分类第一节
8051单片机系统扩展概述一、总线1、地址总线〔AddressBus,简写为AB〕2、数据总线〔DataBus,简写为DB〕3、控制总线〔ControlBus,简写为CB〕总线3、控制总线〔ControlBus,简写为CB〕控制总线实际上就是一组控制信号线,包括单片机发出的,以及从其它部件送给单片机的各种控制或联络信号。对于一条控制信号线来说,其传送方向是单向的,但是由不同方向的控制信号线组合的控制总线那么表示为双向的。总线结构形式大大减少了单片机系统中连接线的数目,提高了系统的可靠性,增加了系统的灵活性。此外,总线结构也使扩展易于实现,各功能部件只要符合总线标准,就可以很方便地接入系统,实现单片机扩展。1、地址总线〔AddressBus,简写为AB〕地址总线可传送单片机送出的地址信号,用于访问外部存储器单元或I/O端口。A地址总线是单向的,地址信号只是由单片机向外发出。B地址总线的数目决定了可直接访问的存储器单元的数目。例如N位地址,可以产生2N个连续地址编码,因此可访问2N个存储单元,即通常所说的寻址范围为2N个地址单元。MCS—51单片机有十六位地址线,因此存储器展范围可达216=64KB地址单元。C挂在总线上的器件,只有地址被选中的单元才能与CPU交换数据,其余的都暂时不能操作,否那么会引起数据冲突。2、数据总线〔DataBus,简写为DB〕数据总线用于在单片机与存储器之间或单片机与I/O端口之间传送数据。A单片机系统数据总线的位数与单片机处理数据的字长一致。例如MCS—51单片机是8位字长,所以数据总线的位数也是8位。B数据总线是双向的,即可以进行两个方向的数据传送。二、单片机总线构成MCS—51单片机的P0口,是一个地址/数据分时复用口。即在某些时钟周期时,P0口传送低八位地址,这时ALE为高电平有效;而在其它时钟周期时传送数据,这时ALE为无效的低电平。利用P0口输出低八位地址和ALE同时有效的条件,即可用锁存器〔74LS373〕把低八位地址锁存下来。所以系统的低八位地址是从锁存器输出端送出的.而P0口本身那么又可直接传送数据。高八位地址总线那么是直接由P2口组成的。CPU的每一条控制信号引脚的组合,即构成了控制总线。8位地址锁存器74LS373、8282例:程序存储器的扩展第二节
单片机外部存储器扩展7-2-1
随机读写存储器RAM7-2-2
只读存储器ROM7-2-3
存储器的连接DRAM动态RAM:使用电容作存储元件,需要刷新电路。集成度高,反响快,功耗低,但需要刷新电路。7-2-1
随机读写存储器(RAM) 存储器中的信息可读可写,但失电后会丧失信息。1.双极型:由TTL电路组成根本存储单元,存取速度快。(((((SRAM:静态RAM。存储单元使用双稳态触发器,可带电信息可长期保存。7-2-1-1常见数据存储器-静态RAMIntel6116、6264INTEL公司62系列MOS型静态随机存储器产品有:6264,62128,62256,62512等。6264是容量为8K×8位的静态随机存储器芯片,6116的容量仅2K×8位注意存储容量的计算7-2-2 只读存储器〔ROM〕工作时,ROM中的信息只能读出,要用特殊方式写入(固化信息),失电后可保持信息不丧失。1.掩膜ROM:不可改写ROM由生产芯片的厂家固化信息。在最后一道工序用掩膜工艺写入信息,用户只可读。2.PROM:可编程ROM用户可进行一次编程。存储单元电路由熔丝相连,当参加写脉冲,某些存储单元熔丝熔断,信息永久写入,不可再次改写。7-2-2 只读存储器〔ROM〕3.EPROM:可擦除PROM用户可以屡次编程。编程加写脉冲后,某些存储单元的PN结外表形成浮动栅,阻挡通路,实现信息写入。用紫外线照射可驱散浮动栅,原有信息全部擦除,便可再次改写。4.EEPROM:可电擦除PROM既可全片擦除也可字节擦除,可在线擦除信息,又能失电保存信息,具备RAM、ROM的优点。但写入时间较长。
7-2-2-1常见程序存储器-EPROMINTEL公司只读存储器芯片〔EPROM〕的产品有:2716,2732,2764,27128,27256,27512等。2764具有8K〔1024×8〕字节容量,共需要有13根地址线〔213=8192〕A12—A0进行寻址,加上8条数据线D7—D0、一条片选信号线CE、一条数据输出选通线OE、一条编程电源线Vpp及编程脉冲输入线PGM,另外有一条正电源线UCC及接地线GND,其第26号引脚为NC,使用时应接高电平。在非编程状态时UPP及PGM端应接高电平。其中片选信号为保证多片存贮系统中地址的正确选择,数据输出选通线保证时序的配合,编程电源线及编程脉冲输入线可实现程序的电编程。注意容量计算,系列数字27后面的数据除以8即为该芯片的K数。如:27256为32K容量。7-2-2-2常见程序存储器-EEPROM2816、2817、28647-2-3-1存储器与单片机的连接存储器与微型机三总线的一般连接方法和存储器读写时序。1.数据总线与地址总线为两组独立总线。
DB0~n
AB0~ND0~nA0~N
ABN+1CSR/WR/W微型机存储器DB0~n地址输出数据有效数据采样R/WAB0~N
7-2-3
存储器的连接通常把扩展的ROM称之为外部ROM,把扩展RAM称之为外部RAM。7-2-3-1
存储器与单片机的连接2.微型机复用总线结构数据与地址分时共用一组总线。单片机
AD0~n
ALER/WD0~nA0~nR/W存储器Di
QiG地址锁存器ALE地址锁存地址锁存地址输出数据有效地址输出数据有效AD0~n数据采样数据采样R/W8位地址锁存器74LS373、8282MCS—51单片机的P0口,是一个地址/数据分时复用口。即在某些时钟周期时,P0口传送低八位地址,这时ALE为高电平有效;而在其它时钟周期时传送数据,这时ALE为无效的低电平。利用P0口输出低八位地址和ALE同时有效的条件,即可用锁存器〔74LS373〕把低八位地址锁存下来。所以系统的低八位地址是从锁存器输出端送出的.而P0口本身那么又可直接传送数据。高八位地址总线那么是直接由P2口组成的。CPU的每一条控制信号引脚的组合,即构成了控制总线。MCS-51用于扩展存储器的外部总线信号:P0.0~0.7: 8位数据和低8位地址信号,复用总线AD0~7。P2.0~2.7: 高8位地址信号AB8~15ALE: 地址锁存允许控制信号PSEN: 片外程序存储器读控制信号RD: 片外数据存储器读控制信号WR: 片外数据存储器写控制信号EA: 程序存储器选择7-2-3-2 存储器与单片机的连接实例7-2-3-2 存储器与单片机的连接实例一.扩展程序存储器电路:8031扩展2KBEPROMIntel2716常用EPROM芯片:Intel2716(2K×8位)、2732(4KB)、2764(8KB)、27128(16KB)、27256(32KB)、27512(64KB)。8051扩展程序存储器2764二.扩展数据存储器电路:常用EPROM芯片:Intel6116(2KB)、6264(8KB)、62256(32KB)。8031扩展2KBRAMIntel61168051扩展数据存储器器6264注意关于地址重叠四.单片机扩展存储器实用电路单片机连接8KBEPROM2764和8KBRAM6264各一片7-2-3-3存储器芯片的扩充用多片存储器芯片组成微型计算机系统所要求的存储器系统。要求扩充后的存储器系统引出线符合微型计算机机的总线结构要求。一.扩充存储器位数例用2K×8位存储器芯片组成2K×16位存储器系统。例三片8KB的存储器芯片组成24KB容量的存储器。确定各存储器芯片的地址空间:D0~7R/WCEA0~12D0~7R/WCE1A0~12CE2D0~7R/WCEA0~12D0~7R/WCEA0~12CE3ⅠⅡⅢ设CE1、CE2、CE3分别连接微型机的高位地址总线AB13、AB14、AB15 ABi15141312
1110987654
3210~15141312
111098
7654
3210 Ⅰ:1100000000000000~1101111111111111=C000H~DFFFHⅡ:1010000000000000~1011111111111111=A000H~BFFFHⅢ:0110000000000000~0111111111111111=6000H~7FFFH掌握要点什么情况下需要扩展数据存储器和程序存储器?锁存器的作用,何时需要,如何应用连线?数据存储器容量计算及其与地址线的关系?程序存储器容量计算及其与地址线的关系?EA脚的作用?程序存储器扩展时的连线,特别是控制线?数据存储器扩展时的连线,特别是控制线?程序存储器地址重叠问题第三节单片机输入输出〔I/O〕口扩展及应用§概述一、I/O接口电路把CPU与外设连接起来的电路。二、CPU与外设之间通过I/O口交换的信息1、数据信息2、控制信息3、状态信息
三、I/O接口的作用
消除CPU与外设之间的差异。1、速度协调。〔1〕数据锁存。〔2〕三态缓冲。2、数据格式转换。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-3-1单片机简单I/O口应用及扩展7-3-28155作单片机的I/O扩展一、8155引脚RESET:复位信号线,高电平有效。CE:片选端,低电平有效。该端加一低电平时,芯片被选中,可以与单片机交换信息。AD7─AD0:三态地址/数据总线,分时传送8位地址信号和数据号。ALE:地址锁存器启用信号线,高电平有效,其有效信号可将AD7─AD0的地址信号、以及片选信CE,IO/M信号锁存起来。
IO/M:I/O口和RAM选择信号线,高电平选择I/O口,低电平选择RAM。RD:读信号线,低电平有效,当片选信号与RD有效时,此时如果IO/M为低电平,那么RAM的内容读至AD7─AD0;如果IO/M为高电平,那么选中的I/O口的内容读到AD7─AD0。TIN:定时/计数器输入信号线,定时/计数器的计数脉冲由此输入。TOUT:定时/计数器输出信号线,输出信号为方波还是脉冲那么由定时/计数器的工作方式而定。VCC:电源线,接+5V直流电源。VSS:接地线。WR:写信号线,低电平有效,当片选信号和WR信号有效时,AD7─AD0上的数据将根据IO/M的极性写入RAM或I/O口中PB7─PB0:端口B的输入输出信号线,通用的8位I/O口,输入/输出方向通过命令/状态存放器的编程来选择。PC5─PC0:端口C的输入/输出线,6位可编程I/O口,也可用作A和B的控制信号线,通过对命令/状态存放器编程来选择。PA7─PA0:输入/输出口A的信号线,通用8位I/O口,输入/输出的方向通过对命令/状态存放器的编程来选择。二、结构地址(AD7—AD0)A7A6A5A4A3A2A1A0寄存器XXXXX000XXXXX001XXXXX010XXXXX011XXXXX100XXXXX101*内部命令/状态寄存器A口(PA7—PA0)B口(PB7—PB0)C口(PC5—PC0)定时器低8位定时器高6位和2位计时器方式位三、8155的RAM和I/O口寻址8155在8051系统中的RAM和I/O口是按外部存储器统一编址的,为16位地址。其高8位提供和输入信号。低8位地址由8051的P0口送到8155芯片地址线AD0~AD7确定。当为0时,单片机对8155RAM读/写,RAM低8位编址为00H~FFH;当为1时,单片机对I/O口进行读写,8155内部I/O及定时器的低8位编址如表四、8155存放器8155内部共有7个存放器,其中命令存放器〔只写〕和状态存放器〔只读〕共用一个地址XXXXX000B,故称命令/状态存放器,由读写指令来区别,定时器存放器的高8位和低8位各有其地址,XXXXX101B和XXXXX100B1命令存放器〔COMMAND,只写〕可以把一个命令写入XXXXX000B地址中改变命令存放器的内容实现编程,即控制I/O接口的工作方式和数据流向。工作方式控制字的格式及功能如下图2状态存放器〔STATUS,只读〕状态存放器和命令存放器的地址相同,当读地址XXXXX000B的内容时,那么可查询I/O口和定时/计数器的状态。状态存放器中各位的意义如表所示:D7D6D5D4D3D2D1D0—TIMERINTEBBFBINTRBINTEABFAINTRA6定时/计数器8155片内的定时/计数器是一个14位的减法计数器,另外两位是用于确定输出方式。因此它是两个8位存放器。低8位地址为XXXXX100B和高8位地址为XXXXX101B。计数初值由程序预置,每次预置一个字节,该存放器的0—13位规定了下一次计数的长度,14、15位规定了定时/计数器的输出方式,该存放器的定义如表所示。M2M1T13T12T11T10T9T8T7T6T5T4T3T2T1T0输出方式计数长度高6位计数长度低8位两个存放器有双重作用,在写操作时,可送入定时常数和输出方式的指令;在读操作时,可把定时/计数器的当前值和方式位读出。上述读写均要分两次传送进行。对定时器编程首先要计数常数和定时器的方式字送入地址口04H和05H。定时常数范围:2H~3FFFH。定时/计数器的启动和停止命令送命令存放器〔00H〕的最高位。定时/计数器是递减计数器,定时/计数器对TIN端的时钟脉冲进行计数,并在到达最后计数值〔TC〕终值时给出一个方波或脉冲。高字节存放器中的M1和M2是输出波形控制位。波形如下图。五、8155的使用1、作片外256字节RAM2、作扩展I/O口使用3、作定时器扩展用IO/M脚接低电平,8155作片外RAM用,地址高8位接片选端CE和IO/M端,低8位为00H~FFH,与其它片外数据存储器统一编址。IO/M脚接高电平,8155作扩展I/O口用,此时PA、PB、PC口的口地址低等位分别为01H、02H、03H〔设无关位为0〕。I/O方式的选择是对命令存放器〔命令口〕设定命令控制字。定时器的方式选择定时器的编程六、MCS—51芯片和8155的连接和编程1、连接方法2、8155软件设下例中按上图连接课本例子现用8155作为外部256个RAM扩展及六位LED显示器接口电路,要求外部RAM地址范围是0200H-02FFH;A口输出,作为LED显示器八位段控输出口,地址是0301H;C口输出,作为六位LED的位控输出口,地址是0303H,试设计硬件电路并写出初始化程序。解:由题意可得硬件电路如7─19所示:由图可得:P2.1=1,CE=0时芯片选中;P2.0=0,选中RAM单元;P2.0=1,选中I/O口。显然地址信号在0200H—02FFH范围内可选中8155中256个RAM单元。〔P2.1P2.0=10,A7─A0从00000000—11111111B变化〕,8155中六个I/O地址如下:
又根据题意可得8155控制字如下:初始化程序如下:MOVDPTR,#0300H ;指向命令存放器地址。MOVA,#05H ;控制字送A。MOVX@DPTR,A ;控制字送命令存放器。·命令状态存放器地址:0300H〔P2.1,P2.0=11,A2A1A0=000〕口A地址:0301H〔P2.1,P2.0=11,A2A1A0=001〕口C地址:0303H〔P2.1,P2.0=11,A2A1A0=011〕第四节LED显示器接口电路及显示程序一.LED显示器工作原理LED显示器用于显示工业控制参数、过程状态。1.LED数码管 共阴极LED和共阳极LED当LED字段引线与数据线连接,每个显示字形对应一个字形码。COM
P1.0~1.7MCS-51afbge
cdhabhD7D6D5D4D3D2D1D0hgfedcba
abhCOM二、LED显示器与单片机的接口电路显示多位数据的两种电路:1.静态显示2.动态显示多位LED共用一个8位字段口,各位LED公共端用字位口控制,扫描输出显示不同字形。每个LED需要一个8位并行口
abhCOMafbge
cdh
abhCOM
abhCOMCOMhCOMD7…D1D0D0D1D2hbbhCOMafbge
cdhaaba例:8155接6位LED动态显示三、显示程序任务:1.设置显示缓冲区,存放待显示数据和字符〔位置码〕。2.显示译码:程序存储器中建立字形码常数表,查表得出对应数据和字符的字形码。3.输出显示:输出字形码到显示端口。COM
P1.0~1.7MCS-51afbge
cdhabh
对应字位线:D0D1D2D3D4D51、显示缓冲区与多位LED对应关系:例: MOVDPTR,#WTAB;指向字形码表首地址 MOVA,@R0 ;取显示缓冲区中数据 MOVCA,@A+DPTR;查表显示译码 MOVP1,A ;输出显示 … WTAB: DB 3FH,06H,5BH;字形码表 … 2、译码3、显示程序:DIS:MOVR0,#7AH ;指向显示缓冲区起始单元 MOVR3,#01H ;字位码初值→R3 MOV A,R3 ;取字位码DLP:MOVDPTR,#PAAR;指向字位口(PA口) MOVX@DPTR,A ;输出字位码,显示其中1位 MOV A,@R0 ;取一个显示数据 ADD A,#0CH ;查表偏移量 MOVCA,@A+PC ;取出字形码 INC DPTR ;指向字段口(PB口) MOVX@DPTR,A ;输出字形码 ACALLDLY1MS ;延时1ms INC R0 ;指向显缓区下一单元 MOV A,R3 ;修改字位码 RL A ;显示下一位 MOV R3,A JNB ACC.6,DLP;未显示到最右边LED,继续显示 RET ;全部扫描一遍,结束DTAB:DB0C0H,0F9H,0A4H;字形表,共阳极LED DB0B0H,99H, DLY1MS:… ;延时1ms子程序课本例子1.建立显示缓冲区通常在内部RAM中开辟显示缓冲区,显缓区单元个数与LED位数相同。例如对六位LED显示器,可设显示缓冲区单元为79H─7EH,对应关系如下:显示缓冲区中可按显示次序放入所显示字符的编码,或直接放入所显示的字符,然后再通过查字形代码表找出相应字符编码作为段控码送LED显示器。2.编写显示程序现用六位LED显示〞008031〞六个字符,设A口地址为0301H,C口地址为0303H,用查表方式来求得相应编码并显示。可事先在显示缓冲区中依次放入待显示字符如下:例:8155接6位LED动态显示显示参考程序如下:〔考虑反相驱动器反相作用〕DIS:MOVR1,#79H ;指向显缓区首址。MOVR2,#00000001B ;从右面第一位开始显示。LD0:MOVA,#00HMOVDPTR,#0303H;送字形前先关显示。MOVX@DPTR,AMOVA,@R1;取显示字符。MOVDPTR,TABLE;指向字符代码表首址。MOVCA,@A+DPTR;取字符相应编码。MOVDPTR,#0301H ;指向段控口。MOVX@DPTR,A;字符编码送A口〔段控口〕。MOVA,R2;位控码送A。MOVDPTR,#0303H;指向位控口。MOVX@DPTR,A;位控码送C口〔位控口〕。ACALLDELAY;延时。INCR1 ;指向下一显缓单元。MOVA,R2;取当前位控码。JBACC.5,LD1, ;是否扫描到最左边,是返回。RLA ;否,左移一位。MOVR2,A;保存位控码。AJMPLD0 ;继续扫描显示。LD1:RET ;返回。
ORG3000H ;依次建立字符代码表。TABLE:DB0C0H;0DB0F9H ;1DB0A4H ;2DB0B0H ;3DB99H ;4DB92H ;5. .. .. .几点说明:1.单片机定期调用上述显示子程序,使字符显示稳定。2.由于考虑反相驱动器的反相因素,所以用共阳极LED字符代码表。同时设位控端为〞1〞时对应LED点亮。3.如不用查表方式求得字符编码,也可直接向显示缓冲区中写入待显示字符编码,再将上述程序稍加修改后即可。第五节 键盘与单片机接口1.键输入检查键盘是否有键被按下,消除按键抖动。确定被按键的键号,获取键号。硬件电路消除抖动或软件消除抖动。&I/O接口&+5v+5v消除抖动电路开关单片机抖动时间<10ms开关动作时间>100ms“1”“0”<10ms延时等待10ms仍有按键信号?Y有按键信号?NYN键盘处理
按键释放?NY键盘处理程序任务2.键译码键号为键盘位置码,根据键号查表得出被按键的键值。键值:数字键0~9、字符键0AH~0FH、功能键10H~。3.键处理根据键值转移到不同程序段。假设键值属于数字、字符键,那么调用显示数字和字符的子程序。假设键值属于功能键,那么进行多分支转移,执行各个功能程序段。7-5-1 独立式键盘电路7-5-2矩阵式键盘
0
1+5vC0C1R0R1键盘I/O接口1.扫描法列线输出,行线输入。列线逐行输出0,某行有按键,行线输入有0,假设无按键,行线输入全部为1。2.反转法行列线交换输入、输出,两步获取按键键号。P1.0P1.1P1.7+5v每个按键单独占有一根I/O接口引线。按键处理程序:延时消抖键扫描求键号延时等待键译码求键值修改显示缓冲区跳转各功能程序有按键输入?确有按键?按键释放?是数字键?课本举例三、独立式按键独立式按键是指直接用I/0口线构成的单个按键电路。每个独立式按键单独占有一根I/O口线,每根I/O口线上的按键的工作状态不会影响其它1/0口线的工作状态。图7—23为一种独立式四按键电路,键值由软件用中断或查询方式获得。1、K0—K3四个按键在沒有按下时,P1.0—P1.3均处于高电平状态;只要有键按下,那么相应的I/O口线就变成低电平;一个按键与一根I/O口线状态相对应。3、显然,在中断效劳程序中,应设计键盘去抖动延时程序和读键值程序。4、等待键释放以后,再退出中断效劳程序,转向各键定义的各功能程序。这样可以防止发生一键按下、屡次处理的現象。2.在图中,为了使CPU能及时处理键盘功能,四根键盘状态输出线被送到四与门输入端。这样,只要有任一键按下,该四与门输出端便由高电平变成低电平,再通过INT0向CPU发出中断请求。ORG0000HAJMPMAIN ;转向主程序。ORG0003HAJMPJSB ;设置键识别中断效劳程序入口。ORG0030HMAIN:MOVSP,#30H;设置堆栈。SETBEA ;开中断。SETBEX0 ;允许INT0中断。MOVP1,#0FFH ;设P1口为输入方式。HERE:SJMPHERE ;等待键闭合。键识别中断效劳程序:ORG0120HJSB:PUSHACC ;保护现场。CLREA;暂时关中断。MOVA,P1 ;取P1口当前状态。ANLA,#0FH ;屏蔽高4位。CJNEA,#0FH,KEY ;有键按下,转键处理KEY。SETBEA;开中断。POPACC ;现场恢复。RETI ;返回。KEY:MOVB,A ;保存键闭合信息到B。LCALLDELAY10 ;延时10ms,消去键闭合抖动。LOOP:MOVA,P1 ;取P1口状态。ANLA,#0FH ;屏蔽高4位。CJNEA,#0FH,LOOP ;等待键释放。LCALLDELAY10 ;延迟10ms,消去键释放抖动。MOVA,B ;取键闭合信息。JNBACC.0,KEY0 ;假设K0按下,转键处理程序KEY0。JNBACC.1,KEY1 ;假设K1按下,转键处理程序KEY1。JNBACC.2,KEY2 ;假设K2按下,转键处理程序KEY2。AJMPKEY3 ;转键处理程序KEY3。四、行列式键盘行列式键盘必须由软件来判断按下键盘的键值。其判别方法是这样的:如图7—24所示,首先由CPU从PA口输出一个全为0的数据,也就是说,这时PA.7—PA.0全部为低电平,这时如果没有键按下,那么PB.0—PB.3全部处于高电平。所以当CPU去读8155PB口时,PB.3—PB.0全为1说明这时无键按下。从硬件图中我们可以看到,只要是第4列键按下,CPU读8155PB口时PB.3始终为0。其PB口的读得值为XXXX0111B,这就是第4列键按下的特征。如果此时读得PB口值为XXXX1101B,显然可以断定是第2列键被按下。現在我们假设第5行第4列键是按下的〔即图中箭头指着的那个键〕。由于该键被按下,使第4根列线与第5根行线导通,原先处于高电平的第4根列线被第5根行线箝位到低电平。所以这时CPU读8155PB口时PB.3=0;列值这种操作方式,就好似PA口为0的这根线,从最低位开始逐位移动〔称作扫描〕,直到PA.7为0为止。很明显,对于我们上例中的第5行第4列键按下,必然有:在PA口输出为11101111B时PB.0—PB.3不全为1,而是XXXX0111B。读取被按键盘的行值,可用扫描方法。即首先使8155PA口输出仅PA.0为0、其余位都是1然后去读PB口的值,如读得PB.3—PB.0为全1;那么接着使PA.1为0其余位都是1,再读PB口,假设仍为全1;再继续使PA.2为0,其余位为1,再读PB口…直到读出PB.0—PB.3不全为1或0位移到PA.7为0为止。行值键值此时行输出数据和列输入数据中0位置,即表示了该键的键值。综上所述,行-列式键盘的扫描键值可归结为二个步骤:判断有无键按下;判断按下键的行、列号,并求出键值,键值=行号×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:ACALLKSl;调用按键判断子程序,判断是否有键按下。JNZLK1;有键按下时,〔A≠0〕转去抖动延时。MOVA,#0FFHAJMPFH;无键按下返回。LK1:ACALLDELAY12;延时12MS。ACALLKS1;查有无键按下,假设有,那么为键真实按下。JNZLK2;键按下〔A≠0〕转逐列扫描。MOVA,#0FFHAJMPFH;没有键按下,返回。LK2:M0VR2,#OFEH;首行扫描字送R2。M0VR4,#00H;首行号送R4。LK4:M0VDPTR,#FE01H;指向A口。MOVA,R2M0VX@DPTR,A;行扫描字送至8155PA口。INCDPTR;指向8155PB口。MOVXA,@DPTR;8155PB口读入列状态。
JBACC·0,LONE;假设第0列无键按下,转查第1列。M0VA,#00H;第0列有键按下,将列首键号00H送A。AJMPLKP;转求键值。LONE:JBACC.1,LTWO;假设第1列无键按下,转第2列。M0VA,#01H;第1列有键按下,将列号01H送A。AJMPLKP;转求键值。LTWO:JBACC.2,LTHR;假设第2列无键按下,转查第3列。M0VA,#02H;第2列有键按下,将列号02H送A。AJMPLKP;转求键值。LTHR:JBACC.3,NEXT;假设第3列无键按下,改扫描下一行。M0VA,#03H;第3列有键按下,将列号03H送A。LKP:MOVR5,A;列号存R5。MOVA,R4;取回行号。MOVB,10HMULAB;乘10H。ADDA,R5;求得键号(行号*10H+列号)。PUSHACC;键号进栈保护。LK3:ACALLKS1;等待键释放。JNZLK3;末释放,继续等待。POPACC;键释放,键号送A。FH:RETI;键扫描结束,出口状态为〔A〕=键号。NEXT:INCR4;指向下一行,行号加1。M0VA,R2;判8行扫描完没有?JNBACC.7,KND;8行扫描完,返回。RLA;末完,扫描字左移一位。MOVR2,A;暂存A中。AJMPLK4;转下一行扫描。KND:MOVA,#0FFHJMPFH按键判断子程序KS1:KS1:MOVDPTR,#FE01H;指向PA口。MOVA,#00H;全扫描字#00H=00000000B。M0VX@DPTR,A;全扫描字送PA口。INCDPTR;指向PB口。MOVXA,@DPTR;读入PB口状态。CPLA;变正逻辑,以高电平判定是否有键按下。ANLA,#0FH;屏蔽高4位。RET;返回。7-6
A/D转换器接口7-6-1
集成A/D转换器ADC0809/0808为8路输入通道、8位逐次逼近式A/D转换器,可分时转换8路模拟信号。一.结构一个8位逐次逼近式A/D转换器、8路模拟转换开关、3-8地址锁存译码器和三态输出数据锁存器。二.引脚8路模拟量输入信号端: IN0~IN78位数字量输出信号端: D0~D7通道选择地址信号输入端: ADDA、ADDB、ADDC多路转换开关ABCIN0IN1IN7A/D转换三.ADC0809与单片机连接A/D转换程序:
MOVDPTR,#0FE00H;ADC口地址 MOVA,#00 ;转换IN0 MOVX@DPTR,A ;启动A/D转换 LCALLDELAY ;等待转换结束 MOVXA,@DPTR ;取转换结果AD0~7ALEINT0WRP2.0RDD0~7ADDABC
CLKEOCALES
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 连云港职业技术学院《体育-台球》2023-2024学年第一学期期末试卷
- 江西现代职业技术学院《音乐选配与编辑》2023-2024学年第一学期期末试卷
- 江苏大学《水资源系统分析》2023-2024学年第一学期期末试卷
- 华东理工大学《国学经典选读》2023-2024学年第一学期期末试卷
- 隔膜压缩机开机停机操作规程
- 湖北工业职业技术学院《医药学基础实验》2023-2024学年第一学期期末试卷
- 遵义医科大学《材料与结构选型》2023-2024学年第一学期期末试卷
- 珠海城市职业技术学院《Python程序开发》2023-2024学年第一学期期末试卷
- 重庆旅游职业学院《地下水资源勘查与评价》2023-2024学年第一学期期末试卷
- 浙江特殊教育职业学院《审计理论与方法》2023-2024学年第一学期期末试卷
- 外配处方章管理制度
- 2025年四川长宁县城投公司招聘笔试参考题库含答案解析
- 骆驼祥子-(一)-剧本
- 《工程勘察设计收费标准》(2002年修订本)
- 全国医院数量统计
- 【MOOC】PLC技术及应用(三菱FX系列)-职教MOOC建设委员会 中国大学慕课MOOC答案
- 2023七年级英语下册 Unit 3 How do you get to school Section A 第1课时(1a-2e)教案 (新版)人教新目标版
- 中国的世界遗产智慧树知到期末考试答案2024年
- 某送电线路安全健康环境与文明施工监理细则
- PEP-3心理教育量表-评估报告
- 控制性详细规划编制项目竞争性磋商招标文件评标办法、采购需求和技术参数
评论
0/150
提交评论