基于51单片机的串口通讯系统课程设计论文.docx

上传人:b****5 文档编号:12361570 上传时间:2023-04-18 格式:DOCX 页数:33 大小:514.60KB
下载 相关 举报
基于51单片机的串口通讯系统课程设计论文.docx_第1页
第1页 / 共33页
基于51单片机的串口通讯系统课程设计论文.docx_第2页
第2页 / 共33页
基于51单片机的串口通讯系统课程设计论文.docx_第3页
第3页 / 共33页
基于51单片机的串口通讯系统课程设计论文.docx_第4页
第4页 / 共33页
基于51单片机的串口通讯系统课程设计论文.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

基于51单片机的串口通讯系统课程设计论文.docx

《基于51单片机的串口通讯系统课程设计论文.docx》由会员分享,可在线阅读,更多相关《基于51单片机的串口通讯系统课程设计论文.docx(33页珍藏版)》请在冰豆网上搜索。

基于51单片机的串口通讯系统课程设计论文.docx

基于51单片机的串口通讯系统课程设计论文

基于51单片机的串口通讯系统

引言

人类社会已经进入信息化时代,信息社会的发展离不开电子产品的进步。

单片机的出现使人类实现利用编程来代替复杂的硬件搭建电路,它靠程序运行,并且可以修改。

通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。

一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板!

但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!

只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性!

单片机应用的主要领域非常广,智能化家用电器、办公自动化设备商业营销设备、工业自动化控制、智能化仪表、智能化通信产品、汽车电子产品、航空航天系统和国防军事、尖端武器等领域。

单片机应用的意义不仅在于它的广阔范围及所带来的经济效益,更重要的意义在于,单片机的应用从根本上改变了控制系统传统的设计思想和设计方法。

以前采用硬件电路实现的大部分控制功能,正在用单片机通过软件方法来实现。

以前自动控制中的PID调节,现在可以用单片机实现具有智能化的数字计算控制、模糊控制和自适应控制。

这种以软件取代硬件并能提高系统性能的控制技术称为微控技术。

随着单片机应用的推广,微控制技术将不断发展完善。

电路的集成化不仅对硬件电路的设计相关,与电路的布局同样相关。

印刷版的出现使得电路产品更加规范,体积更小。

Protel99se是一款专业的绘制电路及印刷版的软件,近年来的不断升级使得其功能更加完善,出现了AltiumDesigner、ProtelDXP等升级版本。

 

设计内容及要求

1.1功能要求

(1)下位机选用89S51或89S52单片机;

(2)下位机接收上位机的数据并显示在LED或LCD上;

(3)下位机显示数据可以显示固定数据、位移数据、循环位移;

1.2硬件要求

制作串口线和下位机及外围电路;

1.3软件要求

KeilC或汇编编程设计,串口调试助手或Labview串口通信编程。

2设计原理及单元硬件模块

2

2.1上位机设计

2.1.1RS232串口介绍

经过多年的发展,现今已经形成了许多串行通信接口的标准。

其中本次课程设计用到的RS-232标准是美国EIA(电子工业联合会)与BELL公司一起开发的通信协议。

它适合于数据传输速率在0—20000bit/s的范围内通信。

目前比较常用的串口有9针串口(DB9)和25针串口(DB25),近距离通信可以直接将通信接口用相应的线缆直接相连。

2.1.2串口调试助手介绍

串口调试助手是串口调试相关工具,有多个版本。

如:

友善串口调试助手,支持9600,19200等常用各种波特率及自定义波特率,可以自动识别串口,能设置校验、数据位和停止位,能以ASCII码或十六进制接收或发送任何数据或字符,可以任意设定自动发送周期,并能将接收数据保存成文本文件,能发送任意大小的文本文件。

可实现功能如下所示:

(1)自动搜索串口,并打开串口;

(2)支持多串口;

(3)支持自定义波特率,支持非标准波特率;

(4)支持发送历史记录;

(5)接收数据可以进行十六进制和ASCII切换;

(6)接收数据时,光标可定位在指定行或在最后一行;

(7)可以以十六进制或ASCII格式,向指定串口发送数据;

(8)定时发送数据;

(9)接收数据可以保存为文件,也可打开已保存数据文件;

(10)串口打开过程中,可修改通讯参数,如波特率;

(11)自动记录上次操作参数,如串口号、波特率等。

2.2下位机硬件设计

2.2.1设计原理及方法

下位机设计可分为单片机最小系统、RS232电平转换部分、数据显示部分。

其系统框图大致图2-1所示。

图2-1系统框图

本次设计采用LCD显示由上位机发送的数据,并完成固定数据、位移数据、循环位移的数据显示。

由上位机经RS232串口发送数据,经电平转换,转换成单片机可以接收的信号电压,通过单片机内烧制的程序逻辑运算得出上位机所发送的数据,并在数据显示部分依次显示固定数据、位移数据、循环位移数据。

电平转换由MAX232AEPE芯片完成,单片机最小系统使用的是AT89S52芯片,数据显示部分则由1602LCD液晶显示器完成。

2.2.2

单片机最小系统

图2-2最小系统电路

单片机采用AT89S52,最小系统包括复位电路和时钟电路两部分,其中复位电路采用按键手动复位和上电自动复位组合,电路如图2-2左下部分所示:

其中REST为单片机复位端,电容C3按键S1构成上电复位和手动复位电路。

时钟电路如图2-2右下部分所示:

晶振Y1频率采用的是11.0592MHZ,C1、C2为33p瓷片电容,X1和X2分别为单片机18和19脚。

(1)单片机各引脚功能说明:

AT89S52管脚图如图2-3所示。

VCC:

供电电压。

GND:

接地。

P0口:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门流。

当P1口的管脚第一

次写1时,被定义为高阻输入。

P0能够用于外部图2-3AT89S52管脚图

程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0口作为原码输入口,当FIASH进行。

校验时,P0输出原码,此时P0外部必须被拉高。

P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89S52的一些特殊功能口,P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:

复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:

当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:

每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:

外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:

当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:

来自反向振荡器的输出。

(2)USBASP下载口说明

本次课程设计程序烧写使用USBASP下载口,下载电路如图2-2左上部分所示。

USBASP是一种基于ATMEL公司的AVR系列RISC单片机的高性价比和一个由纯软件的USB通信协议栈而构成的一个可以向51系列,AVR系列单片机下载(烧写)程序的下载器。

这种下载器工作稳定,速度很快,而且成本相当的低,是一种适合初学者的下载器。

特点如下:

(1)支持USB1.1、USB2.0通信;支持WIN98、WINME、WIN2000、WINXP、VISTA、WIN7操作系统;

(2)采用USB口供电、并带有500mA的自恢复保险丝。

保护电脑不会烧毁或损坏。

(3)对目标板芯片编程时,可采用此下载线供电,也可以采用目标板本身供电,下载结果不影响目标板运行。

(4)支持AT89S51、AT89S52和AVR全系列单片机的程序下载,速度更快,更稳定。

(5)支持的烧录文件格式:

格式为HEX文件、二进制BIN文件。

(6)使用IDC10接口。

 

2.2.3RS232电平转换部分

(1)工作原理

本设计采用MAX232芯片进行电平转换,MAX232芯片是美信公司专门为电脑的RS232标准串口设计的接口电路,使用+5V单电源供电,它的作用就是完成TTL电平与RS232电平的转换。

PC机的串行口采用的是标准的RS232接口,单片机的串行口电平是FTL电平,而TTL电平特性与RS232的电气特性不匹配,因此为了使单片机的串行口能与RS232接口通信,必须将串行口的输入/输出电平进行转换。

通常用MAX232芯片来完成电平转换。

(2)MAX232芯片各引脚功能

MAX232各管脚如图2-4所示。

第一部分是电荷泵电路。

由1、2、3、4、5、6脚和4只电容构成。

功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。

第二部分是数据转换通道。

由7、8、9、10、11、12、13、14脚构成两个数据通道。

图2-4MAX232管脚图

其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。

8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。

TTL/CMOS数据从11引脚(T1IN)、10引脚

(T2IN)输入转换成RS-232数据从14引脚(T1

OUT)、7脚(T2OUT)送到电脑DB9插头;DB9插头的RS-232数据从13引脚(R1IN)、8引脚(R2IN)输入转换成TTL/CMOS数据后从12引脚(R1OUT)、9引脚(R2OUT)输出。

第三部分是供电。

15脚GND、16脚VCC(+5v)。

(3)MAX232芯片用法

MAX芯片用法如图2-5所示。

电容器应选择1μF的电解电容。

在使用过程中本人曾用过10μF的代替。

注意,由于RS232电平较高,在接通时产生的瞬时电涌非常高,很有可能击毁max232,所以在使用中应尽量避免热插拔。

图2-5MAX232应用电路

2.2.4数据显示部分

(1)LCD1602工作原理

1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。

它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形。

1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。

(2)LCD1602各引脚功能

1602采用标准的16脚接口,如图2-6所示,其中:

第1脚:

VSS为电源地。

第2脚:

VCC接5V电源正极。

第3脚:

V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。

图2-6LCD1602引脚图

第4脚:

RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。

第5脚:

RW为读写信号线,高电平

(1)时进行读操作,低电平(0)时进行写操作。

第6脚:

E(或EN)端为使能(enable)端,高电平

(1)时读取信息,负跳变时执行指令。

第7~14脚:

D0~D7为8位双向数据端。

第15~16脚:

空脚或背灯电源。

15脚背光正极,16脚背光负极。

2.3下位机软件设计

2.3.1编程方案选择

本设计单片机的编程选择C语言编写,因为它简洁紧凑、灵活方便、运算符丰富、数据结构丰富、C是结构式语言、C语法限制不太严格,程序设计自由度大、C语言允许直接访问物理地址,可以直接对硬件进行操作、C语言程序生成代码质量高,程序执行效率高,一般只比汇编程序生成的目标代码效率低10へ20%、C语言适用范围大,可移植性好C语言有一个突出的优点就是适合于多种操作系统,如DOS、UNIX,也适用于多种机型。

C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画它是数值计算的高级语言。

所以我选用C语言来编写此程序。

2.3.2程序流程图

如图2-7所示,为下位机程序流程图。

 

图2-7程序流程图

为了实现系统固定显示以及位移显示的功能要求,在初始化单片机和LCD之后,系统首先判断是否接收到串口传来的数据。

如果接收到数据,则关闭串口中断,并将接收到的十六进制数据转换成十进制和二进制数据,显示在LCD上5秒。

然后,将二进制数据依次向右位移,并间隔一秒显示在LCD上,共位移8次。

在位移8次之后,将二进制数据依次向右循环位移,并间隔一秒显示在LCD上,共位移8次。

完成全部位移显示之后,打开串口中断,继续判断串口是否接受数据,循环实现系统功能。

2.3.3子程序设计

(1)固定显示定义,LCD控制口定义程序实现如下:

#include

#defineucharunsignedchar//宏定义

#defineuintunsignedint

/*******************************************************************/

sbitlcden=P0^2;//液晶控制口RS和EN

sbitlcdrs=P0^0;

sbitlcdwr=P0^1;

/*******************************************************************/

ucharjieshou,number,biaozhi,xunhuan;

/*******************************************************************/

ucharcodetable1[]={"RX:

"};//液晶固定显示内容

ucharcodetable2[]={"guding"};

ucharcodetable3[]={"weiyi"};

ucharcodetable4[]={"xunhuanweiyi"};

ucharcodetable5[]={"RX:

READY"};

/*******************************************************************/

(2)串口接收,参数设置程序实现如下:

voidserial_chushihua()//串口初始化

{

TMOD=0x20;//定时器1:

计时,方式2

TH1=0xfd;//定时器1初值,波特率9600

TL1=0xfd;

TR1=1;//启动定时器1

REN=1;//设置SCON串行口控制寄存器

SM0=0;//允许接收

SM1=1;//方式1:

10位异步收发

EA=1;//开总中断

ES=1;//开串口中断

}

voidchushihua()//初始化

{

lcd_chushihua();//液晶初始化

serial_chushihua();//串口初始化

lcd_guding();//写入液晶固定显示部分

}

3系统硬件和软件调试

3.1调试所需仪器

数字万用表1个

直流稳压源1台

数字万用表1个

信号发生器1台

示波器1台

3.2硬件调试

硬件调试主要:

(1)在AltiumDesigner仿真软件中进行仿真论证整个串口通信系统的正确性。

计算并确定各个电阻、电容大小。

(2)绘制好原理图后,根据原理图去印刷制板。

在这个过程中要小心焊盘的大小是否合适,是否有短接或断路的线,然后进行修正工作。

打孔时要对好孔,以及不要漏孔没有钻。

(3)在焊接电路的过程中,需要检查是否有虚焊或短路的线。

这里要认真细致的检查,否则严重的影响到后续的调试。

(4)焊接完毕就是上电检查,看是否有短路或开路的地方。

检查各元件否正常工作。

3.3软件调试

在硬件没有问题的情况下,进行软件部分的调试。

单片机的程序部分用C语言进行编写,程序稍微简单,容易调试。

写好程序后,用KEIL软件进行编译以及调试得到“*.HEX”文件,然后用USBASP进行下载。

(1)下载进单片机后,观察系统能否正常运行。

首先运行一个简单的测试程序检测单片机最小系统能否正常运行。

(2)测试串转并电路能否正确运行,看LCD是否按照程序控制指令工作。

4系统不足与改进方法

本次课程设计因前期对系统功能分析不透彻,导致实现功能方式过于单一,没能实现实时控制数据位移,循环位移。

只能通过下位机程序,基本实现系统功能。

可以通过以下改进方法,完善系统功能。

(1)通过增加按键,手动控制数据位移,循环位移方向。

(2)完善程序,增加返回值,实时接收单片机处理数据状态。

谢辞

在黎老师的悉心教导和同学的帮助下,通过这两周的课程设计我对AT89S52单片机做下位机的串行通信实现的设计和内容有了更多的了解,通过自己的努力,编写了自己最完整的一套程序,虽然功能不是很完善,但我从中学到了很多东西。

在整个设计中我学会了在复杂的问题面前怎样去分析,找到问题的关键所在,而且认识到这种能力的重要性。

比如在设计的前几天,我对设计中所用到的软件、控制装置都不太了解,感觉什么都不会,无从下手,但当我了解到这些东西在设计的系统中所起的作用后,从整体上看时,整个系统的流程就明了了,就明白了系统设计的需求,知道我应该做什么了,我觉得这就算是抓住了问题的关键吧。

通过这次设计我了解了单片机的发展概况、特点、应用,各个部件的原理,串行口的通信方式,LCD的工作原理,认识AT89C52与PC机串行通信的原理。

懂得了软件设计流程,通信协议,波特率计算等。

最后再次衷心的感谢黎老师和帮助我的朋友。

有了你们的支持和无私帮助,我才得以顺利完成课程设计。

 

参考文献

[1]王选民.智能仪器原理及设计[M].北京:

清华大学出版社,2008.

[2]李建中.单片机原理及运用[M].西安:

西安电子科技大学出版社,2001.

[3]康华光.电子技术基础模拟部分(第五版)[M].北京:

高等教育出版社,2006.

[4]谭浩强.C程序设计第三版[M].北京:

清华大学出版社,2006.6.

[5]李惠昇.电梯控制技术[M].北京:

机械工业出版社,2003.

附录

附录1系统原理图:

附图1系统原理图

附录2下位机PCB图:

附图2PCB图

附录3元器件清单

 

附图3元器件清单

 

附录4下位机KeilC程序代码

#include

#defineucharunsignedchar//宏定义

#defineuintunsignedint

/*******************************************************************/

sbitlcden=P0^2;//液晶控制口RS和EN

sbitlcdrs=P0^0;

sbitlcdwr=P0^1;

/*******************************************************************/

ucharjieshou,number,biaozhi,xunhuan;

/*******************************************************************/

ucharcodetable1[]={"RX:

"};//液晶固定显示内容

ucharcodetable2[]={"guding"};

ucharcodetable3[]={"weiyi"};

ucharcodetable4[]={"xunhuanweiyi"};

ucharcodetable5[]={"RX:

READY"};

/*******************************************************************/

voiddelay(uintz)//延时z毫秒

{

uintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

voidwrite_com(ucharcom)//液晶写命令

{

lcdrs=0;//写指令

P2=com;

delay(5);

lcden=1;//E端一个正脉冲

delay(5);

lcden=0;

}

voidwrite_data(uchardate)//液晶写数据

{

lcdrs=1;//写数据

P2=date;

delay(5);

lcden=1;//E端一个正脉冲

delay(5);

lcden=0;

}

voidlcd_chushihua()//液晶初始化

{

lcden=0;

lcden=0;

lcdwr=0;

write_com(0x38);

write_com(0x0c);//不打开光标

write_com(0x06);//指针后移

write_com(0x01);//清屏

write_com(0x80);//第一位

}

voidlcd_guding()//写入液晶固定显示部分

{

uinti;

write_com(0x80);//第一行

for(i=0;i<16;i++)

{

write_data(table1[i]);

delay

(2);

}

}

voidlcd_guding1()//写入液晶固定显示部分

{

uinti;

write_com(0x80+0x40);//第二行

for(i=0;i<16;i++)

{

write_data(table2[i]);

delay

(2);

}

}

voidlcd_guding2()//写入液晶固定显示部分

{

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

当前位置:首页 > PPT模板 > 其它模板

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

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