main.lua 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  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. --[[
  12. -- LCD接法示例, 以Air105开发板的HSPI为例
  13. LCD管脚 Air105管脚
  14. GND GND
  15. VCC 3.3V
  16. SCL (PC15/HSPI_SCK)
  17. SDA (PC13/HSPI_MOSI)
  18. RES (PC12/HSPI_MISO)
  19. DC (PE08) --开发板上的U3_RX
  20. CS (PC14/HSPI_CS)
  21. BL (PE09) --开发板上的U3_TX
  22. 提示:
  23. 1. 只使用SPI的时钟线(SCK)和数据输出线(MOSI), 其他均为GPIO脚
  24. 2. 数据输入(MISO)和片选(CS), 虽然是SPI, 但已复用为GPIO, 并非固定,是可以自由修改成其他脚
  25. ]]
  26. --添加硬狗防止程序卡死
  27. if wdt then
  28. wdt.init(15000)--初始化watchdog设置为15s
  29. sys.timerLoopStart(wdt.feed, 10000)--10s喂一次狗
  30. end
  31. -- v0006及以后版本可用pin方式, 请升级到最新固件 https://gitee.com/openLuat/LuatOS/releases
  32. spi_lcd = spi.deviceSetup(5,pin.PC14,0,0,8,96*1000*1000,spi.MSB,1,1)
  33. -- log.info("lcd.init",
  34. -- lcd.init("st7735s",{port = "device",pin_dc = pin.PE08 ,pin_rst = pin.PC12,pin_pwr = pin.PE09,direction = 2,w = 160,h = 80,xoffset = 1,yoffset = 26},spi_lcd))
  35. -- log.info("lcd.init",
  36. -- lcd.init("st7789",{port = "device",pin_dc = pin.PE08 ,pin_rst = pin.PC12,pin_pwr = pin.PE09,direction = 0,w = 240,h = 320,xoffset = 0,yoffset = 0},spi_lcd))
  37. -- log.info("lcd.init",
  38. -- lcd.init("st7735",{port = "device",pin_dc = pin.PE08 ,pin_rst = pin.PC12,pin_pwr = pin.PE09,direction = 0,w = 128,h = 160,xoffset = 2,yoffset = 1},spi_lcd))
  39. log.info("lcd.init",
  40. lcd.init("gc9306x",{port = "device",pin_dc = pin.PE08 ,pin_rst = pin.PC12,pin_pwr = pin.PE09,direction = 0,w = 240,h = 320,xoffset = 0,yoffset = 0},spi_lcd))
  41. --下面为custom方式示例,自己传入lcd指令来实现驱动,示例以st7735s做展示
  42. -- log.info("lcd.init",
  43. -- lcd.init("custom",{
  44. -- port = "device",
  45. -- pin_dc = pin.PE08,
  46. -- pin_pwr = pin.PE09,
  47. -- pin_rst = pin.PC12,
  48. -- direction = 0,
  49. -- w = 128,
  50. -- h = 160,
  51. -- xoffset = 2,
  52. -- yoffset = 1,
  53. -- sleepcmd = 0x10,
  54. -- wakecmd = 0x11,
  55. -- initcmd = {--0001 delay 0002 cmd 0003 data
  56. -- 0x00020011,0x00010078,0x00020021, -- 反显
  57. -- 0x000200B1,0x00030002,0x00030035,
  58. -- 0x00030036,0x000200B2,0x00030002,
  59. -- 0x00030035,0x00030036,0x000200B3,
  60. -- 0x00030002,0x00030035,0x00030036,
  61. -- 0x00030002,0x00030035,0x00030036,
  62. -- 0x000200B4,0x00030007,0x000200C0,
  63. -- 0x000300A2,0x00030002,0x00030084,
  64. -- 0x000200C1,0x000300C5,0x000200C2,
  65. -- 0x0003000A,0x00030000,0x000200C3,
  66. -- 0x0003008A,0x0003002A,0x000200C4,
  67. -- 0x0003008A,0x000300EE,0x000200C5,
  68. -- 0x0003000E,0x00020036,0x000300C0,
  69. -- 0x000200E0,0x00030012,0x0003001C,
  70. -- 0x00030010,0x00030018,0x00030033,
  71. -- 0x0003002C,0x00030025,0x00030028,
  72. -- 0x00030028,0x00030027,0x0003002F,
  73. -- 0x0003003C,0x00030000,0x00030003,
  74. -- 0x00030003,0x00030010,0x000200E1,
  75. -- 0x00030012,0x0003001C,0x00030010,
  76. -- 0x00030018,0x0003002D,0x00030028,
  77. -- 0x00030023,0x00030028,0x00030028,
  78. -- 0x00030026,0x0003002F,0x0003003B,
  79. -- 0x00030000,0x00030003,0x00030003,
  80. -- 0x00030010,0x0002003A,0x00030005,
  81. -- 0x00020029,
  82. -- },
  83. -- },
  84. -- spi_lcd))
  85. --此示例为st7789
  86. -- log.info("lcd.init",
  87. -- lcd.init("custom",{
  88. -- port = "device",
  89. -- pin_dc = pin.PE08,
  90. -- pin_pwr = pin.PE09,
  91. -- pin_rst = pin.PC12,
  92. -- direction = 0,
  93. -- w = 240,
  94. -- h = 320,
  95. -- xoffset = 0,
  96. -- yoffset = 0,
  97. -- sleepcmd = 0x10,
  98. -- wakecmd = 0x11,
  99. -- initcmd = {--0001 delay 0002 cmd 0003 data
  100. -- 0x00020036, 0x00030000, 0x0002003A, 0x00030005, 0x000200B2,
  101. -- 0x0003000C, 0x0003000C, 0x00030000, 0x00030033, 0x00030033,
  102. -- 0x000200B7, 0x00030035, 0x000200BB, 0x00030032,
  103. -- 0x000200C2, 0x00030001, 0x000200C3, 0x00030015,
  104. -- 0x000200C4, 0x00030020, 0x000200C6, 0x0003000F, 0x000200D0,
  105. -- 0x000300A4, 0x000300A1, 0x000200E0, 0x000300D0, 0x00030008,
  106. -- 0x0003000E, 0x00030009, 0x00030009, 0x00030005, 0x00030031,
  107. -- 0x00030033, 0x00030048, 0x00030017, 0x00030014, 0x00030015,
  108. -- 0x00030031, 0x00030034, 0x000200E1, 0x000300D0, 0x00030008,
  109. -- 0x0003000E, 0x00030009, 0x00030009, 0x00030015, 0x00030031,
  110. -- 0x00030033, 0x00030048, 0x00030017, 0x00030014, 0x00030015,
  111. -- 0x00030031, 0x00030034,
  112. -- 0x00020021, -- 如果发现屏幕反色,注释掉此行
  113. -- },
  114. -- },
  115. -- spi_lcd))
  116. sys.taskInit(function()
  117. -- sys.wait(1000)
  118. -- API 文档 https://wiki.luatos.com/api/lcd.html
  119. log.info("lcd.drawLine", lcd.drawLine(20,20,150,20,0x001F))
  120. log.info("lcd.drawRectangle", lcd.drawRectangle(20,40,120,70,0xF800))
  121. log.info("lcd.drawCircle", lcd.drawCircle(50,50,20,0x0CE0))
  122. while 1 do
  123. sys.wait(500)
  124. end
  125. end)
  126. -- 用户代码已结束---------------------------------------------
  127. -- 结尾总是这一句
  128. sys.run()
  129. -- sys.run()之后后面不要加任何语句!!!!!