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

图4 单片机发送数据程序框图
PC机通信程序
VB6.0提供了串行通讯MSComm(电话盒)控件来为应用程序提供串行通信,它将串口设备当作一个目标封装起来,容易操作,编程很方便,其良好的用户界面、简单方便的串行通信和实用性强的优点,无需借用其他语言就可以开发出优秀的通信软件,因而PC机软件采用VB6.0语言编写。
MSComm控件的调出及其主要属性如下。
(1)MSComm控件的调出
VB6.0的MSComm控件并不会主动出现在工具箱中,当需要它时,让它出现在工具箱中的步骤如下:
①选择菜单上的“工程”;
②在“工程”菜单中选择“部件”;
③出现对话框后,在可勾选的项目中勾选Microsoft Comm Contro l6.0;
④按下“确定”按钮,即可在工具箱中见到“电话盒”的图标,就可以将此控件加载进行串行通信。
(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(FirstinFirstOut)机制。如Buffer$=MSComm1.Input,表示将输入缓冲区的字符读入Buffer字符串变量中。
⑤Output:将一个字符或字符串写入传输缓冲区,如MSComm1.Output=“ABCD”。此即将ABCD4个字符通过串行端口传送出去。
⑥InBufferCount:传回在接收缓冲区中的字符数,是指已接收,并在接收缓冲区等待读取的字符数。
⑦InputMode:设定和返回类型。该属性设为0时,数据通过Input属性以文本方式取回,如设为1,则数据通过Input属性以二进制方式取回。
结论
利用PIC16C711的外部中断输入引脚RB0/INT接收数据,避免了查询法带来的耗费大量系统资源的缺点。PIC系列单片机执行指令的速度快,提高了系统效率。PIC16C711内部无硬件UART,本文用软件模拟它与PC之间的串行异步通信,从而降低了硬件成本。VB具备MSComm(电话盒)控件,实现串行通信非常方便。
用RB5引脚作为发送引脚,单片机发送数据程序框图如图4所示。当有数据要从单片机发往PC机时,单片机调用发送子程序。在发送子程序中,首先设置发送计数器内容为8,然后发送起始位,起始位应持续104μs。因此要调用延时子程序,延时子程序执行完后,RB5上的信号并未立刻变成第一位数据的值,这是因为还要执行几条指令,如右移TRS_R、置位等RB5上的信号才会变化。假设延时104μs,那么加上几条指令的执行时间,起始位就比104μs宽了。因此,延时子程序少于104μs,根据具体的程序定为97μs。然后,右移发送数据寄存器TRS_R,将其最低位即要发送的数据位移入C中,再根据C中的内容将RB5清零或置1,然后将发送计数器内容减1,并判断其是否为0。若为1,则说明未发送完毕,继续发送;否则,发送停止位。最后,退出发送子程序。

图4 单片机发送数据程序框图
PC机通信程序
VB6.0提供了串行通讯MSComm(电话盒)控件来为应用程序提供串行通信,它将串口设备当作一个目标封装起来,容易操作,编程很方便,其良好的用户界面、简单方便的串行通信和实用性强的优点,无需借用其他语言就可以开发出优秀的通信软件,因而PC机软件采用VB6.0语言编写。
MSComm控件的调出及其主要属性如下。
(1)MSComm控件的调出
VB6.0的MSComm控件并不会主动出现在工具箱中,当需要它时,让它出现在工具箱中的步骤如下:
①选择菜单上的“工程”;
②在“工程”菜单中选择“部件”;
③出现对话框后,在可勾选的项目中勾选Microsoft Comm Contro l6.0;
④按下“确定”按钮,即可在工具箱中见到“电话盒”的图标,就可以将此控件加载进行串行通信。
(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(FirstinFirstOut)机制。如Buffer$=MSComm1.Input,表示将输入缓冲区的字符读入Buffer字符串变量中。
⑤Output:将一个字符或字符串写入传输缓冲区,如MSComm1.Output=“ABCD”。此即将ABCD4个字符通过串行端口传送出去。
⑥InBufferCount:传回在接收缓冲区中的字符数,是指已接收,并在接收缓冲区等待读取的字符数。
⑦InputMode:设定和返回类型。该属性设为0时,数据通过Input属性以文本方式取回,如设为1,则数据通过Input属性以二进制方式取回。
结论
利用PIC16C711的外部中断输入引脚RB0/INT接收数据,避免了查询法带来的耗费大量系统资源的缺点。PIC系列单片机执行指令的速度快,提高了系统效率。PIC16C711内部无硬件UART,本文用软件模拟它与PC之间的串行异步通信,从而降低了硬件成本。VB具备MSComm(电话盒)控件,实现串行通信非常方便。
Microchip PIC 单片机 电路 电阻 总线 相关文章:
- 基于Microchip单片机的网络收音机方案(04-27)
- Microchip加倍单片机闪存及RAM容量以降低成本(04-16)
- Microchip发布拥有易于使用的界面和嵌入式脚本功能的 新一代蓝牙?低功耗解决方案(05-24)
- 关于车用通信协议中的假冒错(03-24)
- 基于PCI总线CAN卡设计与实现(06-28)
- 新型以太网控制器ENC28J60及其SPI接口技术(07-30)
