Python实现的简单的单片机串口助手程序

发布者:ZenMaster123最新更新时间:2021-07-13 来源: eefocus关键字:Python  单片机  串口助手 手机看文章 扫描二维码
随时随地手机看文章

项目中遇到需要用电脑通过串口来控制单片机IO口,查询了一些资料,可以使用python来实现简单的串口通信


所以用python实现了一个简单的单片机串口助手,可以将串口助手发往单片机的字符回传给串口助手。也可以


将配合单片机程序对单片机进行控制。


python实现的串口助手代码如下:


import time; #需要调用延时函数

import serial #需要调用串口库

import binascii #需要将传送的字符进行转换

 

if __name__ == '__main__':

    ser = serial.Serial(); #生成串口

    ser.baudrate = 4800  #设置串口波特率

    ser.port = 'COM4'    #设置串口号

    ser.timeout = 0.1    #设置串口通信超时时间

    ser.close()         #先关闭串口,以免串口被占用

    ser.open()          #打开串口

    print(ser.is_open)  #打印串口状态

    strSerial = ''      #初始化串口传输字符串

    if(ser.is_open):    

        while(strSerial != '0'):        #判断输入是否为'0',为'0'则退出循环    

            strSerial = raw_input('Input:') #输入传输字符串

            strHex = binascii.b2a_hex(strSerial)  #将传输字符串转换为16进制

            strhex = strHex.decode("hex")  #以十六进制解码,这两行必须有,不然会回传乱码

            ser.write(strhex)    #将传输字符串写入串口

            time.sleep(1)        #延时1s,时间可以设置,最好设置大点,以免传输字符过多,传输

                                 #时间过长,回传失败

            n = ser.inWaiting(); #求取串口缓存中回传的字符个数

            print 'n=',n         #打印字符个数

            if n:

                data = '';

                data = ser.read(1000); #读取缓存中1000个字符,值越大越好,如果该值小于传输字 

                                       #符总长度,多余的字符会被抛弃

                print 'get data from serial port:',data; #打印回传的字符

    ser.close()     #程序结束时关闭串口,以免串口被占用

    print  not ser.is_open

单片机下位机程序如下:


#include "reg52.h"

 

typedef unsigned char u8;

typedef unsigned int u16;


u8 receiveData;

 

void UsartInit()//初始化串口

{

 TMOD = 0X20;

 TH1 = 0XF3;

 TL1 = 0XF3;

 PCON  = 0X80;

 TR1 = 1;

 SCON = 0X50;

 ES = 1;

 EA = 1;

 

}

 

void main()

{

 UsartInit();

 

 while(1)

 {

 };

 

}

 

void uSART() interrupt 4   //用中断处理串口通信

{

  receiveData = SBUF; //将单片机接收缓存中的字符存入receiveData

 

  RI = 0;

  SBUF= receiveData;  //将receiveData中的字符存入单片机发送缓存

  while(!TI);     //等待回传完成

  TI = 0;

 

}


程序运行结果如下:

对单片机下位机处理函数加以扩展,根据接收到的不同字符做出不同的动作,就可以通过串口助手对单片机


加以控制,以下程序可以通过串口控制单片机的IO口,将单片机的IO口与发光二极管相连,就可以控制二极管亮灭


#include "reg52.h"

 

typedef unsigned char u8;

typedef unsigned int u16;

 

sbit SUNROOF_OPEN   = P2^0;

sbit SUNROOF_CLOSE  = P2^1;

sbit SUNSHADE_OPEN  = P2^2;

sbit SUNSHADE_CLOSE = P2^3;

 

u8 receiveData;

 

void UsartInit()

{

 TMOD = 0X20;

 TH1 = 0XF3;

 TL1 = 0XF3;

 PCON  = 0X80;

 TR1 = 1;

 SCON = 0X50;

 ES = 1;

 EA = 1;

 

}


void main()

{

 UsartInit();

 P2 = 0; //P2口先置0,发光二极管全灭

 

 while(1)

 {

   switch(receiveData)//根据接收到的值控制对应的IO口输出高低电平

   {

   case 'A'

    SUNROOF_OPEN = 1;

break;

   case 'B':

    SUNROOF_OPEN = 0;

break;

   case 'C':

    SUNROOF_CLOSE = 1;

break;

   case 'D':

    SUNROOF_CLOSE = 0;

break;

   case 'E':

    SUNSHADE_OPEN = 1;

break;

   case 'F':

    SUNSHADE_OPEN = 0;

break;

   case 'G':

    SUNSHADE_CLOSE = 1;

break;

   case 'H':

    SUNSHADE_CLOSE = 0;

break;

   default:

    break;

    

     

 

   }


 };

}


void uSART() interrupt 4

{

  receiveData = SBUF;

 

  RI = 0;

  SBUF= receiveData;

  while(!TI);

  TI = 0;

 

}

程序运行结果如下:


串口助手发送命令:

单片机做出响应:

串口再次发送命令:

单片机再次做出响应:

可以对单片机和串口助手程序加以扩展,实现更复杂的功能

关键字:Python  单片机  串口助手 引用地址:Python实现的简单的单片机串口助手程序

上一篇:51单片机之IO口扩展——74HC595芯片串行转并行实验
下一篇:KEIL软件使用方法,创建一个工程

推荐阅读最新更新时间:2024-11-06 10:10

51单片机模拟交通灯
利用51单片机的控制二极管及数码管的显示来模拟交通灯,系统晶振为11.0592MHZ,东西方向红灯设置为30秒,南北方向红灯设置为20 秒,P1.3接一个应急按钮,按下第一次放开,南北方向绿灯一直亮,东西方向红灯一直亮(目的是为了方便大领导通行),按下放开第二次,南北绿灯闪3秒黄灯亮2秒后变红灯,东西方向变为绿灯,之后沿着之前的设置一直循环,下面是仿真图、程序源代码 仿真图 程序源代码如下: 作者:胡琴 联系qq:1257394091 网站: http://www.51hei.com 本程序已经通过软件仿真以及在自己搭建的硬件上测试通过. org 0000h ajmp main org 000bh ajmp inti0 o
[单片机]
51<font color='red'>单片机</font>模拟交通灯
单片机应用电路
说明:图中RLA?为继电器  说明:图中SHT1X/7X为数字温度、湿度传感器 ISP为在线烧程序接口  单片机学习的网站: http://www.soomao.com/channel/0_mcu/ www.ourmpu.com  电子驿站 通过以上几个实际产品的电路,可见控制类产品要用到的器件:除单片机芯片、晶体外,有电源稳压片、蜂鸣器、传感器 光耦 AD DA 驱动电路(三极管90XX系列、8050等)继电器 显示(LED和LCD) 接口电路等。
[单片机]
AT89S51单片机发光二极管多功能闪烁的设计
1.实验任务 如图4.9.1所示,开关SP1接在P3.7/RD管脚上,在AT89S51单片机的P1端口接有四个发光二极管,上电的时候,L1接在P1.0管脚上的发光二极管在闪烁,当每一次按下开关SP1的时候,L2接在P1.1管脚上的发光二极管在闪烁,再按下开关SP1的时候,L3接在P1.2管脚上的发光二极管在闪烁,再按下开关SP1的时候,L4接在P1.3管脚上的发光二极管在闪烁,再按下开关SP1的时候,又轮到L1在闪烁了,如此轮流下去。 2.电路原理图 图4.9.1 3.系统板上硬件连线 (1).把“单片机系统”区域中的P3.7/RD端口连接到“独立式键盘”区域中的SP1端口上; (2).把“单片机系统”区域中的P1.0-P
[单片机]
AT89S51<font color='red'>单片机</font>发光二极管多功能闪烁的设计
AVR单片机在蓄电池剩余电量测试仪中的应用
    摘要: 利用一代AVR单片机(AT90S8515)实现蓄电池剩余电量在线测量。该方法通过实时测量蓄电池内阻,推算出剩余电量。最后给出了实验结果。     关键词: 单片机 在线测量 蓄电池 剩余电量 蓄电池作为备用电源,已在计算机网络、通主、电力等领域得到了广泛的应用。蓄电沁的荷电量与整个供电系统的可靠性密切相关,蓄电池剩余电量睦高,系统可靠性越高,否则反之。对于一些重要的用电领域,例如信息处理中心,如果能在既不消耗蓄电池的能量,又不影响用电设备正常工作的条件下,实现蓄电池剩余电量的在线监测,将有重要的实际意义。近几年随着IT产业的迅速发展,电池的重要性越来越突出,对剩余电量精确预测的需求越来越迫切。
[工业控制]
【蓝桥杯单片机组】(6)uart
(1)波特率的概念:1bps = 1 bit/s (2)板载资源有两个串口,仅UART1可以通过USB连接电脑 (3)四种方式波特率计算公式:(fosc:晶振频率 ) 方式1:baud = fosc / 12; 方式2:baud = (2^smod / 32) * (T1溢出率) 方式3:baud = (2^smod / 64) * fosc 方式4:baud = (2^smod / 32) * (T1溢出率) (4)SMOD的设定位于PCON(电源管理寄存器中)PCON_D7 SMOD = 1 波特率加倍PCON &= 0x7f SMOD = 0 波特率不变 PCON |= 0x80 (5
[单片机]
Atmel: MCU市场的未来走向
在未来数年,全球半导体行业增长率将会回落到单位数,而据市场研究机构iSuppli报告,2011年全球半导体行业将会面对5.1%的温和营收增长率。不过,诸如 智能手机 、 平版计算机 、宽带无线接入,以及智能能源基础设施等领域,在未来数年仍有双位数字的增长。 在2010年,我们看见一线品牌的OEM厂商开始将电容式触摸用户接口用于的智能手机,以及Android正在兴起,成为主流的手持式产品操作系统之一。我相信在2011年这趋势将会延续。同时我们预计平板电脑将在2011年变得更流行,并抢去部分上网本和笔记本电脑的市场。另外,电容式触摸接口将有机会渗透其它便携产品,例如是手持式游戏机、数码相机、个人多媒体设备 (PMP)等
[工业控制]
基于单片机的电池安全检测系统设计
   引言   电子科技迅猛发展,电子产品层出不穷,电池作为主要动力来源,其供电能力与安全可靠性日益受到关注。作为电池研发和生产阶段不可或缺的环节,传统的性能测控人工依赖性高,检测效率低,网络、智能与自动化亦不能满足现实的需求。   本文所提出的已经实现并应用的解决方案能够多路同步全程实时监控电池的测试状态,先完成测试前PC端的监测配置,通过RS485接口和CAN总线实时返回继电器在线连接状态,再根据需求控制与测试项目类型相应继电器的开启。监测开始后,电池电压、电流及温度等信息实时传输到控制室的PC上,可以通过灵活在线编辑的数据曲线反映测试量的变化趋势,同时也可由记录的历史数据查看关键点的情况。    系统功能需求分析
[安防电子]
基于<font color='red'>单片机</font>的电池安全检测系统设计
MCS-51单片机定时器/计数器常见习题解答
1、根据定时器/计数器0方式1逻辑结构图,分析门控位GATE取不同值时,启动定时器的工作过程。 答:当GATE=0:软件启动定时器,即用指令使TCON中的TR0置1即可启动定时器0。 GATE=1:软件和硬件共同启动定时器,即用指令使TCON中的TR0置1时,只有外部中断INT0引脚输入高电平时才能启动定时器0。 2、当定时器/计数器的加1计数器计满溢出时, 溢出标志位TF1由硬件自动置1,简述对该标志位的两种处理方法。 答:一种是以中断方式工作,即TF1置1并申请中断,响应中断后,执行中断服务程序,并由硬件自动使TF1清0;另一种以查询方式工作,即通过查询该位是否为1来判断是否溢出,TF1置1后必须用软件使TF1清0。
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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