溫度傳感器+I2C+串口+PC上位機(pyserial)例子

溫度傳感器+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()


相關文章
相關標籤/搜索