单片机原理及应用第2版张兰红第5章并行口及应用.pptx
- 文档编号:12088286
- 上传时间:2023-06-04
- 格式:PPTX
- 页数:37
- 大小:1.79MB
单片机原理及应用第2版张兰红第5章并行口及应用.pptx
《单片机原理及应用第2版张兰红第5章并行口及应用.pptx》由会员分享,可在线阅读,更多相关《单片机原理及应用第2版张兰红第5章并行口及应用.pptx(37页珍藏版)》请在冰点文库上搜索。
10:
33,1,第5章并行口及应用,3.7,10:
33,2,5.180C51系列单片机内部并行口的结构,80C51系列单片机内部有4个8位双向的输入/输出口,分别为P0、Pl、P2和P3口。
这4个端口的每一位都可以作为双向通用I/O口使用。
在具有片外扩展存储器的系统中,P2口作为高8位地址线,P0口分时作为低8位地址线和双向数据总线。
80C51单片机4个I/O口在结构上是基本相同的,但又各有特点。
10:
33,3,多路开关功能:
用于控制选通I/O方式还是地址/数据输出方式方式控制:
由内部控制信号产生,数据输出锁存器,用于数据位的锁存,两个三态的数据输入缓冲器(BUF1和BUF2)。
推拉式I/O驱动器:
由两只场效应管(FET)组成,上面的场效应管构成上拉电路。
5.5.1P0端口,Q,Q,D,C,Vcc,控制,AD0,P0R1,P0R2,D0,P0W,P0口1位的内部结构,读锁存器,读引脚,锁存器,内部总线,写锁存器,地址/数据,P0.0,多路开关,1,0,字节地址80H,位地址80H87H。
10:
33,4,说明:
1、当CPU发出的控制信号为0时,P0口做双向I/O口,为漏极开路(三态)2、当CPU发出的控制信号为1时,P0口为地址/数据复用总线(用于口扩展),5.5.1P0端口,10:
33,5,5.5.1P0端口,Q,Q,D,C,Vcc,控制,AD0,P0R1,P0R2,D0,P0W,P0口内部结构,读引脚,锁存器,内部总线,写锁存器,地址/数据,P00,多路开关,1,0,3、P0作输入/输出口的使用
(1)P0作输出口使用来自CPU的“写入”脉冲加在D锁存器的C端,内部总线上的数据写入D锁存器,并向端口引脚P0.x输出。
注意:
由于输出电路是漏极开路(因为这时上拉场效应管截止),必须外接上拉电阻才能有高电平输出。
读锁存器,10:
33,6,5.5.1P0端口,Q,Q,D,C,Vcc,控制,AD0,P0R1,P0R2,D0,P0W,P0口内部结构,读引脚,锁存器,内部总线,写锁存器,地址/数据,P00,多路开关,1,0,3、P0作输入/输出口的使用
(2)P0作输入口使用区分“读引脚”和“读锁存器”。
“读引脚”信号把下方缓冲器打开,引脚上的状态经缓冲器读入内部总线;,读锁存器,10:
33,7,5.5.1P0端口,Q,Q,D,C,Vcc,控制,AD0,P0R1,P0R2,D0,P0W,P0口内部结构,读引脚,锁存器,内部总线,写锁存器,地址/数据,P00,多路开关,1,0,3、P0作输入/输出口的使用
(2)P0作输入口使用区分“读引脚”和“读锁存器”。
“读引脚”信号把下方缓冲器打开,引脚上的状态经缓冲器读入内部总线;“读锁存器”信号打开上面的缓冲器把锁存器Q端的状态读入内部总线。
读锁存器,执行下列指令时均为读锁存器操作。
ANLP0,data;(P0)(P0)dataORLP0,data;(P0)(P0)data;XRLP0,A;(P0)(P0)(A)INCP0;(P0)(P0)+1,10:
33,8,5.1.2P1端口,P1口内部结构如下图所示。
输出部分有内部上拉电阻R*约为20K。
其他部分与P0端口使用相类似(读引脚时先写入1)。
写数据,读端口,字节地址90H,位地址90H97H。
10:
33,9,P1口只作通用的I/O口使用,在电路结构上与P0口有两点区别:
(1)因为只传送数据,不再需要多路转接开关MUX。
(2)由于P1口用来传送数据,因此输出电路中有上拉电阻,这样电路的输出不是三态的,所以P1口是准双向口。
注意:
(1)P1口作为输出口使用时,外电路无需再接上拉电阻。
(2)P1口作为输入口使用时,应先向其锁存器先写入“1”,使输出驱动电路的FET截止。
10:
33,10,字节地址为A0H,位地址A0HA7H。
5.1.3P2端口,P2口的位结构的电路原理图,说明:
1、P2可以作为通用的I/O,也可以作为高8位地址输出输出。
2、当控制信号为1时P2口输出地址信息,此时单片机完成外部的取指操作或对外部数据存储器16位地址的读写操作。
3、当控制信号为0时,作为普通I/O口使用时用法和P1口类似。
10:
33,11,P3口的字节地址为B0H,位地址为B0HB7H。
5.1.4P3端口,图5-4P3口的位结构的电路原理,P3口有第二功能信号,且有输出和输入两类:
(1)作通用的I/O输出,“第二输出功能”线应保持高电平,与非门开通,使锁存器Q端输出畅通。
(2)作第二功能信号输出,锁存器预先置“1”,使与非门对“第二输出功能”信号的输出是畅通的。
10:
33,12,P3口的字节地址为B0H,位地址为B0HB7H。
5.1.4P3端口,图5-4P3口的位结构的电路原理,(3)作第二功能信号输入,在口线引脚的内部增加了一个缓冲器,输入的信号就从这个缓冲器的输出端取得。
而作为通用I/O输入,仍取自三态缓冲器的输出端。
P3口无论作哪种输入,锁存器输出和“第二输出功能”线都应保持高电平。
10:
33,13,表3-4P3口的第二功能定义口引脚第二功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INT0*(外部中断0)P3.3INT1*(外部中断1)P3.4T0(定时器0外部计数输入)P3.5T1(定时器1外部计数输入)P3.6WR*(外部数据存储器写选通)P3.7RD*(外部数据存储器读选通),10:
33,14,使用中应注意的问题:
(1)P0P3口都是并行I/O口,但P0口和P2口,还可用来构建系统的数据总线和地址总线,所以在电路中有一个MUX,以进行转换。
而P1口和P3口无构建系统的数据总线和地址总线的功能,因此,无需转接开关MUX。
由于P0口可作为地址/数据复用线使用,需传送系统的低8位地址和8位数据,因此MUX的一个输入端为“地址/数据”信号。
而P2口仅作为高位地址线使用,不涉及数据,所以MUX的一个输入信号为“地址”。
5.1.5P0P3端口功能总结,10:
33,15,
(2)在4个口中只有P0口是一个真正的双向口,P1P3口都是准双向口。
原因:
P0口作数据总线使用时,为保证数据正确传送,需解决芯片内外的隔离问题,即只有在数据传送时芯片内外才接通;不进行数据传送时,芯片内外应处于隔离状态。
为此,P0口的输出缓冲器应为三态门。
在P0口中输出三态门是由两只场效应管(FET)组成,所以是一个真正的双向口。
而P1P3口,上拉电阻代替P0口中的场效应管,输出缓冲器不是三态的准双向口。
(3)P3口的口线具有第二功能,为系统提供一些控制信号。
因此在P3口电路增加了第二功能控制逻辑。
这是P3口与其它各口的不同之处。
10:
33,16,图3-880C51单片机对外三总线构成,10:
33,17,5.280C51系列单片机并行口的应用,在单片机不外扩任何芯片的情况下,80C51系列单片机内部并行口可以作为输出口,直接与输出外设连接,常用的输出外设是发光二极管;80C51系列单片机内部并行口也可以作为输入口,直接与输入外设连接,常用的输入外设是开关。
10:
33,18,例5-1第二章2.3.2节对图2-30所示电路,已经编写了程序实现8个发光二极管单方向轮流点亮。
但程序是采用顺序结构编写的,比较长,要求采用模块化的方式重新编写。
解:
将延时程序编成子函数的形式。
用本征库函数_crol_来实现P1口数据的循环左移,实现发光二极管的轮流点亮。
程序流程图如图5-5所示:
图5-5流水灯单方向点亮的流程图,程序设计如下:
#include#include#defineucharunsignedcharvoiddelay_ms(ucharms);voidmain()ucharled;/设置变量led,作为P1口赋值的变量led=0xfe;/初值为11111110while
(1)P1=led;/led值送入P1口delay_ms(200);/延时200msled=_crol_(led,1);/led值循环左移1位voiddelay_ms(ucharms)/延时子程序,最长255msuchari;while(ms-)for(i=0;i124;i+);,10:
33,19,例5-2对图2-30所示电路,编写程序实现8个发光二极管左右来回循环滚动点亮。
解:
流水灯左右来回循环滚动点亮的流程图如图5-6所示。
图5-6流水灯左右来回循环滚动点亮的流程图,10:
33,20,例5-2程序设计如下:
#include#include#defineucharunsignedcharoiddelay_ms(ucharms);/延时子程序voidmain()ucharled,i;/设置变量led=0xfe;/初值为11111110for(i=0;i7;i+)P1=led;/led值送入P1口delay_ms(100);/延时100msled=_crol_(led,1);/led值循环左移1位for(i=0;i7;i+)P1=led;/led值送入P1口delay_ms(100);/延时100msled=_cror_(led,1);/led值循环右移1位,voiddelay_ms(ucharms)/延时子程序uchari;while(ms-)for(i=0;i124;i+);,10:
33,21,例5-3用AT89C51单片机控制四个按键K1到K4和四个发光二极管D1到D4,要求当按下K1或K2键时D1或D2点亮,松开时对应的发光二极管熄灭,当按下K3或K4后按下时,D3或D4不停地闪烁。
设计Proteus仿真电路,编写程序实现所要求的功能。
解:
Proteus仿真电路如图5-7所示。
图5-7Proteus仿真电路,10:
33,22,程序设计如下:
#include#defineucharunsignedchar#defineuintunsignedintsbitD1=P10;sbitD2=P11;sbitD3=P12;sbitD4=P13;sbitK1=P34;sbitK2=P35;sbitK3=P36;sbitK4=P37;voidDelayMS(uintx)/延时子程序uchart;while(x-)for(t=120;t0;t-);,voidmain()/主程序P1=0xff;/四个二极管暗while
(1)D1=K1;/D1反映K1开关的状态D2=K2;/D2反映K2开关的状态if(K3=0)/K3按下时,D3的状态不停地变反while(K3=0)D3=D3;if(K4=0)/K4按下时,D4的状态不停地变反while(K4=0)D4=D4;DelayMS(10);,10:
33,23,5.3七段数码管显示器接口,七段数码管是一种常用的数字显示元件,可以用来显示数字09及相关符号,它具有功耗低、亮度高、寿命长、尺寸小等优点,在家电及工业控制中有着广泛的应用。
10:
33,24,5.3.1七段数码管简介,外形:
由7个条状的发光二极管排列而成,可实现数字“09”及少量字符的显示。
为了显示小数点,增加了1个点状的发光二极管,因此数码管实际由8个LED组成,分别把这些发光二极管命名为“a、b、c、d、e、f、g、dp”,,10:
33,25,共阳极数码管是指将所有发光二极管的阳极接到一起,应用时,公共极COM应该接到+5V。
当某一字段发光二极管的阴极为低电平时,相应字段就点亮;当某一字段的阴极为高电平时,相应字段就不亮。
共阳极数码管的结构图如图5-8(c)所示。
10:
33,26,共阴极数码管是指将所有发光二极管的阴极接到一起,在应用时,公共极COM应该接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮;当某一字段的阳极为低电平时,相应字段就不亮。
共阴极数码管的结构图如图5-8(d)所示。
10:
33,27,一般称ag端电平的组合值为段码,也称字形码。
a字段与单片机数据线P0.0对应,b字段与P0.1对应依此类推。
如使用共阳极数码管,则某根数据线为1表示对应字段暗,数据为0表示对应字段亮;如使用共阴极数码管,某根数据线为1,则表示对应字段亮,数据为0表示对应字段暗。
如要显示“0”,共阳极数码管的字型编码应为:
11000000B(即C0H);共阴极数码管的字型编码应为:
00111111B(即3FH)。
依此类推,可求得数码管字形编码如表5-1所示。
(c)共阳极数码管(d)共阴极数码管,数码管要正常显示,就要用驱动电路来驱动数码管的各个字段,从而显示出要求的数字。
10:
33,28,表5-1LED显示器的字形编码表(段码表),10:
33,29,5.3.2LED显示器工作原理,N个LED显示块有N位位选线和8N根段码线。
4位LED显示器的结构原理图如图5-9所示。
图5-94位LED显示器的结构原理图,根据对段选线和位选线的控制方法的不同,LED显示器的显示方法有静态显示和动态显示两种。
10:
33,30,1.静态显示方式,各位的公共端(位选端)连接在一起(接地或+5V),每位的段码线(adp)分别与一个8位的锁存器输出相连,显示字符一确定,相应锁存器的段码输出将维持不变,直到送入另一个段码为止。
4位LED静态显示电路如图5-10所示。
图5-104位LED静态显示电路,10:
33,31,2.动态显示方式,动态显示是将所有数码管的8个段选码“a、b、c、d、e、f、g、dp”的同名端连在一起,另外为每个数码管的公共端COM增加位选通控制电路,位选通由各自独立的I/O线控制。
4位LED动态显示电路如图5-11所示。
图5-114位LED动态显示电路,10:
33,32,例5-4用AT89C51单片机驱动1个数码管,开始时显示0;以后每过1s,显示内容加1,显示内容从09不断循环,即实现1位秒表的功能。
试设计Proteus仿真电路,编写程序,并在Proteus仿真电路中验证。
解:
Proteus仿真电路如图5-12所示。
图5-121位秒表的仿真电路与效果图,分析:
1个数码管与单片机连接时,可以采用静态驱动方式,即将数码管的a、b、c、d、e、f、g端分别与一条I/O口线连接;也可以将它们与BCD码七段码译码器的输出端连接,而BCD码七段码译码器的输入端分别与一条I/O口线连接。
这里选择第一种方法。
考虑到单片机I/O口线的驱动能力,用74HC573作为驱动器。
图中的数码管为共阴极数码管,它与单片机P0口相连。
数码管的公共端接地,段码线分别接P1口的8个端口,P1口用4707的上拉排电阻接+5V。
10:
33,33,程序设计如下:
#include#include#defineucharunsignedchar#defineuintunsignedintucharcodeDSY_CODE=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/共阴极段码voidDelayMS(uintxms)/延时子程序uinti,j;for(i=xms;i0;i-)for(j=110;j0;j-);,voidmain()/主程序uchari=0;P0=0x00;/P0口开始输出00H,数码管暗while
(1)P0=DSY_CODEi;i=(i+1)%10;/*显示0-9*/DelayMS(880);/延时1s,为了实现09的循环显示,可以通过查表的方式,得到段码,然后再通过P1口送出,每隔1s循环一次,周而复始。
10:
33,34,例5-5用单片机设计099计数器,具体说,就是用手按动按键,每按一次,单片机计数一次,并实时将按键次数在两位数码管上显示出来。
试设计Proteus仿真电路,编写程序,并在Proteus仿真电路中验证。
解:
Proteus仿真电路如图5-13所示。
分析:
两位数码管与单片机相连时,可以采用静态显示方式,也可以采用动态显示方式。
这里采用动态显示方式,将两个数码管的段码连接到单片机的P0口,P0口通过470的上拉电阻接+5V,两个数码管的位选由P2.6和P2.7选中。
图5-13中数码管是共阴极的。
图5-13计数器的仿真电路与效果图,10:
33,35,程序设计如下:
#include#defineucharunsignedcharsbitkey=P30;sbitge=P27;sbitshi=P26;uchardd;/dd为显示的数字ucharf0;/f0为键按下过的标志uchartime=0,count=0;ucharcodedis=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/段码/*延时程序*/voiddelay(ucharN)uchari,j;for(i=0;iN;i+)for(j=0;j125;j+);,/*显示程序*/voiddisplay(void)P0=disdd%10;/显示个位ge=0;delay(3);ge=1;P0=disdd/10;/显示十位shi=0;delay(3);shi=1;,10:
33,36,/*主程序*/voidmain()dd=0;/开始显示的数字为0f0=1;/f0为标志位,若按下过键,f0=0,否则f0=1while
(1)while(key=1)/键未按下,显示display();if(f0=0)dd=dd+1;f0=1;while(key=0)/键按下,显示,标志f0=0display();f0=0;,10:
33,37,作业:
5.1,5.3,5.4,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 原理 应用 版张兰红第 并行口