网站大量收购独家精品文档,联系QQ:2885784924

基于RS232上下位机的串口通信实验程序和电路图.pdf

基于RS232上下位机的串口通信实验程序和电路图.pdf

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

基于RS232上、下位机的串口通信实验

一、实验目的

1.通过串口实现单片机与PC机的数据通信。

2.了解下位机与上位机通讯过程。

二、实验内容

使用串口实现单片机与PC机的数据通信。要求按下单片机系统板上中断INT0时,单片机

向PC机发送0-9这十个数字,并用“串口调试助手”接收显示。在“串口调试助手”上

发送0-9中任何一个数字时,单片机用8个发光二极管显示对应的ASCII码值。

三、实验环境

1、编程软件keil

2、仿真软件proteus

四、实验原理

单片机与PC机之间通信原理图如图1所示。S3键接P3.2,作为外部中断INT0输入端,当S3

按下,产生中断,执行中断程序发送0-9这十个数字,在PC机上接收并显示。

图1单片机与PC机之间通信

五、实验过

单片机程序:

#includereg52.h

#defineucharunsignedchar//宏定义

#defineunitunsignedint//宏定义

ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//7段共阳极数码管显示数组

ucharcodefasong[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};//发送0~9的ASCLL数值数组

unsignedcharrec_c;

ucharnum=0;

unitx;

//主函数

voidmain()

{

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

TH1=0xFD;//11.0592Mhz9600bps

TL1=0xFD;

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

SCON=0x50;//模式1:8位数据可变波特率,允许接收

EA=1;//打开总中断

ES=1;//打开串口1中断

EX0=1;//打开外部中断0

IT0=1;//设置外部中断0为边沿触发

}

//外部中断

voidchufa()interrupt0

{

ES=0;//关闭串口中断

for(x=0;x10;x++)//循环发送0~9的ASCLL值

{

SBUF=fasong[num];

num=num+1;

while(!TI);//等待发送结束

TI=0;//发送标志位

}

num=0;

ES=1;//打开串口中断

}

//接收中断

voidrec()interrupt4

{

RI=0;//清除接收标志位

rec_c=SBUF-0;//将接收到的ASCLL值转换成十进制数

P0=table[rec_c];//通过查LED数码管的数组将接收到的数值显示出来

}

六、实验结论

在这个实验中我遇到了很多的问题,而且这个程序也是调了很长时间才调了出来。首先在这个

实验中我觉得最重要的是要设置好单片机的晶振,如果晶振差了一点就有可能导致你的通信部正

常,出现乱码。其次在这个实验中我也学到了怎么使用虚拟串口这个功能,而且这个也是相当的好

用,在以后的学习中也会更加的方便。这段程序有一个地方是我不会的,就是ASCLL值转换成十进

制数的过程。这也是我问了别人才弄懂的一个算法。感觉这个算法很实用,尽管这次我没有想到,

但这次我理解了它以后用到的时候我也就能写出来了。

文档评论(0)

火龙果的春天 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档