




已阅读5页,还剩151页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第章51系统的串行接口,本章内容,SingleChipMicrocomputer,7-1概述,7-4选学内容,7-2MCS-51的串行接口,7-3MCS-51单片机串行口的应用,7-1概述,当今社会已进入信息时代,网络成为当今科技发展的一大方向,计算机系统通过网络这一桥梁,在信息时代中发挥着越来越大的作用。在单片机的应用系统中,单机应用非常广泛,但在一些大型、智能化系统中,必须要由多个单片机协同工作才能完成任务,因此,它们之间的信息传递成为了一种必然。在学习单片机间的通讯之前,我们有必要对通信的基础知识有一些了解。,一、什么是串行通信?,串行通信和并行通信,并行通信,即数据的各位同时传送;,串行通信,即数据一位一位顺序传送。,二、串行通信的分类,异步(AsynchronousCommunication)异步是指收发双方时钟异步,即收方和发方的时钟各自独立,由起始位和结束位来实现收、发同步。允许5%的误差。(1)帧结构帧为收发双方传数据的基本单位其结构如图所示。由一个起始位“0”,58位数据(低位在前),再后为奇偶校验位和一个停止位“1”构成。,异步(AsynchronousCommunication),(2)特点利用起始位和结束位来实现收发同步帧间间隔随机位间隔固定每帧数据最多一个字节(3)错误检验方法:奇偶校验,串行通信的分类,同步(SynchronousCommunication)同步传送方式是一种连续传送方式,适合于大量数据的高速传送。收发双方的时钟实现同步。(1)帧结构(2)特点利用同步字符或同步时钟实现收、发同步每帧数据为一数据块,故传送速率较异步快同步时钟要求较严格(3)校验方法:CRC循环冗余校验,三、波特率(Baudrate),波特率是指串行通讯中数据传送的速率,即每秒种传送的数据传送的二进制位数。它指的是位与位之间的时间间隔。其单位为比特/秒,bps在异步通讯中,收发双方是通过设定相同的波特率、依靠起始位和结束位来实现数据的准确传送。例:设每秒传送120个字符,其帧结构为1个起始位,7个数据位,1位校验位和1位结束位,其波特率为:120字符/秒*10位/字符=1200bps,四、串行通信制式,单工(simplex)半双工(halfduplex)全双工(fullduplex),串行通信制式,数据只能单向流动,数据虽能双向通讯,但任一时刻仅能单向传送。,数据双向通讯,收、发各用一根信号线,可完全独立工作。,7-2MCS-51的串行接口,概述有一个可编程全双工串行通信接口(UART)(UniversalAsychronousReceiver/Transmitter)可同时发送、接收数据(Transmit/Receive)有四种工作方式,帧格式有8、10、11位。波特率(Baudrate)可设置波特率为每秒钟传送二进制数码的位数,也叫比特数,单位为b/s,即位/秒(bps)。,一、串行口的构成,串行口内部组成示意图如图所示,结构较为复杂,我们在使用时可将其抽象为三个可供软件直接访问的的特殊功能寄存器:PCON、SCON和SBUF。通过对它们的读写操作即可完全控制串行口。,构成,MCS-51串行接口寄存器,SBUF串行口数据缓冲器共两个:一个发送寄存器SBUF,一个接收SBUF,二者共用一个地址99H。它在物理上对应两个寄存器,发送寄存器和接收寄存器,由于它们并不在同一时刻使用,因此两个寄存器共用一个地址并不会发生冲突,通过指令来区别是发送还是接收。其中,接收寄存器采用双缓冲而发送寄存器采用单缓冲。SCON串行口控制寄存器。它用来定义串行口的工作方式及监视串行口的工作状态。PCON电源及波特率选择寄存器,PCON.7为SMOD,波特率加倍位,当SMOD=1时,波特率为SMOD=0时的两倍。PCON不能进行位寻址,可用ANLPCON,#7FH或ORLPCON,#80H来对其清零或置“1”。,只有该位有用,为1时,波特率2;为0时不变。,电源及波特率选择寄存器PCON,87H,串行口控制寄存器SCON,串行方式的定义,例:设串行口工作在方式1,允许接收,则指令为:MOVSCON,#01010000B,串行口的四种工作方式,方式的选择由SM1、SM0实现。四种方式的比较:,1、方式0,在此种方式下,串行口工作在移位寄存器方式,其波特率为fOSC/12,数据从RXD(P3.0)端移出,同步移位脉冲由TXD(P3.1)输出。发送、接收的数据为低位在前。(1)发送。执行MOVSBUF,A后,数据和同步时钟从串行口发出,发送结束后,必须由软件对TI清零。即:JNBTI,$CLRTI其时序如图所示:,(2)接收,REN=1且RI=0时,启动一个接收过程。数据从串行口输入,接收完毕后,RI=1,执行MOVA,SBUF后,数据进入CPU,要进行下一次接收,必须用软件对RI清零,SETBREN;MOVSCON,#10HJNBRI,$MOVA,SBUF其接收时序如下图所示:,接收时序,2、方式1,串行口工作在8位异步通讯接口方式。其一帧信息为10位,其中,8位数据位,一位起始位(0)和一位停止位(1)。TXD端为发送端而RXD为接收端,波特率可变。,(1)、方式1-发送,执行MOVSBUF,A后,数据从TXD输出,发送完一帧信息后,置TI=1,再次发送前,须对TI清零。其时序图如下图所示:,(2)方式1-接收,由于方式1发送时不传送同步时钟,因而接收端在接收数据是通过采样来实现的。其采样频率为波特率的16倍,利用三中取二原则来确认接收数据。接收过程在REN置1的前提下,从搜索到起始位开始。直到9位接收完毕(含1位停止位)。在9位接收完毕后,只有:RI=0、SM2=0或接收到的停止位为1,才将8位数据送入SBUF,停止位送RB8,并置RI=1。,3、方式2和方式3,方式2和方式3为9位异步通讯口,一帧信息由11位组成,即起始位(0)、8位数据位、1位可编程位和1位停止位。方式2和方式3的区别仅在于波特率不同,(1)发送,发送前,可以用任何位操作指令将第9位数据装入TB8中,然后执行MOVSBUF,A。串行口会自动将TB8作为第9位数据发出,发送完毕,TI=1。,(2)接收,其方法与方式1类似,说明,由于方式1、2和3并不传送同步时钟,因此,必须保证发送方和接收方应工作在相同的波特率下,才能保证数据的准确传送。,7-3MCS-51单片机串行口的应用,一、MCS-51单片机的串行通讯的波特率串行口的传送速率即波特率由fosc、PCON、SMOD及定时器Ti的设定。,串行口的四种工作方式对应于三种波特率:,其中,K是定时器的位数,取决于定时器的工作方式。为保证高精度,尽可能选择方式2自动装入方式。,定时器T1产生的常用波特率,二、串行口方式0用作扩展并行I/O口,用串行口扩展I/O口具有电路简单易行,成本低等优点,因而被经常使用。1、用方式0扩展并行输出口74LS164为TTL型,而CD4094为CMOS型串行移位寄存器在串行口外接一个串入并出的移位寄存器,即可扩展一个并行I/O口。,例7-4-1用8051串行口外接74LS164扩展8位并行输出口。,发光二极管的显示延时采用延时子程序DELAY来实现。,程序清单:,ORG2000HUART:MOVSCON,#00HMOVA,#80HCLRP1.0;移位寄存器清零LCALLDELAYSETBP1.0STA:MOVSBUF,AJNBTI,$CLRTIRRASJMPSTA,串行口发送标准模块,74LS165为TTL型,而CD4014为CMOS型串行移位寄存器,2、用方式0扩展并行输入口,例7-4-2用8051串行口外接CD4014扩展8位并行输出口。,输入联络信号由K提供,K=0时,表示有数据输入,当RI=1时,表示数据串行移入完毕,可以进行下一次输入。,输入允许开关则由SCON中的REN来控制,采用查询RI的状态的方式来决定数据传送与否。,程序清单:,REC:JBP1.1,$SETBP1.0CLRP1.0MOVSCON,#10HJNBRI,$CLRRIMOVA,SBUFSJMPREC,串行接收标准模块,无论是扩展输入,还是扩展输出口,都可以进行级连,从而实现更多位的串行输入或串行输出扩展.,三、方式1的点对点的异步通讯,利用8031的串行口进行点对点的全双工通讯。,例7-4-3假设两个8031系统相距很近,它们以串行口直接相连,如图所示。要求它们之间进行双工的ASCII字符收发,最高一位用于奇偶校验,波特率为1200bps,fosc=6Mhz,1、由于数据位为7位,及1位奇偶校验位,因而可采用方式1。,2、由于波特率为1200bps,故定时器初值为:,TXD,RXD,GND,8031,甲,TXD,RXD,GND,8031,乙,8031双机通讯,3、奇偶校验作如下处理后,使A中1的个数始终为奇数个。,MOVA,#ASCIIMOVC,PCPLCMOVACC.7,C,若A中原有奇数个1,则P=1,操作后A中仍有奇数个1;若A中原有偶数个1,则P=0,操作后A中则有奇数个1;,2、方式1,串行口工作在8位异步通讯接口方式。其一帧信息为10位,其中,8位数据位,一位起始位(0)和一位停止位(1)。TXD端为发送端而RXD为接收端,波特率可变。,串行口的四种工作方式对应于三种波特率:,其中,K是定时器的位数,取决于定时器的工作方式。为保证高精度,尽可能选择方式2自动装入方式。,4、双工通讯要求收发同时进行,收和发均在串行接口中进行,CPU只是把数据写入缓冲器或从缓冲器中读入数据。究竟是需要读或是写则通过检测TI和RI来进行区别。下面给出实现指定功能的通讯程序,发送和接收通过子程序调用来实现,发送缓冲区首址为20H,接收缓冲区首址为40H。,主程序:ORG0000HLJMPMAINORG0023HLJMPSBR1ORG0100HMAIN:MOVTMOD,#20HMOVTH1,#0F3HMOVTL1,#0F3HSETBTR1,MOVSCON,#50HMOVR0,#20HMOVR1,#40HACALLSOUTAJMP$,方式1允许接收REN=1,SBR1:JNBRI,SENDACALLSINSJMPNEXTSEND:ACALLSOUTNEXT:RETI,SOUT:MOVA,R0MOVC,PCPLCMOVACC.7,CINCR0MOVSBUF,AJNBTI,$CLRTIRET,SIN:MOVA,SBUFCLRRIMOVC,PCPLCANLA,#7FHMOVR1,AINCR1RET,以上是基本的双机通讯程序,大家可根据这一基本程序,加以发挥和扩充,即可完成较为复杂的通讯功能。,四、方式2、方式3与多机通讯,通讯原理:利用多机通讯位SM2和TB8,主机发送接收数据的从机地址,该从机处于接收使能,能接收主机随后发送的数据,地址不同的从机不能接收数据。,7-4选学内容,单片机之间的通信,双机异步通信接口电路,RS-422A双机异步通信接口电路,双机通信软件编程,查询方式1)甲机发送编程将甲机片外1000H101FH单元的数据块从串行口输出。定义方式2发送,TB8为奇偶校验位。发送波特率375kb/s,晶振为12MHz,所以SMOD=1。,参考发送子程序如下:MOVSCON,#80H;设置串行口为方式2MOVPCON,#80H;SMOD=1MOVDPTR,#1000H;设数据块指针MOVR7,#20H;设数据块长度START:MOVXA,DPTR;取数据给AMOVC,PMOVTB8,C;奇偶位P送给TB8MOVSBUF,A;数据送SBUF,启动发送WAIT:JBCTI,CONT;判断一帧是否发送完。若送完,清TI,取下一个数据AJMPWAIT;未完等待CONT:INCDPTR;更新数据单元DJNZR7,START;循环发送至结束RET,2)乙机接收编程使乙机接收甲机发送过来的数据块,并存入片内50H6FH单元。接收过程要求判断RB8,若出错置F0标志为1,正确则置F0标志为0,然后返回。在进行双机通信时,两机应采用相同的工作方式和波特率。,参考接收子程序如下:MOVSCON,#80H;设置串行口为方式2MOVPCON,#80H;SMOD=1MOVR0,#50H;设置数据块指针MOVR7,#20H;设置数据块长度SETBREN;启动接收WAIT:JBCRI,READ;判断是否接收完一帧。若完,清RI,读入数据AJMPWAIT;未完等待READ:MOVA,SBUF;读入一帧数据aJNBPSW.0,PZ;奇偶位为0则转JNBRB8,ERR;P=1,RB8=0,则出错SJMPRIGHT;二者全为1,则正确PZ:JBRB8,ERR;P=0,RB8=1,则出错RIGHT:MOVR0,A;正确,存放数据INCR0;更新地址指针DJNZR7,WAIT;判断数据块是否接收完CLRPSW.5;接收正确,且接收完清F0标志RET;返回ERR:SETBPSW.5;出错,置F0标志为1RET;返回,第七章结束,本章作业:2、3、6、7,第八章MCS-51单片机的中断系统,本章主要介绍51系列单片机中断系统问题,本章将介绍以下具体内容:,中断系统-中断源、中断方式、中断控制寄存器、中断响应、中断请求的撤除。,8.2MCS-51单片机的中断系统,8.2.1.MCS-51单片机的中断系统结构一、中断的概念,执行主程序,主程序,继续执行主程序,断点,中断请求,中断响应,执行中断处理程序,中断返回,中断请求标志,1,高级,低级,二、MCS-51单片机的中断系统(图8-1),内部查询,内部查询,入口地址,入口地址,中断允许控制,中断优先级,EA,中断源,一、中断源共有五个中断源,分别是外部中断两个、定时中断两个和串行中断一个,它们是:外部中断0-INT0,由P3.2提供,外部中断1INT1,由P3.3提供,,外部中断有两种信号方式,即电平方式和脉冲方式。,T0溢出中断;由片内定时/计数器0提供T1溢出中断;由片内定时/计数器1提供串行口中断RI/TI;由片内串行口提供,8.2.2.MCS-51中断源,二、中断方式,单片机的中断为固定入口式中断,即一响应中断就转入固定入口地址执行中断服务程序。具体入口如下:中断源入口地址INT00003T0000BHINT10013HT1001BHRI/TI0023H在这些单元中往往是一些跳转指令,跳到真正的中断服务程序,这是因为给每个中断源安排的空间只有8个单元。,三、中断控制的寄存器,与中断控制有关的控制寄存器有四个:,TCON-定时控制寄存器,IE-中断允许控制寄存器,IP-中断优先级控制寄存器,SCON-及串行口控制寄存器。,1定时控制寄存器TCON,中断请求标志,触发方式选择,0低电平1下降沿,2串行口控制寄存器SCON,串行中断请求标志,3中断允许控制寄存器IE,4中断优先级控制寄存器(IP),0禁止,1允许,0低级别,1高级别,四、中断响应,响应条件-CPU要响应中断需满足下列条件:无同级或高级中断正在服务;当前指令周期结束,如果查询中断请求的机器周期不是当前指令的最后一个周期,则不行;若现行指令是RETI、RET或访问IE、IP指令,则需要执行到当前指令及下一条指令方可响应。,响应过程-单片机响应中断后,自动执行下列操作:置位中断优先级有效触发器,即关闭同级和低级中断:调用入口地址,断点入栈,相当于LCALL指令;进入中断服务程序。,响应时间-从查询中断请求标志位到转向中断服务入口地址所需的机器周期数。(1)最快响应时间以外部中断的电平触发为最快。从查询中断请求信号到中断服务程序需要三个机器周期:1个周期(查询)2个周期(长调用LCALL)(2)最长时间若当前指令是RET、RETI和IP、IE指令,紧接着下一条是乘除指令发生,则最长为8个周期:2个周期执行当前指令(其中含有1个周期查询)4个周期乘除指令2个周期长调用8个周期。,中断返回中断处理程序的最后一条指令是RETI,它使CPU结束中断处理程序的执行,返回到断点处,继续执行主程序。,当有几个处于同一优先级的中断同时发出中断请求时,CPU响应哪个中断呢?CPU则按照自然优先级作出判断并快速响应中断请求。其自然优先级为:,四、中断响应过程及响应时间,1、中断响应的操作过程,在每个机器周期的S5P2期间,各中断标志采样相应的中断源,而CPU在下一个机器周期的S6期间按顺序查询中断标志,并将相应中断的标志置1,且在再下一个机器周期的S1期间按优先级进行中断处理。,中断响应后,由硬件产生长调用指令“LCALL”,并将当前的PC指针压入椎栈保护,然后将对应的中断矢量装入程序计数器PC,使程序转向该中断矢量地址单元,执行中断服务程序,直到执行“RETI”指令返回,断点处PC指针从椎栈中弹入PC,继续执行中断前的程序。中断矢量如下表所示:,在编写中断服务程序时,应注意以下几点:,(1)在中断矢量地址放一条长转移指令,使中断服务程序可以灵活地安排在64KB程序存储器的任意位置。(2)在执行中断服务程序时,应注意保护现场。(3)在执行中断服务程序时,为避免更高优先级的中断,可用软件关闭CPU中断,或禁止某中断源中断,在中断返回前再开放中断。(4)中断返回指令“RETI”不能用“RET”来代替。,2、外部中断的响应时间,外部中断从产生到响应,至少要经历3个以上的机器周期,再加上CPU在执行指令时的时间延迟。因此,为保证可靠响应外部中断,中断请求信号至少要保持38个机器周期。,8-3扩充外部中断源,MCS-51系列单片机提供2个外部中断源,在很多情况下,仅有两个中断源是远远不够的。因此,我们有必要对其进行扩充。其方法主要有两种:,1、将定时器T0、T1扩充为外部中断源2、采用中断和查询相结合的方法扩充外部中断源,一、利用定时器扩充外部中断源,51系列单片机具有内部定时/计数器,可以用作对外部事件计数,其计数脉冲从相应引脚输入。利用这一特点,我们将计数初值设置为满程,一旦外部有一个脉冲输入,计数器加1并产生溢出中断。因此可以把外部计数引脚T0(P3.4)或T1(P3.5)扩充为外部中断,而T0和T1为外部中断的中断矢量入口。,例8-3-1将定时器T0设为方式2,并将其扩充为一个外部中断源。,其程序清单为:,ORG0000HLJMPMAINORG000BHLJMPTIMER0ORG0100HMAIN:MOVTMOD,#06HMOVTH0,#0FFHMOVTL0,#0FFHSETBTR0SETBET0SETBEALJMP$TIMER0:RETI,这样,相当于在T0引脚上扩展一个外部中断源。,二、利用中断和查询相结合的方法扩充外部中断源,利用这种方法可以扩充多个外部中断源,并可按需求划分它们的优先级别。,例8-3-2如图所示,试编写出中断服务程序。,其优先级别要求如下表所示:,程序清单:,EXINT1:PUSHPSWPUSHACCJBP1.0,SAV1JBP1.1,SAV2JBP1.2,SAV3JBP1.3,SAV4DISUB:POPACCPOPPSWRETISAV1:.AJMPDISUBSAV2:.AJMPDISUBSAV3:.AJMPDISUBSAV4:.AJMPDISUB,ORG0000HLJMPMAINORG0003HLJMPEXINT0ORG0013HLJMPEXINT1ORG0100HMAIN:SETBEX0SETBEX1SETBEA.LJMP$EXINT0:.RETI,由于在查询工作按P1.0P1.3的顺序进行,因此其优先级别为XI1最高,而XI4最低。,注意:外部中断采用电平触发与采用边沿触发基本相似。其区别仅在于:如果是边沿触发,中断响应后会自动清除中断请求标志,而电平触发不会自动清除中断请求标志。因此,在实际使用时,应注意以下两点:1:请求中断的低电平必须保持足够的时间,以确保中断请求被可靠响应。2、中断请求信号保持时间不宜太长。在中断返回前,请求信号必须被撤除,以避免同一中断请求被二次响应。可在中断返回前加判中断信号是否撤除指令,如上例中,加上JNBP3.2,$或JNBP3.3,$,即可保证同一中断请求不会被二次响应。,8-4中断系统的应用(X=0,1),一、8051系统的单步操作,这种操作方式广泛应用于单片机的开发系统中,在常规系统的设计中一般很少使用,我们不作过多介绍。,二、只有一个外部中断源的情况,例8-4-1如图所示,将P1.7P1.4设置为输入方式,P1.3P1.0设置成输出方式,驱动发光二极管,用于显示P1.71.4的输入情况。要求外部中断每中断一次,完成一次读写操作。,中断请求由INT0输入,并采用了去抖动电路。,程序清单:,ORG0000HLJMPGAFNORG0003HLJMPXTGAORG0100HGAFN:SETBEX0SETBIT0SETBEAAJMP$ORG2000HXTGA:MOVA,#0FFHMOVP1,AMOVA,P1SWAPAMOVP1,ARETI,三、多个外部中断源的情况,例8-4-3如图所示,中断线路可实现多个故障显示。当系统无故障时,4个故障源输入端为低电平,显示灯全灭,当某部分出现故障时,其相应的输入线才由低电平变为高电平,从而引起中断,中断服务程序的任务是判定故障源,并用相应的灯显示。,程序清单:,ORG0000HLJMPMAINORG0003HLJMPSERVEORG0100HMAIN:ANLP1,#55HSETBIT0SETBEX0SETBEALOOP1:MOVA,P1ANLA,#55HJNZLOOP1ANLP1,#55HSJMPLOOP1SERVE:JNBP1.0,L1SETBP1.1SJMPL2,L1:CLRP1.1L2:JNBP1.2,L3SETBP1.3SJMPL4L3:CLRP1.3L4:JNBP1.4,L5SETBP1.5SJMPL6L5:CLRP1.5L6:JNBP1.6,L7SETBP1.7SJMPL8L7:CLRP1.7L8:RETI,本章作业:1、3、8,人机接口键盘接口显示器接口模拟量输入/输出接口D/A转换接口A/D转换接口综合应用单片机与LCD接口,第九章单片机应用系统,本章内容,SingleChipMicrocomputer,PC机除了主机以外还需要哪些部分呢?,单片机电路有时候也需要键盘、显示等外设。,9.1键盘接口,按键的特点及输入原理独立式按键矩阵式按键,按键的特点及输入原理,键输入原理:通过按键的接通与断开,产生两种相反的逻辑状态低电平“0”与高电平“1”。键功能的实现:对于一组键或一个键盘,需通过接口电路与单片机相连。可采用查询或中断方式测试有无键按下,再确定是哪一个键按下,将该键号送入累加器ACC,然后判断是数字键还是功能键,若是数字键,则将键号对应的数字送入相关输入缓冲区;若是功能键,则通过跳转指令转入执行该键的功能程序,执行完后再返回主程序。,键盘接口需要解决的问题,是否有键按下,按键识别:,键抖动及消除:,机械按键抖动时间在5ms10ms之间,硬件方案双稳态去抖电路,软件方案延时10ms20ms后再次判断,消除方法:,求键号,-扫描(判断哪个键按下)、去抖动、判断按键是否抬起(以防止重复进行键处理)。,前沿抖动,后沿抖动,键按下,闭合稳定,键释放,独立式按键,接口电路:,特点:一线一键,按键识别(编程)简单;但占用较多口线,适合8键以下使用。,原理-当任何一个键被按下时,与其相连的输入线被置成“0”,平时该线为“1”。,键处理程序,ORG2000H,START:MOVA,#0FFH;先置P1口为“1”,MOVP1,A,MOVA,P1;输入键状态,JNBACC.0,P0F;查询0号键,JNBACC.1,P1F;查询1号键,JNBACC.2,P2F;查询2号键,JNBACC.3,P3F;查询3号键,JNBACC.4,P4F;查询4号键,JNBACC.5,P5F;查询5号键,JNBACC.6,P6F;查询6号键,JNBACC.7,P7F;查询7号键,LJMPSTART,键盘扫描,P0F:LJMPPROM0;入口地址表,P1F:LJMPPROM1,P6F:LJMPPROM6,P7F:LJMPPROM7,PROM0:.;0号键功能程序,PROM7:.;7号键功能程序,.,LJMPSTART;0号键处理完返回键盘扫描,LJMPSTART;7号键处理完返回键盘扫描,.,.,.,例1:用P1口检测三个按键的状态并完成相应的功能,解:,资源分配:用P1口的低3位检测3个按键的输入,为1则表示按键没有按下,为0则表示相应按键被按下。,流程图:,ORG0000HKB:MOVP1,#0FFHMOVA,P1CPLAANLA,#0FHJZKBACKLCALLD10MSMOVA,P1CPLAANLA,#0FHJZKBACKCJNEA,#01H,KB01LCALLPGM1SJMPKBACKKB01:CJNEA,#02H,KB02LCALLPGM2SJMPKBACKKB02:CJNEA,#04H,KBLCALLPGM3KBACK:LJMPKBEND,编程(1):按三个按键中的任一键都对应一个特定功能。,矩阵式按键,关键:如何判断键号?,接口电路:,特点:按键识别应采用扫描法或线路反转法编程较为复杂,节省口资源,8键以上使用,键盘扫描子程序一般包括以下内容:1.判别有无键按下;2.扫描获取闭合键的行、列值;3.用计算法或查表法得到键值;4.判断闭合键释放否,如没释放则继续等待;5.保存闭合键号。,键按下/释放判断,KS:MOVA,#00HMOVP1,A;全扫描字#00H送P1口MOVP1,#0FHMOVA,P1;读入P1口状态CPLA;变正逻辑,高电平表示有键按下ANLA,#0FH;取低4位RET;返回,A0表示有键按下,按键识别扫描法,流程:当第0列处于低电平时,逐行查找是否有行线变低,若有,则第0列与该行的交叉点按键按下;若无,则表示第0列无键按下,再让下一列处在低电平,依此循环,这种方式称为键盘扫描。,原理:在某一时刻只让一条列线处于低电平,其余列线均处于高电平,则当这一列有键按下时,该键所在的行电平将会由高电平变为低电平,可判定该列相应的行有键按下。,例2:键盘扫描程序,SERCH:MOVR2,#0EFHMOVR3,#00HLINE0:MOVA,R2MOVP1,AMOVA,P1JBACC.3,LINE1MOVA,#00HAJMPTRYKLINE1:JBACC.2,LINE2MOVA,#04HAJMPTRYKLINE2:JBACC.1,LINE3MOVA,#08H,接口电路,AJMPTRYKLINE3:JBACC.0,LINE4MOVA,#0CHAJMPTRYKLINE4:INCR3MOVA,R2RLAJNBACC.0,BACKMOVR2,AAJMPLINE0TRYK:ADDA,R3BACK:RET,接口电路,矩阵式按键,关键:如何判断键号?,接口电路:,特点:按键识别应采用扫描法或线路反转法编程较为复杂,节省口资源,8键以上使用,定时扫描方式,定时扫描方式就是每隔一段时间对键盘扫描一次,它利用单片机内部的定时器产生一定时间(例如10ms)的定时,当定时时间到就产生定时器溢出中断。CPU响应中断后对键盘进行扫描,并在有键按下时识别出该键,再执行该键的功能程序。,中断扫描方式,为提高CPU工作效率,可采用中断扫描工作方式。其工作过程如下:当无键按下时,CPU处理自己的工作,当有键按下时,产生中断请求,CPU转去执行键盘扫描子程序,并识别键号。,9.2显示器接口技术,LED的结构和显示原理静态显示方式动态显示方式动态显示的实现,动态显示方式,问题引入:,LED显示器如何显示出指定数字/字符?,例:模拟产品计数显示电路,编程,ORG1000HSTAR:MOVTMOD,#60H;定时器T1工作在方式2计数MOVTH1,#00H;T1置初值MOVTL1,#00HMAIN:MOVP1,#0C0H;数码管显示0DISP:JBP3.3,DISP;监测按键信号ACALLDELAY;消抖延时JBP3.3,DISP;确认低电平信号DISP1:JNBP3.3,DISP1;监测按键信号ACALLDELAY;消抖延时JNBP3.3,DISP1;确认高电平信号SETBTR1;启动计数器DISP2:MOVA,TL1MOVCA,A+DPTR;查表获取数码管显示值MOVP1,A;数码管显示计数值CJNEA,#8E,DISP2LJMPSTARTAB:0C0H,0F9H,0A4HDELAY:MOVR2,#14HDELAY1:MOVR3,#0FAHDJNZR3,$DJNZR2,DELAY1RETEND,静态显示方式,连接所有LED的位选均共同连接到+VCC或GND,每个LED的8根段选线分别连接一个8位并行I/O口,从该I/O口送出相应的字型码显示字型。特点原理简单;显示亮度强,无闪烁;占用I/O资源较多。,动态显示方式,连接所有LED的段选线共同连接在一起共用一个8位I/O口,而每个LED的位选分别由一根相应的I/O口线控制。因此必须采用动态扫描显示方式,每一个时刻只选通其中一个LED,同时在段选口送出该位LED的字型码。,动态显示基本原理,电路的接法决定了必须采用逐位扫描显示方式。即从段选口送出某位LED的字型码,然后选通该位LED,并保持一段延时时间。然后选通下一位,直到所有位扫描完。,要注意的两个问题:,1.字型码通常通过查表指令MOVC来求得.,2.换位显示时通常要加一段程序使所有的LED全灭.,动态显示程序流程图,采用动态扫描方式依次循环点亮各位数码管,构成多位动态数码管显示电路。,开始,显示缓冲区首地址送R0显示位数送R2,起始显示位送R3,禁止所有位(关显示),从缓冲区取要显示的数,查表得字型码,指向段选口,送字型码,指向位选口,送位选码,延时,指向显示缓冲区下一个单元,位选码左移,结束,1,1,扫描完一遍吗?,Y,N,试编制程序,要求当其中某一按键压下时与其对应的二极管将被点亮。,课堂练习,9.3D/A转换器接口,D/A转换器的作用典型芯片DAC0832DAC0832的应用,D/A转换器的作用,将数字量转换为模拟量,以便操纵控制对象。,D/A转换器的主要指标转换速度:一般几十微秒到几百微秒,快速的可达1微秒。转换精度(分辨率):决定于输入数字量的位数,位数越多,精度越高。,典型芯片-DAC0832介绍,DAC0832是一个八位D/A转换器,转换时间1微秒,结构如下:,DAC0832功能分析,DI0-DI7:转换数据输入CS:片选信号,因此,DAC0832可以有三种工作形式:直通、单级锁存、两级锁存。,单缓冲方式的接口(1),一个处于直通方式,另一个处于受控的锁存方式,“同时”做何解释?,单缓冲方式的接口(2),两个输入寄存器同时受控的方式,单缓冲方式的应用产生锯齿波,假定采用接口(1)方式,即输入寄存器受控,而DAC寄存器直通,输入寄存器地址为E000H,产生锯齿波。,源程序清单如下:ORG0200MOVDPTR,#0E000H;指向输入寄存器地址MOVA,#00H;转换初值WW:MOVXDPTR,A;WR1有效,启动D/A转换INCANOP;延时NOPAJMPWW,1/28,2/28,3/28,254/28,255/28,0,产生的锯齿波的过程,D/A转换产生的锯齿波,用同样的方法也可以产生三角波、矩形波、梯形波。,若将A的初值改为FFINC改为DEC?,ORG0200MOVDPTR,#0E000H;指向输入寄存器地址MOVA,#0FFH;转换初值WW:MOVXDPTR,A;WR1有效,启动D/A转换ANOP;延时NOPAJMPWW,DEC,INC,两个锁存器都接成受控锁存方式。,双缓冲方式的接口和应用,对一个数字量的转换,需两步完成,程序如下:MOVDPTR,#00E0HMOVXDPTR,AMOVDPTR,#00C0HMOVXDPTR,A,输入寄存器地址:00E0HDAC寄存器地址:00C0H,你知道它与第二种单缓冲方式的区别吗?,9.4A/D转换器接口,A/D转换器的作用典型芯片ADC0809ADC0809的应用,A/D转换器的作用,将模拟量转换为数字量,以便计算机接收处理,传感器,单片机,双积分式A/D转换器逐次逼近式A/D转换器。,A/D转换器概述,逐次逼近式典型A/D转换器芯片有:(1)ADC0801ADC0805型8位MOS型A/D转换器(2)ADC0808/0809型8位MOS型A/D转换器(3)ADC0816/0817,典型芯片ADC0809介绍,ADC0809是一个8位8通道的AD转换器。,ADC0809功能分析,CLK:时钟信号,可由单片机ALE信号分频得到。,转换有以下几步:,ALE信号上升沿有效,锁存地址并选中相应通道。ST信号有效,开始转换。A/D转换期间ST为低电平。EOC信号输出高电平,表示转换结束。OE信号有效,允许输出转换结果。,ADC0809和单片机的连接,通道选择表,1.首先分析各个通道的地址。(IN0到IN7的地址为0000H到0007H),编程应用中断方式,编程:可采用中断、查询两种方式。,中断方式:ORG0000H;主程序入口地址AJMPMAIN;跳转主程序ORGOO13H;中断入口地址AJMPINT1;跳转中断服务程序MAIN:SETBIT1;边沿触发SETBEA;开中断SETBEX1;允许中断MOVDPTR,#0007H;指向0809IN7通道地址,MOVXDPTR,A;启动A/D转换SJMP$;等待中断INT1:MOVXA,DPTR;读A/D转换结果MOVB,A;存数RETI;返回,查询方式:ORG0000H;主程序入口地址AJMPMAIN;跳转主程序ORG1000H;中断入口地址MAIN:MOVDPTR,#0007H;指向0809IN7通道地址MOVXDPTR,A;启动A/D转换L1:JBP3.3L1;查询MOVXA,DPTR;读A/D转换结果MOVB,A;存数SJMP$,综合应用,语音数字化存储与回放系统,主控电路,分析实训电路板中0809的连接,确定各通道地址。对通道0输入模拟电压,运行转换程序,用动态显示方式在最右边两个LED显示转换结果。,实训练习,9.4单片机与LCD接口设计,任务1:如何在LCD的指定位置显示出指定的字符。,2行16列,A,b,任务2:如何在LCD的指定位置显示字符串。,2行16列,ShenzhenPolytechnic,基本内容,LCD接口程序设计*,字符型LCD模块的使用方法,单片机与字符型LCD模块接口电路,NOTICELCD:LiquidCrystalDisplay,一、字符型LCD模块,ShenzhenPolytechnic,LCD实验模块的连接管脚,123456789,10,11,12,13,14,15,16,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,VSS,VDD,VO,RS,R/W,E,DB0,DB1,A,DB3,DB2,DB5,DB4,DB7,DB6,K,LCD模块,Vss:+5V电源管脚(Vcc)VDD:地管脚(GND)Vo:液晶显示驱动电源(0V5V),1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,VSS,VDD,VO,RS,R/W,E,DB0,DB1,A,DB3,DB2,DB5,DB4,DB7,DB6,K,LCD模块,DB0DB7:数据线,可以用8位连接,也可以只用高4位连接,节约单片机资源,本实验中采用的是八位连接方法。,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,VSS,VDD,VO,RS,R/W,E,DB0,DB1,A,DB3,DB2,DB5,DB4,DB7,DB6,K,LCD模块,A:背光控制正电源K:背光控制地,1,2,3,4,5,6,7,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025粮食买卖合同样本
- 农民专业合作社养殖品种研发与分享协议
- 快递包裹库存管理软件协议
- 专转本技能类题目及答案
- 注册集团面试题目及答案
- 珠算六级题目训练及答案
- 存货清查的账务处理
- 化工厂安全语言培训总结课件
- 智慧树知道网课《带你Carry电子竞技》课后章节测试答案
- 化工厂安全培训资料课件
- 电力运行维护管理办法
- 专职安全生产管理人员综合类C证习题(含答案)
- 2025年市场监管总局机关公开遴选公务员面试模拟题及答案
- 注册安全工程师考试道路运输和其他安全安全生产实务(初级)试卷与参考答案
- 客户关系管理课件 第1章 客户关系管理概述
- 数学-湖南省长郡中学2025-2026学年高二上学期暑假作业检测(开学)试题+答案
- 构建餐饮油烟共治格局的策略及实施路径
- 《MySQL数据库教程》课件第一章数据库概述
- 铝单板幕墙专项方案
- (中职中专)《电控发动机维修》全套教学设计全书电子教案整本书教案合集1-22章全
- 部编版六年级上册道德与法治全册教学课件ppt
评论
0/150
提交评论