树莓派ST7565P-12864液晶屏操作

#-*- 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,
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值