并行接口精品课件_第1页
并行接口精品课件_第2页
并行接口精品课件_第3页
并行接口精品课件_第4页
并行接口精品课件_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

1、并行接口第1页,共51页,2022年,5月20日,7点41分,星期三单片机的并行接口P0P3 POP3端口的功能和内部结构 POP3端口的编程 用并行口设计LED数码显示和键盘电路 并行接口小结MCS-51单片机的中断系统 中断的基本概念 中断的系统结构 中断的响应过程 中断的的应用编程小结内容提要第2页,共51页,2022年,5月20日,7点41分,星期三5.1单片机的并行接口接口P0P3 计算机对外设进行数据操作时,外设的数据是不能直接连到CPU的数据线上的,必须进过接口。这是由于CPU的数据线是外设或存储器和CPU进行数据传输的唯一公共通道,为了使数据线的使用对象不产生使用总线的冲突,以

2、及协调传输速度,CPU和外设之间必须有接口电路,接口起着缓冲、锁存数据、地址译码、信息格式转换等功能第3页,共51页,2022年,5月20日,7点41分,星期三一、I/O端口的结构共有4个8位双向I/O口,共32口线。每位均有自己的锁存器(SFR),输出驱动器和输入缓冲器。第4页,共51页,2022年,5月20日,7点41分,星期三多路开关功能:用于控制选通I/O方式还是地址/数据输出方式方式控制:由内部控制信号产生输入锁存器两个输入缓冲器(BUF1和BUF2)推拉式I/O驱动器1. P0口位图内部结构BUF1BUF25、P0R2为读引脚信号,执行“MOV A,P0”时该信号有效6、读引脚(端

3、口)时,输出锁存器应为“1”说明:1、当控制信号为0时,P0口做双向I/O口,为漏极开路(三态)2、控制信号为1时,P0口为地址/数据复用总线(用于口扩展)3、P0W为端口输出写信号,用于锁存输出状态4、P0R1为读锁存器信号,执行“ANL P0,#0FH”时该信号有效QQDCVcc控制AD0P0R1 P0R2D0P0W图1、P0口内部结构读锁存器读引脚锁存器内部总线写锁存器地址/数据P00多路开关10bacdT1T2ABC第5页,共51页,2022年,5月20日,7点41分,星期三2. P1口内部结构P1口内部结构如图2所示输出部分有内部上拉电阻R*约为20K。其他部分与P0端口使用相类似(

4、读引脚时先写入1)。写数据读端口T1第6页,共51页,2022年,5月20日,7点41分,星期三 P1.0 T2引脚,定时/计数器2外部计数脉冲输入 P1.1 T2EX引脚,定时/计数器2触发和方向控制 P1.5 MOSI引脚,在系统编程数据输入 P1.6 MISO引脚,在系统编程数据输出 P1.7 SCK引脚,在系统编程时钟输入第7页,共51页,2022年,5月20日,7点41分,星期三3.P2口 内部上拉电阻的8位准双向并行I/O口,P2口的位结构比P1多了一个转换控制部分,当P2口作通用I/O口时,多路开关MUX倒向左;01ab第8页,共51页,2022年,5月20日,7点41分,星期三

5、 4.P3口 P3口为准双功能I/O口,内部结构中增加了第二输入/输出功能。abc第9页,共51页,2022年,5月20日,7点41分,星期三RD (外部数据存储器读选通信号输入) P3.7 WR (外部数据存储器写选通信号输入)P3.6 T1 (定时器1外部计数脉冲输入)P3.5 T0 (定时器0外部计数脉冲输入)P3.4 P3.3 P3.2 TXD (串行输出线)P3.1 RXD (串行输入线) P3.0 第 二 功 能 端口引脚 INT0(外部中断0输入线)INT1 (外部中断1输入线) 第10页,共51页,2022年,5月20日,7点41分,星期三归纳四个并行口使用的注意事项如下:1.

6、如果单片机内部有程序存贮器,不需要扩展外部存贮器和I/O接口,单片机的四个口均可作I/O口使用。2.四个口在作输入口使用时,均应先对其写“1”,以避免误读。3.P0口作I/O口使用时应外接10K的上拉电阻,其它口则可不必。4.P2可某几根线作地址使用时,剩下的线不能作I/O口线使用。5.P3口的某些口线作第二功能时,剩下的口线可以单独作I/O口线使用。第11页,共51页,2022年,5月20日,7点41分,星期三负载能力P0口:每位输出可驱动8个LS TTL电路;只在用作“地址/数据”总线是,才不需要外加上拉电阻,直接驱动MOS输入。P1P3口:每位可驱动3个LS TTL电路,不需要外加提升电

7、阻,可驱动MOS输入。第12页,共51页,2022年,5月20日,7点41分,星期三二、输入/输出指令1.input:MOVA,PxMOVRn,PxMOV Ri,PxMOVXA,RiMOVXA,DPTR产生RD信号第13页,共51页,2022年,5月20日,7点41分,星期三2.output:MOV Px, AMOV Px, RnMOV Px, RiMOV Px, #dataMOVX Ri, AMOVX DPTR, A3.接口到接口MOV P3,P1产生WR信号第14页,共51页,2022年,5月20日,7点41分,星期三4.读修改写指令对口锁存器进行操作前3种指令是读端口线指令,这里是读锁存

8、器内容。ANLP1,ACPLP3.0ORLP2,AINCP2XRLP3,ADEC P1JBCP1.1,LOOPDJNZP3,LOOPMOVP1.1CCLRP1.1SETBP1.0第15页,共51页,2022年,5月20日,7点41分,星期三5.1.2 编程举例 下面举例说明端口的输入、输出功能,其他功能的应用实例在后面章节说明。例5-1.设计一电路,监视某开关K,用发光二极管LED显示开关状态,如果开关合上,LED 亮、 开关打开,LED熄灭。 分析:设计电路如图5. 2如示。开关接在P1.1口线,LED接P1.0口线,当开关断开时,P1.1为+5V,对应数字量为“1”,开 关合上时P1.1电

9、平为0V,对应数字量为“0”,这样就可以用JB指令对开关状态进行检测 。第16页,共51页,2022年,5月20日,7点41分,星期三 LED正偏时才能发亮,按电路接法,当P1.0输出“1”,LED正偏而发亮,当P1.0 输出“0” ,LED 的两端电压为 0 而熄灭。 LED+5VVcc-EARST10uF 1KP1.089S51P1.11K30P30PXTAL1XTAL2GND89C51+5VVcc-EARST10uF 1KP1.089S51+5VP1.11K30P30PXTAL1XTAL2GND89C51K第17页,共51页,2022年,5月20日,7点41分,星期三编程如下: CLR

10、P1.0 ;使发光二极管灭AGA:SETB P1.1 ;先对P1口写入“1” JB P1.1,LIG ;开关开,转LIG SETB P1.0 ;开关合上,二极管亮 SJMP AGALIG: CLR P1.0 ;开关开,二极管灭 SJMP AGA第18页,共51页,2022年,5月20日,7点41分,星期三+5VP1.0LED 在上述电路图中二极管亮度不够,按下面两种电路接法,增加了驱动能力,二极管更亮些。接成灌电流形式:P1.0+5VLED1加驱动电路:第19页,共51页,2022年,5月20日,7点41分,星期三例5-2.在下图中P1.4P1.7接四个发光二极管LED,P1.0P1.3接四个

11、开关,编程将开关的状态反映到发光二极管上。 111189C51P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7+5V+5V1K43304EA第20页,共51页,2022年,5月20日,7点41分,星期三 上述程序中每次读开关之前,输入位都先置“1”,保证了开关状态的正确读入。 编程如下: ORG 0000HABC: ORL P1, #0FH ;高四位灭,低四位送“1” MOV A, P1 ;读P1口引脚开关状态至A XRL P1,#0FH SWAP A ;低四位开关状态转换到高四位 MOV P1, A ;从P1口输出 SJMP ABC ;循环第21页,共51页,2022年,5月

12、20日,7点41分,星期三例3.用P1.0输出1KHz和500Hz的音频信号驱动扬声器,作报警信号,要求1KHz信号响100ms ,500Hz信号响200ms,交替进行,P1.7接一开关进行控制,当开关合上响报警信号,当开关断开告警信号停止,编出程序。 分析:500Hz信号周期为2ms,信号电平为每1ms变反1次。1KHz的信号周期为1ms,信号电平 每500S变反1次,编一个延时500S子程序,延时1ms只需调用2次。用R2控制音响时间长短,A作音响频率的交换控制的标志。A=FF时产生1KHz信号,A=0时产生500Hz信号。 第22页,共51页,2022年,5月20日,7点41分,星期三

13、P1.0 波 形 图 1ms 1ms100个T (变反200次即200ms)。500S500S100个T (变反200次即100ms)。TT第23页,共51页,2022年,5月20日,7点41分,星期三Y第24页,共51页,2022年,5月20日,7点41分,星期三 ORG 0000H CLR A ;A作1KHz,500Hz 转换控制BEG: JB P1.7, ;检测P1.7的开关状态 MOV R2, #200 ;开关闭合报警,R2控制音响时间DV: CPL P1.0 CJNE A, #0FFH, N1 ;AFFH,延时500S ACALL D500 ;A=FFH ; 延时1ms P1.0变反

14、N1: ACALL D500 DJNZ R2,DV CPL A SJMP BEGD500: MOV R7, #250 ;延时500 S子程序 DJNZ R7, RET END第25页,共51页,2022年,5月20日,7点41分,星期三5.1.3 用并行口设计LED数码显示器和键盘电路 键盘和显示器是单片机应用系统中常用的输入输出装置。LED数码显示器是常用的显示器之一,下面介绍用单片机并行口设计LED数码显示电路和键盘电路的方法。 第26页,共51页,2022年,5月20日,7点41分,星期三用并行口设计LED显示电路1. LED显示器及其原理 LED有着显示亮度高,响应速度快的特点,最常用

15、的是七段式LED显示器,又称数码管。 七段LED显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的亮暗组合成字符。常见LED的管脚排列见图4(a)。其中COM为公共点,根据内部发光二极管的接线 形式,可分成共阴极型图4(b)和共阳极型图4(c)。 第27页,共51页,2022年,5月20日,7点41分,星期三(a)(b)(c)图4abcdefgdpcdedp12345678910abfgcomcomabcefabcdefgdpcomcomdg第28页,共51页,2022年,5月20日,7点41分,星期三 LED数码管的ga七个发光二极管因加正电压而发亮,因加零电压而不能发亮,

16、不同亮暗的组合就能形成不同的字形,这种组合称之为字形码,显然共阳极和共阴极的字形码是不同的 ,其字形码见下表。LED数码管每段需1020ma的驱动电流,可用TTL或CMOS器件驱动。 字形码的控制输出可采用硬件译码方式,如采用BCD 7段译码/驱动器74LS48、74LS49、CD4511(共阴极)或74LS46、74LS47、CD4513(其阳极)也可用软件查表方式输出。 第29页,共51页,2022年,5月20日,7点41分,星期三显示字符段 符 号十六进制代码dpgfedcba共阴共阳0123456789ABCDEFHP0000000000000000000011111011110111

17、111000111011111011111010001010111111111011011011011110001101111111110100001111100111100100011011011111101011113FH06H5BH4FH66H6DH7DH07H7FH6FH77H7CH39H5EH79H71H76HF3HC0F9A4B0999282F880908883C6A18684FFBF第30页,共51页,2022年,5月20日,7点41分,星期三2.LED数码管的显示 数码管的显示有静态显示和动态显示。静态显示每一位都用各自的8位输出口控制,在显示某字段时,相应的断恒定地发光或不发

18、光。特点:编程简单,占用接口多,如果PO口和P2口要用作数据线和地址线,仅用单片机的并行口就只能接二个数码管。改进方法:采用串入并出移位寄存器(如74LS164)扩展I/0口, 使之静态显示. 动态显示采用各数码管循环轮流显示的方法,当循环显示频率较高时,利用人眼的暂留特性 ,看不出闪烁显示现象,这种显示需要一个接口完成字形码的输出(字形选择),另一接口完 成各数码管的轮流点亮(数位选择)。第31页,共51页,2022年,5月20日,7点41分,星期三例4-2利用AT89S51单片机的P0端口的P0.0P0.7连接到一个共阴数码管的ah的笔段上,数码管的公共端接地。在数码管上循环显示09数字,

19、时间间隔0.2秒。 第32页,共51页,2022年,5月20日,7点41分,星期三硬件设计:P0.0/AD0与a相连,P0.1/AD1与b相连,P0.2/AD2与c相连,P0.7/AD7与h相连。 由于显示的数字09的字形码没有规律可循,只能采用查表的方式来完成我们所需的要求了。这样我们按着数字09的顺序,把每个数字的笔段代码按顺序排好!建立的表格如下所示:TABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH 第33页,共51页,2022年,5月20日,7点41分,星期三第34页,共51页,2022年,5月20日,7点41分,星期三汇编程序 ORG 0S

20、TART:MOV R1,#00HNEXT:MOV A,R1MOV DPTR,#TABLEMOVC A,A+DPTRMOV P0,ALCALL DELAYINC R1CJNE R1,#10,NEXTLJMP STARTDELAY:MOV R5,#20D2:MOV R6,#20D1:MOV R7,#248DJNZ R7,$DJNZ R6,D1DJNZ R5,D2RETTABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHEND第35页,共51页,2022年,5月20日,7点41分,星期三C语言#include unsigned char code tabl

21、e=0 x3f,0 x06,0 x5b,0 x4f,0 x66, 0 x6d,0 x7d,0 x07,0 x7f,0 x6f;unsigned char dispcount;void delay02s(void) unsigned char i,j,k; for(i=20;i0;i-) for(j=20;j0;j-) for(k=248;k0;k-);void main(void) while(1) for(dispcount=0;dispcount10;dispcount+) P0=tabledispcount; delay02s(); 第36页,共51页,2022年,5月20日,7点41分

22、,星期三例4-3 图5是接有五个共阴极数码管的动态显示接口电路,用74LS373接成直通的方式作驱动 电路,阴极用非门74LS04反相门驱动,字形选择由P1口提供,位选择由P3口控制。 当P3.0P3.4轮流输出1时,五个数码管轮流显示。P1.7接开关,当开关打向位置“1”时, 显示“12345”字样,当开关打向“2”时,显示“HELLO”字样,程序清单如下: 第37页,共51页,2022年,5月20日,7点41分,星期三12第38页,共51页,2022年,5月20日,7点41分,星期三(1)动态扫描的方法采用各数码管循环轮流显示的方法,当循环显示频率较高时,利用人眼的暂留特性,看不出闪烁显示

23、现象,这种显示需要一个接口完成字型码的输出,另一接口完成各数码管轮流点亮(数位选择)。(2)对于显示的字型码数据,我们采用查表方法来完成。第39页,共51页,2022年,5月20日,7点41分,星期三开始K1按键识别成功否?置显示“12345”字形码首地址置显示“HELLO”字形码首地址置字形码偏移量和位选代码查表并送出显示延时2ms,并指向下一个偏移量5个数码管显示完否?YN第40页,共51页,2022年,5月20日,7点41分,星期三 用汇编语言编程 ORG 0000H MOV P3,#0 ;清显示TEST:SETB P1.7 JB P1.7,DIR1 ;检测开关 MOV DPTR,#TA

24、B 1 ; 开关置于1,12345字形表头地址 SJMP DIRDIR1: MOV DPTR,#TAB2 ; 开关置于2,“HELLO”字形表头DIR: MOV R0,#0 ;R0存字形表偏移量 MOV R1,#01 ;R1置数码表位选代码NEXT:MOV A,R0 MOVC A,A+DPTR ; 查字形码表1 MOV P1,A ;送P1口输出 第41页,共51页,2022年,5月20日,7点41分,星期三 MOV A,R1 MOV P3,A ;输出位选码 ACALL DAY ;延时 INC R0 ;指向下一位字形 RL A ;指向下一位 MOV R1,A CJNE R1,#20H,NEXT

25、;五个 数码管显示完? SJMP TESTDAY:MOV R6,#20 ; 延时20ms子程序DL2: MOV R7,#7DHDL1: NOP NOP DJNZ R7,DL1 DJNZ R6,DL2 RETTAB1:db 06H,5BH,4FH,66H,6DH ; “15”的字形码TAB2:db 78H,79H,38H,38H,3FH ; “HELLO”的字形码 END第42页,共51页,2022年,5月20日,7点41分,星期三 用C语言编程 #include #include unsigned char code table1=0 x06,0 x5b,0 x4f,0 x66,0 x6d;u

26、nsigned char code table2=0 x78,0 x79,0 x38,0 x38,0 x3f;unsigned char i;unsigned char a,b;unsigned char temp;void main(void) while(1) temp=0 x01; for(i=0;i5;i+) if(P1_7=1) P0=table1i; else P0=table2i; P3=temp;temp=temp0;a-) for(b=0 x7d;b0;b-) NOP; NOP; 第43页,共51页,2022年,5月20日,7点41分,星期三12第44页,共51页,2022年

27、,5月20日,7点41分,星期三(3)按键识别其实,作为一个按键从没有按下到按下以及释放是一个完整的过程,也就是说,当我们按下一个按键时,总希望某个命令只执行一次,而在按键按下的过程中,不要有干扰进来,因为,在按下的过程中,一旦有干扰过来,可能造成误触发过程,这并不是我们所想要的。因此在按键按下的时候,要把我们手上的干扰信号以及按键的机械接触等干扰信号给滤除掉,一般情况下,我们可以采用电容来滤除掉这些干扰信号,但实际上,会增加硬件成本及硬件电路的体积,这是我们不希望,总得有个办法解决这个问题,因此我们可以采用软件滤波的方法去除这些干扰信号,一般情况下,一个按键按下的时候,总是在按下的时刻存在着

28、一定的干扰信号,按下之后就基本上进入了稳定的状态。具体的一个按键从按下到释放的全过程的信号图如上图所示第45页,共51页,2022年,5月20日,7点41分,星期三从图中可以看出,我们在程序设计时,从按键被识别按下之后,延时5ms以上,从而避开了干扰信号区域,我们再来检测一次,看按键是否真得已经按下,若真得已经按下,这时肯定输出为低电平,若这时检测到的是高电平,证明刚才是由于干扰信号引起的误触发,CPU就认为是误触发信号而舍弃这次的按键识别过程。从而提高了系统的可靠性。第46页,共51页,2022年,5月20日,7点41分,星期三第47页,共51页,2022年,5月20日,7点41分,星期三例4-4 数码管静态显示,利用74LS164驱动电路显示099的数。第48页,共51页,2022年,

温馨提示

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

评论

0/150

提交评论