温度传感器+I2C+串口+PC上位机(pyserial)例子
2014-07-26 15:02
591 查看
温度传感器+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总线 例子下载:
http://pan.baidu.com/s/1pJ9aKaf
例子写的有点乱,主要是学习:
温度传感器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总线 例子下载:
http://pan.baidu.com/s/1pJ9aKaf
#!/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()
相关文章推荐
- 树莓派+串口墨水电子屏幕+温度湿度传感器打造专属时钟
- STM8L 151G6U6 驱动RW1820温度传感器
- 第27章 DS18B20温度传感器
- ESP32 - ULP 协处理器在低功耗模式下读片内温度传感器
- 影响热电阻温度传感器测量的因素
- ble学习笔记六------------温度传感器温度采集
- [南工程单片机课设]温度传感器温度检测项目
- Arduino系列教程-011 温度传感器
- [app]温度传感器测试程序
- ZigBee组网学习笔记(八)--温度传感器
- 关于DS18B20温度传感器的时序详解及代码分析
- STM32F4 ADC之内部温度传感器【库函数操作】
- 温度传感器100k 热水器温度探头
- 基于ARM-LINUX的温度传感器驱动(DS18B20) .
- zigbee网关 cc2530裸机驱动温度传感器LM75A
- zigbee网关 CC2530 zstack用手机显示终端传来的lm75a温度传感器的值
- 数值温度传感器18b20驱动分析
- 串口调试工具(Python2.7+pyserial+Tkinter)(很好的Tkinter例子,代码层次结构等)
- 基于ARM-LINUX的温度传感器驱动(一)
- 周期循环读温度传感器的值