求助:microbit控制1602LCD液晶显示屏

micro:bit编程、教学、展示
STEM
回复
182260
帖子: 3
注册时间: 2020年 7月 2日 11:05

求助:microbit控制1602LCD液晶显示屏

#1

帖子 182260 »

采用microbit控制1602LCD,但是没有输出,请各位大佬帮忙检查一下错误 
  
 
1602.JPG
1602.JPG (136.86 KiB) 查看 5416 次
 
接线.JPG
接线.JPG (190.32 KiB) 查看 5416 次
 from microbit import *

LCD_I2C_ADDR = 39

class LCD1620():
    def __init__(self):
        self.buf = bytearray(1)
        self.BK = 0x08
        self.RS = 0x00
        self.E = 0x04
        self.setcmd(0x33)
        sleep(5)
        self.send(0x30)
        sleep(5)
        self.send(0x20)
        sleep(5)
        self.setcmd(0x28)
        self.setcmd(0x0C)
        self.setcmd(0x06)
        self.setcmd(0x01)
        self.version = '1.0'

    def setReg(self, dat):
        self.buf[0] = dat
        i2c.write(LCD_I2C_ADDR, self.buf)
        sleep(1)

    def send(self, dat):
        d = dat & 0xF0
        d |= self.BK
        d |= self.RS
        self.setReg(d)
        self.setReg(d | 0x04)
        self.setReg(d)

    def setcmd(self, cmd):
        self.RS = 0
        self.send(cmd)
        self.send(cmd << 4)

    def setdat(self, dat):
        self.RS = 1
        self.send(dat)
        self.send(dat << 4)

    def clear(self):
        self.setcmd(1)

    def backlight(self, on):
        if on:
            self.BK = 0x08
        else:
            self.BK = 0
        self.setdat(0)

    def on(self):
        self.setcmd(0x0C)

    def off(self):
        self.setcmd(0x08)

    def char(self, ch, x=-1, y=0):
        if x >= 0:
            a = 0x80
            if y > 0:
                a = 0xC0
            a += x
            self.setcmd(a)
        self.setdat(ch)

    def puts(self, s, x=0, y=0):
        if len(s) > 0:
            self.char(ord(s[0]), x, y)
            for i in range(1, len(s)):
                self.char(ord(s))
i = LCD1620()
i.puts("Hello microbit!")

 

头像
shaoziyang
帖子: 3917
注册时间: 2019年 10月 21日 13:48

Re: 求助:microbit控制1602LCD液晶显示屏

#2

帖子 shaoziyang »

打开REPL,看看提示是什么

头像
shaoziyang
帖子: 3917
注册时间: 2019年 10月 21日 13:48

Re: 求助:microbit控制1602LCD液晶显示屏

#3

帖子 shaoziyang »

另外看你的接线,LCD和microbit的地线没有连起来。

以及液晶是多少电压供电的?

182260
帖子: 3
注册时间: 2020年 7月 2日 11:05

Re: 求助:microbit控制1602LCD液晶显示屏

#4

帖子 182260 »

打开REPL是这个
crobit
>>> microbit.reset()
Traceback (most recent call last):
File "__main__", line 76, in <module>
File "__main__", line 11, in __init__
File "__main__", line 38, in setcmd
File "__main__", line 32, in send
File "__main__", line 25, in setReg
OSError: I2C write error -1010

182260
帖子: 3
注册时间: 2020年 7月 2日 11:05

Re: 求助:microbit控制1602LCD液晶显示屏

#5

帖子 182260 »

液晶是5V的,我将液晶的VCC和GND与电池的正负极连在一起了

头像
shaoziyang
帖子: 3917
注册时间: 2019年 10月 21日 13:48

Re: 求助:microbit控制1602LCD液晶显示屏

#6

帖子 shaoziyang »

但是microbit的地没有和液晶连接,这样信号是不通的

回复

  • 随机主题
    回复总数
    阅读次数
    最新文章