ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:416.89KB ,
资源ID:20446678      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20446678.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机的串行通信小系统Word文件下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于单片机的串行通信小系统Word文件下载.docx

1、1.2 同步串行通信方式:同步通信时要建立发送方时钟对接收方适中的直接控制,使双方达到完全同步。此时,传输数据的位之间的距离均为“位间隔”的整数倍,同时传送的字符间不留间隙,即保持位同步的关系,也保持字符同步关系。发送方对接收方的同步可以通过外同步和自同步两种方法实现面向字符的同步格式如图:SYN SYNSOH标题STX数据块ETB/ETX块校验 图2 面向字符的同步格式此时,传输的数据和控制信息都必须由规定的字符集(如ASC码)中的字符所组成。图2中帧头为1个或2个同步字符SYN(ASC码为16H)。SOH为序始字符(ASC码为01H),表示标题的开始,标题中包含源地址、目标地址和路由指示等

2、信息。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个

3、连续的1并且其后跟一个0时候就删除该0。典型的面向位的同步协议,如ISO的高级链路控制规程HDLC和IBM的同步数据链路控制规程SDLC。面向位的同步通信的特点是以特定的位组合01111110作为帧的开始和结束标志,所传输的一帧数据可以是任意位。它传输的效率较高,但实现的硬件设备比异步通信复杂。1.3 串行通信的制式:(1) 单工。单工是指数据传输仅能沿一个方向,不能实现反向传输。(2) 半双工。半双工是指数据传输可以两个方向,但需要分时进行。(3) 全双工。全双工是数据可以同时进行双向传输。三中制式分别如图3、图4、图5:1.4程序原理框图 图6 二、串行通信电路设计2.1 RS-232电平

4、与TTL电平的转换分立元件实现RS-232电平与TTL电平转换电路(如图7) 图7PC机默认的高低电平分别是-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为低电

5、平-3-15V时,Q4截止,单片机端口的RXD被R9拉到5V高电平;当PCTXD变高时,Q4导通,RXD被Q4拉到低电平,这样便实现了双向转换。这也便是MAX232的转换原理。2.2 MAX232芯片实现电平转换MAX232芯片是MAXIM公司生产的、包含两路接收器和驱动器的IC芯片,它的内部有一个电源电压变换器,可以把输入的+5V电源电压变换成为RS-232输出电平所需的+10V电压。所以采用此芯片接口的串行通信系统只需单一的+5V电源就可以了。对于有+12V电源的场合,其适应性更强,加之其价格适中,硬件接口简单,所以被广泛采用。MAX232芯片引脚结构和外围连接如图8(a)和(b) (a)

6、 (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引脚都可以,选用不同的连接方式是,单片机与计算机之间的串口线要谨慎选择

7、,是选平行串口线还是交叉串口线、是母头对母头串口线还是母头对公头的串口线这些都要非常注意,每种选择都有对应的电路,但是无论哪种搭配电路,在单片机与计算机之间必须要有一条数据能互相传输回路,把握好信号交接点就一定能通信成功。2.3 A/D转换电路的设计A/D转换部分本实验采用ADC0832:ADC0832 是美国国家半导体公司生产的一种8 位分辨率、双通道A/D转换芯片。由于它体积小,兼容性强,性价比高而深受单片机爱好者及企业欢迎,其目前已经有很高的普及率。ADC0832 具有以下特点: 8位分辨率; 双通道A/D转换; 输入输出电平与TTL/CMOS相兼容; 5V电源供电时输入电压在0-5V之

8、间; 工作频率为250KHZ,转换时间为32S; 一般功耗仅为15mW;ADC0832的外围电路和管脚图如图10(a)和(b) (a) (b) 图10ADC0832为8位分辨率A/D转换芯片,其最高分辨可达 256级,可以应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在 05V之间。芯片转换时间仅为 32S,据有双通道输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。通过DI数据输入端,可以轻易的实现通道功能的选择。2.4 液晶显示电路的设计液晶显示采用我们熟悉的16*2显示的LCD1602。

9、图11 单片机液晶显示电路三、系统总电路总体电路图: 图12 串口通信系统总电路四、系统的软件设计4.1 程序流程图:开始串口初始化A/D转换1602显示采集数据启动定时器1满1秒单片机向PC机发送数据, 刷新1602显示计数器0计数PC机向单片机发送的字符单片机响应PC机结束LCD1602初始化 图13 总程序流程图4.2 串口通信总程序:#includeintrins.hstdio.h#define uchar unsigned char#define uint unsigned intuchar code table0=Mcu system;uchar code table1=Volta

10、ge:sbit ADCS=P20; /0832片选端sbit ADDI=P21; /0832数据端sbit ADCLK=P22 /0832时钟端sbit lcden=P26; /液晶使能端sbit lcdrs=P27; /液晶数据命令选择端uint t0_num,num;uchar flag_uart,flag_time,flag_on,a,i,ad_val;float ad_vo;/*延时*/void delay(uint x) uint i,j; for(i=x;i0;i-) for(j=110;jj-);/*串口初始化*/void ck_init() TMOD=0x21; /设定T1定时

11、器工作方式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*/ void write_com(uchar com) delay(1); lcdrs=0; /选择写命令模式 P0=com; /将要写的命令字送到数据总

12、线上 _nop_(); /稍作延时以待数据稳定 lcden=1; /给使能端一个高脉冲 delay(5); /稍作延时 lcden=0; /使能端置0已完成高脉冲 void write_date(uchar date) delay(1); /查忙 lcdrs=1; /选择写数据模式 P0=date; /将要写的数据送到数据总线上 lcden=1; void lcd_init() write_com(0x38); /设置16*2显示,5*7点阵,8位数据接口 write_com(0x0c); /设置开显示,不显示光标 write_com(0x06); /写一个字符后地址加1 write_com(

13、0x01); /显示清0,数据指针清0 void display(uchar x) float j;uint aa; j=x*19.607; aa=j+0.5; write_com(0x80+0x03) ;/设置第一行字符显示的起始地址 for(num=0;num10;num+) /通过for循环将table0中的字符写到液晶上 write_date(table0num); write_com(0x80+0x42); /设置第二行字符显示的起始地址8;num+) /通过for循环将table1中的字符写到液晶上 write_date(table1num); write_com(0x80+0x4

14、0+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*/uchar ad_0832() uchar date;uint i; ADDI=1; ADCS=0; ADCLK=1; ADCLK=0; ADDI=0; for(i=0;ii+) date|=ADDI; /收数

15、据 /形成一次时钟脉冲 date=1; if(i=7)date|=ADDI; ADCS=1; /拉低CS端 /拉低CLK端 /拉高数据端,回到初始状态 /date=8; /date|=ndat; return(date);void main() lcd_init(); /1602初始化 ck_init(); /串口初始化 while(1) if(flag_uart=1); /检测到标志位为1,根据接受到PC机 /发送过来的数据进行回复 flag_uart=0;ES=0;TI=1;switch(flag_on) case 0:puts(Turn on ad!n); TR0=1; /开计数器0 b

16、reak; case 1:Turn off ad! TR0=0; /关计数器0break;case 2: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(The voltage is %fVn,ad_vo); / 向PC机发送字符串及转换结果while(! /等待发送完毕 TI=0; /关串口中断,以免接受数据丢失 display(ad_val);

17、void timer0() interrupt 1 t0_num+; if(t0_num=20) /使计数器0计满1秒 t0_num=0; flag_time=1; /将标志位flag_time置1void ser() interrupt 4 RI=0; /软件将发送中断标志位TI清0,取消此中断申请a=SBUF; /将串口接受寄存器中的数取走给aflag_uart=1; /将标志位flag_uart置1,表示执if(a=1) /行过中断程序,即收到了数据 flag_on=0;else if(a=2) flag_on=1;else flag_on=2;五、结果分析 在实验过程中为了方便调试,采

18、用支持STC单片机下载的串口调试助手进行实验结果的验证,由于STC单片机与AT89C51内部结构不同,且转换速度不同,因此理论上的1秒自动发送一次数据未能达到,发送字符速度非常快,经过大量调试,延长了计数器0的溢出时间才基本达到单片机1秒向PC机发送一次采样数据。实际硬件电路见下图: 图14 实物图实验结果见下图: 发送字符01的时候,显示“Turn on ad!”,然后发送采集的电压值: 图15发送字符02的时候,显示“Turn off ad!”,然后停止发送采集的电压值: 图16发送其他字符的时候,显示“Error! 图17六、小结本系统充分利用PC机丰富的软硬件资源实现友好的人机界面又通过RS-232总线结构与单片机进行通信,对多台单片机进行数据采集和处理。本系统不仅硬件实现简单,而且软件实现可靠。通过测试,证明该方法思路简单,价格低、功能强、通讯可靠,是一种有效的多机通讯方法。但因 RS-232协议适用于短距离通信,且最大传输距离不超过15M。在同一系统上悬挂的从机数目也有限,一般不超过20台。若想达到更远距离或更大规模的应用宜采用RS-485协议。

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

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