ui_main.lua 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. ---------------------------------------------功能说明---------------------------------------------
  2. --[[
  3. 本文件为用户界面主模块
  4. 核心功能:
  5. 1. 协调各UI子文件
  6. 2. 初始化显示
  7. 3. 管理主循环
  8. 执行流程:
  9. 1. 初始化矢量字库
  10. 2. 初始化显示屏
  11. 3. 进入主循环显示
  12. ]]
  13. ---------------------------------------------相关代码---------------------------------------------
  14. local ui_main = {}
  15. --加载AirFONTS_1000驱动文件
  16. local air_vetor_fonts = require "AirFONTS_1000"
  17. --加载AirLCD_1001驱动文件
  18. local airlcd = require "airlcd" -- LCD驱动
  19. local LCD_MODEL = "co5300" -- LCD型号
  20. local spi_id = 1 -- 接到模组的spi端口号,sip0就写0,spi1就写1
  21. local spi_cs = 12 -- 字库所借spi片选引脚所对应的GPIO端口号
  22. -- lcd显示矢量字体的task
  23. -- AirFONTS_1000矢量字库,使用gtfont灰度显示UTF8字符串,支持16-192号大小字体
  24. -- 自动刷新显示16到192字号的字体显示效果(非灰度显示以及灰度显示)
  25. sys.taskInit(function()
  26. -- 初始化外置AirFONTS_1000矢量字库,使用gtfont灰度显示UTF8字符串,支持16-192号大小字体
  27. air_vetor_fonts.init(spi_id,spi_cs) --设置初始化AirFONTS_1000矢量字体
  28. lcd.setFont(lcd.drawGtfontUtf8) --设置使用高通矢量字体
  29. -- 按所配置的型号参数初始化显示屏
  30. -- 注意:在airlcd内是按核心板和AirLCD_1001参数设置的,实际使用过程中按实际参数在airlcd和page_data_table内修改配置。
  31. airlcd.lcd_init(LCD_MODEL)
  32. -- 开启显示缓冲区, 刷屏速度会加快, 但也消耗2倍屏幕分辨率的内存(2*宽*高 字节)
  33. -- 第一个参数无意义,直接填nil即可
  34. -- 第二个参数true表示使用sys中的内存
  35. lcd.setupBuff(nil, true)
  36. --禁止自动刷新
  37. --需要刷新时需要主动调用lcd.flush()接口,才能将缓冲区中的数据显示到lcd上
  38. lcd.autoFlush(false)
  39. while true do
  40. -- 显示AirFONTS_1000的总体特性
  41. -- 目前还有两个问题:
  42. -- 1、字母显示宽度不正常
  43. -- 2、颜色设置接口还没生效
  44. for i=5,1,-1 do
  45. --清屏
  46. lcd.clear()
  47. --设置背景色为白色,文字的前景色为黑色
  48. lcd.setColor(0xFFFF, 0x0000)
  49. lcd.drawGtfontUtf8("AirFONTS_1000配件板",32,50,150)
  50. --设置背景色为白色,文字的前景色为红色
  51. lcd.setColor(0xFFFF, 0xF800)
  52. lcd.drawGtfontUtf8("支持16到192号的黑体字体",32,50-8,191)
  53. --设置背景色为白色,文字的前景色为绿色
  54. lcd.setColor(0xFFFF, 0x07E0)
  55. lcd.drawGtfontUtf8("支持GBK中文和ASCII码字符集",32,50-20,232)
  56. --设置背景色为白色,文字的前景色为蓝色
  57. lcd.setColor(0xFFFF, 0x001F)
  58. lcd.drawGtfontUtf8("支持灰度显示,字体边缘更平滑",32,20,273)
  59. lcd.drawGtfontUtf8("倒计时:"..i,32,150,313)
  60. --刷屏显示
  61. lcd.flush()
  62. --等待1秒
  63. sys.wait(1000)
  64. end
  65. -- 16号到192号不支持灰度的显示效果演示
  66. --设置背景色为白色,文字的前景色为黑色
  67. lcd.setColor(0xFFFF, 0x0000)
  68. for i=16,64,1 do
  69. --清屏
  70. lcd.clear()
  71. lcd.drawGtfontUtf8(i.."号:合宙AirFONTS_1000",i,60,100)
  72. --刷屏显示
  73. lcd.flush()
  74. --等待20毫秒
  75. sys.wait(20)
  76. end
  77. --设置背景色为白色,文字的前景色为红色
  78. lcd.setColor(0xFFFF, 0xF800)
  79. for i=65,96,1 do
  80. --清屏
  81. lcd.clear()
  82. lcd.drawGtfontUtf8(i.."号",i,60,100)
  83. lcd.drawGtfontUtf8("AirFONTS_1000",i,60,100+i+5)
  84. --刷屏显示
  85. lcd.flush()
  86. --等待20毫秒
  87. sys.wait(20)
  88. end
  89. --设置背景色为白色,文字的前景色为绿色
  90. lcd.setColor(0xFFFF, 0x07E0)
  91. for i=97,128,1 do
  92. --清屏
  93. lcd.clear()
  94. lcd.drawGtfontUtf8(i.."号",i,60,20)
  95. lcd.drawGtfontUtf8("合宙",i,60,20+i+5)
  96. --刷屏显示
  97. lcd.flush()
  98. --等待20毫秒
  99. sys.wait(20)
  100. end
  101. --设置背景色为白色,文字的前景色为蓝色
  102. lcd.setColor(0xFFFF, 0x001F)
  103. for i=129,192,1 do
  104. --清屏
  105. lcd.clear()
  106. lcd.drawGtfontUtf8(i.."号",i,60,20)
  107. lcd.drawGtfontUtf8("合宙",i,60,20+i+5)
  108. --刷屏显示
  109. lcd.flush()
  110. --等待20毫秒
  111. sys.wait(20)
  112. end
  113. -- 16号到192号支持灰度的显示效果演示
  114. --设置背景色为白色,文字的前景色为黑色
  115. lcd.setColor(0xFFFF, 0x0000)
  116. for i=16,48,1 do
  117. --清屏
  118. lcd.clear()
  119. lcd.drawGtfontUtf8Gray(i.."号灰度:合宙AirFONTS_1000",i,4,60,100)
  120. --刷屏显示
  121. lcd.flush()
  122. --等待20毫秒
  123. sys.wait(20)
  124. end
  125. --设置背景色为白色,文字的前景色为红色
  126. lcd.setColor(0xFFFF, 0xF800)
  127. for i=49,80,1 do
  128. --清屏
  129. lcd.clear()
  130. lcd.drawGtfontUtf8Gray(i.."号灰度",i,4,60,100)
  131. lcd.drawGtfontUtf8Gray("合宙AirFONTS_1000",i,4,60,100+i+5)
  132. --刷屏显示
  133. lcd.flush()
  134. --等待20毫秒
  135. sys.wait(20)
  136. end
  137. --设置背景色为白色,文字的前景色为绿色
  138. lcd.setColor(0xFFFF, 0x07E0)
  139. for i=81,128,1 do
  140. --清屏
  141. lcd.clear()
  142. lcd.drawGtfontUtf8Gray(i.."号",i,4,60,20)
  143. lcd.drawGtfontUtf8Gray("合宙",i,4,60,20+i+5)
  144. --刷屏显示
  145. lcd.flush()
  146. --等待20毫秒
  147. sys.wait(20)
  148. end
  149. --设置背景色为白色,文字的前景色为蓝色
  150. lcd.setColor(0xFFFF, 0x001F)
  151. for i=129,192,1 do
  152. --清屏
  153. lcd.clear()
  154. lcd.drawGtfontUtf8(i.."号",i,60,20)
  155. lcd.drawGtfontUtf8("合宙",i,60,20+i+5)
  156. --刷屏显示
  157. lcd.flush()
  158. sys.wait(20)
  159. end
  160. end
  161. end)
  162. return ui_main