网站导航: 首页 > 设计参考 > 正文 文章搜索
PIC单片机与PC机异步串行通信的设计[图]
 
文章编号:
081208145010
文章分类: 单片机 PIC
点 击:
...
关 键 词: 串行通信
文章来源:
网络,作者:赵凯
摘 要:
由于部分PIC单片机不具备串行通信所需的硬件USART口,故系统设计者需要用软件实现PIC单片机与PC机之间的串行通信。笔者介绍利用PIC单片机的中断功能实现异步串行通信的方法

4.2 单片机发送数据程序框图
    用RB5引脚作为发送引脚,单片机发送数据程序框图如图4所示。当有数据要从单片机发往PC机时,单片机调用发送子程序。在发送子程序中,首先设置发送计数器内容为8,然后发送起始位,起始位应持续104 us。因此要调用延时子程序,延时子程序执行完后,RB5上的信号并未立刻变成第一位数据的值,这是因为还要执行几条指令,如右移TRS_R、置位等RB5上的信号才会变化。假设延时104 us,那么加上几条指令的执行时间,起始位就比104 us宽了。因此,延时子程序少于104 us,根据具体的程序定为97 us。然后,右移发送数据寄存器TRS_R,将其最低位即要发送的数据位移入C中,再根据C中的内容将RB5清零或置1,然后将发送计数器内容减1,并判断其是否为0。若为1,则说明未发送完毕,继续发送;否则,发送停止位。最后,退出发送子程序。
 
图4 单片机发送数据程序框图

5 PC机通信程序
    VB6.0提供了串行通讯MSComm(电话盒)控件来为应用程序提供串行通信,它将串口设备当作一个目标封装起来,容易操作,编程很方便,其良好的用户界面、简单方便的串行通信和实用性强的优点,无需借用其他语言就可以开发出优秀的通信软件,因而PC机软件采用VB6.0语言编写。
    MSComm控件的调出及其主要属性如下。
(1)MSComm控件的调出
    VB6.0的MSComm控件并不会主动出现在工具箱中,当需要它时,让它出现在工具箱中的步骤如下:

  1. 选择菜单上的“工程”;
  2. 在“工程”菜单中选择“部件”;
  3. 出现对话框后,在可勾选的项目中勾选Microsoft Comm Control 6.0;
  4. 按下“确定”按钮,即可在工具箱中见到“电话盒”的图标,就可以将此控件加载进行串行通信。

(2)MSComm属性
    MSComm属性很多,其重要的属性说明如下:

  • commPort:设定或返同通信端口号。端口号由1开始往上递增,最大值是16。
  • Settings:设定通信端口初始化参数。其格式为“Baud,P,D,S”,其中Baud为波特率,可设为1200、2400、9600、14400、19200和28800等几种;P为校验位(E表示偶校验、O表示奇校验、M表示符号校验(即在校验位放置一个1的位)、S表示空白校验(即在校验位放置一个0的位)、N表示无校验位(默认值));D为数据位数,可选值为4、5、6、7、8(默认值);S表示停止位数,可选值为1、1.5、2。
  • PortOpen:设定并返回通信端口的状态。使用串行端口之前必须先打开该端口(PortOpen=True),而在使用完毕后必须关闭该端口(PortOpen=False)。
  • Input:从输入缓冲区返回并清除字符。这是一种FIFO(First in First Out)机制。如Buffer $=MSComm1.Input,表示将输入缓冲区的字符读入Buffer字符串变量中。
  • Output:将一个字符或字符串写入传输缓冲区,如MSComm1.Output="ABCD"。此即将ABCD 4个字符通过串行端口传送出去。
  • InBuferCount:传回在接收缓冲区中的字符数,是指已接收,并在接收缓冲区等待读取的字符数。
  • InputMode:设定和返回类型。该属性设为0时,数据通过Input属性以文本方式取回,如设为1,则数据通过Input属性以二进制方式取回。

6 结论
    利用PIC16C711的外部中断输入引脚RB0/INT接收数据,避免了查询法带来的耗费大量系统资源的缺点。PIC系列单片机执行指令的速度
快,提高了系统效率。PIC16C711内部无硬件UART,本文用软件模拟它与PC之问的串行异步通信,从而降低了硬件成本。VB具备MSComm
(电话盒)控件,实现串行通信非常方便。

推荐参考文章:89C51 单片机I/O 口模拟串行通信的实现方法[图]

 
相关文章:

上一页 12
 
最新开源项目
 
 
  查看更多...  
 
本站相关产品   淘宝网店
 




 
  查看更多...  

 

本站程序由百合电子工作室开发和维护
Copyright @ baihe electric studio
渝ICP备09006681号-4