版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1第9章 AT89S51单片机的I/O扩展29.3 扩展I/O接口芯片81C55的设计可编程的接口芯片81C55的结构和技术性能3图 8155的引脚图和结构框图CBAAD012PA021AD113PA122AD214PA223AD315PA324AD416PA425AD517PA526AD618PA627AD719PA728PB029CE8PB130RD9PB231WR10PB332IO/M7PB433ALE11PB534PB635PB736TIMEROUT6PC037PC138TIMERIN3PC239PC31PC42RESET4PC558155256字节静态RAM14位定时计数器TIMER
2、 INTIMER OUTVCC(5 V)VSS(GND)PA0PA7IO/MCEALERDWRRESETAD0AD7PB0PB7PC0PC74图 81C55和8051的接口电路80518155RSTRESETALEALERDRDWRWRP0AD0AD7CEIO/MP2.1P2.25 VPAPBPC8MOVX DPTR,A做片外RAM使用:CE=0,IO/M=0,片外RAMF900HF9FFH做扩展I/O口使用:CE=0,IO/M=1, 命令/状态寄存器:FD00H PA: FD01H PB:FD02H PC:FD03H5根据上述、的连接关系,可以确定地址如下: A15 A14 A13 A12
3、A11 A10 A9 A8 P2.7 P2.6 P2.5 P2.4 2.3 P2.2 P2.1 P2.0RAM: MIO/CE0 08155I/O口: 1 0F9FD6 此时,8155内部RAM的地址范围为:F900HF9FFH,8155各端口的地址(设无关位为1,这些地址都不是惟一的)为: 控制字/状态字口 FD00H 控制字只能写,状态字只读 A口 FD01H B口 FD02H C口 FD03H 计数器低字节 FD04H 计数器高字节 FD05H7 8155的控制字 TM1TM2IEBIEAPC2 PC1PAPAPBA口方式B口方式B口A口计数器方式00:空操作01:停止计数10:计满后停
4、止11:开始计数0:输入1:输出0:禁止中断1:允许中断00110110方式1:A、B 口基本 I/O ; C口输入方式2:A、B 口基本 I/O ; C口输出方式3:A口选通 I/O , B口基本 I/O方式4:A , B口选通 I/O设置8155工作方式8在实训电路板中,扩展了8155,用于连接8个LED显示和键盘,A、B口为基本输出方式,C口为基本输入方式,因此编写如下程序: MOV DPTR,#CWR;设CWR为命令寄存器的地址 MOV A,#03H ;A、B口为基本输出方式,C口为基本输入方式 MOVX DPTR,A设置设置8155工作方式示例:工作方式示例:9表表9-3 C9-3
5、C口在两种口在两种I/OI/O工作方式下各位定义工作方式下各位定义 10C口在AB口选通方式下的功能 在输入操作时,STB是外设送来的选通信号,STB=0时,数据装入8155,使得ABF=1(8155缓冲器已满)。当STB由0变1,向CPU请求中断,CPU响应中断,开始读取输入数据,(RD出现下降沿),AINTR恢复为0。RD=1,ABF恢复为0,结束一次数据输入。 在输出操作时,STB是外设送来的应答信号,当外设接收并处理完数据后,发STB负脉冲,STB后沿,使AINTR=1,向CPU申请中断,CPU响应中断后,将数据送到8155,使ABF=1,通知外设接收数据,外设接收了数据后再以STB信
6、号来应答。11图8.22 8155的状态字A口中断请求标志: 0:无;1:有A口缓冲器: 0:空;1:满A口中断允许: 0:禁止;1:允许B口中断请求标志: 0:无;1:有B口缓冲器: 0:空;1:满B口中断允许: 0:禁止;1:允许定时器中断标志:1:有定时器溢出中断0:读状态字后或硬件复位后INTEBTIMERBBFINTRBINTEAINTRAABF123. 3. 内部定时器内部定时器/ /计数器及使用计数器及使用 14 14位的减位的减1 1定时器定时器/ /计数器计数器,计数长度计数长度和和计数方式计数方式由写入计数寄存器的控制字来确定。由写入计数寄存器的控制字来确定。计数器的两个寄
7、存器的格式如图计数器的两个寄存器的格式如图9-169-16。13T13T13 T0:T0:计数器长度计数器长度M2M2、M1:M1:设置定时器的设置定时器的4 4种工作方式种工作方式4 4种工作方式及计数到相应输出波形种工作方式及计数到相应输出波形如图如图9-179-17。使用时,先把计数长度和输出方式装入定时计数器的2个字节,计数长度23FFFH之间的任意值。然后通过命令寄存器的最高位(TM2、TM1)控制计数器的启动和停止。以计数值8为例,所谓单次方波是从启动计数开始,前4个计数输入为1,后4个计数输入为0,若计数值为奇数,则1电平比0电平多一个。149.3.3 MCS-519.3.3 M
8、CS-51与与8155H8155H接口及软件编程接口及软件编程1.MCS-511.MCS-51与与8155H8155H的硬件接口电路的硬件接口电路152. 8155H2. 8155H的编程举例的编程举例8155H8155H( (1) 1) 初始化程序设计初始化程序设计例例9-39-3 若若A A口定义为基本输入方式,口定义为基本输入方式,B B口定义为基本输出方口定义为基本输出方 式,对输入脉冲进行式,对输入脉冲进行2424分频,初始化程序如下:分频,初始化程序如下:START:MOV DPTR, START:MOV DPTR, 7F04H 7F04H ;指针指向定时器低;指针指向定时器低8
9、8位位MOV A,MOV A,18H18H ;计数初值;计数初值2424送送A,A, MOVX DPTR,AMOVX DPTR,A ;计数初值低;计数初值低8 8位装入定时器位装入定时器INC DPTR INC DPTR ;指针指向定时器高;指针指向定时器高8 8位位MOV A,MOV A,40H 40H ;设定时器连续方波输出;设定时器连续方波输出MOVX DPTR,AMOVX DPTR,A ;计数初值高;计数初值高6 6位装入定时器位装入定时器MOV DPTR,MOV DPTR,7F00H 7F00H ;指向命令;指向命令/ /状态口状态口MOV A,#0C2HMOV A,#0C2H ;设
10、定命令控制字;设定命令控制字MOVX DPTR,AMOVX DPTR,A ;A A口输入,口输入,B B口输出口输出, ,开定时器开定时器169.4 9.4 用用74LSTTL74LSTTL电路扩展并行电路扩展并行I/OI/O口口 利用利用74LS27374LS273和和74LS24474LS244,将,将P0P0口扩展成简单的输入、口扩展成简单的输入、输出口的电路输出口的电路。 74LS273 74LS273输出端接输出端接8 8个个LEDLED发光二极管,以显示发光二极管,以显示8 8个按个按钮开关状态,某位低电平时二极管发光。钮开关状态,某位低电平时二极管发光。 74LS244 74LS
11、244是缓冲驱动器,扩展输入口,接是缓冲驱动器,扩展输入口,接8 8个按钮开个按钮开关。关。 74LS27374LS273和和74LS24474LS244的工作受的工作受80318031的的P2.0P2.0、RDRD* *、WRWR* *三条控制线控制。三条控制线控制。电路的工作原理如下电路的工作原理如下: : 当当P2.0=0,WRP2.0=0,WR* *=0(RD=0(RD* *= =) )选中写选中写74LS27374LS273, 80318031通过通过P0P0口输出数据到口输出数据到74LS27374LS273,;,; 当当P2.0=0,RDP2.0=0,RD* *=0(WR=0(W
12、R* *=1)=1)时选中读时选中读74LS244,74LS244, 某开某开关按下时则对应位输入为关按下时则对应位输入为“0”0”。1718例例9-69-6 编写程序把按钮开关状态通过图编写程序把按钮开关状态通过图9-209-20中的发中的发光二极管显示出来。光二极管显示出来。程序如下:程序如下:DDIS:DDIS: MOV DPTR,#0FEFFH MOV DPTR,#0FEFFH ;输入口地址;输入口地址DPTRDPTRLP:LP:MOVX A,DPTR MOVX A,DPTR ;按钮开关状态读入;按钮开关状态读入A A中中MOVX DPTR,AMOVX DPTR,A ;WR*为低,为低
13、,A中数据经中数据经74LS273口输出口输出SJMP LP SJMP LP ;反复连续执行;反复连续执行199.5 9.5 用用MCS-51MCS-51的串行口扩展并行口的串行口扩展并行口9.5.1 9.5.1 用用74LS16574LS165扩展并行输入口扩展并行输入口20例例9-7 9-7 从从1616位扩展口读入位扩展口读入5 5组组数据(每组二个字节),数据(每组二个字节),并把它们转存到内部并把它们转存到内部RAM 20HRAM 20H开始的单元中。开始的单元中。MOV R7,#05H MOV R7,#05H ;设置读入组数;设置读入组数MOV R0,#20H MOV R0,#20
14、H ;设置内部;设置内部RAMRAM数据区首址数据区首址START: CLR P1.0START: CLR P1.0;并行置入数据,;并行置入数据,S/LS/L* *=0=0 SETB P1.0 SETB P1.0;允许串行移位,;允许串行移位,S/LS/L* *=1=1 MOV R1,#02H MOV R1,#02H;设置每组字节数,即外扩;设置每组字节数,即外扩 ;74LS16574LS165的个数的个数RXDAT: MOV SCON,#10H RXDAT: MOV SCON,#10H ;设串口方式;设串口方式0 0,允许接收,启动,允许接收,启动WAIT: JNB RI,WAIT WAI
15、T: JNB RI,WAIT ;未接收完一帧,循环等待;未接收完一帧,循环等待CLR RICLR RI ;清;清RIRI标志,准备下次接收标志,准备下次接收21MOV A,SBUFMOV A,SBUF;读入数据;读入数据MOV R0,AMOV R0,A;送至;送至RAMRAM缓冲区缓冲区INC R0INC R0;指向下一个地址;指向下一个地址DJNZ R1,RXDATA DJNZ R1,RXDATA ;未读完一组数据,继续;未读完一组数据,继续DJNZ R7,STARTDJNZ R7,START;5 5组数据未读完重新并行置入组数据未读完重新并行置入 ;对数据进行处理;对数据进行处理229.5
16、.2 9.5.2 用用74LS16474LS164扩展并行输出口扩展并行输出口. .74LS16474LS164:8 8位串入并出移位寄存器。位串入并出移位寄存器。 图图9-229-22是是利用利用74LS16474LS164扩展二个扩展二个8 8位并行输出口位并行输出口的接的接口电路。口电路。23例例9-8 9-8 编写将内部编写将内部RAMRAM单元单元30H30H、31H31H的内容经串行口的内容经串行口 由由74LS16474LS164并行输出子程序。并行输出子程序。START: MOV R7,#02HSTART: MOV R7,#02H;设置要发送的字节个数;设置要发送的字节个数 M
17、OV R0,#30HMOV R0,#30H;设置地址指针;设置地址指针 MOV SCON,#00H MOV SCON,#00H ;设置串行口为方式;设置串行口为方式0 0SEND:SEND: MOV A,R0 MOV A,R0 MOV SBUF,A MOV SBUF,A ;启动串行口发送过程;启动串行口发送过程WAIT:WAIT: JNB TI,WAIT JNB TI,WAIT ;1 1帧数据未发完,循环等待帧数据未发完,循环等待 CLR TICLR TI INC R0 INC R0 ;取下一个数;取下一个数 DJNZ R7,SENDDJNZ R7,SEND ;未完,发完从子程序返回;未完,发
18、完从子程序返回 RETRET249.6 用用I/O口控制的声音报警接口口控制的声音报警接口当单片机测控系统发生故障或处于某种紧急状态时,单片机系统应能发发出提醒出提醒人们警觉的声音报警声音报警。用I/O口很容易实现该功能。9.6.1 蜂鸣音报警接口蜂鸣音报警接口购买市售的压电式蜂鸣器,用一根I/O口线驱动蜂鸣器发声。约需10mA的驱动电流,可用7406或7407低电平驱动,如图图9-23所示所示,也可以用一个晶体管驱动,如图图9-24所示所示。 图图9-23 通过74LS06 来驱动蜂鸣器的报警电路25 图图9-24 使用三极管驱动的蜂鸣器报警电路在在图图9-23中中,P1.7接驱动器的输入端。当输出高电平时输出高电平时,7406的输出为低电平,使压电蜂鸣器两加上近5V的直流电压,由压电
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论