单片机串口实验.docx

上传人:b****6 文档编号:8218340 上传时间:2023-01-29 格式:DOCX 页数:17 大小:753.77KB
下载 相关 举报
单片机串口实验.docx_第1页
第1页 / 共17页
单片机串口实验.docx_第2页
第2页 / 共17页
单片机串口实验.docx_第3页
第3页 / 共17页
单片机串口实验.docx_第4页
第4页 / 共17页
单片机串口实验.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

单片机串口实验.docx

《单片机串口实验.docx》由会员分享,可在线阅读,更多相关《单片机串口实验.docx(17页珍藏版)》请在冰豆网上搜索。

单片机串口实验.docx

单片机串口实验

 

专业工程实践报告

——单片机控制系统课程设计

 

作品

40%

报告

20%

答辩

20%

平时

20%

总分

100%

 

设计题目:

串口点阵显示屏设计

班级学号:

机械121班(08030512115)

学生姓名:

廖东平

 

目录

一、预备知识-1-

二、课程设计题目:

串口点阵显示屏设计-9-

三、课程设计目的及基本要求-9-

四、设计内容提要及说明-9-

4.1设计内容-9-

4.2设计说明-9-

五、原理图及步进电机原理-10-

5.1功能模块电路原理图-10-

5.28*8点阵显示屏的工作原理-11-

六、单片机各引脚定义-11-

七、系统程序流程图-11-

八、系统源程序-12-

九、课程设计心得体会-16-

十、参考文献-17-

 

一、预备知识

1.1PLC串口通讯的原理

1.2点阵显示屏

1.351单片机原理

1.3.151单片机I/O口的使用原理与设置

1.3.251单片机最小系统的基本构成

1.3.351单片机产生波特率定时器的计算

1.3.4串口的操作步骤

1.1PLC串口通讯的原理

单片机PLC各型主机均内建2个通信接口的标准配置,即一个RS232和一个RS485通信接口,其RS232接口主要用于上下载程序或用来与上位机、触摸屏通信,而RS485接口主要用于组建使用RS485协议的网络,实现通信控制,本次我们主要介绍RS232接口类型。

RS232-C接口连接器一般使用型号为DB-9的9芯插头座,只需3条接口线,即"发送数据"、"接收数据"和"信号地"即可传输数据,其9个引脚的定义如图1所示。

脚位

简写

意义

Pin1

CD

载波检测

Pin2

RXD

接收字符

Pin3

TXD

传送字符

Pin4

DTR

数据终端准备好

Pin5

GND

地线

Pin6

DSR

数据装置准备好

Pin7

RTS

要求传送

Pin8

CTS

清楚传送

Pin9

RI

振铃指示

图1RS232-C接口连接器定义

在RS232的规范中,电压值在+3V~+15V(一般使用+6V)称为"0"或"ON"。

电压在-3V~-15V(一般使用-6V)称为"1"或"OFF";计算机上的RS232"高电位"约为9V,而"低电位"则约为-9V。

RS232为全双工工作模式,其信号的电压是参考地线而得到的,可以同时进行数据的传送和接收。

在实际应用中采用RS232接口,信号的传输距离可以达到15m。

不过RS232只具有单站功能,即一对一通信。

串行通信可分为两种类型,一种是同步通信,另一种是异步通信。

采用同步通信时,将所有字符组成一个组,这样,字符可以一个接一个地传输,但是,在每组信息的开始要加上同步字符,在没有信息要传输时,填上空字符,因为同步传输不允许有空隙。

采用异步通信时,两个字符之间的传输间隔是任意的,所以,每个字符的前后都要用一些数据位来作为分隔位。

比较起来,在传输率相同时,同步通信方式下的信息有效率要比异步方式高,因为同步方式的非数据信息比例比较小。

但是,从另一方面看,同步方式要求进行信息传输的双方必须用同一个时钟进行协调,正是这个时钟确定了同步串行传输过程中每一个信息位的位置。

这样一来,如果采用同步方式,那么,在传输数据的同时,还必须传输时钟信号。

而在异步方式下,接收方的时钟频率和发送方的时钟频率不必完全一样,而只要比较相近,即不超过一定的允许范围就行了。

在数据传输中,较为广泛采用的是异步通信,异步通信的标准数据格式如图2所示。

图2串行通信的数据结构

从图2所列格式可以看出,异步通信的特点是一个字符一个字符地传输,并且每个字符的传送总是以起始位开始,以停止位结束,字符之间没有固定的时间间隔要求。

每一次有一个起始位,紧接着是5~8个的数据位,再后为校验位,可以是奇检验,也可以是偶校验,也可不设置,最后是1比特,或1比特半,或2比特的停止位,停止位后面是不定长度的空闲位。

停止位和空闲位都规定为高电平。

这样就保证起始位开始处一定有一个下降沿,以此标识开始传送数据。

串口通信电路采用MAX232作为通信电平转换芯片,可用于串口通信或单片机的程序下载,具体电路如图3所示。

图3串口接口电路原理图

1.2点阵显示屏

8X8点阵共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置1电平,某一行置0电平,则相应的二极管就亮;因此要实现一根柱形的亮法,如图49所示,对应的一列为一根竖柱,或者对应的一行为一根横柱,因此实现柱的亮的方法如下所述:

一根竖柱:

对应的列置1,而行则采用扫描的方法来实现。

一根横柱:

对应的行置0,而列则采用扫描的方法来实现。

点阵屏有两个类型,一类为共阴极(左),另一类则为共阳极(右),如图4给出了两种类型的内部电路原理及相应的管脚图。

图4串点阵屏两种类型的内部电路原理及相应的管脚图

LED阵列的显示方式是按显示编码的顺序,一行一行地显示。

每一行的显示时间大约为4ms,由于人类的视觉暂留现象,将感觉到8行LED是在同时显示的。

若显示的时间太短,则亮度不够,若显示的时间太长,将会感觉到闪烁。

本文采用低电平逐行扫描,高电平输出显示信号。

即轮流给行信号输出低电平,在任意时刻只有一行发光二极管是处于可以被点亮的状态,其它行都处于熄灭状态。

1.351单片机原理

1.3.151单片机I/O口的使用原理与设置

LED51系列单片机有4组I/O接口:

P0、P1、P2和P3,每组都是8位准双向口,共占32个引脚。

每个接口都有锁存器、输出驱动器和输入缓冲器。

其中P0口和P2口通常用于外部总线的扩展,P0口用于数据总线和地址总线低8位的复用,P2口用于地址总线的高8位。

51系列单片机4组I/O接口线路设计得非常巧妙,学习I/O口用于逻辑电路,不仅有利于正确合理地使用接口,而且会给设计单片机外围逻辑电路有所启发。

P0口的结构及工作原理

P0口是一个三态双向口,可作为地址总线/数据分时复用,也可作为通用I/O接口。

它由一个输出锁存器、两个三态输入缓冲器、一个输出驱动电路和一个输出控制电路组成。

其中1位的结构原理如图5所示,P0口由8个这样的电路组成,输出驱动电路由一对场效应管组成,其工作状态受输出控制电路的控制;输出控制电路由一个与门电路、一个反相器和一个数字多路开关MUX组成。

图5P0口的1位结构与原理图

P1口的结构及工作原理

P1端口与P0端口的主要差别在于,P1端口用内部上拉电阻R代替了P0端口的场效应管T1,并且输出的信息仅来自内部总线。

由内部总线输出的数据经锁存器反相和场效应管反相后,锁存在端口线上,所以,P1端口是具有输出锁存的静态口。

要正确地从引脚上读入外部信息,必须先使场效应管关断,以便由外部输入的信息确定引脚的状态。

为此,在作引脚读入前,必须先对该端口写入l。

具有这种操作特点的输入/输出端口,称为准双向I/O口。

8051单片机的P1、P2、P3都是准双向口。

P0端口由于输出有三态功能,输入前,端口线已处于高阻态,无需先写入l后再作读操作。

单片机复位后,各个端口已自动地被写入了1,此时,可直接作输入操作。

如果在应用端口的过程中,已向P1一P3端口线输出过0,则再要输入时,必须先写1后再读引脚,才能得到正确的信息。

此外,随输入指令的不同,P1端口也有读锁存器与读引脚之分。

图6P1口的1位结构与原理图

P2口的结构及工作原理

P2端口在片内既有上拉电阻,又有切换开关MUX,所以P2端口在功能上兼有P0端口和P1端口的特点。

这主要表现在输出功能上,当切换开关向下接通时,从内部总线输出的一位数据经反相器和场效应管反相后,输出在端口引脚线上;当多路开关向上时,输出的一位地址信号也经反相器和场效应管反相后,输出在端口引脚线上。

P2口作为地址总线时,“控制”信号为‘1’,多路开关车向地址线(即向上接通),地址信息经反相器→V2管栅极→漏极输出。

由于P2口输出高8位地址,与P0口不同,无须分时使用,因此P2口上的地址信息(程序存储器上的A15~A8)功数据地址寄存器高8位DPH保存时间长,无须锁存。

图7P2口的1位结构与原理图

P3端、口的结构及工作原理

P3口是一个多功能口,它除了可以作为I/O口外,还具有第二功能,P3端口和Pl端口的结构相似,区别仅在于P3端口的各端口线有两种功能选择。

当处于第一功能时,第二输出功能线为1,此时,内部总线信号经锁存器和场效应管输入/输出,其作用与P1端口作用相同,也是静态准双向I/O端口。

当处于第二功能时,锁存器输出1,通过第二输出功能线输出特定的内含信号,在输入方面,即可以通过缓冲器读入引脚信号,还可以通过替代输入功能读入片内的特定第二功能信号。

由于输出信号锁存并且有双重功能,故P3端口为静态双功能端口。

图8P3口的1位结构与原理图

1.3.251单片机最小系统的基本构成

单片机最小系统板由电源模块和单片机最小系统电路模块以及IO扩展和引出模块构成,具体电路如图9所示,采用的是Philips公司P89V51RB2型号单片机。

图9单片机最小系统电路图

1.3.351单片机产生波特率定时器的计算

波特率的定义是:

串行口每秒钟发送的位数称为波特率。

比如说2400的波特率就是没秒钟发送2400个位数。

串行口的波特率是用定时器T1作为波特率发生器的,这是定时器自动设置在工作方式2(可自动重装初值)。

波特率=(2*SMOD)/32*定时器T1的溢出率

定时器T1的溢出率=单片机内部时钟频率/(256-X)其中X是定时器的初值

波特率=(2*SMOD)/32*(单片机内部时钟频率。

51波特率计算公式:

如TH1=0XFDTL1=OXFD;Smod=0Fose=11.0592*1000000计算出来的是9600

TMOD=0X20;//定时器1工作方式2,8位自动重载

TH1=OXFD;//初值

TL1=OXFD;

PCON=0X00;//SMOD=0

TCON=0X40;//TR1=0

SCON=0X50//,SM0=0,SM1=1,REN=1;

下表是常用波特率与定时器1的参数关系

1.3.4串口的操作步骤

(1)先设置波特率:

设置定时器T1为工作方式2(设置TMOD寄存器)

给计数器赋初值(工作方式2会自动重装)

(2)设置串口工作方式:

设置SCON(如果允许)

(3)如果使用中断方式,那么打开相应的中断和总中断。

(4)打开定时器T1,开始产生波特率。

设置TRx

二、课程设计题目:

串口点阵显示屏设计

三、课程设计目的及基本要求

目的:

单片机控制系统已广泛应用于人们的日常生活中,在各种领域中起到越来越重要的作用。

因此,掌握单片机的基本应用是项非常重要的技能。

进行课程设计是加强实践,提高动手能力的重要环节,是将所学理论知识与实际联系起来的桥梁和纽带。

通过课程设计,掌握单片机开发的过程,为将来的实际工作打下一定基础。

基本要求是:

1.熟悉单片机最小系统基本构成;

2.掌握单片机的使用方法;

3.掌握单片机汇编语言或C语言的一般编程技巧;

4.掌握单片机系统调试的一般步骤及方法;

5.掌握单片机串口的设置使用方法;

6.掌握点阵显示屏的工作原理及使用方法。

四、设计内容提要及说明

4.1设计内容

要求利用单片机最小系统板、串口通信板以及本系统的功能模块板,实现下述功能:

在PC机上使用串口调试软件,向单片机发送字符,单片机将接收到的字符显示在点阵显示屏上。

4.2设计说明

4.2.1系统设计

根据设计题目的要求分析,系统可分为三大部分

(1)单片机控制部分

(2)8*8点阵显示屏部分

(3)串口通讯控制部分

五、原理图及点阵显示屏原理

5.1功能模块电路原理图

1、功能模块电路原理如下图所示:

2、8*8点阵显示屏的工作原理:

5.28*8点阵显示屏的工作原理

将对应的列与行顺向偏压,即可使点阵显示屏发亮。

例如,如果想使左角上点阵显示屏点亮,则P1.0=0,P3.0=0即可。

应用时限流电阻可以放在P1口或P3口。

当我们让每一点按要求分别亮或灭时,点阵就可以显示出图形或文字了。

六、单片机各引脚定义

单片机引脚

各器件引脚

功能描述

P1

接行1~8脚

控制点阵屏行扫描

P0

接列1~8脚

控制点阵屏列扫描

七、系统程序流程图

八、系统源程序

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

*

*江西理工大学应用科学学院机械121班廖东平

---------------------------------------------------------------------

*实验名:

串口点阵显示屏设计

*实验说明:

单片机将串口接收到的数据显示在串口点阵显示屏上。

*连接方式:

见连接图

*注意:

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

#include

#include

#defineunitunsignedint

#defineucharunsignedchar

unittemp,flag;

voiddelay(unit);

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

*函数名:

Usar()

*函数功能:

设置串口

*输入:

*输出:

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

voidusar()

{

TMOD=0x20;//设置定时器1为工作方式2

TH1=0xfd;//计数器初始值设置,注意波特率是9600的

TL1=0xfd;

TR1=1;//打开计数器

REN=1;

SM0=0;//设置串行口的工作方式为方式2

SM1=1;

EA=1;//总中断允许控制位

ES=1;//串行口中断允许控制位

}

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

*函数名:

main

*函数功能:

主函数

*输入:

*输出:

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

voidmain()

{

usar();

P1=0x00;

P0=0xff;

while

(1)

{

if(flag==1)

{ES=0;

flag=0;

SBUF='O';

while(!

TI);

TI=0;

SBUF='K';

while(!

TI);

TI=0;

SBUF='';

while(!

TI);

TI=0;

ES=1;

}

P1=0x00;

P0=0xff;

switch(temp)

{

case0:

P1=0x04;P0=0x80;delay(10);

P1=0x08;P0=0xbe;delay(5);

P1=0x10;P0=0xbe;delay(5);

P1=0x20;P0=0x80;delay(10);break;//显示0

case1:

P1=0x04;P0=0x80;delay(10);break;//显示1

case2:

P1=0x04;P0=0xb0;delay(10);

P1=0x08;P0=0xb6;delay(10);

P1=0x10;P0=0xb6;delay(10);

P1=0x20;P0=0x86;delay(10);break;//显示2

case3:

P1=0x04;P0=0x80;delay(10);

P1=0x08;P0=0xb6;delay(5);

P1=0x10;P0=0xb6;delay(5);

P1=0x20;P0=0xb6;delay(5);break;//显示3

case4:

P1=0x04;P0=0x80;delay(10);

P1=0x08;P0=0xf7;delay(5);

P1=0x10;P0=0xf7;delay(5);

P1=0x20;P0=0xf0;delay(10);break;//显示4

case5:

P1=0x04;P0=0x86;delay(10);

P1=0x08;P0=0xb6;delay(10);

P1=0x10;P0=0xb6;delay(10);

P1=0x20;P0=0xb0;delay(10);break;//显示5

case6:

P1=0x04;P0=0x86;delay(10);

P1=0x08;P0=0xb6;delay(10);

P1=0x10;P0=0xb6;delay(10);

P1=0x20;P0=0x80;delay(10);break;//显示6

case7:

P1=0x04;P0=0x80;delay(10);

P1=0x08;P0=0xfe;delay(5);

P1=0x10;P0=0xfe;delay(5);

P1=0x20;P0=0xfe;delay(5);break;//显示7

case8:

P1=0x04;P0=0x80;delay(10);

P1=0x08;P0=0xb6;delay(5);

P1=0x10;P0=0xb6;delay(5);

P1=0x20;P0=0x80;delay(10);break;//显示8

case9:

P1=0x04;P0=0x80;delay(10);

P1=0x08;P0=0xb6;delay(5);

P1=0x10;P0=0xb6;delay(5);

P1=0x20;P0=0xb0;delay(10);break;//显示9

}

}

}

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

*函数名:

delay

*函数功能:

延时函数

*输入:

*输出:

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

voiddelay(unitz)

{

unitx,y;

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

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

}

voidser()interrupt4

{

RI=0;

temp=SBUF;

flag=1;

}

九、课程设计心得体会

计算机控制技术的课程设计是一个综合运用知识的过程,它不仅需要计算机控制理论、程序设计方面的基础知识,而且还需要具备一定的生产工艺知识。

设计包括确定控制任务、系统总体方案设计、硬件系统设计、控制软件的设计等,以便使学生掌握计算机控制系统设计的总体思路和方法。

此次课程设计选作的是串口点阵显示屏设计,设计要求1.熟悉单片机最小系统基本构成;2.掌握单片机的使用方法;3.掌握单片机汇编语言或C语言的一般编程技巧;4.掌握单片机系统调试的一般步骤及方法;5.掌握单片机串口的设置使用方法;6.掌握点阵显示屏的工作原理及使用方法。

此次课程设计经过前期查找资料,设计硬件电路,自编初步程序,设计期间在实验室调试程序,最终实现了以上基本功能,并且还实现了在不同工作方式之间的切换,屏幕显示剩余拍数两项功能,对步进电机的控制有了初步了解,同时也对芯片MAX232,数码管显示部分加强了运用。

通过此次设计,将所学的专业理论知识与实际开发实际结合起来,理论联系实际,提高了专业技能。

在设计过程中得到了同学的帮助,老师的指导,在此一并感谢!

十、参考文献

[1]王军茹.MCS-51单片机原理及应用实例[M].北京:

清华大学出版社,2004

[2]姜波.单片机原理及C51应用设计[M].北京:

高等教育出版社,2014

[3]谭浩强.C程序设计(第四版)[M].北京:

清华大学出版社,2010

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

当前位置:首页 > 小学教育 > 语文

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

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