ILI9341.lua 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. --- 模块功能:ILI 9341驱动芯片LCD命令配置
  2. -- @author openLuat
  3. -- @module ui.color_lcd_spi_ili9341
  4. -- @license MIT
  5. -- @copyright openLuat
  6. -- @release 2018.03.27
  7. --[[
  8. 注意:disp库目前支持I2C接口和SPI接口的屏,此文件的配置,硬件上使用的是LCD专用的SPI引脚,不是标准的SPI引脚
  9. 硬件连线图如下:
  10. Air模块 LCD
  11. GND-------------地
  12. LCD_CS----------片选
  13. LCD_CLK---------时钟
  14. LCD_DATA--------数据
  15. LCD_DC----------数据/命令选择
  16. VDDIO-----------电源
  17. LCD_RST---------复位
  18. ]]
  19. module(..., package.seeall)
  20. --[[
  21. 函数名:init
  22. 功能 :初始化LCD参数
  23. 参数 :无
  24. 返回值:无
  25. ]]
  26. function init(data)
  27. if data == 0 then
  28. data = 0x0003006C -- 0x000300BC
  29. else
  30. data = 0x000300BC
  31. end
  32. local para = {
  33. width = 320, -- 分辨率宽度,128像素;用户根据屏的参数自行修改
  34. height = 240, -- 分辨率高度,160像素;用户根据屏的参数自行修改
  35. bpp = 16, -- 位深度,彩屏仅支持16位
  36. bus = disp.BUS_SPI4LINE, -- LCD专用SPI引脚接口,不可修改
  37. xoffset = 0, -- X轴偏移
  38. yoffset = 0, -- Y轴偏移
  39. freq = 13000000, -- spi时钟频率,支持110K到13M(即110000到13000000)之间的整数(包含110000和13000000)
  40. pinrst = pio.P0_6, -- reset,复位引脚
  41. pinrs = pio.P0_1, -- rs,命令/数据选择引脚
  42. -- 初始化命令
  43. -- 前两个字节表示类型:0001表示延时,0000或者0002表示命令,0003表示数据
  44. -- 延时类型:后两个字节表示延时时间(单位毫秒)
  45. -- 命令类型:后两个字节命令的值
  46. -- 数据类型:后两个字节数据的值
  47. initcmd = {
  48. 0x11, 0x00010078, 0xCA, 0x000300C3, 0x00030008, 0x00030050, 0xEF,
  49. 0x00030003, 0x00030080, 0x00030002, 0xCF, 0x00030000,
  50. -- 0x00030099,
  51. 0x000300c1, 0x00030030, 0xED, 0x00030064, 0x00030003, 0x00030012,
  52. 0x00030081, 0xCB, 0x00030039, 0x0003002C, 0x00030000, 0x00030034,
  53. 0x00030002, 0x00010020, 0xEA, 0x00030000, 0x00030000, 0xE8,
  54. 0x00030085, 0x00030000, 0x00030078, 0xC0, 0x00030023, 0xC1,
  55. 0x00030012, 0xC2, 0x00030011, 0xC5, 0x00030040, 0x00030030, 0xC7,
  56. 0x000300A9, 0x3A, 0x00030055, 0x36, -- 显示方向
  57. data, -- 0x000300BC 摄像头
  58. 0xB1, 0x00030000, 0x00030018, 0xB6, --
  59. 0x0003000A, 0x000300A2, 0xF2, 0x00030000, 0xF7, 0x00030020, 0x26,
  60. 0x00030001, 0xE0, 0x0003001F, 0x00030024, 0x00030023, 0x0003000B,
  61. 0x0003000F, 0x00030008, 0x00030050, 0x000300D8, 0x0003003B,
  62. 0x00030008, 0x0003000A, 0x00030000, 0x00030000, 0x00030000,
  63. 0x00030000, 0xE1, 0x00030000, 0x0003001B, 0x0003001C, 0x00030004,
  64. 0x00030010, 0x00030007, 0x0003002F, 0x00030027, 0x00030044,
  65. 0x00030007, 0x00030015, 0x0003000F, 0x0003003F, 0x0003003F,
  66. 0x0003001F, 0x29
  67. },
  68. -- 休眠命令
  69. sleepcmd = {0x10},
  70. -- 唤醒命令
  71. wakecmd = {0x11}
  72. }
  73. print("初始化LCD")
  74. disp.init(para)
  75. disp.clear()
  76. disp.update()
  77. print("初始化LCD完成")
  78. end
  79. -- 控制SPI引脚的电压域
  80. pmd.ldoset(15, pmd.LDO_VLCD)
  81. init(0)
  82. -- Screen.PowerOn_Screen()
  83. -- 打开背光
  84. -- 实际使用时,用户根据自己的lcd背光控制方式,添加背光控制代码
  85. -- GPIO14,用来控制LCD的背光