#-*- coding: UTF-8 -*-
import RPi.GPIO as GPIO
import commands, time
LCD_CS = 11 #P0
LCD_RST = 13 #P2
LCD_A0 = 15 #P3
LCD_CLK = 12 #P1
LCD_SI = 16 #P4
def get_cpu_temp():
tempFile = open("/sys/class/thermal/thermal_zone0/temp")
cpu_temp = tempFile.read()
tempFile.close
return float(cpu_temp) / 1000
def get_gpu_temp():
gpu_temp = commands.getoutput("/opt/vc/bin/vcgencmd measure_temp").replace('temp=', '').replace('\'C', '')
return float(gpu_temp)
def main():
io_init()
lcd_init()
while True:
# lcd_ascii168_string(1, 0, "Test")
# lcd_ascii168_string(1, 2, "test 2")
# lcd_ascii168_string(1, 4, "0123456789")
# lcd_ascii168_string(1, 6, "@ABCDEF~!?.,")
lcd_ascii168_string(1, 0, "[ CPU : %.2f ]" % get_cpu_temp())
lcd_ascii168_string(1, 2, "[ GPU : %.2f ]" % get_gpu_temp())
time.sleep(3)
#lcd_picture(0,0,0)
def io_init():
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
GPIO.setup(LCD_CS, GPIO.OUT)
GPIO.setup(LCD_RST, GPIO.OUT)
GPIO.setup(LCD_A0, GPIO.OUT)
GPIO.setup(LCD_CLK, GPIO.OUT)
GPIO.setup(LCD_SI, GPIO.OUT)
def lcd_set_contrast(value):
lcd_transfer_data(0x81, 0)
lcd_transfer_data(value, 0)
def lcd_init():
GPIO.output(LCD_CS, True)
GPIO.output(LCD_RST, False)
GPIO.output(LCD_RST, True)
lcd_transfer_data(0xaf, 0) #寮€鏄剧ず
lcd_transfer_data(0x40, 0) #鏄剧ず璧峰琛屼负0
lcd_transfer_data(0xa0, 0) #RAM鍒楀湴鍧€涓庡垪椹卞姩鍚屽簭
lcd_transfer_data(0xa6, 0) #姝e悜鏄剧ず
lcd_transfer_data(0xa4, 0) #鏄剧ず鍏ㄤ寒鍔熻兘鍏抽棴
lcd_transfer_data(0xa2, 0) #LCD鍋忓帇姣�1/9
lcd_transfer_data(0xc8, 0) #琛岄┍鍔ㄦ柟鍚戜负鍙嶅悜
lcd_transfer_data(0x2f, 0) #鍚姩鍐呴儴LCD椹卞姩鐢垫簮
lcd_transfer_data(0xf8, 0) #鍗囧帇鐢佃矾璁剧疆鎸囦护浠g爜
lcd_transfer_data(0x00, 0) #鍊嶅帇璁剧疆涓�4X
lcd_set_contrast(0x60) #璁剧疆瀵规瘮搴�
lcd_clear()
def lcd_picture(xPos, yPos, char):
for i in range(0, 8):
lcd_set_page(yPos + i, xPos)
for j in range(128 * i, 128 * (i + 1)):
lcd_transfer_data(PICTURE[char][j], 1)
def lcd_ascii168_string(xPos, yPos, string):
stringLen = len(string)
for i in range(0, stringLen):
lcd_ascii168(xPos + i * 8, yPos, ord(string[i]) - 32)
def lcd_ascii168(xPos, yPos, char):
lcd_set_page(yPos, xPos)
for i in range(0, 8):
lcd_transfer_data(ASCII168[char][i], 1)
lcd_set_page(yPos + 1, xPos)
for i in range(8, 16):
lcd_transfer_data(ASCII168[char][i], 1)
def lcd_clear():
GPIO.output(LCD_CS, False)
for i in range(0, 8):
lcd_set_page(i, 0)
for j in range(0, 128):
lcd_transfer_data(0x00,1)
GPIO.output(LCD_CS, True)
def lcd_set_page(page, column):
lcd_transfer_data(((page & 0xf) | 0xb0), 0)
lcd_transfer_data((((column & 0xf0) >> 4) | 0x10), 0)
lcd_transfer_data((column & 0x0f), 0)
def lcd_transfer_data(value, SI):
GPIO.output(LCD_CS, False)
GPIO.output(LCD_CLK, True)
if (SI):
GPIO.output(LCD_A0, True)
else:
GPIO.output(LCD_A0, False)
lcd_byte(value)
GPIO.output(LCD_CS, True)
def lcd_byte(bits):
tmp = bits;
for i in range(0, 8):
GPIO.output(LCD_CLK, False)
if (tmp & 0x80):
GPIO.output(LCD_SI, True)
else:
GPIO.output(LCD_SI, False)
tmp = (tmp << 1)
GPIO.output(LCD_CLK, True)
ASCII168 = (
(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,