|
本帖最后由 ganbc 于 2021-11-30 14:51 编辑
发现一个简单而有趣的单片机系统——合宙luatOS,据说这是一个广受好评的新一代物联网开源操作系统。为了玩这个luatOS系统,我在合宙商城买了一块合宙A101开发板和一个1.8寸TFT LCD 128X160 (st7735s)彩屏。
看了合宙官方的《Air101快速入门手册.pdf》,觉得挺简单的。
于是开始折腾用A101开发板来驱动这块1.8寸的TFT彩屏。
没想到几乎花了一整天,都没能搞定Demo程序里的lcd示例。
只能求救于合宙官方Q群。
在LuatOS-Wendal老师和其他群友的帮助下,终于成功点亮这块彩屏。
总结几个要点:
1、连线:
2、固件
采用最新的core_V0005.zip刷其中较小的那个固件:LuatOS-SoC_V0005_AIR103_NOLVGL.soc
3、示例
core_V0005\demo\lcd\Air101\main.lua
作对以上几点,点亮屏幕显示图形都没问题。
为了让大家少走弯路,特别记录下。
【附】lua代码
--- 模块功能:lcddemo
-- @module lcd
-- @author Dozingfiretruck
-- @release 2021.01.25
-- LuaTools需要PROJECT和VERSION这两个信息
PROJECT = "lcddemo"
VERSION = "1.0.0"
log.info("main", PROJECT, VERSION)
-- sys库是标配
_G.sys = require("sys")
--[[
SPI0
SPI0_SCK (PB2)
SPI0_MISO (PB3)
SPI0_MOSI (PB5)
]]
--添加硬狗防止程序卡死
wdt.init(15000)--初始化watchdog设置为15s
sys.timerLoopStart(wdt.feed, 10000)--10s喂一次狗
local spi_lcd = spi.deviceSetup(0,20,0,0,8,2000000,spi.MSB,1,1)
-- log.info("lcd.init",
-- lcd.init("gc9a01",{port = "device",pin_dc = 17, pin_pwr = 16,pin_rst = 19,direction = 0,w = 240,h = 320,xoffset = 0,yoffset = 0},spi_lcd))
-- log.info("lcd.init",
-- lcd.init("st7789",{port = "device",pin_dc = 17, pin_pwr = 16,pin_rst = 19,direction = 0,w = 240,h = 240,xoffset = 0,yoffset = 0},spi_lcd))
-- log.info("lcd.init",
-- lcd.init("st7789",{port = "device",pin_dc = 17, pin_pwr = 16,pin_rst = 19,direction = 3,w = 240,h = 240,xoffset = 80,yoffset = 0},spi_lcd))
-- log.info("lcd.init",
-- lcd.init("st7789",{port = "device",pin_dc = 17, pin_pwr = 16,pin_rst = 19,direction = 3,w = 320,h = 240,xoffset = 0,yoffset = 0},spi_lcd))
-- log.info("lcd.init",
-- lcd.init("st7735",{port = "device",pin_dc = 17, pin_pwr = 7,pin_rst = 19,direction = 0,w = 128,h = 160,xoffset = 2,yoffset = 1},spi_lcd))
-- log.info("lcd.init",
-- lcd.init("st7735v",{port = "device",pin_dc = 17, pin_pwr = 16,pin_rst = 19,direction = 1,w = 160,h = 80,xoffset = 0,yoffset = 24},spi_lcd))
log.info("lcd.init",
lcd.init("st7735s",{port = "device",pin_dc = 17, pin_pwr = 7,pin_rst = 19,direction = 2,w = 160,h = 80,xoffset = 1,yoffset = 26},spi_lcd))
log.info("lcd.drawLine", lcd.drawLine(20,20,150,20,0x001F))
log.info("lcd.drawRectangle", lcd.drawRectangle(20,40,120,70,0xF800))
log.info("lcd.drawCircle", lcd.drawCircle(50,50,20,0x0CE0))
sys.taskInit(function()
while 1 do
sys.wait(500)
end
end)
-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
打赏
-
查看全部打赏
|