查看: 1185|回复: 13

【极光LPC845】基于LPC845的极光GUI板子显示演示

[复制链接]
  • TA的每日心情
    慵懒
    16 小时前
  • 签到天数: 1941 天

    [LV.Master]伴坛终老

    61

    主题

    1万

    帖子

    3

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    17301
    最后登录
    2024-4-26
    发表于 2023-5-31 17:14:26 | 显示全部楼层 |阅读模式
        极光GUI板子是上一次月亮板升级版,硬件PCB是由@xiaoshen-372360兄弟主刀画的板子。看这里:
    【极光】-一个基于LPC845的GUI板子

    https://www.nxpic.org.cn/module/forum/thread-630580-1-1.html
    (出处: 恩智浦技术社区)
        板子放了好久一直没空玩。这几天抽空把触摸,液晶屏和Flash的驱动都弄好了。下面给大家展示一下效果吧。
    20230531165947.jpg


        板上已完成:LCD驱动;lcd触摸驱动;spi flash;串口;LED灯和按键。调试时LCD的DC脚和背光控制脚使用的引脚正好是I2C0的脚,没有内部上拉,板上又没有外部上拉,没办法只好飞线加了上拉电阻才搞好。
    QQ截图20230531170634.jpg
    图上飞了2个电阻。

        spiflash使用上次月亮板的下载算法,可以将字体文件放入spiflash中实现各种字体显示。
    字体控制显示,直接加载字体点阵文件到固件中
    1. #define     lcd_color_t     uint16_t

    2. /* type define ------------------------------------------------------------*/
    3. typedef struct _lcd_font
    4. {
    5.     uint8_t     font_height;            //字库通用高度
    6.     char        * pfont_buff;           //字库buff
    7.     char        * pfont_filename;       //字库文件
    8.     uint8_t     (* get_font_w)(uint32_t ch);        //获取指定字符宽度
    9.     void        (* draw_char)(int16_t x,int16_t y,uint32_t ch);   //指定字符描点
    10. }lcd_font_t;

    11. typedef struct _lcd_font_display
    12. {
    13.     lcd_font_t      *pfont;         //字库索引

    14.     lcd_color_t     font_fore;      //字体前景颜色
    15.     lcd_color_t     font_back;      //字体背景颜色

    16.     int16_t         font_x;        //字符显示范围起点x
    17.     int16_t         font_y;        //字符显示范围起点y
    18.     uint16_t        font_w;        //字符显示范围宽度
    19.     uint16_t        font_h;        //字符显示范围高度

    20. }lcd_font_display_t;

    复制代码

    1. #include "lcd_font.h"
    2. #include "drv_w25qxx.h"

    3. #define INCBIN_OUTPUT_SECTION       "res.flash.* "
    4. #define INCBIN_OUTPUT_DATA_SECTION  ".rodata"
    5. #define INCBIN_OUTPUT_SIZE_SECTION  ".rodata"
    6. #include "incbin.h"


    7. //__attribute__((used))
    8. //__attribute__((aligned(4)))
    9. //__attribute__((section("res.flash.*")))
    10. INCBIN(ASC16x8, "../device/lcd_font/ASC16.bin");         //OK
    11. //INCBIN(ASC16x8, "..\\\\font\\\\ASC16.bin");   //OK
    12. INCBIN(HZK16x16, "../device/lcd_font/HZK16.bin");         //OK
    13. //INCBIN(ASC24x12, "../device/lcd_font/ASC24.bin");         //OK
    14. //INCBIN(HZK24x24, "../device/lcd_font/HZK24.bin");         //OK
    15. //INCBIN(ASC32x16, "../device/lcd_font/ASC32.bin");         //OK
    16. //INCBIN(HZK32x32, "../device/lcd_font/HZK32.bin");         //OK

    17. int GetFlashHZKCode(uint32_t addr,uint32_t ch,uint8_t * pBuffer,uint32_t lenght)
    18. {
    19.     uint32_t pos;
    20.     uint8_t H8bit = (ch >> 8) & 0x00ff; /* 取高8位数据 */
    21.     uint8_t L8bit = ch & 0x00FF;        /* 取低8位数据 */
    22.     if(ch < 0x7f)       //ASCII
    23.     {
    24.         pos = ch * lenght;
    25.     }else if((H8bit > 0xa0)&&(L8bit >0xa0))  //中文字符
    26.     {
    27.         pos = ((H8bit - 0x000000a1) * 94 + (L8bit - 0x000000a1)) * lenght;
    28.     }else return 1;
    29.     W25QXX_Read(addr + pos, pBuffer, lenght);
    30.    
    31.     return 0;
    32. }

    33. ///////////////////////////////////////////////////////////////////////
    34. uint8_t ucBuffer[8*64] = {0};   //512Byte,支持64*64点阵字体缓存

    35. static void lcd_disp_hz(int16_t x, int16_t y, uint32_t ch)
    36. {
    37.     uint32_t lenght;
    38.     uint8_t f_width,f_height;
    39.     uint8_t ucPage =  ch >> 8;      /* 取高8位数 */
    40.     uint8_t ucColum = ch & 0x00FF;  /* 取低8位数 */
    41.     lcd_font_t *pfont;
    42.    
    43.     pfont = lcd_get_font();
    44.     f_width = pfont->get_font_w(ch);
    45.     f_height = pfont->font_height;
    46.     lenght = ((f_width + 7)>>3) * f_height;
    47.     if(f_height > f_width)
    48.         GetFlashHZKCode((uint32_t)pfont->pfont_buff, ch, ucBuffer, lenght); //
    49.     else
    50.         GetFlashHZKCode((uint32_t)pfont->pfont_filename, ch, ucBuffer, lenght); //
    51.     Lcd_CharDot(x,y,f_width,f_height,
    52.                 ucBuffer,
    53.                 lcd_get_font_color_fore(),
    54.                 lcd_get_font_color_back()
    55.                );
    56. }

    57. uint8_t hz_get_font_w(uint32_t ch)    //获取指定字符宽度
    58. {
    59.     uint8_t ucPage =  ch >> 8;      /* 取高8位数 */
    60.     uint8_t ucColum = ch & 0x00FF;  /* 取低8位数 */
    61.     lcd_font_t *pfont;
    62.     pfont = lcd_get_font();

    63.     if(ch < 0x7f)           //ASCII
    64.     {
    65.         return (pfont->font_height >>1);
    66.     }else if((ucPage > 0xa0)&&(ucColum >0xa0))  //中文字符
    67.     {
    68.         return pfont->font_height;
    69.     }else
    70.     {
    71.         return 0;
    72.     }
    73. }

    74. const lcd_font_t Font_HZK16x16 =
    75. {
    76.     16,
    77.     (char *)((uint32_t)gASC16x8Data  - 0x30000000),
    78.     (char *)((uint32_t)gHZK16x16Data - 0x30000000),
    79.     hz_get_font_w,
    80.     lcd_disp_hz,
    81. };

    82. //const lcd_font_t Font_HZK24x24 =
    83. //{
    84. //    24,
    85. //    (char *)((uint32_t)gASC24x12Data - 0x30000000),
    86. //    (char *)((uint32_t)gHZK24x24Data - 0x30000000),
    87. //    hz_get_font_w,
    88. //    lcd_disp_hz,
    89. //};

    90. //const lcd_font_t Font_HZK32x32 =
    91. //{
    92. //    32,
    93. //    (char *)((uint32_t)gASC32x16Data - 0x30000000),
    94. //    (char *)((uint32_t)gHZK32x32Data - 0x30000000),
    95. //    hz_get_font_w,
    96. //    lcd_disp_hz,
    97. //};
    复制代码




    程序:
    lpc845_moon_v2.zip (6.21 MB, 下载次数: 2, 售价: 10 NXP金币)
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3300

    主题

    6547

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    32034
    最后登录
    2024-4-26
    发表于 2023-6-1 09:01:10 | 显示全部楼层
    这必须点赞
    签到签到
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    昨天 22:46
  • 签到天数: 1211 天

    [LV.10]以坛为家III

    22

    主题

    4765

    帖子

    0

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    8085

    活跃会员

    最后登录
    2024-4-26
    发表于 2023-6-1 09:43:43 | 显示全部楼层
    V2.0的版本可以安排申老板下单了
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3300

    主题

    6547

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    32034
    最后登录
    2024-4-26
    发表于 2023-6-1 10:03:02 | 显示全部楼层
    lospring 发表于 2023-6-1 09:43
    V2.0的版本可以安排申老板下单了

    建议还是黑色系
    签到签到
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-10 22:38
  • 签到天数: 1335 天

    [LV.10]以坛为家III

    88

    主题

    4292

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    9049
    最后登录
    2024-4-13
    发表于 2023-6-1 10:09:02 | 显示全部楼层
    楼主,这个屏和触摸是一体贴合的吗?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    16 小时前
  • 签到天数: 1941 天

    [LV.Master]伴坛终老

    61

    主题

    1万

    帖子

    3

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    17301
    最后登录
    2024-4-26
     楼主| 发表于 2023-6-1 10:28:47 | 显示全部楼层
    jobszheng5 发表于 2023-6-1 10:09
    楼主,这个屏和触摸是一体贴合的吗?

    是的
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    6 小时前
  • 签到天数: 323 天

    [LV.8]以坛为家I

    4

    主题

    606

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2495
    最后登录
    2024-4-27
    发表于 2023-6-3 08:16:39 | 显示全部楼层
    支持支持
    回复

    使用道具 举报

  • TA的每日心情
    开心
    昨天 10:32
  • 签到天数: 1279 天

    [LV.10]以坛为家III

    21

    主题

    1万

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    13245
    最后登录
    2024-4-26
    发表于 2023-6-3 12:48:01 | 显示全部楼层
    2.0版用电池,日天3D打印外壳,直接戴手腕上了
    跟着日天混 ,三天饱九顿!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    16 小时前
  • 签到天数: 1941 天

    [LV.Master]伴坛终老

    61

    主题

    1万

    帖子

    3

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    17301
    最后登录
    2024-4-26
     楼主| 发表于 2023-6-3 13:43:18 | 显示全部楼层
    sumoon_yao 发表于 2023-6-3 12:48
    2.0版用电池,日天3D打印外壳,直接戴手腕上了

    相当不错,哈哈哈
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    半小时前
  • 签到天数: 1480 天

    [LV.10]以坛为家III

    203

    主题

    2万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    92769
    最后登录
    2024-4-27
    发表于 2023-6-4 09:40:43 | 显示全部楼层
    你这飞电阻的手艺,哈哈
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-27 16:33 , Processed in 0.144164 second(s), 30 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表