用php实现pc机与单片机之间的通讯,求PC机与单片机间串行通信的实现?

单片微型计算机简称单片机,它是将中央处理器(CPU)、存储器(RAM,ROM)、定时/计数器和各种接口电路都集成到一块集成电路芯片上的微型计算机。随着计算机技术尤其是单片机技术的发展,人们已越来越多地采用单片机来对一些工业控制系统中如温度、湿度等参数进行检测和控制。PC机具有强大的监控和管理功能,而单片机则具有快速及灵活的控制特点,通过PC机的RS 232串行接口与外部设备进行通信,是许多测控系统中常用的一种通信解决方案。因此如何实现PC机与单片机之间的通信具有非常重要的现实意义。针对一些远距离控制或者是危险性比较高的数据采集和控制的应用情况,本文主要介绍一种用双工方式实现PC机与单片机之间的串行通信。

1 设计方案

为了通过串口实现PC机与单片机间的双工通信,可有如下设计方案。

(1)设计方案一:有线传输

此方案是指PC机与单片机之间通过电缆线传输数据。有线传输的优势是性能比较稳定,调试简单,而不足之处在于它的应用范围不够广、性能不够好,而且传输距离受限,这样就大大影响了系统的应用范围。

(2)设计方案二:无线传输

此方案是指PC机与单片机通过无线信道传输数据。无线传输的最大优势是应用范围广,受距离约束较小,在一定范围内可以不用考虑距离问题,还可以应用在一些高温、危险的场合。

因此,本文选用无线传输方案通过串口来实现PC机与单片机之间的双工通信。无线传输可以用不同的方式来实现,常用的有红外方式、蓝牙方式,其他的还有射频收发芯片如CC1100,PT2262/2272芯片等。

红外通信是利用950 nm近红外波段的红外线作为传递信息的载体,通过红外光在空中的传播来传递信息,由红外发射器和接收器实现。发射端将二进制数字信号调制成某一频率的脉冲序列,经电光转换电路,驱动红外发射管以光脉冲的形式发送到空中。接收端将接收到的光脉冲转换成电信号,再经解调和译码后恢复出原二进制数字信号。其最大优点是:不易被人发现和截获,保密性强;几乎不会受到电气、天电、人为干扰,抗干扰性强。此外,红外线通信机体积小、重量轻、结构简单、价格低廉。不足之处在于它必须在视距内通信,且传播受天气的影响。

CCll00是一种低成本真正单片的UHF收发器,为低功耗无线应用而设计。CCll00构建高性能射频无线数据传输技术方案应用无线通讯模块采用透明模式进行通讯,即所收即所发,具有通讯距离远、低功耗、接口灵活等优点,使用者无需编码和控制。CCll00通信距离(视距)大于300 m,而且能隔墙遥控,操作方便。

综合上述分析,本文介绍的是采用CCll00收发器通过串口来实现PC机与单片机之间的双工无线通信。

2 硬件设计

2.1 总体框图

此双工无线通信系统的总体框图如图1所示。由于此系统可实现双工通信,因此它可分为两个通信过程:PC机(上位机)通过上位机程序界面发送数据给单片机,并送给液晶屏显示相应的数据;键盘输入数据传给单片机,接着发送给PC机,并在PC机上位机程序界面上显示出来。

2.2 实现电路图

对应于上述框图的电路实物图如图2所示。其左右两个电路分别对应上述框图中的左右两个部分。总体来说,它包括电平转换电路、单片机处理部分、无线收发部分(CCll00收发器)、液晶显示模块和键盘输入模块五个部分。

1/3 123下一页尾页

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
部分源程序如下: #define TARGET_GLOBAL 1 #include "target.h" /***************************************************************************************** *函数名称:usart0_Initial(void) *函数功能:初始化串口 *入口函数:无 *出口函数:无 *****************************************************************************************/ void usart0_Initial(void) { /************TH1=256-(K*oscFreq)/384*BaudRate************/ SCON=0x50; //SM0=0;SM1=1;REN=1; TI=0; //数据发送状态清零 RI=0; //数据接收状态清零 PCON=0; //不加倍 TH1=0xF3; //bode=2400 TL1=0XF3; TMOD=0X20; //TIMER1 MODER2; ET1=0; //屏蔽timer1溢出中断 TR1=1; //启动timer1 ES=0; //屏蔽串口中断 } /***************************************************************************************** *函数名称:send_char(uchar txd) *函数功能:串口发送一个字符 *入口函数:要发送的一个字符txd *出口函数:无 *****************************************************************************************/ void send_char(uchar txd) { TI=0; SBUF=txd; while(!TI); // 等特数据传送 TI=0; // 清除数据传送标志 } /***************************************************************************************** *函数名称:send_str(uchar *str,uchar len) *函数功能:串口发送一行字符串 *函数入口:字符串指针*str,字符串长度len *函数出口:无 *****************************************************************************************/ void send_str(uchar *str,uchar len) { uchar i; for(i=0;i<len;i++) send_char(str[i]); } /***************************************************************************************** *函数名称:get_char(void) *函数功能:串口接收一个字符 *函数入口:串口发送的字符rxd *函数出口:无 *****************************************************************************************/ uchar get_char(void) { uchar temp; RI=0; while(!RI); // 等特数据传送 temp=SBUF; RI=0; // 清除数据传送标志 return temp; }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值