溫度傳感器+I2C+串口+PC上位機(pyserial)例子python
例子寫的有點亂,主要是學習:緩存
溫度傳感器DS18b20,E2PROM,I2C, 串口讀寫,PC上位機(pyserial)數據顯示學習
SerialPort.py PC串口上位機程序,能夠設定上限報警溫度ui
須要安裝Python3以上,pyserial庫,例子在Python3.4下寫的。spa
上位機傳給單片機上限報警溫度後,單片機存入E2PROM,code
單片機斷電重啓後,從E2PROM讀取報警值。utf-8
i2c.h I2C總線讀寫和設定文檔
lcd1602.h lcd1602的讀寫和設定get
temp_ds18b20.h DS18b20的讀寫和設定it
#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()