PIC单片机与PC机串行通信的实现

发布者:HarmoniousVibes最新更新时间:2013-05-16 来源: 电子设计工程 关键字:PIC单片机  PC机  串行通信的 手机看文章 扫描二维码
随时随地手机看文章
    随着单片机技术的发展,PIC单片机在工业控制系统中如温度、压力和流量等参数进行监测和控制中的应用越来越多。PC机具有强大的监控和管理功能,而单片机则具有快速及灵活的控制特点,通过PC机的RS-232串行接口与外部设备进行通讯是许多测控系统中常用的通信解决方法。它不仅利用了单片机实时控制的特点又充分发挥了PC机运算能力强和存储容量大的优势。在日常应用中通常需要进行大量的数据计算,而PIC单片机运算能力有限,必须借助PC机的数据处理能力,因此实现PIC单片机与PC机之间可靠数据传输变得尤为重要。
    文中将使用PIC单片机的同步/异步串行模块(USART)和计算机进行串口通信。PC机的通信软件采用Visual C++6.0编写,具体是利用MSComm控件完成与PIC单片机的通信。

1 异步串行通信的概念
    PIC单片机与PC机之间的异步串行通信采用RS-232串行接口电路实现,利用PC机的串行接口进行数据传输。在异步通信中,数据是逐帧传送的,其格式如图1所示。

g.JPG


    在帧格式中,一个字符由4部分组成:起始位、数据位、奇偶校验位和停止位。首先是一个起始位“0”,然后是5~8位数据,接下来是奇偶校验位,最后是停止位“1”。起始位“0”信号只占用1位,用来通知接收设备一个待接收的字符开始到来。在不传送字符时,线路上应保持为“1”。接收端不断检测线路的状态,若连续为“1”以后又检测到一个“0”,就知道要发来一个新字符,应立即准备接收。

2 接口器件介绍
2.1 电平转换芯片
   
PC机与HC单片机通信使用RS-232串行总线标准。典型的RS-232信号在正负电平之间摆动,在发送数据时,发送端驱动器输出正电平电压范围为5~15 V,负电平为-15~-5 V。当无数据传输时,线上为TTL电平,从开始传送数据到结束,线上电平从TTL电平到RS-232电平再返回TTL电平。接收器典型的工作电平为3~12 V与-12~-3 V之间。如此高的电压是不能和单片机直接相连的,所以必须进行电平转换。文中利用MAX232实现电平转换。MAX232芯片是由德州仪器公司推出的一款兼容RS-232标准的芯片。该器件包含2个驱动器、2个接收器和一个电压发生器电路提供TTA/EIA-232-F电平。
2.2 信号接口介绍
   
PC机都有串行接口,一般用RS-232接口。与RS-232相匹配的连接器有DB-25、DB-15和DB-9,其引脚也各不相同。文中使用的是DB-9连接器,作为提供I/O卡或主板上COM1和COM2两个串行接口的连接器,提供异步通信的9个信号。

3 硬件电路设计
3.1 PC机与PIG单片机的串行通信原理图
    PC机与PIC单片机串行通信原理如图2所示,整个系统由3个部分组成。由于PC机与PIC单片机串行通信时采用RS-232协议,因此无论是单片机向PC发送数据,还是PC机向单片机发送数据都必须通过MAX232进行电平转换。在电路连接时,PC机的串口输出应对应PIC单片机的串口输入。

a.JPG[page]

3.2 系统电路连接图
   
整个系统电路连接图可分为两个部分,PIC单片机串口与MAX232之间的连接以及MAX232通过DB-9型连接器和PC机串口的连接,如图3所示。将PIC单片机的“RC6/TXD”引脚和MAX232的“T1IN”引脚相连;单片机的“RC7/RXD”引脚和MAX232的“R1OUT”引脚相连,即将单片机的输入引脚和MAX232的输出引脚相连;将单片机的输出引脚和MAX232的输入引脚相连。

b.JPG


    MAX232通过DB-9型连接器和PC机的串口相连,具体实现应选用标准的串口线将AX232同PC机的COM1口连接。

4 程序设计
   
整个程序设计为两部分,分别是PC机的通信程序和PIC单片机的通信程序。由于PIC单片机的通信程序采用汇编语言编写,其编写过程在各种环境下大同小异。
    VC实现串行通信有3种途径,利用MSComm控件或者是利用CSerialPont类进行串口通信,还可用WinAPI函数对串口进行操作。以下重点介绍在Visual C++6.0开发环境下利用MSComm控件实现串行通信的方法。
    编程是采用基于对话框的主体程序框架结构,串口通信部分采用MSComm控件完成。具体步骤如下。
    (1)创建工程。打开Vlsaal C++6.0编程环境,新建一个工程,并输入相应的工程名和该工程所在的路径。
    (2)添加相应的资源。为能在友好的界面下对程序进行操作,必须为应用程序添加相应的资源,文中只添加了通信程序必要的控件。添加两个“EDIT”控件;一个用来输入发送给单片机的数据;一个用来显示接收到的单片机传来的数据。添加一个“发送”按钮用来确定何时发送。文中的串口通信通过MSComm控件完成,所以还需要添加MSComm控件。添加完MSComm控件后,还需对其进行相关设置。对MSComm控件的设置一定要根据计算机外围的单片机来设置合理的参数,否则无法保证正常的串口通信。文中MSComm控件的设置界面如图4所示。

c.JPG

[page]

    (3)添加成员变量。应用程序上的控件负责接收输入或者显示输出,应用程序后台的成员变量来管理这些数据,添加好资源后还要使控件和成员变量关联起来。成员变量添加界面如图5所示。

d.JPG


    (4)消息映射。当单片机通过串口向PC机发送数据或者单击“发送”按钮,都是激发了Windows消息,应用程序的窗口将收到这些消息。收到消息后,检查应用程序是否处理这些消息函数,为处理这些函数必须添加相应的消息映射。
    (5)添加程序执行代码。PC端的Visual C++程序的程序流程如图6所示。

e.JPG


    添加消息映射后只给出了一个处理这些消息的函数的框架,具体的处理代码必须由用户添加。
    编译之后,PC机上的应用程序运行结果如图7所示。

f.JPG


    将要发送的数据写到发送数控件中,单击“发送”按钮,则PC机通过串口将数据发送给单片机。如果单片机将数据发送给PC机,则程序将自动把接收到的数据显示在接收数控件中。

5 结束语
    PIC单片机与PC机的串行通信被广泛应用于各种控制系统中。文中提出了一种实现该串行通信的方法,并给出了具体的电路原理图和通信程序。实践证明,利用VC开发通讯系统,从底层到上层直接面向用户,具有较强的调试功能。因此文中为PC机与PIC单片机串行通信的实现提供了良好的参考。

关键字:PIC单片机  PC机  串行通信的 引用地址:PIC单片机与PC机串行通信的实现

上一篇:基于PIC单片机厨房控制器的设计
下一篇:PIC单片机在连续接收串口数据时遇到的小问题

推荐阅读最新更新时间:2024-03-16 13:24

ATmega128(与PC机通信)
atmega128的USART串口发送与接收数据示例程序,采用串口1,发送和接收都是中断的方式 //先发送200个FF,然后单片机处于接收状态,接收数据显示在数码管上,电脑发送的数据格式如09,16进制形式 //编译环境 AVR Studio 4.17/AVR GCC //系统时钟11.0592MHZ,设置熔丝位为外部高频石英晶体振荡,启动时间4.1ms //*********************************************************************** // 包含文件 //*******************************************************
[单片机]
SC1621摇控器—PIC单片机解码程序
简介:在这里给大家提供一个SC1621摇控器—PIC单片机解码程序,希望对感兴趣的朋友有所帮助。 ;*APPLICATION NOTE E6000 ICEXPLORER ****************** ;* Title: ; ;SC6121的遥控器发射码依次为:同步头(引导码)+32位数据码 ; ;(用户码低8位+用户码高8位+键码+键码的反码) ; ;引导码是由9MS的高电平加4.5MS的低电平构成, ; ;我们接收到的刚好反相为9MS的低电平加4.5MS的高电平. ; ;数据码0是由560US的高电平加560US的低电平构成 ; ;接收时反相为560
[单片机]
PIC单片机入门指南
第一步首先得下载个开发环境,PIC的开发环境有,MPLAB IDE和MPLAB X IDE其中X的需要安装JAVA的东西, 所以这里先推荐安装旧版的,以下是连接, http://www.microchip.com/stellen ... 9&part=SW007002 打开后在下面找到最大的那个压缩包下载。 下载完毕后解压出来,运行setup.exe安装, 猛点下一步,如果需要更改路径就要更改下,直到安装完毕。 下载XC8编译器 http://www.microchip.com/pagehandler/zh-cn/devtools/mplabxc/ 连接在左边的 XC8 Windows -- 点这个下载完后运行x
[单片机]
<font color='red'>PIC单片机</font>入门指南
计算机串行通信环路实现方案
    对于用户要求接口具有远距离( 1km)高速度(最高19200bps)通信能力,及工业现场的强抗干扰能力和噪声抑制能力,对于普通的RS232接口,采用点对点单线共地连接(Singleended),电平驱动方式,最大通信距离为15.25m,显然不能满足要求。因此考虑20mA电流环路驱动方式。电流环路与电平方式相比具有以一优点:     电平方式 20mA电流环方式     信号易衰减 信号不易衰减     易受干扰 抗干扰能力强     远距离,离频率 适合远距离高     传输性能低下 速通信     在本设计中,选用Motorola公司的光电耦合器TIL117进行信号变换和光电隔离。这样
[网络通信]
PIC单片机之中断程序
什么是中断程序呢? 形象的生活比喻就比如你现在这在看我的文章,突然你的朋友喊你一起去烤地瓜,这时候你就中断了看文章和朋友烤地瓜去了,烤完地瓜之后你又回来看文章。烤地瓜这件事就好比中断程序,他中断了你看文章这件事。在程序方面来说 当CPU在执行一个程序的时候,突然产生了中断事件CPU就去执行中断程序了,当执行完成后CPU又回来执行原先的程序。 中断事件 什么是中断事件,就是引起中断的事件。对于单片机来说这些事件是多种多样的。比如 说一个按键按下,一定的时间到了,一串数据发送完毕,或接收完一个数据。 讲到中断不得不讲讲和中断相对的 查询。其实不管是按键按下 还是 时间到,还是数据发送完毕,这些事实上都可以用查询的方式办到。比如
[单片机]
PIC单片机硬件死锁问题
使用 PIC 单片机 去设计工控电路,最头痛的问题,就是 PIC 单片机在受干扰后经常硬件死锁,大部份人归咎于 “CMOS的可控硅效应” 因而产生死锁现象,一般都认为 ‘死锁后硬件复位都是无效的.只有断电。’ 但是一个成熟的商品,那须要你去断电呢? 就好像一台电冰箱,压缩机一启动,产生干扰, CPU 受干扰 因而 ‘硬件死锁’,死机在那儿,假如发现了,可以马上拔掉电源插头,隔几秒再插回,如此的动作 可以接受吗? 假如死机时没发现,死机几十天,你猜它会如何呢? -- 应该是 供给 CPU 电源的稳压 IC 烧毁了。 PIC 单片机为什么会硬件死锁,PIC 单片机在受干扰后经常硬件死锁,那么 PIC 要‘看门狗’ 有何用,有没有人深
[单片机]
关于PIC单片机定时器精准计时计算
在此用了16C711单片机的TMR0做定时中断,希望实现精准计时,在程序中,TMR0用了晶振的32分频,初值#0FCH,因此POPBEAR兄弟计算出每个定时中断的计时时间为(256-X)*32*4/32768=0.015625秒。注意,问题就在这里!实际上这个时间是TMR0的初值被置入后两个指令周期后(见PIC单片机定时器/计数器资料)到下一次中断发生时的时间。如果要用到定时器的精准定时,必须理解这一概念! 如采用32768Hz的晶振,每个指令周期为122us,在中断处理程序中,到TMR0的初值被置入,共有7条指令,加上TMR0的初值被置入后两个指令周期,如果中断处理程序不直接放在0004H地址而采用GOTO指令的两个周期,一共
[单片机]
pic单片机多路ad切换程序与循环程序设计
pic单片机是最重要的单片机种类之一,对于pic单片机,小编曾带来诸多介绍,如pic单片机的优势、pic单片机选型等。而在本文中,小编将为大家介绍两种pic单片机程序:一是pic单片机多路ad切换程序,二是pic单片机循环程序。如果你对这两类程序存在一定兴趣,不妨继续往下阅读。 一、pic单片机简介 pic单片机(Peripheral Interface Controller)是一种用来开发和控制外围设备的集成电路(IC)。一种具有分散作用(多任务)功能的CPU。与人类相比,大脑就是CPU,PIC 共享的部分相当于人的神经系统。PIC 单片机是一个小的计算机。PIC单片机有计算功能和记忆内存像CPU并由软件控制运行。然而,处理
[单片机]
<font color='red'>pic单片机</font>多路ad切换程序与循环程序设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved