Luat实例教程:LCD例子详解

特别说明:只适用于有spi接口的模块,推荐使用Air202和Air800
1.硬件连线:选择标准SPI协议,对应的LCD与模块之间连线为:

Air模块 LCD

GND------------------- 地(GND)

SPI_CS-------------- 片选(CS)

SPI_CLK------------- 时钟(SCL)

SPI_DO---------------数据(SDA)

SPI_DI---------------- 数据/命令选择(DC)

VDDIO--------------- 电源(VCC)

UART1_CTS-------- 复位(RES)

注意:Air202早期的开发板,UART1的CTS和RTS的丝印反了,如果连接UART1_CTS屏幕不显示,则将RST连接到UART1_RTS

注意:要使用带UI的lod

2.将ui demo添加到IDE中,在lcd.lua中选择对应的lcd芯片,将其他不用的注释掉。

--[[
模块名称:lcd
模块功能:lcd适配接口
模块最后修改时间:2017.08.17
]]

--根据自己的lcd类型以及使用的spi引脚,打开下面的其中一个文件进行测试
--mono表示黑白屏,color表示彩屏
--standard_spi表示使用标准的SPI引脚,lcd_spi表示使用LCD专用的SPI引脚
require"mono_standard_spi_ssd1306"
--require"mono_standard_spi_st7567"
--require"color_standard_spi_st7735"
--require"mono_lcd_spi_ssd1306"
--require"mono_lcd_spi_st7567"
--require"color_lcd_spi_st7735"
--require"color_lcd_spi_gc9106"
module(...,package.seeall)

--LCD分辨率的宽度和高度(单位是像素)
WIDTH,HEIGHT,BPP = disp.getlcdinfo()
--1个ASCII字符宽度为8像素,高度为16像素;汉字宽度和高度都为16像素
CHAR_WIDTH = 8

--[[
函数名:getxpos
功能  :计算字符串居中显示的X坐标
参数  :
        str:string类型,要显示的字符串
返回值:X坐标
]]
function getxpos(str)
    return (WIDTH-string.len(str)*CHAR_WIDTH)/2
end

3.如果修改为自己想显示的内容,则可修改logo.lua文件。

--[[
模块名称:logo
模块功能:显示开机欢迎语和logo图片
模块最后修改时间:2017.08.08
]]

module(...,package.seeall)

require"uiwin"
require"prompt"
require"idle"

--清空LCD显示缓冲区
disp.clear()
if lcd.WIDTH==128 and lcd.HEIGHT==128 then
--显示logo图片
disp.putimage("/ldata/logo_"..(lcd.BPP==1 and "mono.bmp" or "color.png"),lcd.BPP==1 and 41 or 0,lcd.BPP==1 and 18 or 0)
else
--从坐标16,0位置开始显示"欢迎使用Luat"
disp.puttext("欢迎使用Luat",16,0)
--显示logo图片
disp.putimage("/ldata/logo_"..(lcd.BPP==1 and "mono.bmp" or "color.png"),lcd.BPP==1 and 41 or 1,lcd.BPP==1 and 18 or 33)
end
--刷新LCD显示缓冲区到LCD屏幕上
disp.update()

--5秒后,打开提示框窗口,提示"3秒后进入待机界面"
--提示框窗口关闭后,自动进入待机界面
sys.timer_start(prompt.open,5000,"3秒后","进入待机界面",nil,idle.open)

4.默认ui demo显示效果如下。


发表评论

电子邮件地址不会被公开。 必填项已用*标注