main.lua 4.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. --- 模块功能:lvgldemo
  2. -- @module lvgl
  3. -- @author Dozingfiretruck
  4. -- @release 2021.01.25
  5. -- LuaTools需要PROJECT和VERSION这两个信息
  6. PROJECT = "lvgldemo"
  7. VERSION = "1.0.0"
  8. log.info("main", PROJECT, VERSION)
  9. -- sys库是标配
  10. _G.sys = require("sys")
  11. --[[
  12. -- LCD接法示例, 以Air105开发板的HSPI为例
  13. LCD管脚 Air105管脚
  14. GND GND
  15. VCC 3.3V
  16. SCL (PC15/SPI0_SCK)
  17. SDA (PC13/SPI0_MOSI)
  18. RES (PC12)
  19. DC (PE8)
  20. CS (PC14)
  21. BL (PE9)
  22. 提示:
  23. 1. 只使用SPI的时钟线(SCK)和数据输出线(MOSI), 其他均为GPIO脚
  24. 2. 数据输入(MISO)和片选(CS), 虽然是SPI, 但已复用为GPIO, 并非固定,是可以自由修改成其他脚
  25. ]]
  26. --添加硬狗防止程序卡死
  27. wdt.init(15000)--初始化watchdog设置为15s
  28. sys.timerLoopStart(wdt.feed, 10000)--10s喂一次狗
  29. log.info("hello luatos")
  30. spi_lcd = spi.deviceSetup(5,pin.PC14,0,0,8,96*1000*1000,spi.MSB,1,1)
  31. -- log.info("lcd.init",
  32. -- lcd.init("gc9a01",{port = "device",pin_dc = pin.PE8,pin_rst = pin.PC12,pin_pwr = pin.PE9,direction = 0,w = 240,h = 320,xoffset = 0,yoffset = 0},spi_lcd))
  33. -- log.info("lcd.init",
  34. -- lcd.init("st7789",{port = "device",pin_dc = pin.PE8, pin_rst = pin.PC12,pin_pwr = pin.PE9,direction = 0,w = 240,h = 240,xoffset = 0,yoffset = 0},spi_lcd))
  35. -- log.info("lcd.init",
  36. -- lcd.init("st7789",{port = "device",pin_dc = pin.PE8, pin_rst = pin.PC12,pin_pwr = pin.PE9,direction = 3,w = 240,h = 240,xoffset = 80,yoffset = 0},spi_lcd))
  37. -- log.info("lcd.init",
  38. -- lcd.init("st7789",{port = "device",pin_dc = pin.PE8, pin_rst = pin.PC12,pin_pwr = pin.PE9,direction = 3,w = 320,h = 240,xoffset = 0,yoffset = 0},spi_lcd))
  39. -- log.info("lcd.init",
  40. -- lcd.init("st7789",{port = "device",pin_dc = pin.PE8, pin_rst = pin.PC12,pin_pwr = pin.PE9,direction = 0,w = 240,h = 320,xoffset = 0,yoffset = 0},spi_lcd))
  41. -- log.info("lcd.init",
  42. -- lcd.init("st7735",{port = "device",pin_dc = pin.PE8, pin_rst = pin.PC12,pin_pwr = pin.PE9,direction = 0,w = 128,h = 160,xoffset = 2,yoffset = 1},spi_lcd))
  43. --[[ 此为合宙售卖的0.96寸TFT LCD LCD 分辨率:160X80 屏幕ic:st7735s 购买地址:https://item.taobao.com/item.htm?id=661054472686]]
  44. --lcd.init("st7735v",{port = "device",pin_dc = pin.PE08, pin_pwr = pin.PE09, pin_rst = pin.PC12,direction = 1,w = 160,h = 80,xoffset = 0,yoffset = 24},spi_lcd)
  45. --如果显示颜色相反,请解开下面一行的注释,关闭反色
  46. --lcd.invoff()
  47. --如果显示依旧不正常,可以尝试老版本的板子的驱动
  48. --lcd.init("st7735s",{port = "device",pin_dc = pin.PE08, pin_pwr = pin.PE09, pin_rst = pin.PC12,direction = 2,w = 160,h = 80,xoffset = 0,yoffset = 0},spi_lcd)
  49. -- log.info("lcd.init",
  50. -- lcd.init("st7735s",{port = "device",pin_dc = pin.PE8,pin_rst = pin.PC12,pin_pwr = pin.PE9,direction = 2,w = 160,h = 80,xoffset = 1,yoffset = 26},spi_lcd))
  51. log.info("lcd.init",
  52. lcd.init("gc9306x",{port = "device",pin_dc = pin.PE8,pin_rst = pin.PC12,pin_pwr = pin.PE9,direction = 0,w = 240,h = 320,xoffset = 0,yoffset = 0},spi_lcd))
  53. -- log.info("lcd.init",
  54. -- lcd.init("ili9341",{port = "device",pin_dc = pin.PE8, pin_rst = pin.PC12,pin_pwr = pin.PE9,direction = 0,w = 240,h = 320,xoffset = 0,yoffset = 0},spi_lcd))
  55. log.info("lvgl", lvgl.init())
  56. local scr = lvgl.obj_create(nil, nil)
  57. local btn = lvgl.btn_create(scr)
  58. local font = lvgl.font_get("opposans_m_16") --根据你自己的固件编译了哪个字体就用哪个字体
  59. lvgl.obj_align(btn, lvgl.scr_act(), lvgl.ALIGN_CENTER, 0, 0)
  60. local label = lvgl.label_create(btn)
  61. --有中文字体的才能显示中文
  62. --lvgl.label_set_text(label, "LuatOS!")
  63. lvgl.label_set_text(label, "你好!")
  64. lvgl.scr_load(scr)
  65. --以下是加载字体方法,二选一
  66. --方法一
  67. lvgl.obj_set_style_local_text_font(lvgl.scr_act(), lvgl.OBJ_PART_MAIN, lvgl.STATE_DEFAULT, font)
  68. --方法二
  69. --local style = lvgl.style_create()
  70. --lvgl.style_set_text_font(style, lvgl.STATE_DEFAULT, font)
  71. --lvgl.obj_add_style(lvgl.scr_act(),lvgl.OBJ_PART_MAIN, style)
  72. -- 用户代码已结束---------------------------------------------
  73. -- 结尾总是这一句
  74. sys.run()
  75. -- sys.run()之后后面不要加任何语句!!!!!