单片机的外围模块及其应用并行口及其应用_第1页
单片机的外围模块及其应用并行口及其应用_第2页
单片机的外围模块及其应用并行口及其应用_第3页
单片机的外围模块及其应用并行口及其应用_第4页
单片机的外围模块及其应用并行口及其应用_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

会计学1单片机的外围模块及其应用并行口及其应用并行I/O口

MCS-51共有4个8位的I/O口(P0、P1、P2、P3),以实现数据的并行输入/输出。定时/计数器

8051共有两个16位的定时/计数器,以实现定时或计数功能,并以其定时或计数结果对计算机进行控制。串行口

MCS-51单片机有一个全双工的串行口,以实现单片机和其它设备之间的串行数据传送。该串行口功能较强,既可作为全双工异步通信收发器使用,也可作为同步移位器使用。第1页/共59页5.1并行口及其应用51单片机有4个I/O端口,每个端口都是8位准双向口,共占32根引脚。每个端口都包括一个锁存器(即专用寄存器P0~P3)、一个输出驱动器和输入缓冲器。通常把4个端口笼统地表示为P0~P3。第2页/共59页I/O口引脚(1)P0口(P0.0~P0.7):作为普通I/O口使用,须外接上拉电阻;作为与外部传送数据的8位数据总线(D0~D7);作为扩展外部存储器时的低8位地址总线(A0~A7)。(2)P1口(P1.0~P1.7):作为普通I/O口使用,无须外接上拉电阻(80C52的P1.0和P1.1还具有特殊功能见表2-1)。第3页/共59页(3)P2口(P2.0~P2.7):作为普通I/O口使用,无须外接上拉电阻。作为扩展外部存储器时的高8位地址总线(A8~A15)。(4)P3口(P3.0~P3.7):作为普通I/O口使用,无须外接上拉电阻;每个引脚都具有第二功能。第4页/共59页51系列单片机的并行口,按其特性可分为以下类型:单一的准双向口;多种功能复用的准双向口;可作为地址总线输出口的准双向口;可作为地址/数据总线口的三态双向口。第5页/共59页锁存器QQD读锁存器写锁存器内部总线读引脚内部上拉电阻TVCC(a)单一功能准双向口第6页/共59页.锁存器QQD读锁存器写锁存器内部总线读引脚TVCC第二输入功能第二输出功能内部上拉电阻(b)多功能准双向口第7页/共59页锁存器QQD读锁存器写锁存器内部总线读引脚TVCC地址控制内部上拉电阻MUX(c)可作为地址总线口的准双向口P2第8页/共59页锁存器QQD读锁存器写锁存器内部总线读引脚T1T2VCCMUX地址/数据控制(d)可作为地址/数据总线口的三态双向口P0第9页/共59页读锁存器和读引脚指令当把P0~P3口作为输入引脚使用时,以I/O口作为源操作数的数据传送指令、算术/逻辑运算指令及位测试转移指令等均属读引脚指令。所有的“读—改—写”指令均读I/O口锁存器。第10页/共59页5.1.1P1口结构组成:它由一个输出锁存器、两个三态输入缓冲器和输出驱动电路组成----准双向口。功能:作为通用I/O使用。第11页/共59页图2‑5aP1口的口线逻辑电路图结构组成:它由一个输出锁存器、两个三态输入缓冲器和输出驱动电路组成----准双向口。第12页/共59页图2‑5aP1口的口线逻辑电路图P1口作输出口时,内部数据经过锁存器送到P1.0---P1.7上。由于内部有上拉电阻,所以P1口作输出口使用时,不用外接上拉电阻。第13页/共59页图2‑5aP1口的口线逻辑电路图P1口作输入口时,P1.0—P1.7上的信号经过缓冲器送到内部数据总线上。在读引脚之前,要先将锁存器置1,否则总是读到0。CPU对I/O口的读操作有2种:读引脚和读锁存器。第14页/共59页5.1.2P3口功能:它除了可作为通用I/O端口外,还具有第二功能。第15页/共59页图2‑5dP3口的口线逻辑电路图1.作为通用I/O口作为通用I/O口使用时,与P2口类似。此时第二输出功能控制信号为1。第16页/共59页图2‑5dP3口的口线逻辑电路图2.P3口第二功能此时CPU自动向锁存器写1,引脚部分输入(第二输出功能控制信号为1),部分输出(从第二输出功能输出信号)。第17页/共59页P3第二功能各引脚功能定义:P3.0:RXD串行口输入P3.1:TXD串行口输出P3.2:INT0外部中断0输入P3.3:INT1外部中断1输入P3.4:T0定时器0外部输入P3.5:T1定时器1外部输入P3.6:WR外部写控制P3.7:RD外部读控制第18页/共59页5.1.3P2口功能:作为通用I/O使用和高8位地址线。第19页/共59页图2‑5cP2口的口线逻辑电路图CPU发出控制电平“0”,使多路开关MUX倒向锁存器输出Q端,构成一个准双向口。其功能与P1相同。1.P2口作为普通I/O口第20页/共59页图2‑5cP2口的口线逻辑电路图CPU发出控制电平“1”,使多路开关MUX倒内部地址线。此时,P2输出高8位地址。

2.P2口作为地址总线第21页/共59页5.1.4P0口结构组成:它由一个输出锁存器,两个三态输入缓冲器,一个多路转换开关MUX,和输出驱动电路组成。功能:既可以作为通用I/O用,也可以作为地址/数据线用。第22页/共59页图2‑5bP0口的口线逻辑电路图结构组成:它由一个输出锁存器,两个三态输入缓冲器,一个多路转换开关MUX,和输出驱动电路组成。第23页/共59页图2‑5bP0口的口线逻辑电路图P0口作为通用I/O使用时,CPU发出控制电平“0”封锁“与”门,将输出上拉场效应管T1截止,多路开关MUX接通锁存器Q反端的输出通路。1.P0口作普通I/O使用第24页/共59页图2‑5bP0口的口线逻辑电路图P0口作为输出口使用时,

来自CPU的写脉冲加在D触发器的CP端,数据写入锁存器,并向端口引脚输出。P0口作输出口使用时,必须外接上拉电阻。

1.P0口作普通I/O使用第25页/共59页图2‑5bP0口的口线逻辑电路图P0口作输入口时,P0.0—P0.7上的信号经过缓冲器送到内部数据总线上。在读引脚之前,要先将锁存器置1,否则总是读到0。CPU对I/O口的读操作有2种:读引脚和读锁存器。1.P0口作普通I/O使用第26页/共59页图2‑5bP0口的口线逻辑电路图在系统扩展时,P0端口作为地址/数据总线使用时,分为:

输出地址/输出数据、输出地址/输入数据2.P0作为地址/数据总线第27页/共59页图2‑5bP0口的口线逻辑电路图P0引脚输出地址/输出数据:CPU发出控制电平“1”,打开“与”门,又使多路开关MUX把CPU的地址/数据总线与T2栅极反相接通,输出地址或数据。2.P0作为地址/数据总线第28页/共59页图2‑5bP0口的口线逻辑电路图P0引脚输出地址/输入数据:输入信号是从引脚通过输入缓冲器进入内部总线。此时,CPU自动使MUX向下,并向P0口写“1”,“读引脚”控制信号有效,下面的缓冲器打开,外部数据读入内部总线。2.P0作为地址/数据总线第29页/共59页5.1.5并行口的应用——晶闸管的接口和编程晶闸管接口硬件电路有过零检测电路和加热控制电路组成;通过控制导通角来控制加热功率。第30页/共59页晶闸管接口电路图(a)晶闸管加热电路(b)输出波形(c)过零电路第31页/共59页程序设计查询P3.2上负跳变的方法确定交流电进入正半周;通过延时决定导通角的方法实现对电热丝功率的控制;延时时间到,P1.0输出一正脉冲,可控硅导通,电阻丝开始加热。第32页/共59页

例5:查讯方式控制晶闸管导通角程序

#include"reg52.h"#defineucharunsignedchar#defineuintunsignedintsbit P1_0=P1^0;sbit P3_2=P3^2; void poiiu(uintx,uinty){

uinta; P1_0=0; while(1) { for(;P3_2==1;); 第33页/共59页 for(a=x;a>0;a--); P1_0=1; for(a=y;a>0;a--); P1_0=0; for(;P3_2==0;); }} 第34页/共59页voidmain(){ for(;;) { uinta,b; a=200; b=10;

poiiu(a,b); } }第35页/共59页5.1.6并行口的应用——拨码盘的接口和编程一、BCD拨码盘的构造拨码盘的结构和型号有多种,常用的为BCD拨码盘。BCD拨码盘具有0~0十个位置,可以通过齿轮型圆盘拨到所需的位置,每个位置都有相应的数字指示,一个拨码盘可以输入1位十进制,如果要输入4位十进制数据,需4个BCD拨码盘。第36页/共59页Ǿ表示插入控制线A与数据线不通;*表示输入控制线A与数据线接通。第37页/共59页

二、BCD码拨码盘的接口方法

图5-6二位BCD码的接口图5-74位BCD码的接口第38页/共59页

例5.6扫描法读4个BCD码拨码盘程序

#include"reg52.h" #defineucharunsignedchar #defineuintunsignedint uintinbcd() { uintx=0; uchar a,b,i; for(i=0,b=0x7f;i<4;i++) { P1=b; a=P1; a&=0xf;第39页/共59页 x=x*10+a; b>>=1; b|=0x80; } returnx; } voidmain() { for(;;) { uinty; y=inbcd(); } }第40页/共59页5.1.7并行口的应用——4X4键盘的接口和编程一、键盘工作原理

用于按键数目较多的场合,由行线和列线组成,按键位于行、列的交叉点上。 按键数目较多的场合,矩阵键盘与直接编码输入键盘相比,要节省很多的I/O口线。第41页/共59页行线X0~X3接P1.4~平P1.7;列线Y0~Y3接P1.0~P1.3。图5-94X4键盘结构和接口方法第42页/共59页二、键盘状态的判断

无键按下,该行线为高电平,当有键按下时,行线电平由列线的电平来决定。 由于行、列线为多键共用,各按键彼此将相互发生影响,必须将行、列线信号配合起来并作适当的处理,才能确定闭合键的位置。第43页/共59页三、闭合键建号的识别

1.逐行扫描法 识别键盘有无键被按下的方法,分两步进行: 第1步:识别键盘有无键按下; 把所有列线置0,检查各行线电平是否有变化,如有变化,说明有键按下,如无变化,则无键按下。 第2步:如有键被按下,识别出具体的按键。 上述方法称为扫描法,即先把某一列置低电平,其余各列为高电平,检查各行线电平的变化,如果某行线电平为低,可确定此行列交叉点处的按键被按下。第44页/共59页

2.行翻转法

第1步:列线输出为全低电平,则行线中电平由高变低的所在行为按键所在行。 第2步:行线输出为全低电平,则列线中电平由高变低所在列为按键所在列。 结合上述两步,可确定按键所在行和列。第45页/共59页把上两步得到的输入数据拼成一个字节数据作为键值,则键值和键号的对应关系如下表所示:表5-3键值表第46页/共59页四、键抖动及处理

在理想状态下,按键引脚电压变化如图5-9(a)所示。 实际上,在按键被按下或释放的瞬间,由于机械触点存在弹跳现象,实际按键电压波形如图5-9(b)所示,即机械按键在按下和释放瞬间存在抖动现象。 抖动时间的长短与按键的机械特性有关,一般在5~10ms之间,而按键稳定闭合期的长短与按键时间有关,从数百毫秒到数秒不等。第47页/共59页图5-9键按下和释放时行线电压波形

(a)理想状态下按键电压波形; (b)实际按键电压波形第48页/共59页如何消除按键的抖动 常用软件来消除按键抖动。 基本思想:检测到有键按下,延迟10~20ms(因为机械按键由按下到稳定闭合的时间为5~10ms)再去判别按键是否处于按下状态,并确定是哪一个按键被按下。第49页/共59页

例5.7行翻转法键输入程序设计

#include"reg52.h" #include“stdio.h” #defineucharunsignedchar #defineuintunsignedint ucharcodek_tab[]={0xee,0xed,0xeb,0xe7,0xde,0xdd,0xdb,0xd7, 0xbe,0xbd,0xbb,0xb7,0x7e,0x7d,0x7b,0x77}; ucharidataD_BUF[16];

ucharnkey_s0(uchary) { uchari,b;第50页/共59页

for(i=0;i<16;i++) { b=k_tab[i]; if(b==y) returni; } } ucharnkey() { uchara,b; P2=0xf0; a=P2; b=a; P2=0xf;第51页/共59页 a=P2; a|=b; b=nkey_s0(a); returnb; } bitkeys() { uchara; P2=0xf0; a=P2; if(a==0xf0) return1; else return0; }第52页/共59页

ucharkeyi() { uchara; uintx; for(;;) { if((keys())==0)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论