


昆仑镜LCD原理图


固件选用LuatOS-Air_V3206_RDA8910_RFTLLTSXY_0x90000.pac
刚开始从昆仑镜码云源码复制驱动代码时,少复制一句
pmd.ldoset(8, pmd.LDO_VBACKLIGHT_R)--必需有,否者屏幕无背光
导致屏幕背光不亮
main.lua
- PROJECT = 'KLJ_LCD_Driver_Test'
- VERSION = '2.0.0'
- require 'log'
- LOG_LEVEL = log.LOGLEVEL_TRACE
- require 'sys'
- require "pins"
-
- require "lcd"
- require "test"
- lcd.init()
-
- sys.init(0, 0)
- sys.run()
lcd.lua
- -- 硬件初始化
- module(..., package.seeall)
-
- width = 240
- height = 240
-
- -- lcd 初始化
- function init()
- local para1 = {
- width = width, -- 分辨率宽度,128像素;用户根据屏的参数自行修改
- height = height, -- 分辨率高度,160像素;用户根据屏的参数自行修改
- bpp = 16, -- 位深度,彩屏仅支持16位
- bus = disp.BUS_SPI4LINE, -- LCD专用SPI引脚接口,不可修改
- xoffset = 0, -- X轴偏移
- yoffset = 0, -- Y轴偏移
- freq = 13000000, -- spi时钟频率,支持110K到13M(即110000到13000000)之间的整数(包含110000和13000000)
- pinrst = pio.P0_6, -- reset,复位引脚
- pinrs = pio.P0_1, -- rs,命令/数据选择引脚
- -- 初始化命令
- -- 前两个字节表示类型:0001表示延时,0000或者0002表示命令,0003表示数据
- -- 延时类型:后两个字节表示延时时间(单位毫秒)
- -- 命令类型:后两个字节命令的值
- -- 数据类型:后两个字节数据的值
- initcmd = {
- 0xfe, 0xef, 0xb3, 0x0030003, -- 0x21,--反显
- 0x36, 0x0030048, -- 0x0030088,--上下颠倒
- 0x3a, 0x0030005, 0xb4, 0x0030021, 0xF0, 0x003002d, 0x0030054,
- 0x0030024, 0x0030061, 0x00300ab, 0x003002e, 0x003002f, 0x0030000,
- 0x0030020, 0x0030010, 0x0030010, 0x0030017, 0x0030013, 0x003000f,
- 0xF1, 0x0030002, 0x0030022, 0x0030025, 0x0030035, 0x00300a8,
- 0x0030008, 0x0030008, 0x0030000, 0x0030000, 0x0030009, 0x0030009,
- 0x0030017, 0x0030018, 0x003000f, 0xfe, 0xff, 0x11, 0x010078, 0x29
- },
- -- 休眠命令
- sleepcmd = { 0x00020010 },
- -- 唤醒命令
- wakecmd = { 0x00020011 }
- }
- --驱动芯片:GC9A01 深圳秦唐盛世科技有限公司
- local para = {
- width = 240, -- 分辨率宽度,128像素;用户根据屏的参数自行修改
- height = 240, -- 分辨率高度,128像素;用户根据屏的参数自行修改
- bpp = 16, -- 位深度,彩屏仅支持16位
- bus = disp.BUS_SPI4LINE, -- LCD专用SPI引脚接口,不可修改
- xoffset = 0, -- X轴偏移
- yoffset = 0, -- Y轴偏移
- freq = 20000000, -- spi时钟频率
- pinrst = pio.P0_6, -- reset,复位引脚
- pinrs = pio.P0_1, -- rs,命令/ 数据选择引脚/ 268开发板为15
- -- 初始化命令
- -- 前两个字节表示类型:0001表示延时,0000或者0002表示命令,0003表示数据
- -- 延时类型:后两个字节表示延时时间(单位毫秒)
- -- 命令类型:后两个字节命令的值
- -- 数据类型:后两个字节数据的值
- initcmd = {
- 0x00010000 + 100, 0xEF, 0xEB, 0x00030014, 0xFE, 0xEF, 0xEB,
- 0x00030014, 0x84, 0x00030040, 0x85, 0x000300FF, 0x86, 0x000300FF,
- 0x87, 0x000300FF, 0x88, 0x0003000A, 0x89, 0x00030021, 0x8A,
- 0x00030000, 0x8B, 0x00030080, 0x8C, 0x00030001, 0x8D, 0x00030001,
- 0x8E, 0x000300FF, 0x8F, 0x000300FF, 0xB6, 0x00030000, 0x00030020,
- 0x36, 0x00030008, 0x3A, 0x00030005, 0x90, 0x00030008, 0x00030008,
- 0x00030008, 0x00030008, 0xBD, 0x00030006, 0xBC, 0x00030000, 0xFF,
- 0x00030060, 0x00030001, 0x00030004, 0xC3, 0x00030013, 0xC4,
- 0x00030013, 0xC9, 0x00030022, 0xBE, 0x00030011, 0xE1, 0x00030010,
- 0x0003000E, 0xDF, 0x00030021, 0x0003000c, 0x00030002, 0xF0,
- 0x00030045, 0x00030009, 0x00030008, 0x00030008, 0x00030026,
- 0x0003002A, 0xF1, 0x00030043, 0x00030070, 0x00030072, 0x00030036,
- 0x00030037, 0x0003006F, 0xF2, 0x00030045, 0x00030009, 0x00030008,
- 0x00030008, 0x00030026, 0x0003002A, 0xF3, 0x00030043, 0x00030070,
- 0x00030072, 0x00030036, 0x00030037, 0x0003006F, 0xED, 0x0003001B,
- 0x0003000B, 0xAE, 0x00030077, 0xCD, 0x00030063, 0x70, 0x00030007,
- 0x00030007, 0x00030004, 0x0003000E, 0x0003000F, 0x00030009,
- 0x00030007, 0x00030008, 0x00030003, 0xE8, 0x00030034, 0x62,
- 0x00030018, 0x0003000D, 0x00030071, 0x000300ED, 0x00030070,
- 0x00030070, 0x00030018, 0x0003000F, 0x00030071, 0x000300EF,
- 0x00030070, 0x00030070, 0x63, 0x00030018, 0x00030011, 0x00030071,
- 0x000300F1, 0x00030070, 0x00030070, 0x00030018, 0x00030013,
- 0x00030071, 0x000300F3, 0x00030070, 0x00030070, 0x64, 0x00030028,
- 0x00030029, 0x000300F1, 0x00030001, 0x000300F1, 0x00030000,
- 0x00030007, 0x66, 0x0003003C, 0x00030000, 0x000300CD, 0x00030067,
- 0x00030045, 0x00030045, 0x00030010, 0x00030000, 0x00030000,
- 0x00030000, 0x67, 0x00030000, 0x0003003C, 0x00030000, 0x00030000,
- 0x00030000, 0x00030001, 0x00030054, 0x00030010, 0x00030032,
- 0x00030098, 0x74, 0x00030010, 0x00030085, 0x00030080, 0x00030000,
- 0x00030000, 0x0003004E, 0x00030000, 0x98, 0x0003003e, 0x00030007,
- 0x35, 0x21, 0x11, 0x00010000 + 120, 0x29, 0x00010000 + 20
- },
- -- 休眠命令
- sleepcmd = { 0x00020010 },
- -- 唤醒命令
- wakecmd = { 0x00020011 }
- }
-
- pmd.ldoset(15, pmd.LDO_VLCD) -- 屏幕
- pmd.ldoset(8, pmd.LDO_VBACKLIGHT_R)--必需有,否者屏幕无背光
- disp.init(para)
- disp.setbkcolor(0)--设置背景颜色
- disp.clear()
- disp.update()
- sys.publish("LCD_INIT")
- log.info("lcd","初始化完成!")
- end
-
- init()
test.lua
- module(..., package.seeall)
- require "common"
- CHAR_WIDTH = 24
- function rgb(r, g, b)
- return (r - r % 8) / 8 * 2048 + (g - g % 4) / 4 * 32 + (b - b % 8) / 8
- end
-
- function text(s, x, y, r, g, b)
- if r and g and b then
- disp.setcolor(rgb(r, g, b))
- end
- disp.puttext(common.utf8ToGb2312(s), x, y)
- end
-
- --居中显示文字
- function putStringCenter(s, x, y, r, g, b)
- local str = common.utf8ToGb2312(s)
- text(s, x - str:len() * ((CHAR_WIDTH - CHAR_WIDTH % 2) / 2), y, r, g, b)
- end
-
- sys.taskInit(function()
- local cnt=0
-
- sys.waitUntil("LCD_INIT")
- log.info("LCD", "已进入")
- disp.setfontheight(32)
- while true do
-
- putStringCenter(cnt, 70, 60, 220, 220, 220)
- disp.update()
- cnt=cnt+1
- sys.wait(100)
- disp.clear()
- end
-
- end)