单片机串行通信课程设计报告_文档格式.doc

上传人:wj 文档编号:4621139 上传时间:2023-05-03 格式:DOC 页数:27 大小:717KB
下载 相关 举报
单片机串行通信课程设计报告_文档格式.doc_第1页
第1页 / 共27页
单片机串行通信课程设计报告_文档格式.doc_第2页
第2页 / 共27页
单片机串行通信课程设计报告_文档格式.doc_第3页
第3页 / 共27页
单片机串行通信课程设计报告_文档格式.doc_第4页
第4页 / 共27页
单片机串行通信课程设计报告_文档格式.doc_第5页
第5页 / 共27页
单片机串行通信课程设计报告_文档格式.doc_第6页
第6页 / 共27页
单片机串行通信课程设计报告_文档格式.doc_第7页
第7页 / 共27页
单片机串行通信课程设计报告_文档格式.doc_第8页
第8页 / 共27页
单片机串行通信课程设计报告_文档格式.doc_第9页
第9页 / 共27页
单片机串行通信课程设计报告_文档格式.doc_第10页
第10页 / 共27页
单片机串行通信课程设计报告_文档格式.doc_第11页
第11页 / 共27页
单片机串行通信课程设计报告_文档格式.doc_第12页
第12页 / 共27页
单片机串行通信课程设计报告_文档格式.doc_第13页
第13页 / 共27页
单片机串行通信课程设计报告_文档格式.doc_第14页
第14页 / 共27页
单片机串行通信课程设计报告_文档格式.doc_第15页
第15页 / 共27页
单片机串行通信课程设计报告_文档格式.doc_第16页
第16页 / 共27页
单片机串行通信课程设计报告_文档格式.doc_第17页
第17页 / 共27页
单片机串行通信课程设计报告_文档格式.doc_第18页
第18页 / 共27页
单片机串行通信课程设计报告_文档格式.doc_第19页
第19页 / 共27页
单片机串行通信课程设计报告_文档格式.doc_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机串行通信课程设计报告_文档格式.doc

《单片机串行通信课程设计报告_文档格式.doc》由会员分享,可在线阅读,更多相关《单片机串行通信课程设计报告_文档格式.doc(27页珍藏版)》请在冰点文库上搜索。

单片机串行通信课程设计报告_文档格式.doc

让我们不仅将课堂上学到的理论知识与实际应用结合起来,而且能够对电子电路、电子元器件等方面的知识进一步加深认识,同时在软件编程、调试、相关仪器设备和相关软件的使用技能等方面得到较全面的锻炼和提高。

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

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

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

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

(2)课程设计要求

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

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

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

(3)课程设计的内容

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

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

二、主要步骤及方案

(1)主要步骤

1)对题目进行分析

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

3)画出电路图

4)写出运行程序

5)加载并调试修改程序

(2)主要方案

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

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

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

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

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

系统的原理框图如下:

AT89C51

晶振电路

复位电路

电源

LDE显示器

LED数码管

数码驱动芯片

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

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

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

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

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

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

一、总体设计

1.设计要求:

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

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

2.设计方案:

本次设计,对于两片AT89C51,采用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)发送端程序流程图

主程序开始

从机应答

程序初始化

主机发送信号K1按下

主机发送数据

输出完成?

清除标志位

未应答

未完成

(2)接收方程序流程图

接收完成?

K2按下,接收数据

发送信号

接收完成?

重新接收

显示

四、联合调试

在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;

while

(1)

{

DelaysMS(100);

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=

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

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2