基于单片机的串行通信小系统Word文件下载.docx
- 文档编号:20446678
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:20
- 大小:416.89KB
基于单片机的串行通信小系统Word文件下载.docx
《基于单片机的串行通信小系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于单片机的串行通信小系统Word文件下载.docx(20页珍藏版)》请在冰豆网上搜索。
1.2同步串行通信方式:
同步通信时要建立发送方时钟对接收方适中的直接控制,使双方达到完全同步。
此时,传输数据的位之间的距离均为“位间隔”的整数倍,同时传送的字符间不留间隙,即保持位同步的关系,也保持字符同步关系。
发送方对接收方的同步可以通过外同步和自同步两种方法实现
面向字符的同步格式如图:
SYN
SYN
SOH
标题
STX
数据块
ETB/ETX
块校验
图2面向字符的同步格式
此时,传输的数据和控制信息都必须由规定的字符集(如ASC
码)中的字符所组成。
图2中帧头为1个或2个同步字符SYN(ASC
码为16H)。
SOH为序始字符(ASC
码为01H),表示标题的开始,标题中包含源地址、目标地址和路由指示等信息。
STX文始字符(ASC
码为02H),表示传送数据的开始。
数据块是传送的正文内容,由多个字符组成,数据块后面是组终字符ETB(ASC
码为17H)或文终字符ETX(ASC
码为03H),然后是校验码。
典型的面向字符的同步规程如IBM的二进制同步规程BSC。
面向位的同步格式如图3所示。
8位8位8位>
=0位16位8位
01111110
地址场
控制场
信息场
校验场
图3面向位的同步格式
此时,将数据块看做数据流,并用序列01111110作为开始和结束标志。
为了避免在数据流中出现序列01111110时引起的混乱,发送方总是在其发送的数据流中每出现5个连续的1就插入一个附加的0;
接收方每检测到5个连续的1并且其后跟一个0时候就删除该0。
典型的面向位的同步协议,如ISO的高级链路控制规程HDLC和IBM的同步数据链路控制规程SDLC。
面向位的同步通信的特点是以特定的位组合01111110作为帧的开始和结束标志,所传输的一帧数据可以是任意位。
它传输的效率较高,但实现的硬件设备比异步通信复杂。
1.3串行通信的制式:
(1)单工。
单工是指数据传输仅能沿一个方向,不能实现反向传输。
(2)半双工。
半双工是指数据传输可以两个方向,但需要分时进行。
(3)全双工。
全双工是数据可以同时进行双向传输。
三中制式分别如图3、图4、图5:
1.4程序原理框图
图6
二、串行通信电路设计
2.1RS-232电平与TTL电平的转换
分立元件实现RS-232电平与TTL电平转换电路(如图7)
图7
PC机默认的高低电平分别是-3V~-15V和3V~15V,为RS-232电平。
单片机默认的高低电平为5V~0V,为TTL电平。
分析图5,首先TTL电平TXD发送数据时,若发送低电平0,这时Q3导通,PCRXD由空闲时的低电平变成高电平(如PC用中断接收的话会产生中断),满足条件。
发送高电平1时,TXD为高电平,Q3截止,由于PCRXD内部高阻,而PCTXD平时是-3~-15V,通过D1和R7将其拉低PCRXD至-3~-15V,此时计算机接收到的就是1。
反过来,PC发送信号,由单片机来接收信号。
当PCTXD为低电平-3~-15V时,Q4截止,单片机端口的RXD被R9拉到5V高电平;
当PCTXD变高时,Q4导通,RXD被Q4拉到低电平,这样便实现了双向转换。
这也便是MAX232的转换原理。
2.2MAX232芯片实现电平转换
MAX232芯片是MAXIM公司生产的、包含两路接收器和驱动器的IC芯片,它的内部有一个电源电压变换器,可以把输入的+5V电源电压变换成为RS-232输出电平所需的+10V电压。
所以采用此芯片接口的串行通信系统只需单一的+5V电源就可以了。
对于
有+12V电源的场合,其适应性更强,加之其价格适中,硬件接口简单,所以被广泛采用。
MAX232芯片引脚结构和外围连接如图8(a)和(b)
(a)
(b)
图8
MAX232的外围电路连接如图9。
其数据传输过程如下:
MAX232的11脚
接单片机的TXD端P3.1,TTL电平从单片机TXD端发出,经过MAX232转换为RS-232电平后从MAX232的14脚
发出,再连接到实验板上串口座的第2脚,在经过平行串口线连接至PC机的串口座第2个脚RXD端,至此计算机接收数据。
PC机发送数据时从PC机串口座第3脚TXD端发出数据,再逆向流向单片机的RXD端P3.0接收数据。
图9
需要注意的是,MAX232与串口座连接时,无论是数据输出端,还是数据输入端,连接串口座的第2引脚获第3引脚都可以,选用不同的连接方式是,单片机与计算机之间的串口线要谨慎选择,是选平行串口线还是交叉串口线、是母头对母头串口线还是母头对公头的串口线这些都要非常注意,每种选择都有对应的电路,但是无论哪种搭配电路,在单片机与计算机之间必须要有一条数据能互相传输回路,把握好信号交接点就一定能通信成功。
2.3A/D转换电路的设计
A/D转换部分本实验采用ADC0832:
ADC0832是美国国家半导体公司生产的一种8位分辨率、双通道A/D转换
芯片。
由于它体积小,兼容性强,性价比高而深受单片机爱好者及企业欢迎,
其目前已经有很高的普及率。
ADC0832具有以下特点:
·
8位分辨率;
双通道A/D转换;
输入输出电平与TTL/CMOS相兼容;
5V电源供电时输入电压在0-5V之间;
工作频率为250KHZ,转换时间为32μS;
一般功耗仅为15mW;
ADC0832的外围电路和管脚图如图10(a)和(b)
(a)(b)
图10
ADC0832为8位分辨率A/D转换芯片,其最高分辨可达256级,可以应一般的模拟量转换要求。
其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间。
芯片转换时间仅为32μS,据有双通道输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。
独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。
通过DI数据输入端,可以轻易的实现通道功能的选择。
2.4液晶显示电路的设计
液晶显示采用我们熟悉的16*2显示的LCD1602。
图11单片机液晶显示电路
三、系统总电路
总体电路图:
图12串口通信系统总电路
四、系统的软件设计
4.1程序流程图:
开始
串口初始化
A/D转换
1602显示采集数据
启动定时器1
满1秒
单片机向PC机发送数据,刷新1602显示
计数器0计数
PC机向单片机发送的字符
单片机响应PC机
结束
LCD1602初始化
图13总程序流程图
4.2串口通信总程序:
#include<
reg51.h>
intrins.h>
stdio.h>
#defineucharunsignedchar
#defineuintunsignedint
ucharcodetable0[]="
Mcusystem"
;
ucharcodetable1[]="
Voltage:
"
sbitADCS=P2^0;
//0832片选端
sbitADDI=P2^1;
//0832数据端
sbitADCLK=P2^2//0832时钟端
sbitlcden=P2^6;
//液晶使能端
sbitlcdrs=P2^7;
//液晶数据命令选择端
uintt0_num,num;
ucharflag_uart,flag_time,flag_on,a,i,ad_val;
floatad_vo;
/***********延时************/
voiddelay(uintx)
{
uinti,j;
for(i=x;
i>
0;
i--)
for(j=110;
j>
j--);
}
/**********串口初始化**********/
voidck_init()
TMOD=0x21;
//设定T1定时器工作方式2,T0定时器工作方式1;
TH0=(65535-45872)/256;
//T0计数器装初值;
TL0=(65535-45872)%256;
TH1=0xfd;
//T1定时器装初值;
TL1=0xfd;
TR1=1;
//启动T1定时器;
ET0=1;
//启动T0计数器;
SM0=0;
//设定串口工作方式1
SM1=1;
//同上
REN=1;
//允许串口接收
EA=1;
//开总中断
ES=1;
//开串口中断
}
/*************1602*************/
voidwrite_com(ucharcom)
{
delay
(1);
lcdrs=0;
//选择写命令模式
P0=com;
//将要写的命令字送到数据总线上
_nop_();
//稍作延时以待数据稳定
lcden=1;
//给使能端一个高脉冲
delay(5);
//稍作延时
lcden=0;
//使能端置0已完成高脉冲
}
voidwrite_date(uchardate)
delay
(1);
//查忙
lcdrs=1;
//选择写数据模式
P0=date;
//将要写的数据送到数据总线上
lcden=1;
voidlcd_init()
write_com(0x38);
//设置16*2显示,5*7点阵,8位数据接口
write_com(0x0c);
//设置开显示,不显示光标
write_com(0x06);
//写一个字符后地址加1
write_com(0x01);
//显示清0,数据指针清0
voiddisplay(ucharx)
{
floatj;
uintaa;
j=x*19.607;
aa=j+0.5;
write_com(0x80+0x03);
//设置第一行字符显示的起始地址
for(num=0;
num<
10;
num++)//通过for循环将table0中的字符写到液晶上
write_date(table0[num]);
write_com(0x80+0x42);
//设置第二行字符显示的起始地址
8;
num++)//通过for循环将table1中的字符写到液晶上
write_date(table1[num]);
write_com(0x80+0x40+10);
//设置A/D转换数据的起始地址
write_date(0x30+(aa/1000));
//写个位
write_date(0x2e);
//写小数点
write_date(0x30+(aa%1000/100));
//写小数点后面第一位
write_date(0x30+(aa%100/10));
//写小数点后面第二位
write_date(0x56);
//写字符“V”
/************0832************/
ucharad_0832()
uchardate;
uinti;
ADDI=1;
ADCS=0;
ADCLK=1;
ADCLK=0;
ADDI=0;
for(i=0;
i<
i++)
date|=ADDI;
//收数据
//形成一次时钟脉冲
date<
<
=1;
if(i==7)date|=ADDI;
ADCS=1;
//拉低CS端
//拉低CLK端
//拉高数据端,回到初始状态
//date<
=8;
//date|=ndat;
return(date);
voidmain()
lcd_init();
//1602初始化
ck_init();
//串口初始化
while
(1)
{
if(flag_uart==1);
//检测到标志位为1,根据接受到PC机
{//发送过来的数据进行回复
flag_uart=0;
ES=0;
TI=1;
switch(flag_on)
{
case0:
puts("
Turnonad!
\n"
);
TR0=1;
//开计数器0
break;
case1:
Turnoffad!
TR0=0;
//关计数器0
break;
case2:
Error!
}
while(!
TI);
TI=0;
ES=1;
if(flag_time==1)//检测到标志位为1,1S接受一次A/D转化数值
flag_time=0;
ad_val=ad_0832();
ad_vo=(float)ad_val*5.0/256.0;
ES=0;
TI=1;
printf("
Thevoltageis%fV\n"
ad_vo);
//向PC机发送字符串及转换结果
while(!
//等待发送完毕
TI=0;
//关串口中断,以免接受数据丢失
}
display(ad_val);
voidtimer0()interrupt1
t0_num++;
if(t0_num==20)//使计数器0计满1秒
{
t0_num=0;
flag_time=1;
//将标志位flag_time置1
voidser()interrupt4
RI=0;
//软件将发送中断标志位TI清0,取消此中断申请
a=SBUF;
//将串口接受寄存器中的数取走给a
flag_uart=1;
//将标志位flag_uart置1,表示执
if(a==1)//行过中断程序,即收到了数据
flag_on=0;
elseif(a==2)
flag_on=1;
else
flag_on=2;
五、结果分析
在实验过程中为了方便调试,采用支持STC单片机下载的串口调试助手进行实验结果的验证,由于STC单片机与AT89C51内部结构不同,且转换速度不同,因此理论上的1秒自动发送一次数据未能达到,发送字符速度非常快,经过大量调试,延长了计数器0的溢出时间才基本达到单片机1秒向PC机发送一次采样数据。
实际硬件电路见下图:
图14实物图
实验结果见下图:
发送字符01的时候,显示“Turnonad!
”,然后发送采集的电压值:
图15
发送字符02的时候,显示“Turnoffad!
”,然后停止发送采集的电压值:
图16
发送其他字符的时候,显示“Error!
图17
六、小结
本系统充分利用PC机丰富的软硬件资源实现友好的人机界面又通过RS-232总线结构与单片机进行通信,对多台单片机进行数据采集和处理。
本系统不仅硬件实现简单,而且软件实现可靠。
通过测试,证明该方法思路简单,价格低、功能强、通讯可靠,是一种有效的多机通讯方法。
但因RS-232协议适用于短距离通信,且最大传输距离不超过15M。
在同一系统上悬挂的从机数目也有限,一般不超过20台。
若想达到更远距离或更大规模的应用宜采用RS-485协议。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 串行 通信 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)