main.lua 4.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. --- 模块功能:lcddemo
  2. -- @module lcd
  3. -- @author Dozingfiretruck
  4. -- @release 2021.01.25
  5. -- LuaTools需要PROJECT和VERSION这两个信息
  6. PROJECT = "lcddemo"
  7. VERSION = "1.0.0"
  8. log.info("main", PROJECT, VERSION)
  9. -- sys库是标配
  10. _G.sys = require("sys")
  11. -- UI带屏的项目一般不需要低功耗了吧, 设置到最高性能
  12. if mcu then
  13. local rtos_bsp = rtos.bsp()
  14. rtos_bsp = rtos_bsp:lower()
  15. if rtos_bsp == "air101" or rtos_bsp == "air103" then
  16. mcu.setClk(240)
  17. end
  18. end
  19. --[[
  20. -- LCD接法示例, 以Air101开发板的SPI0为例
  21. LCD管脚 Air101管脚
  22. GND GND
  23. VCC 3.3V
  24. SCL (PB02/SPI0_SCK)
  25. SDA (PB05/SPI0_MOSI)
  26. RES (PB03/GPIO19)
  27. DC (PB01/GPIO17)
  28. CS (PB04/GPIO20)
  29. BL (PB00/GPIO16)
  30. 提示:
  31. 1. 只使用SPI的时钟线(SCK)和数据输出线(MOSI), 其他均为GPIO脚
  32. 2. 数据输入(MISO)和片选(CS), 虽然是SPI, 但已复用为GPIO, 并非固定,是可以自由修改成其他脚
  33. 3. 因为Air101/Air103只有一个SPI控制器,若使用多个SPI设备, 那么RES/CS请选用非SPI功能脚
  34. 4. BL可以不接的, 若使用Air10x屏幕扩展板,对准排针插上即可
  35. ]]
  36. --添加硬狗防止程序卡死
  37. if wdt then
  38. wdt.init(15000)--初始化watchdog设置为15s
  39. sys.timerLoopStart(wdt.feed, 10000)--10s喂一次狗
  40. end
  41. -- v0006及以后版本可用pin方式, 请升级到最新固件 https://gitee.com/openLuat/LuatOS/releases
  42. spi_lcd = spi.deviceSetup(0,pin.PB04,0,0,8,20*1000*1000,spi.MSB,1,1)
  43. --[[ 此为合宙售卖的2.4寸TFT LCD 分辨率:240X320 屏幕ic:GC9306 购买地址:https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-24045920841.39.6c2275a1Pa8F9o&id=655959696358]]
  44. -- lcd.init("gc9a01",{port = "device",pin_dc = pin.PB01, pin_pwr = pin.PB00, pin_rst = pin.PB03,direction = 0,w = 240,h = 320,xoffset = 0,yoffset = 0},spi_lcd)
  45. --[[ 此为合宙售卖的1.8寸TFT LCD LCD 分辨率:128X160 屏幕ic:st7735 购买地址:https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-24045920841.19.6c2275a1Pa8F9o&id=560176729178]]
  46. --lcd.init("st7735",{port = "device",pin_dc = pin.PB01, pin_pwr = pin.PB00, pin_rst = pin.PB03,direction = 0,w = 128,h = 160,xoffset = 0,yoffset = 0},spi_lcd)
  47. --[[ 此为合宙售卖的1.54寸TFT LCD LCD 分辨率:240X240 屏幕ic:st7789 购买地址:https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-24045920841.20.391445d5Ql4uJl&id=659456700222]]
  48. -- lcd.init("st7789",{port = "device",pin_dc = pin.PB01, pin_pwr = pin.PB00, pin_rst = pin.PB03,direction = 0,w = 240,h = 240,xoffset = 0,yoffset = 0},spi_lcd)
  49. --[[ 此为合宙售卖的0.96寸TFT LCD LCD 分辨率:160X80 屏幕ic:st7735s 购买地址:https://item.taobao.com/item.htm?id=661054472686]]
  50. --lcd.init("st7735v",{port = "device",pin_dc = pin.PB01, pin_pwr = pin.PB00, pin_rst = pin.PB03,direction = 1,w = 160,h = 80,xoffset = 0,yoffset = 24},spi_lcd)
  51. --如果显示颜色相反,请解开下面一行的注释,关闭反色
  52. --lcd.invoff()
  53. --如果显示依旧不正常,可以尝试老版本的板子的驱动
  54. --lcd.init("st7735s",{port = "device",pin_dc = pin.PB01, pin_pwr = pin.PB00, pin_rst = pin.PB03,direction = 2,w = 160,h = 80,xoffset = 0,yoffset = 0},spi_lcd)
  55. --[[ 此为合宙售卖的2.4寸TFT LCD 分辨率:240X320 屏幕ic:GC9306 购买地址:https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-24045920841.39.6c2275a1Pa8F9o&id=655959696358]]
  56. lcd.init("gc9306",{port = "device",pin_dc = pin.PB01 , pin_pwr = pin.PB00,pin_rst = pin.PB03,direction = 0,w = 240,h = 320,xoffset = 0,yoffset = 0},spi_lcd)
  57. -- 不在上述内置驱动的, 看demo/lcd_custom
  58. sys.taskInit(function()
  59. -- sys.wait(1000)
  60. -- API 文档 https://wiki.luatos.com/api/lcd.html
  61. if lcd.showImage then
  62. lcd.showImage(40,0,"/luadb/logo.jpg")
  63. sys.wait(100)
  64. else
  65. log.info("lcd.drawLine", lcd.drawLine(20,20,150,20,0x001F))
  66. log.info("lcd.drawRectangle", lcd.drawRectangle(20,40,120,70,0xF800))
  67. log.info("lcd.drawCircle", lcd.drawCircle(50,50,20,0x0CE0))
  68. end
  69. end)
  70. -- 用户代码已结束---------------------------------------------
  71. -- 结尾总是这一句
  72. sys.run()
  73. -- sys.run()之后后面不要加任何语句!!!!!