main.lua 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. PROJECT = "lcddemo"
  2. VERSION = "1.0.0"
  3. log.info("main", PROJECT, VERSION)
  4. -- sys库是标配
  5. sys = require("sys")
  6. -- 添加硬狗防止程序卡死
  7. if wdt then
  8. wdt.init(9000) -- 初始化watchdog设置为9s
  9. sys.timerLoopStart(wdt.feed, 3000) -- 3s喂一次狗
  10. end
  11. pm.ioVol(pm.IOVOL_ALL_GPIO, 3000)--所有IO电平开到3V,电平匹配
  12. -- 注意:V1.2的开发板需要打开GPIO28,V1.3的开发板需要打开GPIO29
  13. -- gpio.setup(28, 1) -- GPIO28打开给lcd电源供电
  14. gpio.setup(29, 1) -- GPIO29打开给lcd电源供电
  15. local rtos_bsp = rtos.bsp()
  16. -- local chip_type = hmeta.chip()
  17. -- 根据不同的BSP返回不同的值
  18. -- 根据不同的BSP返回不同的值
  19. -- spi_id,pin_reset,pin_dc,pin_cs,bl
  20. local function lcd_pin()
  21. local rtos_bsp = rtos.bsp()
  22. if string.find(rtos_bsp, "780EPM") then
  23. return lcd.HWID_0, 36, 0xff, 0xff, 25 -- 注意:EC718P有硬件lcd驱动接口, 无需使用spi,当然spi驱动也支持
  24. else
  25. log.info("main", "没找到合适的cat.1芯片", rtos_bsp)
  26. return
  27. end
  28. end
  29. local spi_id, pin_reset, pin_dc, pin_cs, bl = lcd_pin()
  30. if spi_id ~= lcd.HWID_0 then
  31. spi_lcd = spi.deviceSetup(spi_id, pin_cs, 0, 0, 8, 20 * 1000 * 1000, spi.MSB, 1, 0)
  32. port = "device"
  33. else
  34. port = spi_id
  35. end
  36. lcd.init("st7796", {
  37. port = port,
  38. pin_dc = pin_dc,
  39. pin_pwr = bl,
  40. pin_rst = pin_reset,
  41. direction = 0,
  42. -- direction0 = 0x00,
  43. w = 320,
  44. h = 480,
  45. xoffset = 0,
  46. yoffset = 0,
  47. sleepcmd = 0x10,
  48. wakecmd = 0x11,
  49. })
  50. -- 不在内置驱动的, 看demo/lcd_custom
  51. sys.taskInit(function()
  52. -- 开启缓冲区, 刷屏速度回加快, 但也消耗2倍屏幕分辨率的内存
  53. -- lcd.setupBuff() -- 使用lua内存
  54. lcd.setupBuff(nil, true) -- 使用sys内存, 只需要选一种
  55. lcd.autoFlush(false)
  56. while 1 do
  57. lcd.clear()
  58. log.info("合宙 780EPM LCD演示")
  59. if lcd.showImage then
  60. -- 注意, jpg需要是常规格式, 不能是渐进式JPG
  61. -- 如果无法解码, 可以用画图工具另存为,新文件就能解码了
  62. lcd.showImage(0, 0, "/luadb/picture.jpg")
  63. sys.wait(100)
  64. end
  65. -- log.info("lcd.drawLine", lcd.drawLine(100, 240, 240, 240, 0x001F)) -- 画线
  66. -- log.info("lcd.drawRectangle", lcd.drawRectangle(100, 240, 240, 70, 0xF800)) -- 画框
  67. -- log.info("lcd.drawCircle", lcd.drawCircle(150, 240, 100, 0x0CE0)) -- 画圆
  68. -- lcd.setFont(lcd.font_opposansm32)
  69. -- lcd.drawStr(60,240,"hello hezhou") --显示字符
  70. lcd.flush()
  71. sys.wait(1000)
  72. end
  73. end)
  74. -- 用户代码已结束---------------------------------------------
  75. -- 结尾总是这一句
  76. sys.run()
  77. -- sys.run()之后后面不要加任何语句!!!!!