lcd_drv.lua 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. --[[
  2. @module lcd_drv
  3. @summary LCD显示驱动模块,基于lcd核心库
  4. @version 1.0
  5. @date 2026.02.05
  6. @author 江访
  7. @usage
  8. 本模块为LCD显示驱动功能模块,主要功能包括:
  9. 1、初始化 LCD屏幕;
  10. 2、配置LCD显示参数和显示缓冲区;
  11. 3、初始化AirUI;
  12. 4、支持多种屏幕方向和分辨率设置;
  13. 对外接口:
  14. 1、lcd_drv.init():初始化LCD显示驱动
  15. ]]
  16. local lcd_drv = {}
  17. --[[
  18. 初始化LCD显示驱动;
  19. @api lcd_drv.init()
  20. @summary 配置并初始化LCD屏幕
  21. @return boolean 初始化成功返回true,失败返回false
  22. @usage
  23. -- 初始化LCD显示
  24. local result = lcd_drv.init()
  25. if result then
  26. log.info("LCD初始化成功")
  27. else
  28. log.error("LCD初始化失败")
  29. end
  30. ]]
  31. function lcd_drv.init()
  32. -- 开启屏幕供电
  33. -- gpio.setup(141, 1)
  34. local result = lcd.init("st7796",
  35. {
  36. pin_pwr = 2, -- 背光控制引脚GPIO端口号
  37. port = lcd.HWID_0, -- 驱动端口
  38. pin_rst = 36, -- lcd复位引脚
  39. -- direction = 0, -- lcd屏幕方向 0:0° 1:90° 2:180° 3:270°,屏幕方向和分辨率保存一致
  40. -- w = 320, -- lcd 水平分辨率
  41. -- h = 480, -- lcd 竖直分辨率
  42. direction = 1, -- lcd屏幕方向 0:0° 1:90° 2:180° 3:270°,屏幕方向和分辨率保存一致
  43. w = 480, -- lcd 水平分辨率
  44. h = 320, -- lcd 竖直分辨率
  45. xoffset = 0, -- x偏移(不同屏幕ic 不同屏幕方向会有差异)
  46. yoffset = 0, -- y偏移(不同屏幕ic 不同屏幕方向会有差异)
  47. })
  48. log.info("lcd.init", result)
  49. if result then
  50. -- 开启缓冲区, 刷屏速度会加快, 但也消耗2倍屏幕分辨率的内存
  51. -- lcd.setupBuff(nil, true)
  52. -- lcd.autoFlush(false)
  53. -- 初始化AirUI
  54. local width, height = lcd.getSize()
  55. local result = airui.init(width, height)
  56. if not result then
  57. log.error("airui", "init failed")
  58. return result
  59. end
  60. -- 加载字体
  61. airui.font_load({
  62. type = "hzfont", -- 字体类型,hzfont
  63. path = nil, -- 字体路径,Air8000固件内置,无需填写
  64. size = 14, -- 默认字体大写
  65. cache_size = 512, --
  66. antialias = 4, -- 字体抗锯齿等级,1-4级,级别越高抗锯齿效果越好,加载时间越长
  67. })
  68. -- 开启背光引脚供电
  69. -- gpio.setup(1, 1)
  70. return result
  71. end
  72. return result
  73. end
  74. return lcd_drv