• 简介
    最近项目中使用的一个LCD断码屏显示驱动框架。

  • 调用流程图
#mermaid-svg-ADdG5SIksHe7pfHt {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-ADdG5SIksHe7pfHt .error-icon{fill:#552222;}#mermaid-svg-ADdG5SIksHe7pfHt .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ADdG5SIksHe7pfHt .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-ADdG5SIksHe7pfHt .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ADdG5SIksHe7pfHt .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ADdG5SIksHe7pfHt .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ADdG5SIksHe7pfHt .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ADdG5SIksHe7pfHt .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ADdG5SIksHe7pfHt .marker.cross{stroke:#333333;}#mermaid-svg-ADdG5SIksHe7pfHt svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ADdG5SIksHe7pfHt .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-ADdG5SIksHe7pfHt .cluster-label text{fill:#333;}#mermaid-svg-ADdG5SIksHe7pfHt .cluster-label span{color:#333;}#mermaid-svg-ADdG5SIksHe7pfHt .label text,#mermaid-svg-ADdG5SIksHe7pfHt span{fill:#333;color:#333;}#mermaid-svg-ADdG5SIksHe7pfHt .node rect,#mermaid-svg-ADdG5SIksHe7pfHt .node circle,#mermaid-svg-ADdG5SIksHe7pfHt .node ellipse,#mermaid-svg-ADdG5SIksHe7pfHt .node polygon,#mermaid-svg-ADdG5SIksHe7pfHt .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ADdG5SIksHe7pfHt .node .label{text-align:center;}#mermaid-svg-ADdG5SIksHe7pfHt .node.clickable{cursor:pointer;}#mermaid-svg-ADdG5SIksHe7pfHt .arrowheadPath{fill:#333333;}#mermaid-svg-ADdG5SIksHe7pfHt .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ADdG5SIksHe7pfHt .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ADdG5SIksHe7pfHt .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-ADdG5SIksHe7pfHt .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-ADdG5SIksHe7pfHt .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ADdG5SIksHe7pfHt .cluster text{fill:#333;}#mermaid-svg-ADdG5SIksHe7pfHt .cluster span{color:#333;}#mermaid-svg-ADdG5SIksHe7pfHt div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-ADdG5SIksHe7pfHt :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

匹配对象:ELEM_A
匹配对象元素:ELEM_C
匹配对象元素
匹配对象元素:ELEM_N
调用seg_lcd_display_event_change_send目标显示对象修改API
调用该对象seg_lcd_A_elem_display_set处理函数,修改对象A相关显示元素值
显示缓存值LCD_DRAM_BUFF
调用显示驱动函数lcd_display_func_cb
调用该对象seg_lcd_B_elem_display_set处理函数,修改对象B相关显示元素值
调用该对象seg_lcd_..._elem_display_set处理函数,修改对象...相关显示元素值
调用该对象seg_lcd_N_elem_display_set处理函数,修改对象N相关显示元素值
  • 1.设置全局显示缓存,LCD_DRAM_BUFF[SEG_NUM_MAX];

  • 2.实现LCD独立显示事件内容:seg_lcd_xx_elem_display_set(void *elem_value)

    • 例如对断码屏幕上的蓝牙图标的显示控制,
    seg_lcd_ble_elem_display_set(void *elem_value)
    {/*假如该图标在SEG1段的最高位,则有如下*/(*(unsigned char *)elem_value)?(LCD_DRAM_BUFF[1]|=(1<<7)):(LCD_DRAM_BUFF[1]&=~(1<<7));
    }
    
  • 3.集合显示事件,并在需要的地方调用它,void seg_lcd_display_event_change_send(event_em event_type,void *elem_value)

    • 实现如下
    enum
    {ELEM_BLE_SYMB,ELEM_BUZ_SYMB,
    }event_em;/*独立的显示内容元素*/void seg_lcd_display_event_change_send(event_em event_type,void *elem_value)
    {switch(event_type){case ELEM_BLE_SYMB:seg_lcd_ble_elem_display_set(elem_value);break;case ELEM_BUZ_SYMB:seg_lcd_buz_elem_display_set(elem_value);break;case ...:break;default :break;}
    }
    
    • 事件调用案例如:
    void ble_thread_entry(void *parameter)
    {unsigned char ble_connect_state=0;seg_lcd_display_event_change_send(ELEM_BLE_SYMB,&ble_connect_state);
    }
    
  • 4.设置全局显示回调函数指针,void (*lcd_display_func_cb)(void)

  • 5.设置全局显示回调函数回,void seg_lcd_display_cb_set(void (*display_func_cb)(void)),
    主要用于显示页面控制,不同的显示内容实现一个页面显示函数,然后在不同的场景中设置。

    • 实现如下
    void seg_lcd_display_cb_set(void (*display_func_cb)(void))
    {lcd_display_func_cb = display_func_cb;
    }
    • 调用案例,假如屏幕上有电压,电流,重量的分界面功能,在不同的条件下进入所需界面,可如是下设置:
    /*电压显示函数*/
    void volt_display_func(void)
    {unsigned char volt_unit=0;//缺省电流单位:mAconst unsigned int volt_value = dev_volt_get();seg_lcd_vlot_elem_display_set(VOLT_VAL_ELEM,&volt_value);if(1000<volt_value){  volt_unit=0x01;//显示电流单位:A(安培)}seg_lcd_vlot_elem_display_set(VOLT_UNIT_ELEM,&volt_unit);   \\...
    }
    /*电流显示函数*/
    void amp_display_func(void)
    {\\...
    }
    /*重量显示函数*/
    void weight_display_func(void)
    {\\...
    }
    /*按键进行功能调用*/
    void key_press_event(unsigned char key_id)
    {switch(key_id){case  KEY_VLOT:seg_lcd_display_cb_set(volt_display_func);break;case  KEY_AMP:seg_lcd_display_cb_set(amp_display_func);break;case  KEY_WEIGHT:seg_lcd_display_cb_set(weight_display_func);break;default:break;                       }
    }
    
  • 6.断码显示驱动

  void seg_lcd_display(void){lcd_display_func_cb();}

LCD断码屏显示应用框架相关推荐

  1. PIC单片机驱动LCD断码屏代码生成工具

    PIC单片机驱动LCD断码屏代码生成工具 PIC 16系列单片机部分型号都带有LCD(断码)驱动模块, 在编写这部分代码的过程中发现对驱动管脚赋值逻辑有很大的重复部分. 所以写了一个宏函数,自动生成驱 ...

  2. LCD段/断码屏的针脚如何设计?

    LCD断码屏在不通电的情况下是看不见内容的,这样就会导致双边出针脚的液晶屏在量产的时候焊接的工人把液晶给焊接反了,从而导致生产的不良品,在这里小编给大家个建议就是尽量在LCD断码屏针脚的设计上,两边的 ...

  3. STM8驱动LCD段码屏

    在工作中遇到用stm8驱动LCD段码屏,发现很有意思,特在此记录下来.整个说明过程由液晶屏显示原理,驱动断码LCD液晶屏的方式,stm8驱动断码屏三块进行说明. 一.液晶屏显示原理 液晶是一种介于固态 ...

  4. 电动车断码屏为什么更适宜选用LCD显示屏

    近些年LCD显示屏屏的应用贯穿手机平板电脑.智能POS以及智能机器人等多项不同的产品中.它的触摸方式.亮度以及视角相较之前都有了新的升级, 如此一来LCD显示屏的传输性能便能获得良好提升,现在就电动车 ...

  5. 杰理-断码屏的显示其实也很酷炫

    断码屏其实主要还是用到COM口和SEG口 通常COM口是固定的几个口 加上你想要的驱动-就可以看到唯美画面-值得收藏

  6. HT1622 驱动断码屏

    目录 1.根据时序图了解通讯协议格式 2.写驱动函数 HT1622数据手册(嘉立创) 1.根据时序图了解通讯协议格式 根据HT1622数据手册中的时序图可知: 向HT1622传送指令时序图 向HT16 ...

  7. STM32 HAL CubeMX断码屏配置与使用

    STM32L476 LCD直接驱动断码屏使用注意事项 1,配置: 1.1对于偏压,电路上可以不用做处理,直接在软件里配置即可 1.2High Drive 选项如果不勾选,可能会造成,点亮SEG上的多条 ...

  8. 段码LCD段码屏的驱动原理

    LCD段码屏的驱动原理是:具有偶极矩的液晶棒状分子在外加电场的作用下其排列状态发生变化,使得通过液晶显示器件的光被调制,从而呈现明与暗或秀光与不透光的显示效果.液晶显示器件中的每个显示像素都单独被电场 ...

  9. HT1623驱动LCD段码屏程序

    HT1623驱动LCD段码屏--STM32F103 一.简介 二.使用步骤 1.管脚初始化配置 2.HT1623数据写入和初始化配置 3.操作段码屏例程 一.简介 有关芯片相关知识和使用原理好多博主已 ...

最新文章

  1. SVN 分支/合并/切换
  2. 各层作用_终于弄明白了 Singleton,Transient,Scoped 的作用域是如何实现的
  3. 用matlab实现假设性检验T检验(葡萄酒评价)
  4. solidworks迈迪设计宝_机械入门|那些看起来很牛X的机械结构,是如何设计的?...
  5. Ffmpeg 解复用器列表 demuxer_list
  6. 练习时长一年半,算法蒟蒻的成长记录
  7. 用Python求解拿鸡蛋问题
  8. 爱普生Epson Expression Home XP-200 驱动
  9. Google 屏蔽的关键字
  10. flutter 数据存储 SharedPreferences
  11. 多线程Synchronized锁的使用与线程之间的通讯
  12. go操作redis之go-redis,python操作redis之redis
  13. https开头的网址是什么意思_网站https含义是什么?工作原理又是什么
  14. Total.Recorder.Editor.Pro.v13.0.1.Regged-DJiNN
  15. 信息学奥赛一本通 1333:【例2-2】Blah数集 | OpenJudge NOI 3.4 2729:Blah数集
  16. SQL Server 跟踪标志 3226
  17. MOS管之王”全球10强VS中国10强
  18. Android databinding之数据单向与双向绑定详解与使用(三)
  19. 草莓病虫害数据集免费下载
  20. 开水果店常见的贮藏保鲜方法,开水果店有哪些水果保鲜的办法

热门文章

  1. 计算机技术 高中教案,高中信息技术 计算机软件教案
  2. SWIFT PLM 介绍|基于微服务架构的Swift PLM云平台
  3. 北大地理学女博士刘闯:我的挑战杯获奖证书编号是001号
  4. IOS-10.0~10.2越狱后使用ssh链接
  5. 使用软路由实现智能Qos(海蜘蛛)
  6. 美国考试能用计算机吗,2020年美国cpa考试允许考生自带计算器吗?
  7. GitHub 从零开始的保姆级使用教程
  8. Android多级列表的实现
  9. 案例(一) 利用RFM模型做用户价值分析
  10. 相关搜索------搜索引擎研究之三