JH7UBCブログ

アマチュア無線 電子工作 家庭菜園など趣味のブログです

Raspberry Pi Pico MicroPython I2C LCD AQM0802A表示テスト

2021-11-19 07:55:25 | Raspberry Pi Pico
 Raspberry Pi Picoで、MicroPythonを使い、I2C LCD 0802Aの表示テストをします。
 これまで、AQM0802Aは、PICやArduinoで利用し、その表示プログラムはJH7UBCホームページに掲載しています。AQM0802Aのコントローラは、ST7032です。ST7032のライブラリがあれば、それを利用するのが簡単です。

 今回はMicroPythonでのI2Cの使い方の勉強なので、ライブラリを使わないで、プログラミングをします。(ライブラリがあるのか、確認していません)

 PicoとAQM0802Aの接続回路図です。id=0 SCL=GP17,SDA=GP16としました。

 I2Cデバイスへの書き込みメッソドには、writeto(addr,buf)やwriteto_mem(addr,memaddr,buf)などがあります。
 writeto(addr,buf)で、addr=0x3e,buf[0]=0x00,buf[1]=0x02としてI2CのSCLとSDAを観測してみました。赤線がSCL、青線がSDAです。OKです。

 スクリプトです。Qiitaさんの旧版スクリプト新版スクリプトTdukurelさんのスクリプトを参考にさせていただきました。
 LCDを初期化した後、1行目に「JH7UBC」が表示され、2行目に数値が0からカウントアップされます。
------------------------------------------------------------------
from machine import Pin, I2C
import utime

i2c = I2C(0,freq=100000,scl=Pin(17),sda=Pin(16))
addr=0x3e
buf=bytearray(2)

def write_cmd(cmd):
    buf[0]=0x00
    buf[1]=cmd
    i2c.writeto(addr,buf)

def write_char(char):
    buf[0]=0x40
    buf[1]=char
    i2c.writeto(addr,buf)

def print(str):
    for c in str:
        write_char(ord(c))

def LCD_cursor(x,y):
    if y==0:
        write_cmd(0x80+x)
    if y==1:
        write_cmd(0xc0+x)

def LCD_clear():
    buf[0]=0x00
    buf[1]=0x01
    i2c.writeto(addr,buf)
    utime.sleep(0.001)

def LCD_home():
    buf[0]=0x00
    buf[1]=0x02
    i2c.writeto(addr,buf)
    utime.sleep(0.001)

def LCD_init():
    orders = [b'\x38', b'\x39', b'\x14', b'\x73', b'\x56', b'\x6c',b'\x38', b'\x0c', b'\x01']
    utime.sleep(0.04)
    for order in orders:
        i2c.writeto_mem(addr, 0x00, order)
        utime.sleep(0.001)

LCD_init()
LCD_clear()
LCD_home()
print('JH7UBC')
num=0

while True:
    LCD_cursor(0,1)
    print(str(num))
    num=num+1
    utime.sleep(1)


------------------------------------------------------------------
 LCD初期化の手順について説明します。各コマンドを順番にLCDに送ります。
 0x38 #8bit,2line
  ↓
 0x39 #IS=1:extension mode set
  ↓
 0x14 #Internal OSC Frequency
  ↓
 0x73 #Contrast 私の場合この値がちょうど良いコントラスト(要調整)
  ↓
 0x56 #Power/ICON/Contrast control
  ↓
 0x6C #Follower control
  ↓
 0x38 #IS=0:extension mode cancel
  ↓
 0x0C #Display ON
  ↓
 0x01 #Clear Display

 ブレッドボードです。無事表示されました。




最新の画像もっと見る

コメントを投稿