您当前的位置:五五电子网电子知识电子制作自动控制-单片机单片机串口接收PC机发送数据的实验 正文
单片机串口接收PC机发送数据的实验

单片机串口接收PC机发送数据的实验

点击数:7236 次   录入时间:03-04 11:42:13   整理:http://www.55dianzi.com   自动控制-单片机

  首先,来看一下这个实例所涉及到的理论基础知识。PIC单片机有全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平(逻辑摆幅大,逻辑1为-3~-15V, 逻辑0为+3~+15V),而单片机的串口是TTL电平(逻辑摆幅小逻辑1为>2.4V,逻辑O为<0.4V),两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。

  芯片是MAXIM公司生产的、包含两路收发和电荷泵升压电路,外部引脚和内部电路如下图所示:

MAX232引脚及内部框图

  在实际应用中一般采用如下图所示的硬件电路图,这是最简单的连接方法。

 

  为了能够在电脑端看到单片机发出的数据,我们必须借助一个PC机(上位机)的软件进行观察,这里推荐一个免费的电脑串口调试软件——串口调试助手,软件界面如下图所示。

  软件可以设定串口号、波特率、校验位等参数,非常实用。在实际应用中一定要保证上位机设置与单片机相统一,否则数据将会出错。串口调试助手可以从http://www.hificat.com/免费下载使用。

  对于下位机软件的编程,我们使用MPLab IDE软件来进行C语言编程,它是我们的编程环境,同时我们可以通过使用ICD2仿真烧写器和增强型实验板连接进行程序的仿真调试和烧写步骤。现在我们可以输入程序代码进行调试了,我们在MPLab IDE软件中新建工程,加入源程序代码,同时进行芯片型号的选择和配置位的设置,我们实验所用的芯片型号为PIC16F877A。
  
  编写的程序代码如下:

 

  编好程序后,可以将编译好的HEX通过ICD2仿真烧写器烧入单片机芯片,然后上电运行。首先,打开串口调试助手,设定好串口序号、波特率等相关参数,具体参数见下图所示,然后我们发送十六进制数“01”,我们的思路是发送数据“01”,则点亮实验板上第一个LED发光管;发送数据“02”,则点亮板上第二个LED发光管,现在我们发送了“01”后,我们可以看到实验板上的第一个发光管已点亮,同样,你可以试一下用串口调试助手发送其它数据内容,板子上将会出现何种现象。

  输入了这么长一段程序后,作为初学者的读者一定对有些语句会有点疑问,下面我们就来一起结果实际,看一下一些关键程序语句的作用。

  #include<pic.h>语句用来加载PIC库文件,头部recdata变量的定义是用来存放我们接收到的串口数据,voiddelay()是延时函数,TRISC、TRISA相关的语句用来设置RC、RA口的输入、输出状态,在此我们设置为输出。SPBRG=O×19至PEiE=OX1这些语句,分别是对串口通信参数的配置与开启中断使能,while(l)是死循环语句,即周而复始地执行{}内的语句体,如我们现在的程序中的作用即是不停地判断recdata这个变量,也就是不停地判断串口接收到的数据是否为O×01、O×02……O×06这些数据,通过判断不同的数值,再点亮板上LED发光管,即PORTC端口的赋值。在程序尾部有个interruptusart()函数,它是我们的中断处理函数,当有串口中断产生时,就会进入这个函数体,函数体中语句的主要作用是把接收到的串口数据放到变量recdata中,同时将接收到的数据再返回给上位机,即回传给PC机,这样就进行了一次完整的双向通信。




本文关键字:单片机  自动控制-单片机电子制作 - 自动控制-单片机