单片机串口实验.docx
《单片机串口实验.docx》由会员分享,可在线阅读,更多相关《单片机串口实验.docx(17页珍藏版)》请在冰豆网上搜索。
![单片机串口实验.docx](https://file1.bdocx.com/fileroot1/2023-1/29/733b212b-0cf1-4f62-87c6-ac485b7c62fd/733b212b-0cf1-4f62-87c6-ac485b7c62fd1.gif)
单片机串口实验
专业工程实践报告
——单片机控制系统课程设计
作品
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