版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章单片机系统扩展与接口技术7.1外部总线的扩展
7.2外部存储器的扩展7.3输入/输出接口的扩展7.4管理功能部件的扩展7.5A/D和D/A接口功能的扩展系统扩展的含义
单片机中虽然已经集成了CPU、I/O口、定时器、中断系统、存储器等计算机的基本部件(即系统资源),但是对一些较复杂应用系统来说,有时感到以上资源中的一种或几种不够用,这就需要在单片机芯片外加相应的芯片、电路,使得有关功能得以扩充,我们称为系统扩展(即系统资源的扩充)。
接口的含义:
接口是连接单片机与外围电路、芯片、设备(如I/O设备、A/D、D/A设备)的中间环节。接口牵涉到包括外围电路、设备、芯片的结构、使用方法、时序要求;单片机本身的硬件、软件资源等很多问题。接口技术要解决系统扩展时单片机与相应芯片的接口(如地址总线、数据总线、控制总线的连接)与编程问题。系统扩展和接口技术一般有以下几方面内容:1.外部总线的扩展2.外部存储器的扩展3.输入、输出接口的扩展4.管理功能部件(如定时/计数器、键盘/显示器等)的扩展5.A/D和D/A的接口技术7.1外部总线的扩展一、外部总线的扩展图7.1MCS-51外部三总线示意图图7.2地址锁存器的引脚和接口二、总线驱动
在单片机应用系统中,扩展的三总线上挂接很多负载,如存储器、并行接口、A/D接口、显示接口等,但总线接口的负载能力有限,因此常常需要通过连接总线驱动器进行总线驱动。总线驱动器对于单片机的I/O口只相当于增加了一个TTL负载,因此驱动器除了对后级电路驱动外,还能对负载的波动变化起隔离作用。
在对TTL负载驱动时,只需考虑驱动电流的大小;在对MOS负载驱动时,MOS负载的输入电流很小,更多地要考虑电平的兼容和分布电容的电流。一般TTL电平和CMOS电平是不兼容的,CMOS电路能驱动TTL电路,而TTL电路一般不能驱动CMOS电路,在TTL电路和CMOS电路混用的系统中,应特别注意。1.常用的总线驱动器
系统总线中地址总线和控制总线是单向的,因此驱动器可以选用单向的,如74LS244。74LS244还带有三态控制,能实现总线缓冲和隔离。系统中的数据总线是双向的,其驱动器也要选用双向的,如74LS245。74LS245也是三态的,有一个方向控制端DIR,DIR=1时输出(An→Bn),DIR=0时输入(An←Bn)。图7.3总线驱动器芯片管脚(a)单向驱动器;(b)双向驱动器1G,2G为H时,Y为高阻;1G,2G为L时,Y=AG为H时,Y为高阻;G=L,DIR=0;B→AG=L,DIR=1;A→B2.总线驱动器的接口图7.48051与总线驱动器的接口
(a)
P2口的驱动;(b)P0口的驱动
7.2外部存储器的扩展
MCS-51系列单片机数据存储器和程序存储器的地址空间是相互独立的。
MCS-51系列单片机具有64K的程序存储器寻址空间和64K的片外数据存储器寻址空间。如果系统需要用到的存储器超过了单片机本身具有的容量,就要进行片外程序存储器或者数据存储器的扩展。程序存储器的扩展要解决的几个问题:
.程序存储器的作用——存放程序代码或常数表格
.扩展时所用芯片——一般用只读型存储器芯片(可以是
EPROM、E2PROM、FLASH芯片等)。
.扩展电路连接
——用EPROM2716、2732等扩展程序存储器。
.存储器地址分析——单片机输出什么地址值时,可以指向存储器中的某一单元。7.2.1外部程序存储器的扩展图7.5MCS-51单片机程序存储器的扩展原理1.外部程序存储器的扩展原理与时序分析图2.8读外部程序ROM时序2.EPROM扩展芯片图7.62716的引脚图2716容量:2K*8位2716有五种工作方式,见表7.1。
表7.12716工作方式选择图7.72716与8031的连接图
由图7.7可确定2716芯片的地址范围。方法是A10~A0从全0开始,然后从最低位开始依次加1,最后变为全1,相当于211=2048个单元地址依次选通,称为字选。即3.E2PROM2864A的扩展图7.82864A管脚及原理框图(a)管脚;(b)原理框图表7.22864A工作方式图7.92864A与8031的接口电路7.2.2外部数据存储器的扩展1.外部数据存储器的扩展方法及时序图7.10MCS-51数据存储器的扩展示意图
图2-9读外部数据RAM时序2.静态RAM芯片图7.116264管脚图
I/O0~7:数据线A0~A12:地址线CE1、CE2:片选线OE:输出使能WE:写入使能VCC、GND:电源NC:未使用表7.36264的工作方式图7.12扩展6264静态RAM
6264的8KB地址范围为6000H~7FFFH。当向该片6000H单元写一个数据DATA时,可用如下指令:
MOVA,#DATA
MOVDPTR,#6000H
MOVX@DPTR,A
从7FFFH单元读一个数据时,可用如下指令:
MOVDPTR,#7FFFH
MOVXA,@DPTR常用的地址译码器常用的地址译码器是:3-8线译码器74LS138双2-4线译码器74LS13974LS13812345678910141615131211ABCG2AG2BG1GNDY7Y6Y4Y3Y2Y1Y0Y5VCC8个输出端3个选择输入端3个允许输入端Y0Y1Y2Y3Y4Y5Y7Y611111111111111111111111111111111011111111011111111011111111011111111011111111011
01
10
110
100100100100100100XX
000001011010X
010101CBAG2BG2AG1100110
11111101100111
11111110输入输出74LS138译码器真值表禁止允许74LS139123456789101416151312112个允许输入端2个选择输入端4个输出端1A1BGND1G1Y31Y21Y11Y02Y32Y22Y12Y0VCC2A2B2G输出输入GB
AY0Y1Y2Y31XX1111000011100110110101101001111074LS139译码器真值表4个输出端7.2.3多片存储器芯片的扩展1.线选法寻址
线选法使用P2、P0口的低位地址线对每个芯片内的统一存储单元进行寻址,称为字选。所需地址线数由每片的存储单元数决定,对于8K×8容量的芯片需要13根地址线A12~A0。然后将余下的高位地址线分别接到个存储芯片的片选端CS,称为线选。图7.13用线选法实现片选
下图是利用线选法,用3片2764A扩展24K×8位EPROM的电路图:各芯片的地址范围如下:
2.译码法寻址
译码法寻址就是利用地址译码器对系统的片外高位地址进行译码,以其译码输出作为存储器芯片的片选信号。译码法仍用低位地址线对每片内的存储单元进行寻址,而高位地址线经过译码器译码后输出作为各芯片的片选信号。常用的地址译码器是3/8译码器74LS138。
译码法又分为完全译码和部分译码两种。
完全译码:译码器使用全部地址线,地址与存储单元一一对应;部份译码:译码器使用部份地址线,地址与存储单元不是一一对应。部份译码会大量浪费寻址空间,对于要求存储器空间大的微机系统,一般不采用。但对于单片机系统,由于实际需要的存储容量不大,采用部份译码可简化译码电路。
例
要求用2764芯片扩展8031的片外程序存储器空间,分配的地址范围为0000H~3FFFH。
本例采用完全译码方法。
(1)确定片数。因0000H~3FFFH的存储空间为16KB,则所需芯片数=实际要求的存储容量/单个芯片的存储容量
=16KB/8KB
=2(片)(2)分配地址范围。
(3)存储器扩展连接如图7.14所示。
图7.14采用地址译码器扩展存储器的连接图
7.3输入/输出接口的扩展7.3.18255A可编程并行I/O接口
8255A具有3个8位并行I/O口,称为PA口、PB口和PC口。其中PC口又分为高4位和低4位,通过控制字设定可以选择三种工作方式:①基本输入/输出;②选通输入/输出;③PA口为双向总线。1.8255的内部结构和引脚(1)端口A、B、C(2)工作方式控制(3)总线数据缓冲器(4)读写控制逻辑8255引脚功能:RESET:复位信号线。CS:片选信号线RD:读信号线WR:写信号D0~D7:三态双向数据总线PA0~PA7:端口A输入输出线PB0~PB7:端口B输入输出线PC0~PC7:端口C输入输出线,A1、A0:端口地址总线,8255中有端口A、B、C和一个内部控制字寄存器,共4个端口,由A0、A1输入地址信号来寻址。
A1A0=00A口
01
B口
10C口
11控制口。2、工作方式选择(1)工作方式0:基本输入输出方式(2)工作方式1:选通输入输出方式(3)工作方式2:双向传输方式,仅A口可以工作在方式2选通输入、输出方式下各联络信号的含义:STB:选通信号输入端,由外设送往8255。IBF:输入缓冲器满信号。由8255送往CPU。INTR:中断请求信号,由8255送往CPU。OBF:输出缓冲器满信号。由8255送往外设。ACK:外设响应输入信号。由外设送往8255。INTR:中断请求信号,由8255送往CPU。8255的控制字:工作方式控制字D6D5:A组方式控制,00-方式0,01-方式1;10-方式2D4:A口输入输出选择:1-输入,0-输出D3:PC7-PC4输入输出选择:1-输入,0-输出D2:B组方式选择,0-方式0,1-方式1D1:B口输入输出选择:1-输入,0-输出D0:PC3-PC0输入输出选择:1-输入,0-输出D1D2D3D4D5D6D01标志位C口置0置1控制字:D3D2D1:000-111分别选择PC0—PC7D0:所选位置0或置1选择,0—置0,1-置1例1:要求A口工作在方式0输入,B口工作在方式1输出,C口高四位为输入,C口低四位为输出
MOVR1,#03H;8255控制端口
MOVA,#9CH;工作方式控制字
MOVX@R1,AD1D2D3D00标志位例28255与8031的接口如图,要求编程序段实现PC3置1,PC5置0。
MOVR0,#03H;8255控制端口
MOVA,#07HMOVX@R0,AMOVA,#0AHMOVX@R0,A例3、
MOVR0,#7FH;8255控制端口
MOVA,#8EH;A口输出,C口高四位输入,低四位输出。
MOVX@R0,AMOVR1,#20H;数据区首址
MOVR2,#50H;数据块长度
LP:MOVR0,#7EH;C口LP1:MOVXA,@R0;PC7=?Busy?JBACC.7,LP1MOVR0,#7CH;A口
MOVA,@R1;从RAM取数据
MOVX@R0,AINCR1MOVR0,#7FH;控制端口
MOVA,#00H;PC0置0控制字
MOVX@R0,AMOVA,#01H;PC0置1控制字
MOVX@R0,ADJNZR2,LP7.3.28155可编程并行接口芯片1、8155的结构及引脚8155的结构8155256字节RAM三个可编程并行口PA口,8位PB口,8位PC口,6位14位二进制减法计数器8155芯片的内部结构256B静态RAM
A
定时器B
C
口APA0~PA7口BPB0~PB7PC0~PC5口CIO/MAD0~AD7CEALERDWRRESET定时器输入定时器输出接单片机接外设接外设接外设图7.218155引脚功能PC3PC4
PC5
IO/MCERDWRALEAD0AD1AD2AD3AD4AD5AD6AD7VssVccPC2PC1PC0PB7PB6PB5PB4PB3PB2PB1PB0PA7PA6PA5PA4PA3PA2PA1PA08155TIMERINRESETTIMEROUTAD0-AD7三态地址/数据线IO/M端口/存储器选择RD读ALE地址锁存允许写WR片选CE定时器输入TIMERIN定时器输出TIMEROUTPA0-PA7A口端口线PB0-PB7B口端口线PC0-PC5C口端口线图7.11aI/O口地址----当IO/M加高电平时2.8155的RAM和I/O口地址RAM地址----当IO/M加低电平时此时AD0-AD7上得到的地址值是指8155的某一RAM单元的地址,地址范围是
00000000--11111111分别指向8155RAM的256个存储单元。此时AD0-AD7(仅用到低三位AD2、AD1、AD0)上得到的地址值是指8155的某一I/O口的地址,具体端口地址分配是:AD7AD6AD5AD4AD3AD2AD1AD0I/O端口╳╳╳╳╳000命令/状态口╳╳╳╳╳001A口╳╳╳╳╳010B口╳╳╳╳╳011C口╳╳╳╳╳100计数器低8位╳╳╳╳╳101计数器高6位8155的RAM和I/O口地址分配
3.8155I/O口的工作方式1)基本I/O两种工作方式与8255类似。2)选通I/O4.8155的命令/状态字8155命令字含义
PAPBPC1PC2IEAIEBTM1TM2PB、PA—A口、B口数据传送方向0—输入1—输出00—C口输入,A、B口基本I/O方式11—C口输出,A、B口基本I/O方式01—PC3-PC5输出,A口选通方式,B口基本I/O方式10—A、B口选通方式PC2、PC1—C口数据传送方向及AB口工作方式IEA、IEB—A、B口中断允许控制0—禁止1—允许TM1、TM2—定时器/计数器控制00空操作01停止定时器10记满回零停止计数11启动D0(INTRA):A口是否有中断请求D1(ABF):A口缓冲器满/空D2(INTEA):A口中断是否允许D3(INTRB):B口是否有中断请求D4(BBF):B口缓冲器满/空D5(INTEB):B口中断是否允许D6(TIMER):定时器溢出中断D1D2D3D4D5D6×D08155内部有一个14位减法计数器使用定时器前要先装入“时间常数”----14位二进制数。其格式为:5.8155定时器/计数器高6位计数值低8位计数值定时器方式M2M100单方波01连续方波单脉冲连续脉冲8155定时器编程方式及相应的输出波形M2M1方式定时器输出波形00110101单方波连续方波单脉冲连续脉冲三.8155的接口电路及应用80318155RESETRDWRALEP2.1P2.2P0.0P0.1P0.2P.03P0.4P0.5P0.6P0.7RESETRDWRALEIO/MCEAD0AD1AD2AD3AD4AD5AD6AD7口APA0~PA7口BPB0~PB7PC0~PC5口C图7-25例1设8155与单片机连接电路如图7-25,现要求其A、C口为基本输入方式,B口为基本输出方式,定时器为连续方波发生器,对输入脉冲进行24分频,编制初始化程序段。解:首先分析各端口地址命令状态口地址为0200HA口地址为0201HB口地址为0202HC口地址为0203H
定时器低8位地址0204H
定时器高6位地址0205H8155的控制字为0C2H:PAPBPC1PC2IEAIEBTM1TM211000010MOVDPTR,#0204HMOVA,#18HMOVX@DPTR,AINCDPTR24分频即计数初值为24(0000000011000B=18H)加上定时计数控制01(连续方波),则送往定时计数器的时间常数及定时控制字应为
0100000000011000B=4018HMOVA,#40HMOVX@DPTR,AMOVDPTR,#0200HMOVA,#0C2HMOVX@DPTR,A例2采用图7.25所示的电路,从8155的A中输入数据,并进行判断:若不为0,则将该数据存入8155的RAM中,同时从B口输出,并将PC0置“1”;若为0,则停止输入数据,同时将PC0清“0”,试编写程序。MOVDPTR,#0200H;指向命令端口MOVA,,#0EH;A、B口为基本输入输出,C口输出MOVX@DPTR,AMOVR0,#00HMOVR1,#00HLP1:MOVDPTR,#0201;A口MOVXA,@DPTRJZLP3MOVX@R0,A;存入RAM单元INCR0INCDPTR;指向B口MOVX@DPTR,AINCDPTR;指向C口MOVXA,@DPTR;??SETBACC.0MOVX@DPTR,ADJNZR1,LP1LP2:SJMP$LP3:MOVDPTR,#0203HMOVX@DPTR,ASJMPLP27.4管理功能部件的扩展7.4.1键盘接口
键盘实际上是由排列成矩阵形式的一系列按键开关组成,用户通过键盘可以向CPU输入数据、地址和命令。键盘按其结构形式可分为:编码式键盘和非编码式键盘两类。单片机系统中普遍使用非编码式键盘,这类键盘主要解决以下几个问题:
①键的识别;
②如何消除键的抖动;
③键的保护。
1.非编码式键盘工作原理
非编码式键盘识别按键的方法有两种:一是行扫描法,二是线反转法。
1)行扫描法通过行线发出低电平信号,如果该行线所连接的键没有按下的话,则列线所接的端口得到的是全“1”信号,如果有键按下的话,则得到非全“1”信号。为了防止双键或多键同时按下,往往从第0行一直扫描到最后1行,若只发现1个闭合键,则为有效键,否则全部作废。找到闭合键后,读入相应的键值,再转至相应的键处理程序。
2)线反转法线反转法也是识别闭合键的一种常用方法,该法比行扫描速度快,但在硬件上要求行线与列线外接上拉电阻。先将行线作为输出线,列线作为输入线,行线输出全“0”信号,读入列线的值,然后将行线和列线的输入输出关系互换,并且将刚才读到的列线值从列线所接的端口输出,再读取行线的输入值。那么在闭合键所在的行线上值必为0。这样,当一个键被按下时,必定可读到一对唯一的行列值。
2.键盘接口电路图7.26采用8155的键盘接口电路
下面的程序是用行扫描法进行键扫描的程序,其中KS1为判键闭合的子程序。有键闭合时键值存入20H单元和A中。DIR为数码显示器扫描显示子程序,执行一遍的时间约6ms。程序执行后,若键闭合,键值存入A中,键值的计算公式是:键值=行号×4+列号;若无键闭合,则A中存入标志FFH。KEY1:LCALLKS1;检查有无闭合键?
JNZLK1;(A)=0,有键闭合则转
LJMPLK8;无闭合键则返回LK1:LCALLDIR;延时12ms
LCALLDIR;清抖
LCALLKS1;再检查有键闭合否?
JNZLK2;有键闭合则转
LJMPLK8;无键闭合则返回LK2:MOVR3,#00H;行号初值送R3
MOVR2,#FEH;行扫描初值送R2
LK3:MOVDPTR,#0101H;指向8155口AMOVA,R2;行扫描值送A
MOVX@DPTR,A;扫描1行
INCDPTR
INCDPTR;指向8155口C
MOVXA,@DPTR;读入列值
ANLA,#0FH;保留低4位
MOVR4,A;暂存列值
CJNZA,#0FH,LK4;列值非全“1”则转
MOVA,R2;行扫描值送AJNBACC.7,LK8;扫至最后一行则转RLA;未扫完,则移至下一行MOVR2,A;行值存入R2中INCR3;行号加1
SJMPLK3;转至扫描下一行LK4:MOVA,R3;行号送入A
ADDA,R3;行号×2
MOVR5,A
ADDA,R5;行号×4
MOVR5,A;存入R5中
MOVA,R4;列值送A
LK5:RRCA;右移一位
JNCLK6;该位为0则转
INCR5;列号加1
SJMPLK5;列号未判完则继续LK6:MOV20H,R5;存键值LK7:LCALLDIR;扫描一遍显示器
LCALLKS1;发扫描信号
JNZLK7;键未释放等待
LCALLDIR;键已释放
LCALLDIR;延时12ms,清抖
MOVA,20H;键值存入A中KND:RETLK8:MOVA,#FFH;无键标志FFH存入A中
RET
KS1:MOVDPTR,#0101H;判键子程序
MOVA,#00H;全扫描信号
MOVX@DPTR,A;发全扫描信号
INCDPTR
INCDPTR;指向8155口C
MOVXA,@DPTR;读入列值
ANLA,#0FH;保留低4位
ORLA,#F0H;高4位取“1”
CPLA ;取反,无键按下则全“0”
RET7.4.2LED显示器接口1.LED显示器结构与原理图7.277段LED数码显示器各段码位的对应关系如下:
共阴共阳0:00111111B3FHC0H1:00000110B06HF9H……A:01110111B77H88H表7.8十六进制数及空白与P的显示段码
用户在使用时,应先将待显示数据转换成相应段显码后再送显示器,常通过查表的形式取得段显码。
静态显示:各显示位同时选通,每一位显示器都需要8位数据线提供相应位的段显码,6位LED显示器共需48根数据线。通过8255A连接的3位LED静态显示器
优点:显示无闪烁,效果好,编程简单
缺点:硬件开销大
动态显示:各位依次轮流选通(位扫描)
,每选通一位时,送入该位的段显码,延时1-2ms,再选通下一位,送下一位的段显码,依此类推。利用眼睛的视觉暂留。动态显示有闪烁,成本低,常常采用动态显示。不管是静态显示还是动态显示,为了得到较好的显示效果,一般要加驱动电路.2.LED显示器接口电路图7.286位动态显示器接口
图7.29显示子程序流程图8031RAM79H-7EH中存放的6位待显示数据编程从显示器上显示出来。分析:显示接口8155A口:输出,依次送位选信号。B口:输出,依次送出各位的段显码。显示子程序清单如下:(设初始化程序已完成)
DIR:MOVR0,#79H;显示缓冲区首址送R0
MOVR3,#01H;位扫描,使显示器最左边位亮
MOVA,R3
LD0:MOVDPTR,#0101H;扫描值送PA口
MOVX@DPTR,A
INCDPTR;指向PB口
MOVA,@R0;取显示数据
ADDA,#12H;加上偏移量
MOVCA,@A+PC;取出段显码
MOVX@DPTR,A;送出显示
ACALLDL1 ;延时2ms
INCR0 ;缓冲区地址加1
MOVA,R3;
JBACC.5,LD1 ;扫到第6个显示位了吗?
RLA ;没有,R3左环移一位,扫描下一个显示位
MOVR3,A
AJMPLD0
LD1:RET
DSEG:DB3FH,06H,5BH,4FH,66H,6DH;显示段码表DSEG1:DB7DH,07H,7FH,6FH,77H,7CHDSEG2:DB39H,5EH,79H,71H,73H,3EH
DSEG3:DB31H,61H,1CH,23H,40H,03H
DSEG4:DB18H,00H,00H,00H
DL1:MOVR7,#02H;延时子程序DL:MOVR6,#0FFH
DL6:DJNZR6,DL6
DJNZR7,DL
RET7.4.3键盘显示器接口82798279是专用键盘/显示器控制芯片,能对显示器及键盘矩阵进行自动扫描,能识别键盘上按下键的键号;可充分提高CPU的工作效率。8279与MCS-51接口方便,由它构成的标准键盘/显示器接口在微机应用系统中使用越来越广泛。前面的按键识别程序最大的缺点:等待按键时,CPU不能干其它工作,效率低。8279的按键处理可按中断方式工作。
1.8279的组成及引脚8279芯片有40条引脚,由单一+5V电源供电。它主要由以下几部分组成:(1)I/O控制线和数据缓冲器:RD,WR,CS,地址线A0,由片选线和地址线共同决定8279在系统中的地址,8279在系统中仅占用两个端口地址。A0=0时,选中8279的数据端口;A0=1时,选中8279的命令/状态端口。数据缓冲器:8279通过数据缓冲器与CPU交换数据.(2)控制和定时寄存器及定时控制部分:控制寄存器:接收CPU送来的命令字,按照命令字中的要求,组成指定的工作方式,并控制系统按指定的方式工作。定时控制部分:由于8279内部有很多时序电路,因此必须要提供相应的时钟,8279内部时序电路所需时钟频率为100KHz,必须由外部(CLK引脚)接入,若接入信号频率大于100KHz,则必需对其进行分频,定时控制部分提供分频电路,按用户设定的分频值(2-31)对接入时钟分频。(3)扫描计数器:用来为显示器和键盘提供扫描信号,它有两种工作方式:编码方式:其输出端SL3SL2SL1SL0按0000—1111的规律变化,必须经过译码后方可提供给键盘或显示器作扫描线。译码方式:其输出端SL3SL2SL1SL0按1110-1101-1011-0111规律循环变化,可直接用作扫描信号。但只能提供四根扫描线。(4)回复缓冲器与键盘去抖动控制电路:来自RL0—RL7的输入信号(回复信号)送入回复缓冲器,由回复缓冲器保存并锁存。在键盘工作方式中,行扫描线由SL0—SL3提供,逐行扫描时,列线的状态将通过RL0—RL7送入回复缓冲器,当某一键按下时,回复缓冲器中必有一位为零,此时将自动启动去抖电路,延时10ms,再检查该键是否按下,若是,则将行线值、列线值加上移位、控制状态一起形成8位数据,送往8279内部的先进先出(FIFO)存储器,其格式为:CTRLSHIFT行线值列线值例如:用户系统中无CTRL和SHIFT键,按下第二行第三列的键,则系统存入FIFO中的数据为:00010011(5)FIFO(先进先出)寄存器和状态电路:FIFORAM是一个8*8位的RAM,可以存放8个键值,而其状态寄存器用来存放FIFORAM当前的状态,如是满、空、有几个数据等。(6)显示RAM和显示地址寄存器:显示RAM用来存放待显示数据的字符码,最多可以存放16个数据,在显示扫描线的配合下,自动轮流输出待显示数据到LED显示器。显示地址寄存器用来寄存由CPU进行读/写的显示RAM地址,它可以由命令设定。图7.308279的引脚图8279的外特性:D0-D7:CLK:RESET:CS:A0:RD,WR,IRQSL0-SL3RL0-RL7SHIFT,CTRLOUTA0(a)-OUTA3OUTB0-OUTB3(h)BD8279的命令字和状态字:8个命令字,1个状态字。命令字的高三位为标志位键盘及显示方式命令字:设置键盘及显示器的工作方式D4:=1,显示按左进方式;=0,显示按右进方式。D3:=0,显示8个字符;=1,显示16个字符。D2D1:=00,双键锁定扫描键盘。=01,N键轮回扫描键盘
=10,扫描传感矩阵;=11,选通输入方式。D0:=0:编码扫描=1:译码扫描。
时钟编程命令字:设定对CLK引脚的输入脉冲的分频值(2-31),0和1无意义。读FIFORAM命令字:8279有一个数据口,当CPU从8279端口读取数据时,数据来源有两个:一个是FIFORAM,另一个是显示RAM,到底读哪一个必须先发相应的命令。D4:=1,读出数据后,地址自动加1=0,读出数据后,地址不变。D2D1D0:仅用于传感器方式。读显示RAM命令字:D4:=1,读出数据后,地址自动加1=0,读出数据后,地址不变。D3D2D1D0:指定显示RAM的地址。写显示RAM命令字:虽然8279往数据端口写数据时,目的地只有显示RAM,但必须由该命令字指定显示RAM的地址。D4:=1,读出数据后,地址自动加1=0,读出数据后,地址不变。D3D2D1D0:指定显示RAM的地址。显示禁止写入/消隐命令字:用于OUTA0-OUTA3,OUTB0-OUTB3分别显示及写入情况。D3:=1,禁止写入A=0,允许写入AD2:=1,禁止写入B=0,允许写入BD1:=1,消隐A,=0,不消隐AD0:=1,消隐B,=0,不消隐B。清除命令字:D4:=1,允许清除显示RAM;=0,不允许清除D3D2:0×:显示RAM全清010:显示RAM全清成20H11:显示RAM全置1D1:=1,清空FIFORAMD0:=1,清空FIFORAM,并清显示RAM,按D3D2指出的格式清错误方式置位命令字:当8279被设置成N键轮回的工作方式时,如置D4=1,则当有多键同时按下时,则将状态字中的错误特征位S/E=1,向CPU申请中断,并禁止写入FIFORAM。8279的状态字:当从控制端口读取数据时,为状态字DU:=1,显示无效,显示RAM不可用。S/E:特殊工作方式下,有多键同时按下时,该位被置1O:=1,当FIFO满后,再往里面写入数据,则置该位为1U=1,FIFO为空F=1,FIFO为满NNN:FIFO中有几个数据。2.8279的接口电路与应用图7.318031与8279接口连接框图上述电路中,8279数据端口地址为:命令端口地址为:STRT1:MOVDPTR,#7FFFH;命令端口
MOVA,#0D1H;11010001,清显示RAM和FIFO
MOVX@DPTR,A
WAITD:MOVXA,@DPTR;读取状态字
JBACC.7,WAITD;等待清除完
MOVA,#2AH;设置分频数为10
MOVX@DPTR,A
MOVA,#08H;显示器左入,编码,双键锁定
MOVX@DPTR,AMOVR0,#30H;数据区初始化例:将内部RAM30H开始的16个数据送显示器显示,并读取16个键值,送入缓冲器(查询方式)。MOVR7,#10HMOVA,#90H;写显示RAM命令字MOVX@DPTR,AMOVDPTR,#7EFFHLOOP1:MOVA,@R0MOVX@DPTR,A;数据送入显示RAMINCR0DJNZR7,LOOP1MOVR0,#40HMOVR7,#10HLOOP2:MOVDPTR,#7FFFH;读8279状态LOOP3:MOVXA,@DPTRANLA,#0FHJZLOOP3MOVA,#40H;读FIFORAM命令字MOVX@DPTR,AMOVDPTR,#7EFFH;数据端口
MOVXA,@DPTR;读取键值
MOV@R0,AINCR0DJNZR7,LOOP1HERE:AJMPHERE7.5A/D和D/A接口功能的扩展
由于计算机本身只能处理数字量(二进制代码)。而在计算机应用领域中,特别是在实时控制系统中,常需要把外界连续变化的物理量(如温度、压力、流量、速度),变成数字量输入计算机进行加工、处理。反之,也需要把计算机计算结果的数字量转换成连续变化的模拟量输出,用以控制,调节某些执行机构,实现对被控对象的控制。这种把模拟量变成数字量和把数字量转换成模拟量,就称为模/数和数/模转换。实现这类转换的器件,就称为模/数(A/D)和数/模(D/A)转换器。7.5.1A/D转换器接口
1.概述
A/D转换器用以实现模拟量向数字量的转换。按转换原理可分为4种:双积分式、计数式、逐次逼近式以及并行式A/D转换器。逐次逼近式A/D转换器是一种速度较快,精度较高的转换器,其转换时间大约在几微秒到几百微秒之间。常用的这种芯片有:(1)ADC0801~ADC0805型8位MOS型A/D转换器;
(2)ADC0808/0809型8位MOS型A/D转换器;
(3)ADC0816/0817型8位MOS型A/D转换器;量化间隔和量化误差是A/D转换器的主要技术指标之一。
量化间隔由下式计算:
其中n为A/D转换器的位数。量化误差有两种表示方法:一种是绝对量化误差;另一种是相对量化误差。绝对量化误差相对量化误差2.典型A/D转换器芯片ADC0809简介
ADC0809是采用CMOS工艺制造的双列直插式单片8位A/D转换器。分辨率8位,精度7位,带8个模拟量输入通道,有通道地址译码锁存器,输出带三态数据锁存器。启动信号为脉冲启动方式,最大可调节误差为±1LSB,ADC0809内部没有时钟电路,故CLK时钟需由外部输入,fclk
允许范围为500kHz~1MHz,典型值为640kHz。每通道的转换需66~73个时钟脉冲,大约100~110μs。工作温度范围为-40℃~+85℃。功耗为15mW,输入电压范围为0~5V,单一+5V电源供电。图7.32ADC0809的内部结构图7.33ADC0809引脚图
IN0~IN7:8路模拟通道的输入端。D0~D7:8位数字量输出端。REF(+)、REF(-):正、负参考电压输入端。一般情况下REF(+)与VCC相连接,REF(-)与GND相连接CLK:时钟输入信号。START:转换启动信号,高电平有效。ADDA、ADDB、ADDC:模拟通道选择输入端。ALE:地址锁存信号。EOC:A/D转换结束信号,此信号常被用来作为中断请求信号。OE:允许输出信号。表7.9地址码与输入通道的对应关系
图7.34ADC0809时序图3、ADC0809与8031的接口电路A/D转换器与单片机接口具有软、硬件相依性。一般来说,A/D转换器与单片机的接口主要考虑的是地址线的连接、数字量输出线的连接、ADC启动方式、转换结束信号处理方法以及时钟的连接等。A/D转换器数字量输出线与单片机的连接方法与其内部结构有关。内部带有三态锁存数据输出缓冲器的ADC0809,可直接与单片机数据总线相连。还有,随着位数的不同,ADC与单片机的连接方法也不同。对于8位ADC,其数字输出线可与8位单片机数据线对应相接。对于8位以上的ADC,与8位单片机相接就不那么简单了,此时必须增加读取控制逻辑,把8位以上的数据分两次或多次读取。一个ADC开始转换时,必须加一个启动转换信号,这一启动信号要由单片机提供。对于脉冲启动型ADC0809,只要给其启动控
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论