单片机通信模块设计_第1页
单片机通信模块设计_第2页
单片机通信模块设计_第3页
单片机通信模块设计_第4页
单片机通信模块设计_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

单元8通信模块设计

回顾1,DS18B20有几个管脚?其和单片机连接仅需几根连接线?

2,A/D转换的性能指标有哪些?含义分别是什么?3,ADC0809转换精度为多少位?转换时间?4,DAC0832一般应用在哪些场合?其转换精度是?本单元任务任务1单片机系统之间的串行通信设计任务2单片机与PC机串行通信设计任务描述:任务分析: 客户希望可以在控制室远程发指令给广告灯系统改变流水灯运行方式,而不是每次都要在亲临安装现场进行调校。本任务要求在控制室按下按键K1、K2,分别远程控制现场流水灯依次点亮运行以及流水灯红蓝交替点亮运行。

远程控制包括无线和有线方式,其中有线方式中最常见的就是串口通讯方案。51单片机集成了串口引擎,因此可以方便利用串口进行数据的收发。本设计也将运用单片机串口编程方案解决远程控制的问题。

任务1单片机系统之间的串行通信设计1.通信基本概念

计算机CPU与外部设备之间进行的信息交换,或者计算机之间的信息交换,均称为通信。通信通常有并行和串行两种方法。并行通信是指数据的各位同时进行传送(发送或接收)的通信方式。其优点是传送速度快;缺点是数据有多少位,就需要多少根传送线。例如8051单片机的P1口作为输出/输入口时,在P1口引脚上的8位数据同时输出到外部设备或读入到CPU中。图8-1(a)所示为8051单片机与外设间8位数据并行通信的连接方法。并行通信在位数多、传送距离又远时就不太适宜。并行数据通信是指数据的各位同时进行传送(发送或接收)的通信方式。其优点是传送速度快;缺点是数据有多少位,就需要多少根传送线。串行数据通信指数据是一位一位顺序传送的通信方式,它的突出优点是只需一对传送线(利用电话线就可作为传送线),这样就大大降低了传送成本,特别适用于远距离通信;其缺点是传送速度较低。串行通信数据格式异步通信同步通信数据传输方式单工(Simplex):单工方式仅能进行一个方向的传输,即发送方只能发送信息,接收方只能接收信息半双工(Half-Duplex):半双工方式能交替进行双向数据传输,但两设备之间只有一根传输线,即不能同时进行两个方向的数据传输全双工(Full-Duplex):全双工方式能同时进行两个方向的数据传输,设备之间有两根传输线,在发送的同时也能接收信息传输速率串行通信中传输速率的单位是波特率(baudrate)。波特率等于每秒钟传输二进制的数据位数(位/秒)如果数据传输速率为960字符/秒,在异步通信下,每个字符包含10位(1个起始位、8个数据位、1个停止位),则一个8位的字符实际包含10位,计算波特率为

10×960=9600位/秒 每个数据位传输的时间为波特率的倒数,即

=1/9600≈0.1042ms2.串行接口控制寄存器8051单片机的串口接口中的核心部件—通用异步接收/发送器,简称UART(Univerial

AsynohronousReceiver/Transmitter),为异步串行通信设计提供了简便可靠的方案。单片机接收数据时,串行数据由RXD引脚接收到接收缓冲器SBUF,再通过指令读SBUF即得到接收的数据;发送数据时,由指令直接将数据写入发送缓冲器SBUF中,随后由硬件控制将数据输出到TXD引脚上。当接收缓冲器满或发送缓冲器空,将置RI位(接收中断标志)或TI(发送中断标志)为“1”,若串行中断允许(ES=1)及总中断允许(EA=1),则向CPU产生串口中断。单片机串行通信有关的控制寄存器包括串行控制寄存器SCON、电源控制寄存器PCON及中断允许寄存器IE。串行控制寄存器SCON:SCON用于设定串行接口工作方式、接收发送控制及设置状态标志。SCON格式如下(98H)D7D6D5D4D3D2D1D0SCONSM0SM1SM2RENTB8RB8TIRI位地址9F9E9D9C9B9A9998SCON中的各位含义如下:

SM0,SM1串行口的工作方式选择位SM0SM1工作方式功能说明波特率000移位寄存器方式(用于扩展I/O口)fosc/1201110位异步收发方式(UART)由TI控制10211位异步收发方式(UART)fosc/32或fosc/6411311位异步收发方式(UART)由TI控制SM2多机通信控制位 在方式2或方式3中,如果SM2=1,则接收到的第9位数据(RB8)为0时不激活RI,接收到的数据丢失;只有当收到的第9位数据(RB8)为1时才激活RI,向CPU申请中断。如果SM2=0,则不论收到的第9位数据(RB8)为1还是为0,都会将接收的数据装入SBUF中。在方式1时,如果SM2=1,则只有收到有效的停止位时才会激活RI;若没有接收到有效的停止位,则RI清零。在方式0中,SM2必须为0REN允许串行接收控制位 由软件置1或清0,只有当REN=1时才允许接收,相当于串行接收的开关。若REN=0,则禁止接收。在串行通信接收控制过程中,如果满足RI=0和REN=1(允许接收)的条件,就允许接收,一帧数据就装载入接收SBUF中TB8发送数据位 发送数据的第9位(D8)装入TB8中。在方式2或方式3中,根据发送数据的需要由软件置位或复位。在许多通信协议中可用作奇偶校验位,也可在多机通信中作为发送地址帧或数据帧的标志位。对于后者,TB8=1,说明该帧数据为地址;TB8=0,说明该帧数据为数据字节。在方式0或方式1中,该位未用RB8接收数据位 接收数据的第9位。在方式2或方式3中,接收到的第9位数据放在RB8位。它或是约定的奇偶校验位,或是约定的地址数据标示位。在方式2或方式3多机通信中,若SM2=1,如果RB8=1,说明收到的数据为地址帧。在方式1中,若SM2=0(即不是多机通信情况),RB8中存放的是已接收到的停止位。在方式0中,该位未用TI发送中断标志位 在一帧数据发送完时被置位。在方式0串行发送第8位结束或其他方式串行发送到停止位的开始时由硬件置位,可用软件查询。它同时也申请中断,TI置位为意味着向CPU提供“发送缓冲器SBUF已空”的信息,CPU可以准备发送下一帧数据。串行口发送中断相应后,TI不会自动清0,必须由软件清0RI接收中断标志位 在接收到一帧有效数据后由硬件置位。在方式0中,第8位数据发送数据时,由硬件置位;在其他三种方式中,当接收到停止位时,由硬件置位,RI=1,申请中断,表示一帧数据接收结束,并已装入接收SBUF中,要求CPU取走数据。CPU相应中断,取走数据。RI也必须由软件清0,清除中断申请,并准备接收下一帧数据。 串行发送中断标志TI和接收中断标志RI是同一个中断源,CPU事先不知道是发送中断TI还是接收中断RI产生的中断请求,所以,在全双工通信时,必须由软件来判别,在CPU响应中断以后,不能由硬件自动清零,只有在用户查询出是发送中断还是接收中断以后,由用户通过软件清0电源控制寄存器PCON:电源控制寄存器PCON能够进行电源控制,其D7位SMOD是串行口波特率设置位。称为波特率倍增位。即当SMOD=1时,波特率加倍;当SMOD=0时,波特率不加倍。PCON与串行通信有关的格式如下SMODGF0GF1PDIDL中断允许控制寄存器IE:IE寄存器控制中断系统的各中断的允许与否。其中与串行通信有关的位有EA和ES位,当EA=1时且ES=1时,串行中断允许3.串行接口工作方式

串行接口的工作方式有4种,由SCON中的SM0和SM1来定义。在这4种工作方式中,串行通信只使用方式1、方式2、方式3,方式0主要用于扩展并行输入/输出口方式0

方式0为移位寄存器输入输出方式,也可接同步输入输出设备,一般用于扩展I/O口。

扩展输出口。例如,通过74LS164扩展并行输出口时,如图8-7所示,串行数据通过RXD引脚输出,TXD引脚输出移位脉冲。当数据写入串行口数据缓冲器SBUF时,TXD每送出一位移位信号,RXD引脚就发送一位数据。直到最高位(D7位)发出后,停止发送数据和移位脉冲,并由硬件置TI为“1”,申请中断 扩展输入口。例如,通过74LS165扩展并行输入口,如图8-8所示,当设置REN(SCON.4)=1且RI(SCON.0)=1时,就启动一次接收过程,此时,RXD引脚为串行数据输入端,TXD引脚仍输出移位脉冲,每输出一位移位脉冲,从RXD引脚输入到移位寄存器的数据左移一位,直到接收完所有数据位,再装入接收缓冲器SBUF中,并由硬件置RI为“1”,申请中断

【课堂练习】试用164扩展输出口连接LCD1602数据口,驱动显示“Thisisdisplaysystemwith74LS164”方式1

方式1是一帧10位的异步串行通信方式。共包括1个起始位、8个数据位(低位在前)和一个停止位。TXD为发送端,RXD为接收端,波特率可变 发送 串行口在方式1下进行发送时,数据由TXD端输出。CPU执行一条写入SBUF的指令就会启动串行口发送,发送完一帧数据信息时,由硬件置发送中断标志TI为“1”,申请中断 接收 接收数据时,SCON应处于允许接收状态(REN=1)。接收数据有效时,数据装载入SBUF,停止位进入RB8,RI置“1”,申请中断方式2、3

串行口工作于方式2或方式3,为波特率固定11位异步通信口,发送和接收的一帧信息由11位组成,即1位起始位、8位数据位(低位在前)、1位可编程位(第9位)和1位停止位。TXD为发送端,RXD为接收端。发送时可编程位(TB8)根据需要设置为“0”或“1”(TB8即可作为多机通信中的地址数据标志位又可作为奇偶校验位);接收时,可编程位的信息被送入SCON的RB8中 发送 数据由TXD端输出,附加的第9位数据为SCON中的TB8。CPU执行一条写SBUF的指令后,便立即启动发送器发送,送完一帧信息后,TI被置“1”,申请中断 接收 当REN=1,允许串行口接收数据。数据由RXD端输入,接收11位信息。接收数据有效,8位数据装入SBUF,第9位数据装入RB8,并置RI为14.波特率

串行通信中,收发双方不管是对数据传输格式,或对数据传输速率都必须相互约定。数据传输格式通过编程设定不同的工作方式来确定方式0的波特率 波特率固定为振荡频率的1/12。即: 方式0波特率=/12

课堂练习:试计算晶振频率为12MHz、6MHz,方式0的波特率?方式2的波特率 波特率为振荡频率的1/64或1/32,它取决于PCON的SMOD位。当SMOD=0,波特率为的1/64,当SMOD=1,波特率为的1/32。即: 方式2波特率=×方式1、3由定时器T1作为波特率发生器,因此波特率由定时器T1的溢出率与SMOD共同决定。即: 方式1、3波特率=T1溢出率×

通常设定T1为工作方式2(8位自动重载模式),设定时初值为x,则每过(-x)个机器周期产生一次溢出。溢出周期为: (-x)×12/

则溢出率为: 所以: 方式1、3波特率= T1工作方式2的定时初值【例8-1】某8051单片机控制系统,晶振频率为12MHz,要求串行口发送数据为8位,波特率为1200b/s,编写串行口的初始化程序 分析:方式0主要用于扩展IO口。方式2的波特率为晶振频率的1/32或1/64,无法达到1200b/s,且方式2、3为9位UART。可知选用方式0、2、3都不符合题目要求。因此设定为工作方式1。 设SMOD=0,则T1工作方式2的定时初值X为

X=28-2SMOD×fosc/(12×32×波特率)

=256-1×12×106/(384×1200)

=256-26.04=229.96≈0E6H 初始化程序如下:

SCON=0x50; //串行口工作于方式1 PCON=PCON&&0x7f;//SMOD=0 TMOD=0x20; //T1工作于方式2,定时方式

TH1=0xE6; //设置时间常数初值

TL1=0xE6; TR1=1; //启动T1

执行上面的程序后,即可使串行口工作于方式1,波特率为1200b/s。

【课堂思考】某单片机系统的晶振频率为11.0592MHz,要求串行口发送数据为8位,波特率为9600b/s,试编写串行口的初始化程序。波特率方式1、3fosc=6MHzfosc=12MHzfosc=11.0592MHzSMODT1方式初值SMODT1方式初值SMODT1方式初值62.5k12FFH19.2k12FDH9.6k02FDH4.8k12F3H02FAH2.4k12F3H12F3H02F4H1.2k12E6H02E6H02E8H60012CCH02CCH02D0H30002CCH0298H02A0H137.5121DH021DH022EH1100272H01FEEBH01FEFFH5.串行通信设置过程

1.波特率设置初始化,通信双方的波特率必须一致;2.串行口初始化;3.按约定发送/接收数据;4.编写串行中断服务程序1.Proteus电路设计2.KeilC51程序设计3.Proteus-Keil联合调试仿真任务实施单片机之间串口通信电路连接 左边单片机用于接收控制室内发来的指令调整流水灯运行,流水灯电路安装在P1口;右边单片机安放在控制室,根据按键发出相应指令,按键k0、k1安装在P1.6、P1.7口。两个单片机的发送端口和接收端口交叉相连,即单片机的发送端和另一个单片机的接收端相连。(1)程序流程

左边单片机接收控制室内发来的指令,当接收到指令“0xf1”,控制流水灯依次点亮运行;当接收到指令“0xf2”,控制流水灯红蓝交替点亮运行。右边单片机根据按键发出相应指令,按下k0发出指令“0xf1”,按下k1发出指令“0xf2”。

单片机1程序:

#include"AT89X51.H" unsignedcharcodeled_light1[]={0X7E,0XBD,0XDB,0XE7, 0XDB,0XBD,0X7E};//两头向中间,然后再返回的编码

unsignedcharcodeled_light2[]={0Xaa,0X55};//红灯-蓝灯交替点亮的编码

voidmain() { TMOD=0x20; //设置定时器1工作方式2 TH1=0xfd; //装载定时器初值,波特率为9600 TL1=0xfd; //波特率重装值

SCON=0x50; //设置串行口方式1,REN=1准备接收数据

PCON=0x0; //波特率不增加

TR1=1; //启动定时器1 ES=1; //允许串行中断

EA=1; //允许总中断标志位

while(1) { if(led_running1==1) //判断led_running1标志位是否为1 { P1=led_light1[i++];//运行两头向中间,再返回

delay();

if(i==7)i=0; } if(led_running2==1) //判断led_running2标志位是否为1 { P1=led_light2[i++];//运行红-蓝灯交替点亮

delay();图9-4串行中断程序流程

if(i==2)i=0; } } }voidserial()interrupt4 //接收到数据,产生串行中断{ RI=0; //清接收中断标志RI,使得可继续接收

if(SBUF==0xf1) //判断接收的数据

{ led_running1=1; //led_running1运行标志位置1 led_running2=0; i=0; //运行位置变量重新清0 }

if(SBUF==0xf2) { led_running1=0; led_running2=1; //led_running2运行标志位置1 i=0; //运行位置变量重新清0 }

单片机2程序:

#include"AT89X51.H" voidmain() { TMOD=0x20; //设置定时器1工作方式2 TH1=0xfd; //装载定时器初值,波特率为9600 TL1=0xfd; //波特率重装值

SCON=0x50; //设置串行口方式1,REN=1准备接收数据

PCON=0x0; //波特率不增加

TR1=1; //启动定时器1 while(1) { if(P1_6==0) //判断key0被按下

{

key_delay();//去抖延时10ms if(P1_6==0) //再次判断key0按下

{ SBUF=0xf1; //发送的值装载到SBU

while(!TI); //等待发送完毕

TI=0; //清发送标志,使得可继续发送

} } if(P1_7==0)//判断key1被按下

{

key_delay();//去抖延时10ms if(P1_7==0) //再次判断key1按下

{ SBUF=0xf2; //发送的值装载到SBUF

while(!TI); //等待发送完毕

TI=0; //清发送标志,使得可继续发送

} } } }

配置步骤1分别建立两个单片机的C51工程文件,并编写相应程序,调试通过生成对应的HEX文件(Task程序-1.hex、Task程序-2.hex)Proteus-Keil联合调试仿真步骤2把Task程序-1.hex、Task程序-2.hex拷贝到此任务对应的proteus电路设计文件夹中步骤3打开电路设计文件,选中其一单片机并双击,打开“EditComponent”对话框,将对应的HEX文件加载到单片机中,如图8-15所示。同理可将另一个单片机的HEX文件加载进来。另外注意,根据串口通信波特率设置要求,需将单片机的晶振频率“ClockFrequency”更改为11.0592MHz步骤4点击中的按钮,启动运行。即可通过右边单片机按键控制左边单片机的流水灯运行任务描述:任务分析: 实现单片机系统之间的通信设计后,客户还希望可以通过PC机向电子广告屏系统发出指令,以便控制电子广告屏上的流水灯依次点亮运行以及流水灯红蓝交替点亮运行样式。

PC机和单片机系统共有的通信口资源是串行口,因此仍可用串口作为沟通PC机和单片机系统信息之间的桥梁。本任务将基于proteus仿真软件,模拟PC机和单片机串口通信设计的完整过程,当电子广告屏系统接收到PC机发出指令“0x05”,流水灯依次点亮运行,当接收的指令为“0x08”,流水灯红蓝交替点亮运行。

任务2单片机与PC机串行通信设计1.RS-232C标准串行总线

RS-232C是美国电子工业协会EIA推荐的一种串行物理接口标准,RS-232C总线标准有25条信号线,包括一个主通道和一个辅助通道。而对于一般的双工通信,仅需几根信号线就可实现,如一根发送线、一根接收线及地线引脚名称功能1DCDMODEM收到远程载波信号,向DTE发载波信号DCD2RXD接收数据线3TXD发送数据线4DTRDTE(数据终端:数据源或目的地)准备就绪,发送DTR给MODEM5GND信号地6DSRDCE(数据通信设备:MODEM)准备就绪,发送DSR给DTE7RTSDTE在检测到DSR有效时,向MODEM发送RTS,请求发送数据给远程DTE8CTS当MODEM检测到RTS有效时,根据目的地的号码向远程MODEM发出呼叫,远程MODEM收到此呼叫,发出回答载波信号,本地MODEM收到远程载波信号时,向远程MODEM发出原载波信号进行确认,同时发送DCD、CTS给DTE,表示通信链路已经建立,可以通信9RIMODEM收到远方呼叫时,向DTE发出RI振铃,RI结束,若DTR有效,向对方发应答信号2.MAX232介绍

由于RS-232C规定的逻辑电平同TTL/MOS电平不一样,因

温馨提示

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

评论

0/150

提交评论