Linux PC和51系列单片机串行通信设计中的应用

发布者:静雅心灵最新更新时间:2018-03-01 来源: eefocus关键字:Linux  PC和  1系列  单片机  串行通信 手机看文章 扫描二维码
随时随地手机看文章

    单片机性能稳定、价格低廉、功能强大,在智能仪器、工业装备以及日用电子消费品中得到了越来越广泛的应用。在单片机的输入输出控制中,除直接接上小键盘和 LCD显示屏等方法外,一般都通过串口和上位机PC进行通信,而后一种方法由于能实现远程控制,并且能够利用PC机强大的数据处理功能以及友好的控制界面,显得尤为重要。在一般的利用PC机对单片机进行控制的场合,都是采用Windows作为上位机的平台,其优点是界面友好,编程和操作都比较容易,缺点是稳定性太差,这对于需要连续数天或数月运行的装置来说,尤其不合适。在要求比较苛刻的场合,一般都采用UNIX工作站作为主控平台,如合肥同步辐射加速器的主控平台采用的是SUN的Solaris工作站系统,然而UNIX工作站昂贵的价格又大大限制了其使用的范围。近年来,随着Linux的迅猛发展,使其逐渐从少数人的玩具变成了主流的操作系统。Linux是遵循GPL协议的免费源代码开放软件,任何人都可以自由的从Internet上取得其源程序,也可在GPL的协议下修改其源代码以适应特定的应用,其运行在普通的PC上,性能稳定,特别适于做工业控制,因此实现Linux和单片机的串行通信非常有意义,他可以是昂贵的UNIX工作站的一种可选的替代方法。

    1 硬件原理

    目前国内使用较多的为MCS-51系列的单片机,因此选用的单片机实验对象为一片AT89C51,图1是硬件原理图,由于要实现符合RS232C的串行通信,还应该用一片ICL232CPE(MAX232)作为串行通信的电平转换电路。在实验过程中,为了查看通信是否成功,除了让单片机对上位机回送数据外,还在单片机外围扩展了几片锁存器,几个LED发光二极管和几个小键盘。串行通信是采用最简单的TxD,RxD,GND三线制连接,注意TxD和RxD 两边应该交叉连线。

   硬件原理图

    上位机是一台普通的PC机,共有2个串行口COM1,COM2,其运行RedHat8.0,实际上,如果不要求运行Gnome或KDE等图形界面,Linux对系统硬件的要求相当低。

    实验证明,此电路简单可靠,非常适用于测试串行通信。

    2 串行通信程序设计

    串行通信程序包括下位机单片机和上位机PC机的程序。单片机接收上位机传来的数据,放到片内RAM里面,再将RAM内数据同时发送到外部扩展锁存器和上位机,由此可以判断通信是否成功。此程序由汇编语言写成,初始化时波特率设置为4 800 b/s,通信方式为8-N-1。

    上位机程序的编写是关键部分,因为要对串口硬件设备进行操作,有2种方法,一是利用Linux内核自带的串口驱动程序,另外一种方法就是直接读写串口硬件端口,下面分别介绍。

    2.1 利用串口驱动程序的编程方法

    利用Linux自身的串口驱动程序进行编程,实际上就是调用驱动程序的一系列函数,完成串口通信参数的设置,数据的发送和接收。在这种方法中,Linux给每个串口都分配一个文件索引号,有相应的文件名称,实际上是将硬件设备看成一种特殊的文件,如COM1,COM2对应的文件分别为/dev/ttyS0,/dev/ttyS1,操作这2个串口实际上就是操作这2个文件,而对硬件设备文件的操作与对普通文件的操作并没有什么不同,都可以使用相同的文件I/O调用函数(open,write,read,close),不同之处在于用系统调用 open()打开串口得到相应设备的文件描述符以后,先要对其进行初始化,设置一些特定的参数,如波特率、数据位、输入输出方式等,这些参数存放在 structtermios中,函数tcsetattr()可以设置串口的structtermios,tcgetattr()可以得到串口的 struct termios。设置完通信参数后就可用read和write对串口文件进行读写了。运行程序时要注意用户是否有对要操作的串口文件进行读写的权力,可以用chmod命令进行文件权限修改。   

    初始化函数如下:

    41.gif
42.gif

 

    初始化以后就开始发送和接收数据,先将一个字符串发送给单片机,单片机接收到数据后,将数据返回给上位机。但需要注意的是,由于上位机速度比单片机快得多,一次不能发送过多的数据,否则极有可能使发送缓冲区溢出而丢失数据,发送过后,还需等待一段时间,使单片机将数据完全发送到上位机后,再进行读取。

    2.2 直接读写串口硬件端口的方法

    在使用这个方法的时候,必须对串口通信的硬件原理有一些了解。PC机的串口是由通用异步收发器8250UART(或16550)为核心构成的,寄存器基地址分别是0x3f8(COM1)和0x2f8(COM2),还有其他的一些用于控制的寄存器。有很多寄存器是与Modem相关的,而在使用三线制进行通信时用不到,只用关心与通信相关的寄存器,比起使用为通用功能编写的串口设备驱动程序来,直接读写相关寄存器效率更高。

     43.gif

    初始化后,就可以进行数据的收发了,接受数据之前必须保证接收数据就绪,这可以通过0x2fd的D0来判断,发送数据之前必须保证发送寄存器为空,这可以通过0x2fd的D5来判断,代码如下:

     44.gif



    3 结语

    实验表明,此系统采用的2种方法都完全实现了LinuxPC机与单片机之间点对点的通信,方法简单可靠,基本上在需要用到PC机与单片机串行通信的场合均可采用此种方法。随着近年来Linux在国内应用范围的日益壮大,在工业控制、数据采集等领域也必将越来越多的采用Linux,本文可以算作是一个有益的尝试。当然在实际应用中还需要考虑一些问题,比如进行出错处理的问题,可以在一个要发送的字符串后再发送一个校验和,当收到返回的校验和与发送的校验和不一致时再进行重发,再比如所采用的RS232C传输距离很短,并且抗干扰能力很差,这时需要将总线转换成差分传输的RS485/RS422。另外,稍加改进,就可实现PC机与多片51单片机的串行通信,这时由于共用一条总线,必须给每个单片机分配一个地址,然后由PC机对总线进行仲裁,只有获得总线使用权的单片机才能与上位机进行通信,这里不再赘述。

    总之,本文只是为Linux PC和单片机串行通信提供了一个典型的范例,要应用到实际的项目中去,还需要根据实际的情况具体考虑,灵活应用,最终才能形成一个可靠的基于Linux平台的系统。

    参考文献
  [1] PhICornes.Linux从入门到精通[M].童寿彬译.北京:电子工业出版社,1998.
  [2]Peter Baumann H . Linux Serial - programming - HOWTO中文版[M].曾元佑译.
  [3]万福君,潘松峰.单片微机原理系统设计与应用[M].合肥:中国科学技术大学出版社,2001.
  [4][美]安格斯生.串行端口大全[M].精英科技译.北京:中国电力出版社,2001.


关键字:Linux  PC和  1系列  单片机  串行通信 引用地址:Linux PC和51系列单片机串行通信设计中的应用

上一篇:基于RS485单片机多机串行通信的电子开关的设计
下一篇:利用RS485/RS232转换器实现PC机和单片机串行通信

推荐阅读最新更新时间:2024-03-16 15:56

基于atmega16单片机的智能型铅酸电池充电器设计方案
本文针对矿用永磁操动机构馈电开关智能 控制器 采用的铅酸蓄电池在充电过程中存在充电过度、充电不足、电池过热和充电速度慢等诸多问题,提出了一种以atmega16  单片机 为核心的智能充电器设计方案。采用了基于sugeno 推理的模糊PID 控制算法,提高了充电器的充电速度,减少了电池损耗,实现了对铅酸蓄电池充电过程的智能化控制。 目前矿用永磁操动机构馈电开关智能 控制器 采用铅酸蓄电池作为备用 电源 。传统的铅酸蓄电池充电方法有恒流限压充电和恒压限流充电,但充电效果都不是很理想,一方面这些方法充电时间过长,温升过快。另一方面,充电过程中存在过充和欠充现象。专家研究表明:铅酸蓄电池充电过程对其寿命影响最大,过充电、充电不足以及温升都
[电源管理]
基于atmega16<font color='red'>单片机</font>的智能型铅酸电池充电器设计方案
单片机数字电子钟电路仿真图程序
单片机源程序如下: #include reg52.h #include intrins.h #define uchar unsigned char #define uint unsigned int sbit rs=P1^0;//寄存器选择 sbit rw=P1^1;//读写信号线 sbit lcden=P1^2;//led使能端 sbit scl=P1^3;//时钟线 sbit rst=P1^5;//复位线 sbit io=P1^4;//数据口 sbit key_set_time=P3^4;//设置时间键 sbit key_add=P3^5;//加键 sbit key_minus=P3^6;//减键 sbit ke
[单片机]
<font color='red'>单片机</font>数字电子钟电路仿真图<font color='red'>和</font>程序
基于51单片机的直流电源控制板设计
  引 言   多单片机直流电源控制板包括A/ D 采集与转换、测量、显示、同步、自动相序判定、移相触发、过流/ 过压保护、缺相检测等部分,与整流变压器,蓄电池,仪表等部件一起构成成套装置。   1 系统结构   1. 1 整流变压器及主电路   整流变压器及主电路的电路如图1 所示。多单片机直流电源控制系统的变流主电路是三相桥式全控整流电路,整流变压器一次侧控制保护器件有继电器、控制开关、熔断器、电源指示灯等,一次侧接380 V 交流电源。变压器二次侧作为三相桥式全控整流电路供电电源,主电路中有六个晶闸管,该电路中晶闸管的触发脉冲电路必须满足以下条件:      图1 整流变压器及主电路   ( 1) 触
[单片机]
基于51<font color='red'>单片机</font>的直流电源控制板设计
TI推出全新GaN技术,携手台达打造高效能服务器电源供应器
TI领先的功率密度、全新架构与高度集成帮助工程师解决企业服务器的设计难题,降低总所有成本 2021年9月23日,北京讯——德州仪器(TI)今宣布其氮化镓(GaN)技术和 C2000™ 实时微控制器(MCU),辅以台达(Delta Electronics)长期耕耘之电力电子核心技术,为数据中心开发设计高效、高功率的企业用服务器电源供应器(PSU)。与使用传统架构的企业服务器电源供应器相比,台达研发的服务器电源供应器将功率密度提高了80%,效率提升1%。能源政策机构Energy Innovation1数据显示,效率每提升1%,相当于每个数据中心节省了1兆瓦(或800户家庭用电)的总所有成本。 台达为全球客户提供电源管理与散热解
[电源管理]
为网友解答的51单片机波特率计算习题
【第1题】 已知51单片机串行通信口在串口方式1,波特率为9600bps, 系统晶振频率为11.0592MHZ,求TL1和TH1中装入的数值是多少? 【答】: 方式1是16位计数器, 2^16=65536d 当SMOD取0,波特率=F/ , 预装值N=256-F/(波特率x32x12)=65536-11059200/(9600x32x12)=65533d=FFFDh TH1←0FFh, TL1←0FDh ======================================= 【第2题】 已知51单片机使用晶振为11.0592MHZ,用T1的工作方式2作波特率发生器, 串口通信的波特率为9600bps,要求: 1.写出T1
[单片机]
基于单片机的四位二进制转十进制计算显示程序
此程序是根据自己的单片机板子写的,四位共阳数码管。 k1-k4是板子上的4个键 用来进行二进制输入,因为按键只有按下和没有按下两种状态, 十进制的数值就显示在数码管上. #include reg51.h #define uchar unsigned char #define uint unsigned int uchar code smg ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar data yy ={0xff,0xfe,0xfc,0xf8,0xf0,0xfe0,0xc0,0x80,0x00}; uint a; sbit K1=P3^0
[单片机]
51单片机pwm调速调光程序
#include reg52.h typedef unsigned char uchar; typedef unsigned int uint; sbit ENA=P0^0; sbit IN1=P0^1; sbit IN2=P0^2; sbit IN3=P0^3; sbit IN4=P0^4; sbit ENB=P0^5; uint k,j; #define OFF ENA=0;ENB=0; #define ON ENA=1;ENB=1; #define LEDL(key) P2&=(0xfe key); //指定对应的二极管发亮 #define LEDH(key) P2|=(0x01 key); //指定LED
[单片机]
基于SRAM的微控制器优化了安全性
结果表明,非易失性(NV)SRAM是用于存储安全数据的最安全的存储器。通过使用 DES 或三重 DES 加密内存,可以建立加密边界,使安全信息不被黑客渗透。通过使用防篡改反应传感器,可以进一步保护SRAM的易失性,这些传感器将擦除加密密钥作为响应。密码键盘等金融应用依靠自动程序和数据存储器加密功能来保护数据。DS5250是一款高性能、安全的8051微控制器,利用安全SRAM的独特特性来保护敏感数据。 无论是在自动取款机、护照/身份验证设备还是便利店的销售点终端中,都必须保护密码、个人识别码 (PIN)、加密密钥和专有加密算法等关键信息免受黑客攻击。金融服务采用详细的政策和程序来保护硬件和软件。因此,金融交易系统的设计者在开发每
[单片机]
基于SRAM的<font color='red'>微控制器</font>优化了安全性
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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