import sys
import mbed
class C12832_LCD:
def __init__(self):
self._spi = mbed.SPI('p5','NC','p7')
self._reset = mbed.DigitalOut('p6')
self._A0 = mbed.DigitalOut('p8')
self._CS =mbed.DigitalOut('p11')
self.lcd_reset()
def lcd_reset(self):
self._spi.format(8,3)
self._spi.frequency(20000000)
self._A0.write(0)
self._CS.write(1)
self._reset.write(0)
sys.wait(1)
self._reset.write(1)
sys.wait(5)
self.wr_cmd(0xAE)
self.wr_cmd(0xA2)
self.wr_cmd(0xA0)
self.wr_cmd(0xC8)
self.wr_cmd(0x22)
self.wr_cmd(0x2F)
self.wr_cmd(0x40)
self.wr_cmd(0xAF)
self.wr_cmd(0x81)
self.wr_cmd(0x17)
self.wr_cmd(0xA6)
def buf_to_lcd(self, page, colum, buffer):
self.wr_cmd(0x00 + (colum & 0xf))
self.wr_cmd(0x10 + ((colum>>4)&0x0f))
self.wr_cmd(0xB0+page)
for d in buffer:
self.wr_dat(d)
def wr_cmd(self, cmd):
self._A0.write(0)
self._CS.write(0)
self._spi.write(cmd)
self._CS.write(1)
def wr_dat(self, dat):
self._A0.write(1)
self._CS.write(0)
self._spi.write(dat)
self._CS.write(1)
def cls(self, data=0):
for page in range(4):
colum = 0
while colum < 128:
self.buf_to_lcd(page, colum, [data])
colum += 1
self.locate(0, 0)
def locate(self, row, colum):
self.page = row
self.colum = colum * 4
def crlf(self):
self.colum = 0
self.page += 1
if self.page >= 4:
self.page = 0
def puts(self, s):
for c in s:
self.putc(c)
def putc(self, c):
if c == "\n":
self.crlf()
return
font = self.get_font(c)
self.buf_to_lcd(self.page, self.colum, font)
self.colum += len(font)
if self.colum >= 128:
self.crlf()
def get_font(self, c):
font = (
0,6016,49155,1034559,434070,590866,695986,130,1072896,8001,164746,139016,
532480,132104,4096,66576,464156,532260,595250,333090,1018392,300334,300316,
105730,333076,464164,2560,2592,559624,330260,133666,103554,496786,1017022,
430783,544926,495807,545471,17087,938142,1033279,548769,512016,967231,528447,
1033023,1015999,495774,99519,1544350,885951,414370,24449,1036351,247871,
1035327,837171,56835,579249,1081216,352021,16321,32898,1056832,32896,987672,
397887,594456,1036824,726552,89988,993864,918079,7808,7872,853055,8065,
921148,918076,397848,397948,2036248,66620,335400,597764,987196,198716,989244,
592932,993356,727588,1071880,16256,138049,16513,
)
i = ord(c) - 0x20
if i < 0 or i > len(font):
i = 0
return(font[i]&0x7f,(font[i]>>7)&0x7f,(font[i]>>14)&0x7f, 0)
lcd = C12832_LCD()
lcd.cls()
lcd.locate(0, 3)
lcd.puts("mbed application board!")
j = 0
while 1:
lcd.locate(1, 15)
lcd.puts("Counting : %d" % j);
j += 1
sys.wait(1*1000)