首页 理论教育 习题与解答:单片机嵌入式系统原理与应用指导

习题与解答:单片机嵌入式系统原理与应用指导

时间:2023-10-18 理论教育 版权反馈
【摘要】:表8-2为波特率选标准数值时,定时器1相应取值对照表。增选习题3题中的串行接口工作在模式3,波特率通过定时器T1设定,因此在完成对SCON、PCON设置后,还需设置定时器1的工作模式,以及定时器1的初值,并启动定时器。图8-6 增选习题4的Proteus仿真图程序说明如下:1)在程序的设计上,首先初始化串行通信的控制寄存器SCON和定时器1。图8-9 增选习题6附图

习题与解答:单片机嵌入式系统原理与应用指导

1.89C51单片机时钟振荡频率为11.0592MHz,选用定时器T1工作模式2作为波特率发生器,波特率为2400bit/s,求初值。

答:设置波特率控制位(SMOD)=0

978-7-111-50307-1-Chapter08-17.jpg

所以,(TH1)=(TL1)=0F4H。

表8-2为波特率选标准数值时,定时器1相应取值对照表。

表8-2 定时器1产生的波特率

978-7-111-50307-1-Chapter08-18.jpg

2.编制一个发送程序,将一个数组中的数据串行发送。串行接口设定为工作模式2,TB8为发送数据的奇偶校验位。

答:在数据写入发送SBUF之前,先将数据的奇偶标志P写入TB8,此时,第9位数据便可作为奇偶校验位使用。可采用查询和中断两种方式发送。

C51参考程序如下:

978-7-111-50307-1-Chapter08-19.jpg

3.编制一个接收程序,将接收的16个数据存入片内数据存储器,设晶振为11.0592MHz,串行接口工作于模式3,波特率为2400bps。

答:模式3为11位异步通信方式,波特率取决于T1的溢出率,T1选择工作在自动重装载模式。通过查表可知,当晶振为11.0592MHz,波特率为2400bit/s时,TL1=TH1=0F4H,SMOD=0。

C51参考程序如下:

978-7-111-50307-1-Chapter08-20.jpg

程序说明如下:

1)在增选习题2、3的两个串行通信程序中,分别选择模式2、模式3。增选习题2中的串行接口工作在模式2,波特率为固定值,因此,直接设置SCON、PCON即可。增选习题3题中的串行接口工作在模式3,波特率通过定时器T1设定,因此在完成对SCON、PCON设置后,还需设置定时器1的工作模式,以及定时器1的初值,并启动定时器。

2)模式2、3的数据帧为11位,除了8位数据外都包含有校验位,校验位选择写入发送数据的奇偶校验位。为了获得发送或接收数据的奇偶校验位,每次发送或接收到数据后,将数据存入累加器ACC,从而获得奇偶校验位。

3)发送数据写入SBUF送出,发送数据的校验位通过写入TB8输出。接收数据时的8位数据从接收SBUF获得,发送的校验位从RB8读取。

4.将89C51单片机的TXD接RXD,实现单片机串行接口数据自发自收,并将接收的数据通过P1口输出到发光二极管显示。系统时钟频率为11.0592MHz,自发自收的波特率为2400bit/s。编写程序,要求单片机串行接口工作在方式1,从TXD发送数据到0x55H,从RXD将该数据读回,并送P1口通过8个发光二极管显示。Proteus仿真图如图8-6所示。

978-7-111-50307-1-Chapter08-21.jpg

图8-6 增选习题4的Proteus仿真图

978-7-111-50307-1-Chapter08-22.jpg

978-7-111-50307-1-Chapter08-23.jpg

程序说明如下:

1)在程序的设计上,首先初始化串行通信的控制寄存器SCON和定时器1。按照SCON的控制字格式设定串行通信口工作在模式1,使能接收功能,同时,由于模式1的波特率需要通过定时器1来设定实现,所以需要计算定时器1的定时初值,并将定时器1设置为工作模式2。一般初始化参考程序如下:

TMOD=0x20;(www.xing528.com)

TL1=0xf4;TH1=0xf4;

pcon=0x00;

scon=0x50;

TR1=1;

2)在本程序中,通过一个单片机实现自发自收功能。在数据传入SBUF发送后,TI置1,但数据是否被读回,需要通过查询RI,因此在程序中,以RI是否为1作为检查自发自收是否完成的标志,RI为1,证明自发自收成功。

3)TI作为发送数据缓冲区的标志位,通过硬件置1,但注意,在编程时需要软件清零,在程序中收到TI标志1后,一定要通过程序将TI清零。程序中代码为:TI=0。

5.将单片机的TXD引脚与74LS164的CLOCK引脚相连,从TD引脚输出脉冲信号控制74LS164的移位操作,RXD输出串行数据,与A、B引脚相连,CLEAR即9引脚与单片机的P1.0引脚连接,作为控制数据输出的使能信号,在74LS164的数据输出端控制8个LED发光二极管轮回显示。画出电路接口图,并编程实现上述功能。

答:接口电路及Proteus仿真如图8-7和图8-8所示。

CLEAR为清零端,低电平清零。采用模式0通过串行接口输出数据,经过74LS164将串行数据并行输出,控制发光二极管轮回显示。

参考程序如下:

978-7-111-50307-1-Chapter08-24.jpg

978-7-111-50307-1-Chapter08-25.jpg

978-7-111-50307-1-Chapter08-26.jpg

图8-7 增选习题5的接口电路图

978-7-111-50307-1-Chapter08-27.jpg

图8-8 增选习题5的Proteus仿真图

6.在通信中,常把甲机作为发射机,乙机作为接收机。开始时,甲机发送字符55H,乙机在接收到数据后向甲机发送AAH,表示同意接收。甲机收到AAH后,开始将数据缓冲区BUF中控制数据块显示0~9这10个数字的数据进行发送,每发送一次求一次校验和,数据发送结束,将校验和发送到接收机。两机接线如图8-9所示。

接收机收到数据将数据存入地址为REV的缓冲区,每收到一个数据便计算一次校验和,当数据接收完成后,将校验和与发送机送来的校验和比较,若二者相等,则接收正确,乙机回复dd,并在本机的P2口数码块上显示字符。否则发送ee,表示接收数据不正确,请求重发。

甲机收到dd回答后,发送结束,在本机的P1口将0~9这10个数字轮回显示,若收到其他数据,则将数据再重新发送一次。编写两个单片机之间实现通信的C51程序。

答:在通信设置上,数据传输的波特率为2400bit/s,两个单片机的振荡频率均为11.0592Hz,甲乙双方的通信方式均为模式3。要实现通信,程序需分为发送程序和接收程序两部分。

978-7-111-50307-1-Chapter08-28.jpg

978-7-111-50307-1-Chapter08-29.jpg

图8-9 增选习题6附图

978-7-111-50307-1-Chapter08-30.jpg

978-7-111-50307-1-Chapter08-31.jpg

978-7-111-50307-1-Chapter08-32.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈