首页 理论教育 习题解答及实验指导-单片机嵌入式系统原理及应用学习指导

习题解答及实验指导-单片机嵌入式系统原理及应用学习指导

时间:2023-10-18 理论教育 版权反馈
【摘要】:I2C总线是PHLIPS公司推出的一种高性能芯片间简单、双向二线制同步串行总线。连接到同一总线的集成电路数只受400pF的最大总线电容的限制。仅当RB8=1,单片机在收到停止位后,串行接口中断被激活。6)TI发送中断标志位,串行接口工作在模式0时,串行发送第8位数据结束时由硬件置“1”。CPU相应中断后,向SBUF写入要发送的下一帧数据。

习题解答及实验指导-单片机嵌入式系统原理及应用学习指导

1.上网查找目前单片机应用系统中最常用的几个串行总线接口并比较它们的异同。

答:串行总线接口的应用是单片机目前发展的一种趋势。AT89系列单片机利用自身的通用并行线可以模拟多种串行总线时序信号,因此可以充分利用各种串行接口芯片资源。

目前,单片机应用系统中常用的串行总线接口有:I2C(Inter IC BUS)总线、SPI(Ser-ial Peripheral Interface)总线、Microwire总线及单总线(1-Wire BUS)。

SPI接口的全称是“Serial Peripheral Interface”,意为串行外围接口,是MOTOROLA首先在其MC68HCXX系列处理器上定义的。

SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,低位在后,为全双工通信。SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,数据传输速度总体来说比I2C总线要快,速度可达到几兆位每秒。

对于大多数不带SPI串行总线接口的AT89系列单片机来说,可以使用软件来模拟SPI的操作,包括串行时钟、数据输入和数据输出。

I2C总线是PHLIPS公司推出的一种高性能芯片间简单、双向二线制同步串行总线。数据传输时只需两根信号线,一根是双向数据线SDA,另一根是时钟线SCL,所有连接到I2C总线上的串行器件,其数据线都连接到总线的SDA上,时钟线则连接到总线的SCL上。

目前不少的单片机内部集成了I2C总线接口,如MCS-51系列的8XC550、8XC552、8XC571等,低价位的单片机内部虽然没有集成I2C总线接口,但可以通过软件实现I2C总线操作。

每个连接到总线上的器件都有一个用于识别的器件地址,器件地址由芯片内部硬件电路和外部地址引脚同时决定,避免了片选线的连接方法,并建立简单的主从关系,每个器件既可以作为发送器,又可以作为接收器。串行的数据传输位速率在标准模式下可达100Kbit/s,快速模式下可达400Kbit/s,高速模式下可达3.4Mbit/s。连接到同一总线的集成电路数只受400pF的最大总线电容的限制。

单总线(1-Wire)是美国DALLAS公司的一项专有技术,它将地址线、数据线、控制线合并为一根信号线,允许在这根信号线上挂接多个1-Wire总线器件,如ADC、DAC、EEP- ROM、Flash等器件,具有节省I/O资源、结构简单、成本低廉、便于总线扩展和维护等优点。

USB(Universal Serial Bus)总线是近年发展起来的一种快速、灵活的总线接口,一般包含控制传输、中断传输、批传输以及同步传输四种基本数据传输类型。

它最大的特点是易于使用、可热插拔、接口连接灵活,并且能够提供外设电源,在嵌入式系统及智能仪表中得到广泛的应用。而51系列单片机以其优越的性能、成熟的技术、高性价比被广泛应用于测控仪器等自动化领域。因此用51系列单片机实现USB主机接口,进而实现对USB外设的控制,对提高整个系统的数据存储、数据传输、设备控制等性能都有很大的作用。

USB的性能特点:传输速度快、连接简单快捷、通用连接器、无需外接电源数据线供电、扩充外设能力强、不需要系统资源、错误检测和恢复。常用的USB接口方法有两种:一种是采用专用的USB接口器件;另一种是选用内部集成USB接口的单片机。如INTEL的8X930系列,CYPRESS公司的EZ-USB,MOTOROLA公司的MC68HC908JB8系列等。

2.简述单片机的两个串行接口控制寄存器SCON和PCON的格式及其作用。

答:8051单片机的串行接口控制寄存器共有两个:SCON和PCON。

(1)串行接口控制寄存器SCON用于存放串行接口的控制和状态信息,字节地址98H,所有位均可位寻址,位地址98H~9FH。SCON的格式如下:

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

1)SM0、SM1是串行接口4种工作模式选择位,所对应的工作方式见表8-1。

表8-1 8051单片机串行接口的4种工作模式

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

2)SM2是多机通信控制位。

若SM2=1,则模式2和模式3可用于多机通信,9个数据位被收到,第9位数据被送入RB8,然后是停止位。仅当RB8=1,单片机在收到停止位后,串行接口中断被激活。

若SM2=0,则不论收到的第9位数据是“1”还是“0”,都将前8位数据送入SBUF,并产生中断请求。

在模式1时,如果SM2=1,则只有收到有效的停止位才会激活RI;在模式0,SM2必须为0。

3)REN允许串行接收位,由软件置“1”或清“0”。

REN=1,允许串行接收

REN=0,禁止串行接收

4)TB8为要发送的第9位数据,在模式2和3时,TB8是要发送数据的第9位数据。由软件置“1”或清“0”。双机通信时,TB8一般作为奇偶校验位使用;多机通信中用来表示主机发送的数据是地址帧还是数据帧。TB8=1,为地址帧,TB8=0为数据帧。

5)RB8为接收到的第9位,在模式2和3时,RB8存放接收到的第9位数据。在模式1时,如果SM2=0,RB8是收到的停止位。在模式0时,不使用RB8。

6)TI发送中断标志位,串行接口工作在模式0时,串行发送第8位数据结束时由硬件置“1”。在其他工作模式,串行接口发送停止位的开始时置“1”。TI=1,表示一帧数据发送结束,TI的状态可供软件查询,也可申请中断。CPU相应中断后,向SBUF写入要发送的下一帧数据。TI必须由软件清“0”。

7)RI接收中断标志位,串行接口工作在模式0时,接受完第8位数据结束时由硬件置“1”。在其他工作模式,串行接口接收到停止位的开始时置“1”。RI=1,表示一帧数据接收完毕,并申请中断,要求CPU从SBUF取走数据。RI的状态也可供软件查询,RI必须由软件清“0”。

(2)特殊功能寄存器PCON 8051单片机借用了PCON的D7位作为串行波特率系数SMOD控制位,PCON字节地址为87H,不能位寻址,其格式如下:

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

PCON的寄存器格式

SMOD为波特率选择位,也称SMOD位为波特率倍增位,因为SMOD=1时,要比SMOD=0时的波特率加倍。

例如,模式1的波特率的计算公式为:

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

3.写出并比较单片机4种工作模式下的波特率计算公式。

答:模式0的波特率是固定的,即:

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

模式2的波特率取决于特殊功能寄存器PCON的SMOD位。若SMOD=0,则波特率是晶振频率的1/64;若SMOD=1,则波特率等于晶振频率的1/32。即模式2的波特率按下式计算:

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

模式1和模式3的波特率:

在8051系统中,模式1和模式3的波特率取决于定时器1的溢出率;在8052系统中,波特率取决于定时器1或定时器2。

(1)利用定时器1产生波特率 模式1和模式3的波特率取决于定时器1的溢出率和SMOD位的值,即:

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

如果定时器1用以产生串行口的波特率,则其中断将被禁止。通常情况下,定时器的运行方式为定时器自动重装方式(TMOD的高4位为=0010B,即定时器T1工作模式MODE=2)。在这种情况下,串口的波特率由下式决定:(www.xing528.com)

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

(2)用定时器2产生波特率 在8052中,可通过置位特殊功能寄存器T2CON中的TCLK和/或RCLK位选择定时器2作为波特率发生器。注意,发送波特率和接收波特率是可以不相同的。

定时器2波特率发生器模式和自动重装模式是类似的。在自动重装模式中,TH2的溢出是由软件预置的在寄存器RCAP2H和RCAP2L的16位值装入定时器2。

模式1和模式3的波特率取决于定时器2的溢出率,见下式:

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

定时器2作为定时器运行和波特率发生器略有区别:作为定时器运行时,计时单位为机器周期(1个机器周期=12个时钟周期),而作为波特率发生器的计时单位则是状态周期(1个状态周期=2个振荡周期)。因而模式1和模式3的波特率也可由下式给出:

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

4.RS-232-C对电气特性、逻辑电平和各种信号线功能都作了哪些规定?

答:EIA-RS-232-C对电气特性、逻辑电平和各种信号线功能都作了规定。

在TXD和RXD上采用负逻辑:逻辑1=-3~-15V;逻辑0=3~15V。

在RTS、CTS、DSR、DTR和DCD等控制线上:信号有效(接通,ON状态,正电压)=3~15V;信号无效(断开,OFF状态,负电压)=-3~-15V。

以上规定说明了RS-323-C标准对逻辑电平的定义。对于数据(信息码):逻辑“1”的电平低于-3V,逻辑“0”的电平高于3V;对于控制信号:接通状态(ON),即信号有效的电平高于3V;断开状态(OFF),即信号无效的电平低于-3V;也就是当传输电平的绝对值大于3V时,电路可以有效地检查出来,介于-3~3V之间的电压无意义,低于-15V或高于15V的电压也认为无意义,因此,实际工作时,应保证电平在±(3~15)V之间。

5.SPI串行通信接口需要使用哪4条线?

答:SPI串行通信接口需要使用的4条线为串行时钟线SCLK,主器件数据输入/从器件数据输出MISO,主器件数据输出/从器件数据输入MOSI,从器件使能信号SS(低电平有效),如图8-1所示。单片机仅需3~4根数据线和控制线即可扩展具有SPI接口的各种I/O器件。

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

图8-1 SPI总线器件连接图

6.I2C总线用了哪两根双向信号线?

答:I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。如图8-2所示,多个符合I2C总线标准的器件都可以通过同一条I2C总线进行通信,它们之间通过器件地址来区分,而不需要额外的地址译码器

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

图8-2 I2C总线信号连接示意图

I2C总线的SDA和SCL引脚都是漏极开路(或集电极开路)输出结构,因此实际使用时,SDA和SCL信号线都必须加上拉电阻Rp(Pull-Up Resistor),上拉电阻一般取值为3~10kΩ。I2C总线通过上拉电阻接正电源。当总线空闲时,两根线均为高电平。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是相“与”关系。

7.I2C总线对起始信号S和终止信号P是如何规定的?

答:SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号,如图8-3所示。

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

图8-3 数据位的起始信号和终止信号示意图

起始信号和终止信号都是由主机发出的,在起始信号产生后,总线就处于被占用的状态;在终止信号产生后,总线就处于空闲状态。

连接到I2C总线上的器件,若具有I2C总线的硬件接口,则很容易检测到起始和终止信号。对于不具备I2C总线硬件接口的有些单片机来说,为了检测起始和终止信号,必须保证在每个时钟周期内对数据线SDA采样两次。

*8.利用8051单片机串行口的模式0扩展输入输出:

串行口的模式0(MODE0),即同步移位寄存器方式。8位数据(先为LSB)从引脚RXD接收/移出,引脚TXD输出移位时钟,波特率固定为晶振频率的1/12。移位寄存器方式(通常用来并行I/O口扩展),可外接移位寄存器以扩展I/O口,也可以外接同步I/O设备。

使用串行口控制1个数码管循环显示0~9这10个数,要求每按一次SB2,显示的数字往前走1位,8位LED也同步显示。

单片机在串行口模式0下发送数据时,要把输出口设置成“串入并出”,需要用到芯片74HC164,该芯片是8位串行输入和并行输出的同步移位芯片。

输出用了8个LED和一个七段数码管同时显示,数码管显示的是当前的十进制数0~9中的某一个,8个LED同步显示D7~D0的对应位,图8-4是显示“5”时的状态。试编写相应的软件程序。

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

图8-4 AT89C52与74HC164的扩展输出电气连接图

答:接口电路说明:将单片机的TXD引脚与74HC164的CLOCK引脚相连,从TXD引脚输出脉冲信号控制74HC164的移位操作,RXD输出串行数据,与A、B引脚相连,74HC164的数据输出端控制8个LED发光二极管闪亮。P1口输出计数次数。

C51参考程序如下:

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

*9.8051单片机和PC的通信软件设计

答:8051单片机和PC采用RS-232-C总线接口,通过MAX232接口芯片建立起通信,见主教材图8-10。假设PC先向单片机发送一个指令“55H”,当单片机接收到PC发来的数据,并判断命令为“55H”时,点亮P1.0口上的发光二极管LED,并启动定时发送程序,即每隔5s向PC发送16个字节的数据。编写8051单片机和PC的C51程序,具体要求如下:

(1)8051系列单片机中,波特率由定时/计数器T1自动产生;但在使用前,需对T1进行一些设置,才能得到自己想要的波特率。通常在有串行通信的系统中选用11.0592MHz的晶振。为了使用方便,采用19200Kbit/s的波特率,根据主教材中式(8-5)计算,所以T1的初值应设置为0xfd。

(2)根据定时时间计算公式:定时时间=(2N-计数初值)×机器周期,1个机器周期=12×11.0592μs,若定时时间为50ms,用16位的T0定时器(工作在方式1)可求出计数初值=19456,对应的16进制数为0x4C00。

10.登陆美信公司网站,查阅1-Wire总线产品和设计

答:参考网站网址为:http:∥www.maximintegrated.com/cn/pst/run.mvp?q=1-wire

网站截图如图8-5所示。

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

图8-5 网站截图

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

我要反馈