1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > pic常用子程序c语言 手把手教你使用PIC单片机做RS232串口通信实验(C语言版)

pic常用子程序c语言 手把手教你使用PIC单片机做RS232串口通信实验(C语言版)

时间:2018-08-02 22:10:12

相关推荐

pic常用子程序c语言 手把手教你使用PIC单片机做RS232串口通信实验(C语言版)

这一期,我们将一起来学习一下PIC单片机如何与PC机进行通信,一起来完成一个简单的RS232通信实例,我们不做太多的理论,从实例出发,相信能够给大家一个比较通俗、透彻地认识,掌握了它的原理,那你就可以编出任何和PC机进行通信的程序了。

前几期,我们学习和介绍的内容都是以单机的形式,即所有的功能都是在一块增强型PIC实验板上得以实现。当单片机技术具体应用到工厂、企业及各类工业、民用领域中,它肯定要与外部设置作数据传输,其交互性也使得单片机的应用越来越广泛,我们可以利用它来传数据,传控制命令等等。因此,单片机与PC机的通信是我们学习单片机技术所经历的必要环节,由此,也使我们的学习更具趣味性。

下面我们一起来完成一个用单片机从串行口接收PC机数据,并通过板上LED发光管显示出来。

先介绍一下串口通信基本知识。目前较为常用的串口有9针串口(DB9)和25针串口(DB25)。最为简单且常用的是三线制接法,即地、接收数据和发送数据三脚相连,本文只涉及到最为基本的接法,且直接用RS232相连。串口引脚定义如图1所示。

9针串口(DB9)

25针串口(DB25)

针号

功能说明

缩写

针号

功能说明

缩写

1

数据载波检测

DCD

8

数据载波检测

DCD

2

接收数据

RXD

3

接收数据

RXD

3

发送数据

TXD

2

发送数据

TXD

4

数据终端准备

DTR

20

数据终端准备

DTR

5

信号地

GND

7

信号地

GND

6

数据设备准备好

DSR

6

数据准备好

DSR

7

请求发送

RTS

4

请求发送

RTS

8

清除发送

CTS

5

清除发送

CTS

9

振铃指示

DELL

22

振铃指示

DELL

图1 DB9和DB25的常用信号脚说明

我们来看一下本次实验的电路图,如图2所示,即增强型PIC实验板实现串口通信及数码管显示的电路部分。图2中MAX232芯片起到RS232与TTL电平转换的作用,我们通过9芯串口与PC机相连。

图2 串口通信电路原理图

下面是我们完成本次实验的源程序代码,PC机向串口发送数据,控制增强型PIC实验板上相应的LED发光管显示。如:向串口发送数据“01”,板上D10发光管点亮;向串口发送数据“02”,板上D11发光管点亮;向串口发送数据“03”,板上D12发光管点亮......以此类推显示各路发光管。

#include //包含单片机内部资源预定义

unsigned char tab[]={ 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,

0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};

unsigned char recdata;

//延时子程序

void delay()

{

unsigned int k;

for(k=0;k<300;k++);

}

//显示子程序

void display(unsigned int k)

{

PORTC=tab[k%10];

PORTA=0xFD; //选通数码管4

delay();

PORTC=tab[k%100/10];

PORTA=0xFE; //选通数码管3

delay();

PORTC=tab[k%1000/100];

PORTA=0xF7; //选通数码管2

delay();

PORTC=tab[k/1000];

PORTA=0xFB; //选通数码管1

delay();

}

//---------------------------------------------

//主程序

void main()

{

// TRISC=0Xff; //设置C口方向全为输出

TRISC=0xC0;

TRISA=0XC0; //RA0--RA5为输出

SPBRG=0X19; //设置波特率为9600BPS

TXSTA=0X24; //使能串口发送,选择高速波特率

RCSTA=0X90; //使能串口工作,连续接收

RCIE=0X1; //使能接收中断

GIE=0X1; //开放全局中断

PEIE=0X1; //使能外部中断

while(1) //等待中断

{

switch(recdata)

{

case 0x01:PORTC=0x01;break;

case 0x02:PORTC=0x02;break;

case 0x03:PORTC=0x04;break;

case 0x04:PORTC=0x08;break;

case 0x05:PORTC=0x10;break;

case 0x06:PORTC=0x20;break;

}

delay();

}

}

//--------------------------------------------

//中断函数

void interrupt usart(void)

{

if(RCIF) //判断是否为串口接收中断

{

RCIF=0;

recdata=RCREG; // 接收数据并存储

TXREG=recdata; // 返送接收到的数据 //把接收到的数据发送回去

}

}

现在我们已经将程序写好,通过“PIC仿真烧写器”完成程序的调试工作,下面我们要做的就是用串口线将增强型PIC实验板和PC机相连起来,同时给实验板接上电源,然后就是通过PC机软件来发数据了,要在PC机上向串口发送数据一定要借助相应软件,打开光盘内附带的串口调试软件,它设置方便、灵活,界面简洁明。因为我们得告诉实验板来显示哪些数字,程序的功能是发送十六进的“1”、“2”、“3”......等字符,增强型PIC实验板收到数据后点亮对应的LED发光管,所以我们得在软件发送区内填上我们所需要发送的数字,如图3所示。

图3

串口调试软件中,设置参数如下:串口:COM1;波特率:9600;校验位:无;数据位:8位;停止位:1位;发送内容:04

当我们点击“手动发送”按钮后,我们可以看到增强型PIC实验板上的第4个LED发光管已点亮,如图4所示。当然,我们也可以选择“自动发送”,即每隔一定的时间,由软件自动发送“发送缓冲区”内的数据,时间周期可以在软件界面中设置。

图4

现在,你已经可以自由发挥来接收PC机发过来的数据了,只要发挥你的想象力,定义好PC机和单片机两端的数据通信协议,你可以做出任何通过电脑来对单片机进行控制的程序,实现各种各样的数据传输,远程控制功能,比如通过PC机来控制液晶显示、控制步进电机的转动、控制蜂鸣器奏乐等等,您也可以将本期所讲的知识与前几期所讲的关联起来,完成功能更多,更实用的具体应用实例。因此,到本期的学习,我们已经可以将单片机与PC相连,借助PC机强大而灵活的功能,就可以为我们解决各类实际生产及应用型问题提供了方便。这一期的内容我们就介绍到这里,增强型PIC实验板更多的学习内容,我们将在以后几期陆续为大家作介绍,祝大家学习顺利。

以下是部分实验源程序演示实验视频录像

增强型PIC实验板RS232串口通信控制LED显示实验录像

>>>点击此处下载RM视频文件 ——05月12日 制作加入

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。