python显示单片机温度_基于Python串口和单片机的实时温度采集系统

使用DS18B20进行温度采集,然后单片机将温度传感器器传过来的温度值送往串口,单片机串与PC串口相连,PC上我们使用了Python语言在Pycharm中开发了上位机,使用该上位机直接接收数据并打印输出温度数据,并将采集到的数据插入数据库进行保存。Python为我们提供了串口操作的类,使用较少代码就可以实现从PC的串口接收数据,将串口传过来的温度数据插入数据库,也可以利用Python的flask框架进行数据的查询展示。一、系统工作原理使用STC89C51单片机驱动单总线数字温度传感器芯片DS18B20,并将处理后的数据通过串行口传输到上位机,由上位机负责数据的接受、处理和显示,并用LED数码显示器来显示所采集的结果。上位机部分应用Python编写控制软件,对数据采集系统、数据显示等程序进行了设计。二、硬件设计系统硬件原理图如图1所示,此系统以STC89C51单片机为控制核心,采用了数字温度传感器模块DS18B20[1],将温度值信号传送给单片机,单片机通过数码管将温度显示出来,同时将温度值送往串口,上位机接收数据同时将数据保存到数据库Mysql中。三、软件设计(一)关于DS18B20时序的说明由于DS18B20对时序要求比较严格,这里笔者使用的单片机的晶振为11.0592Mhz,基本延时程序笔者建议定义如下:01 void delay(unsigned char i)//基本延时时间为5us03 do05_nop_();//使用了_nop_()函数后,可以更方便估算和测试延时时间06_nop_();07_nop_();08 i--;09}while(i);有了基本延时后,就可以对DS18B20进行初始化,单片机发出一个可以使得DS18B20复位的信号(持续时间至少为480us的低电平信号)[2],然后让总线恢复成高电平,接收DS18B20发出的存在脉冲,单总线一般有求接有4.7k左右的上拉电阻,DS18B20探测到单总线上的上升沿后,要等待15us~60us的反应时间,就开始发出一个持续时间为60-240us的低电平信号,此即为存在脉冲。(二)使用Python开发简易上位机平台这里给出Python指定通信串口号,并设置波特率为9600波特,并设定超时时间为0.5s,然后启动该串口。Python中如果要接收来自串口的数据,可以使用“data=ser.readline()”读一行,其中插入数据库代码如下:01 temp=data.decode("utf-8")#接收串口过来的值02#取得数据库中的内容03 result=Temp.query.filter(Temp.id!='').order_by(Temp.id.desc()).first()#查找ID号最大那条记录04 temp0=result.temperature05 print(temp0)06 if temp0!=temp:07 temp1=Temp(temperature=data.decode(“utf-8”))08 db.session.add(temp1)#把对象添加到会话中09 db.session.commit()#提交事务01-06行代码实现了从串口接收代码,然后通过使用03行的语句查找数据库最新更新的那条记录,找到该记录后,取出其温度值,然后该值与串口传过来的温度值相比较,如果两者不相等的话,就执行07-09所对应的代码将数据插入Mysql数据库予以保存。四、结束语本设计利用Python和单片机实现了实时温度采集系统,有效地将计算机技术、虚拟仪器技术结合起来,能够实现多路物

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值