您好,欢迎访问三七文档
-1-第8章1.帧格式为1个起始位,8个数据位和1个停止位的异步串行通信方式是。答:方式12.下列选项中,是正确的。答:A.对;B.对;C.错;D.对;E.对,A.串行口通信的第9数据位的功能可由用户定义B.发送数据的第9数据位的内容是在SCON寄存器的TB8位中预先准备好的C.串行通信帧发送时,指令把TB8位的状态送入发送SBUF中D.串行通信接收到的第9位数据送SCON寄存器的RB8中保存E.串行口方式1的波特率是可变的,通过定时器/计数器T1的溢出率设定3.串行口工作方式2的波特率是。答:A,DA.固定的,为fosc/32B.固定的,为fosc/16C.可变的,通过定时器T1的溢出率设定D.固定的,为fosc/644.在异步串行通信中,接收方是如何知道发送方开始发送数据的?答:靠判断是否接收到起始位。异步串行通信中,接收方串行口内部硬件检测器以波特率的16倍速率采样RXD引脚状态。当采样到RXD端从1到0的负跳变(有可能是起始位)时,就启动接收检测器。接收的值是3次连续采样(第7、8、9个脉冲时采样),取其中两次相同的值,这样就能较好地消除干扰引起的影响,以保证可靠无误地判断是否接收到的是起始位。当确认起始位有效时,则知道发送方开始发送数据。5.为什么定时器/计数器T1用作串行口波特率发生器时,常采用方式2?若已知时钟频率、串行通信的波特率,如何计算装入T1的初值?答:定时器/计数器T1的方式2克服了在循环定时或循环计数应用时就存在用指令反复装入计数初值带来的定时误差,从而影响波特率的精度。可用如下的公式计算装入T1的初值式中“RCAP2HRCAP2L”为定时器/计数器T2的初值。6.若晶体振荡器为11.0592MHz,串行口工作于方式1,波特率为4800bit/s,写出用T1作为波特率发生器的方式控制字和计数初值。答:T1的方式控制字由装入TMOD的内容来决定:(TMOD)=0010××××可用如下的公式来计算并解出计数初值X:解得计数初值X=FAH,TH1=TL1=0FAH;SCON=40H7.为什么AT89S51单片机串行口的方式0帧格式没有起始位0和停止位1?答:串行口的方式0并不是用于两个AT89S51单片机之间的异步串行通信,而是用于外接移位寄存器,以扩展并行I/O口,一般不用于两个MCS-51之间的串行通信。此时串行口方式0实质是一同步串行口,RXD引脚作为同步时钟引脚,同步时钟的频率为fosc/12,因此不需要异步串行通信帧格式那样,需要起始位和停止位来完成收发双方的同步。8.直接以TTL电平串行传输数据的方式有什么缺点?为什么在串行传输距离较远时,常采用RS-232C、RS-422A和RS-485标准串行接口,来进行串行数据传输。比较RS-232C、RS-422A和RS-485标准串行接口各自的优缺点。答:AT89S51单片机串行口的输入、输出以TTL电平来串行传输数据,缺点是抗干扰性差,传输距离短,传输速率低。为了增大串行通信的距离和提高传输速率,在实际的串行通信中设计中都采用标准串行接口,如RS-232、RS-422A、RS-485等。-2-如果双机通信距离在1.5~15m时,可利用RS-232C标准接口实现点对点的双机通信。RS-232C的缺点:传输速率低、通信距离短、接口处信号容易产生串扰等。于是国际上又推出了RS-422A标准。RS-422A与RS-232C的主要区别是收发双方的信号地不再共地,采用了平衡驱动和差分接收的方法。每个方向用于数据传输的是两条平衡导线,这相当于两个单端驱动器。输入同一个信号时,其中一个驱动器的输出永远是另一个驱动器的反相信号。于是两条线上传输的信号电平,当一个表示逻辑“1”时,另一条一定为逻辑“0”。若传输过程中,信号中混入了干扰和噪声(以共模形式出现),由于差分接收器的作用,就能识别有用信号并正确接收传输的信息,并使干扰和噪声相互抵消。因此,RS-422A能在长距离、高速率下传输数据。它的最大传输率为10Mbit/s,在此速率下,电缆允许长度为12m,如果采用较低传输速率时,最大传输距离可达1219m。RS-422A双机通信需四芯传输线,这对长距离通信是很不经济的,故在工业现场,通常采用双绞线传输的RS-485串行通信接口,它很容易实现多机通信。RS-485是RS-422A的变型,与RS-422A的区别是:RS-422A为全双工,采用两对平衡差分信号线;而RS-485为半双工,采用一对平衡差分信号线。RS-485与多站互连是十分方便的,易实现1对N的多机通信。9.Proteus虚拟仿真利用串行口的方式0的输入和输出,外扩一片74LS165,在74LS165的并行输入端接有8个开关,同时还外扩2片74LS164,74LS164的并行输出端各接有1个LED数码管。开关未合上时,74LS165检测的输入为高电平,开关合上时,74LS165的输入为低电平。要求把8个开关的状态以2位16进制数的形式显示在2位数码管上。例如,8个开关全合上,此时2位数码管应显示“00”,高4位开关合上(为0),低4位开关断开(为1),应显示“0F”。答:可参考教材的【例8-2】。10.Proteus虚拟仿真甲机和乙机之间采用方式1双向串行通信,具体要求如下:(1)甲机的k1按键可通过串口控制乙机的LED1点亮,LED2灭,甲机的k2按键控制乙机的LED1灭,LED2点亮,甲机的k3按键控制乙机的LED1和LED2全亮。(2)乙机的k4按键可控制串口向甲机发送k4按键按下的次数,并显示在甲机P0口的数码管上。答:原理电路如图所示。图6-8双机的全双工串行通信P0口的数码管上。甲机的P3.2(外中断0输入)检测K1按键的状态;对K2和K3按键状态的检测,通过0C门反相器74LS05进行“线与”后加到P3.3脚(外中断1回输入),从而实现对甲机3个按键中断源的中断请求检测。仿真结果如图所示。图中显示的是甲机的K2按下。乙机的LED2灯亮;乙机的K4按下4次,在甲机的数码管上显示“4”。-3-甲机程序#includereg52.hunsignedcharcodeHEX_CODETABLE[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF};//共阳极7段LED数码管段码voidserial_out(unsignedcharc)//串行发送函数{SBUF=c;//写入要发送的字符变量cwhile(TI==0);TI=0;}voidmain(){//系统初始化SCON=0x50;//串口方式1,8位异步,允许接受TMOD=0x20;//T1工作在模式2,8为自动装载,用作波特率发生器PCON=0x00;//波特率不倍增TH1=0xFD;//设定波特率为9600TL1=0xFD;TI=RI=0;//串行发送接收中断标示位置0TR1=1;//启动T1IT0=IT1=1;//外部中断触发方式设定为负跳沿IE=0x95;//设定中断源允许寄存器SBUF=0xFF;//先写入0xFF使得乙机刚开始时LED1、LED2均不亮。//单片机轮询while(1)P0=HEX_CODETABLE[SBUF];//通过P2口显示收到的字符}voidK1()interrupt0//外部中断0的中断服务子程序{serial_out(0xFE);}//点亮LED1voidK2K3()interrupt2//外部中断1的中断服务子程序{if(P1==0xFE)//判断K2是否按下serial_out(0xFD);//K2按下,点亮LED2if(P1==0xFD)//判断K3是否按下serial_out(0xFC);//K3按下,点亮LED1、LED2}voidserial_in()interrupt4//串行输入函数中断服务子程序{ES=0;//关串行中断源允许位if(RI)//判断是否是串行输入中断RI=0;//如果是串行输入中断,软件置零串行中断标示位ES=1;//开串行中断源允许位}乙机程序#includereg52.hunsignedchari=0;voidserial_out(unsignedcharc)//串行发送函数{SBUF=c;//写入要发送的字符变量cwhile(TI==0);-4-TI=0;}voidmain(){//系统初始化SCON=0x50;//串口方式1,8位异步,允许接受TMOD=0x20;//T1工作在模式2,8为自动装载,用作波特率发生器PCON=0x00;//波特率不倍增TH1=0xFD;//设定波特率为9600TL1=0xFD;TI=RI=0;//串行发送接收中断标示位置0TR1=1;//启动T1IT1=1;//外部中断触发方式设定为负跳沿IE=0x94;//设定中断源允许寄存器SBUF=10;//先写入10使得甲机刚开始时7段数码管先不点亮。//单片机轮询while(1)P2=SBUF;//通过P2口按照收到的字符来驱动点亮LED灯}voidK2()interrupt2//外部中断1的中断服务子程序{if(i9)//按一下键,i增1++i;else//超过10,置零i=0;serial_out(i);//向甲机发送按键的数值}voidserial_in()interrupt4//串行输入函数中断服务子程序{ES=0;//关串行中断源允许位if(RI)//判断是否是串行输入中断RI=0;//如果是串行输入中断,软件置零串行中断标示位ES=1;//开串行中断源允许位}一、填空题5、在数据传输时,一个数据编码的各位按照一定顺序,一位一位地在信道中被发送和接受的,这种传送通信方式称为通信。答案:5、串行11.MCS-51单片机的通讯接口有(串行)和(并行)两种型式。在串行通讯中,发送时要把(并行)数据转换成(串行)数据。接收时又需把(串行)数据转换成(并行)数据。12、51单片机的异步通信口为全双工(单工/半双工/全双工)1.在异步通信中,通信的双方需要约定相同的相同的字符帧和波特率。2.当SCON中的M0M1=10时,表示串口工作于方式2,波特率为fosc/32或fosc/64。3.SCON中的REN=1表示允许接收。4.PCON中的SMOD=1表示波特率翻倍。5.SCON中的TI=1表示串行口发送中断请求。6.MCS-51单片机串行通信时,先发送低位,后发送高位。7.MCS-51单片机方式2串行通信时,一帧信息位数为11位。8.设T1工作于定时方式2,作波特率发生器,时钟频率为11.0592MHz,SMOD=0,波特率为2.4K时,T1的初值为FAH。-5-1.在串行通信中,把每秒中传送的二进制数的位数叫波特率。4:在异步通信中若每个字符由11位组成,串行口每秒传送250个字符,则对应波特率为(2750)bps。4、设有一帧信息,1个起始位、8个数据位、1个停止位,传输速率为每秒960个字符。波特率为。答案:4、9600bps14、8051串行口按方式1进行通信,若每分钟传送3600个字符,则波特率为。12、600波特7、串行口工作方式2为9位异步通信,若SMOD=0,fOSC=6MHZ,则其相应波特率为6×106/64b/s。9.串行口的方式0的波特率为(FOSC/12)。4.串行工作模式3为异步发送接收方式,其波特率的计算公式为。10.MCS-51单片机串行方式0通信时,数据从P3.0引脚发送/接收。2.SM0和SM1是串行通信接口工作方式选择位。3.串行接口内部包含有两个互相独立的发送缓冲器和接收缓冲器,可以在同一时刻进行数据的发送和接收。1.单片机串行通信时,若要发送数据,就必须将要发送的数据送至单元,若要接收数据也要到该单元取数。串行通信波特率分为固定和可变两种方式,在波特率可变的方式中,可采用的溢出率来设定和计算波特率。SBUF定时器12、串行数据通信分为单工方式、和答案:半双工全工3、单片机串行通信时,若要发送数据,就必须将要发送的数据送至单元,若要接收数据也要到该单元取数,取数的指令为。
本文标题:单片机第8章
链接地址:https://www.777doc.com/doc-4252552 .html