1669|0

3836

帖子

19

TA的资源

纯净的硅(中级)

楼主
 

温度传感器+I2C+串口+PC上位机(pyserial)例子 [复制链接]

温度传感器+I2C+串口+PC上位机(pyserial)例子

例子写的有点乱,主要是学习:

温度传感器DS18b20,E2PROM,I2C, 串口读写,PC上位机(pyserial)数据显示

SerialPort.py     PC串口上位机程序,可以设定上限报警温度

需要安装Python3以上,pyserial库,例子在Python3.4下写的。

上位机传给单片机上限报警温度后,单片机存入E2PROM,

单片机断电重启后,从E2PROM读取报警值。

 

i2c.h             I2C总线读写和设定

lcd1602.h         lcd1602的读写和设定

temp_ds18b20.h    DS18b20的读写和设定

 

#define AT24C02 0xa0 // AT24C02 写数据的设备地址

#define MAX_TEMP_E2PROM_FLAG 0xff // 上限报警温度的存储器数据标志,存在说明存储器有数据 

sbit power_port = P2^3; // 报警端口

 

int max_temp = 340; // 报警上限温度,默认340

int max_temp_buf = 0; // 报警上限温度缓存,用于串口

int sp_read_count = 0; // 串口数据,读取的字节计数

bit sp_read_flag = 0; // 串口读取标志

uint8 buf_byte; // 串口数据缓存

 

串口通信和E2PROM和I2C总线 例子下载:

#!/usr/bin/env python
#encoding=utf-8
"""
=============================================================================
单片机例子,上位机
版权所有 (C) 君扬工作室 2014-07-26

文档作者:君扬工作室(cnhemiya@gmail.com)
更新标识:2014-07-26 14:00:00 cnhemiya@gmail.com
=============================================================================
"""
import serial
import struct

port = 2            # 串口号
baudrate = 4800     # 波特率
max_temp = 335      # 报警温度
ser = serial.Serial()

def writeTemp(temp):
    h = int(temp / 256)
    l = temp % 256
    data = struct.pack(("B"), h)
    ser.write(data)
    data = struct.pack(("B"), l)
    ser.write(data)
    
def readTemp():
    print(ser)
    while (1):    
        h = ser.read()
        l = ser.read()
        m = int.from_bytes(h + l, byteorder='big', signed=False)
        s = str(m)
        s = s[0] + s[1] + "." + s[2] + "℃"
        print(s)

def main():
    ser.setPort(port)           # 设置串口号
    ser.setBaudrate(baudrate)   # 设置波特率
    ser.open()
    writeTemp(max_temp)
    readTemp()
    ser.close()
    
if __name__ == "__main__":
    main()

 

 

 

 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

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