设计单片机串行通信课程设计报告Word格式.docx

上传人:b****7 文档编号:22046606 上传时间:2023-02-02 格式:DOCX 页数:24 大小:61.93KB
下载 相关 举报
设计单片机串行通信课程设计报告Word格式.docx_第1页
第1页 / 共24页
设计单片机串行通信课程设计报告Word格式.docx_第2页
第2页 / 共24页
设计单片机串行通信课程设计报告Word格式.docx_第3页
第3页 / 共24页
设计单片机串行通信课程设计报告Word格式.docx_第4页
第4页 / 共24页
设计单片机串行通信课程设计报告Word格式.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

设计单片机串行通信课程设计报告Word格式.docx

《设计单片机串行通信课程设计报告Word格式.docx》由会员分享,可在线阅读,更多相关《设计单片机串行通信课程设计报告Word格式.docx(24页珍藏版)》请在冰豆网上搜索。

设计单片机串行通信课程设计报告Word格式.docx

让我们增加了对单片机的感性认识,加深对单片机理论方面的理解,同时也加深单片机的内部功能模块的应用。

使我们了解和掌握单片机应用系统的软硬件设计过程、方法及实现,强化单片机应用电路的设计与分析能力。

提高我们在单片机应用方面的实践技能和科学作风;

培育我们综合运用理论知识解决问题的能力。

(2)课程设计要求

通过对课题的分析,进行系统功能设计,选择器件,划分软硬件的功能,用Proteus软件在PC机上完成硬件原理图设计。

用汇编语言,完成软件设计。

然后使用Proteus仿真软件在PC机上进行系统仿真,调试电路和修改调试程序,直至达到设计的要求和取得满意的效果。

(3)课程设计的内容

1).A机控制B机的两个LED闪烁,B机控制A机的数码管加一显示。

2).使用DS18B20温度传感器,由B机测量温度后由A机显示.

2、主要步骤及方案

(1)主要步骤

1)对题目进行分析

2)确定电路图需要的元件

3)画出电路图

4)写出运行程序

5)加载并调试修改程序

(2)主要方案

利用AT51芯片、复位电路、时钟电路、LED数码管等,使

A机控制B机的两个LED闪烁,B机控制A机的数码管加一显示。

使用DS18B20温度传感器,由B机测量温度后由A机显示.把P1口的高7位与数码管

相连,绿灯表示通行方向。

P2口与LED显示器相连,用来输出显示的数字。

系统的原理框图如下:

【摘要】串行通信是单片机的一个重要应用。

本次课程设计就是要利用单片机来完成一个系统,实现双片单片机串行通信。

通信的结果实用数码管进行显示。

两个单片机之间采用RS232进行双机通信。

在通信过程中,使用通信协议进行通信。

【关键字】52单片机,串行通信,接口,DS18B20

一、总体设计

1.设计要求:

(1单片机之间进行串行通信,发送端将0~f循环发送到接收端,并在接收端显示。

(2)使用DS18B20温度传感器,由B机测量温度后由A机显示.

2.设计方案:

本次设计,对于两片AT51,采用RS232进行双机通信。

发送方的数据由串行口TXD段输出,经过电平转换芯片MAX232将TTL电平转换为RS232电平输出,经过传输线将信号传送到接收端。

接收方也使用MAX232芯片进行电平转换后,信号到达接收方串行口的接收端。

接受方接收后,在数码管上显示接收的信息及利用LED显示通信结果,与此同时由DS18B20测量温度后由另一单片机显示。

为提高抗干扰能力,还可以在输入输出端加光耦合进行光电隔离。

软件部分,通过通信协议进行发送接收,主机先送信号给从机,从机接收信号后发出应答信号并显示相应内容.

二、硬件设计

1.51单片机的串行通信

图1.AT89C51

计算机与外界的信息交换称为通信,常用的通信方式有两种:

并行通信和串行通信。

51单片机用4个接口与外界进行数据输入与数据输出就是并行通信,并行通信的特点是传输信号的速度快,但所用的信号线较多,成本高,传输的距离较近。

串行通信的特点是只用两条信号线(一条信号线,再加一条地线作为信号回路)即可完成通信,成本低,传输的距离较远。

51单片机的串行接口是一个全双工的接口,它可以作为UART(通用异步接受和发送器)用,也可以作为同步移位寄存器用。

51片机串行接口的结构如下:

(1)数据缓冲器(SBUF)

接受或发送的数据都要先送到SBUF缓存。

有两个,一个缓存,另一个接受,用同一直接地址99H,发送时用指令将数据送到SBUF即可启动发送;

接收时用指令将SBUF中接收到的数据取出。

(2)串行控制寄存器(PCON)

SCON用于串行通信方式的选择,收发控制及状态指示,各位含义如下:

SM0

SM1

SM2

REN

TB8

RB8

TI

RI

SM0,SM1:

串行接口工作方式选择位,这两位组合成00,01,10,11对应于工作方式0、1、2、3。

串行接口工作方式特点见下表

工作方式

功能

波特率

0

8位同步移位寄存器(用于I/O扩展)

fORC/12

1

10位异步串行通信(UART)

可变(T1溢出率*2SMOD/32)

2

11位异步串行通信(UART)

fORC/64或fORC/32

3

SM2:

多机通信控制位。

REN:

接收允许控制位。

软件置1允许接收;

软件置0禁止接收。

TB8:

方式2或3时,TB8为要发送的第9位数据,根据需要由软件置1或清0。

RB9:

在方式2或3时,RB8位接收到的第9位数据,实际为主机发送的第9位数据TB8,使从机根据这一位来判断主机发送的时呼叫地址还是要传送的数据。

TI:

发送中断标志。

发送完一帧数据后由硬件自动置位,并申请中断。

必须要软件清零后才能继续发送。

RI:

接收中断标志。

接收完一帧数据后由硬件自动置位,并申请中断。

必须要软件清零后才能继续接收。

(3)输入移位寄存器

接收的数据先串行进入输入移位寄存器,8位数据全移入后,再并行送入接收SBUF中。

(4)波特率发生器

波特率发生器用来控制串行通信的数据传输速率的,52系列单片机用定时器T1作为波特率发生器,T1设置在定时方式。

波特率时用来表示串行通信数据传输快慢程度的物理量,定义为每秒钟传送的数据位数。

(5)电源控制寄存器PCON

其最高位为SMOD。

(6)波特率计算

当定时器T1工作在定时方式的时候,定时器T1溢出率=(T1计数率)/(产生溢出所需机器周期)。

由于是定时方式,T1计数率=fORC/12。

产生溢出所需机器周期数=模M-计数初值X。

2.MAX232芯片

用89C51串行接口通信,如果两台单片机之间的距离很近(不超过1.5m),可以采用直接将两台单片机的串行接口直接相连,利用其自身的TTL电平(0-5V)直接传输数据信息。

如果传输距离较远(超过1.5m),由于传输线的阻抗与分布电容,会产生电平损耗和波形畸变,以至于检测不出数据或数据出错。

此时可利用RS232标准总线接口,将单片机输出的TTL电平转换为RS232标准电平(逻辑1为-15—-5V;

逻辑0为+5-—+15V)。

用RS232可将传输距离提高到15m,如果想远距离传输,可以采用RS422或者RS485。

电平转换芯片MAX232是美信公司(MAXIM)生产,专用于进行将TTL电平转换为RS232电平的芯片,MAX232内部有泵电源,能将+5V电源电压在芯片内提高到RS232电平所需的+10V或者-10V电平。

图2.电平转换芯片MAX232

3.DS18B20温度传感器

数字温度传感器DS18B20介绍

 1、DS18B20的主要特性

  1.1、适应电压范围更宽,电压范围:

3.0~5.5V,在寄生电源方式下可由数据线供电

  1.2、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯

  1.3、DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温

  1.4、DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内

  1.5、温范围-55℃~+125℃,在-10~+85℃时精度为±

0.5℃

  1.6、可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温

  1.7、在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快

  1.8、测量结果直接输出数字温度信号,以"

一线总线"

串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力

  1.9、负压特性:

电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。

2、DS18B20的外形和内部结构DS18B20内部结构主要由四部分组成:

64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。

DS18B20的外形及管脚排列如下图1:

  DS18B20引脚定义:

(1)DQ为数字信号输入/输出端;

  

(2)GND为电源地;

  (3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)。

  图2:

DS18B20内部结构图

 3、DS18B20工作原理

  DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。

DS18B20测温原理如图3所示。

图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。

高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。

计数器1和温度寄存器被预置在-55℃所对应的一个基数值。

计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。

图3中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。

4.整体电路设计

最终设计电路如下图3所示,发送方的数据由串行口TXD段输出,经过电平转换芯片MAX232将TTL电平转换为RS232电平输出,经过传输线将信号传送到接收端。

接受方接收后,通过P1口在数码管上显示接收的信息。

A机控制B机LED,B机控制A机数码管加一显示

B机DS18B20温度传感器检测温度送A机显示

三、软件设计

1.串行通信软件实现

(1)串行口工作于方式1;

用定时器1产生9600bit/s的波特率,工作于方式2。

(2)功能:

将本机ROM中数码表TAB[16]中的16个数发送到从机,并保存在从机内部ROM中,从机收到这16个数据后送到一个数码管循环显示。

(3)通信协议:

主机首先发送连络信号(信号),从机接收到之后返回一个连络信号(BBH)表示从机已准备好接收。

(4)通信过程使用第九位发送奇偶校验位。

(5)从机接收到一个数据后,立即进行奇偶校验,若数据没有错误,则返回00H,否则返回FFH。

(6)主机发送一个数据后,等待从机返回数据;

若为00H,则继续发送下一个数据,若为FFH,则重新发送数据。

(7)通过通信协议进行发送接收,A机向B机发送操作代码A、B、C或停止发送,对应的开关K1按一下两机LED1都亮,按第二下两机LED2都亮,再按下时,LED1、LED2全亮,再按则四灯全灭。

(8)K2控制B机向A机发送字符,根据按键次数逐次加1至9,10为关闭状态,同时B机接收A机命令,受K1控制LED灯的亮、灭。

(9)由B机DS18B20测量温度后A机显示测量的温度值.

2串行通信的传输方式

串行通信的传送方向通常有三种

(1)单向(或单工)配置,只允许数据向一个方向传送;

(2)半双向(或半双工)配置,允许数据向两个方向中的任一方向传送,但每次只能有一个站点发送;

(3)全双向(全双工)配置,允许同时双向传送数据,因此,全双工配置是一对单向配置,它要求两端的通信设备都具有完整和独立的发送和接受能力。

3、串行通信工作方式

方式1接收时,数据从引脚RXD(P3.0)端输入。

接收是在SCON寄存器中REN位置1的前提下,并检测到起始位(RXD上检测到1→0的跳变,即起始位)而开始的。

接收时,定时信号有两种:

一种是接收移位时钟(RX时钟),它的频率和传送波特率相同,也是由定时器T1的溢出信号经过16或32分频而得到的;

另一种是位检测器采样脉冲,它的频率是RX时钟的16倍,亦即在一位数据期间有16位检测器采样脉冲,为完成检测,以16倍于波特率的速率对RXD进行采样。

4程序流程图

(1)发送端程序流程图

(2)接收方程序流程图

四、联合调试

在protues上进行仿真实验。

首先使用KeilC将编写完成的程序编译生成HEX文件,将HEX文件烧录到两片单片机中,进行仿真实验,结果如下图所示,可以看到,接收端已将接受到的数据完整的显示了出来。

附录

A机控制B机LED

#include<

reg52.h>

#defineucharunsignedchar

#defineuintunsignedint

sbitLED1=P1^0;

sbitLED2=P1^3;

sbitK1=P1^7;

ucharOperation_No;

//操作代码

//数码管代码

ucharcodeDSY_CODE[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

//延时

voidDelaysMS(uintms)

{

uchari;

while(ms--)for(i=0;

i<

120;

i++);

}

//向串口发送字符

voidPutc_to_SerialPort(ucharc)

SBUF=c;

while(TI==0);

TI=0;

//主程序

voidmain()

{

LED1=LED2=1;

P0=0x00

SCON=0x50;

//串口模式一,允许接收

TMOD=0x20;

//T1工作模式2

PCON=0X00;

//波特率不倍增

TH1=0xfd;

TL1=0xfd;

TI=RI=0;

TR1=1;

IE=0x90;

//允许串口中断

while

(1)

DelaysMS(100);

if(K1==0)//按下K1时选择操作代码0,1,2,3

while(K1==0);

Operation_No=(Operation_No+1)%4;

switch(Operation_No)//根据操作代码发送A/B/C或停止发送

{

case0:

Putc_to_SerialPort('

X'

);

LED1=LED2=1;

break;

case1:

A'

);

LED1=~LED1;

LED2=1;

case2:

Putc_to_SerialPort('

B'

LED2=~LED2;

LED1=1;

case3:

C'

LED2=LED1;

}

}

//甲机串口接收中断函数

voidSerial_INT()interrupt4

if(RI)

{

RI=0;

if(SBUF>

=0&

&

SBUF<

=9)P0=DSY_CODE[SBUF];

elseP0=0x00;

B机控制A机数码管加一显示

sbitK2=P1^7;

ucharNumX=-1;

{LED1=LED2=1;

P0=0x00;

//波特率9600

RI=TI=0;

if(K2==0)

while(K2==0);

NumX=++NumX%11;

//产生0~10范围内的数字,其中10表示关闭

SBUF=NumX;

while(TI==0);

TI=0;

if(RI)//如收到则LED则动作

switch(SBUF)//根据所收到的不同命令字符完成不同动作

case'

:

//全灭

case'

LED1=0;

//LED1亮

LED2=0;

//LED2亮

LED1=LED2=0;

//全亮

B机DS18B20温度传感器检测温度送A机显示

A机程序

#include<

intrins.h>

#definedelayNOP(){_nop_();

_nop_();

sbitLCD_RS=P2^0;

sbitLCD_RW=P2^1;

sbitLCD_EN=P2^2;

ucharcodeTemp_Disp_Title[]={"

CurrentTemp:

"

};

ucharCurrent_Temp_Display_Buffer[]={"

TEMP:

ucharcodeTemperature_Char[8]=

0x0c,0x12,0x12,0x0c,0x00,0x00,0x00,0x00

ucharcodedf_Table[]=

0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9

ucharCurrentT=0;

ucharTemp_Value[]={0x00,0x00};

ucharDisplay_Digit[]={0,0,0,0};

bitDS18B20_IS_OK=1;

intb;

sbitDQ=P3^4;

voidDelayXus(uintx)

uchari;

while(x--)

for(i=0;

200;

voidDelay(uintx)

while(--x);

ucharInit_DS18B20()

ucharstatus;

DQ=1;

Delay(8);

DQ=0;

Delay(90);

returnstatus;

bitLCD_Busy_Check()

bitresult;

LCD_RS=0;

LCD_RW=1;

LCD_EN=1;

delayNOP();

result=(bit)(P0&

0x80);

LCD_EN=0;

returnresult;

voidWrite_LCD_Command(ucharcmd)

while(LCD_Busy_Check());

LCD_RW=0;

LCD_EN=0;

_nop_();

P0=cmd;

voidWrite_LCD_Data(uchardat)

LCD_RS=1;

P0=dat;

voidLCD_Initialise()

Write_LCD_Command(0x01);

DelayXus(5);

Write_LCD_Command(0x38);

Write_LCD_Command(0x0c);

Write_LCD_Command(0x06);

voidSet_LCD_POS(ucharp

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 远程网络教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1