查看: 1172|回复: 0

SAM4L-EK 段式LCD驱动

[复制链接]
  • TA的每日心情
    开心
    2016-3-22 09:25
  • 签到天数: 115 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2016-5-25 08:59:58 | 显示全部楼层 |阅读模式
    分享到:
    艾特梅尔SAM4系列,有些自带段式LCD驱动,而有些是不带的。
    它们各自的应用场合是不同的。
    对于某些需要显示工作状态、电量、通信方式等仪器仪表、消费电子来说,
    自带LCD驱动的片子则具有天然的优势。
    对于自带LCD驱动的芯片,由于片内自带硬件驱动,因此不需要额外的LCD驱动芯片,段式LCD直接
    与MCU的IO接口极大地简化了硬件电路设计;
    同时运用官方的驱动函数库,在软件方面也可以轻易调用库函数,快捷地驱动段式LCD显示。
    采用PuTTY软件,配置好串口,在程序烧录成功之后,打开相应串口,
    显示的具体信息有
    项目名;
    开发板类型;
    编译信息;
    一个简便的用户交互界面。

    直接通过电脑键盘,选择对应的选项,即可轻易演示一些段式LCD的显示
    全屏显示:
    电量、状态、通信接口、时间显示、数据显示等一目了然

    时间显示:

    动画显示:

    滚动显示:

    驱动程序初始化函数
    status_code_t c42364a_init(void)
    {
    struct lcdca_config lcdca_cfg;
    lcdca_clk_init();
    lcdca_cfg.port_mask = C42364A_PORT_MASK;
    lcdca_cfg.x_bias = CONF_C42364A_X_BIAS;
    lcdca_cfg.lp_wave = true;
    lcdca_cfg.duty_type = C42364A_LCD_DUTY;
    lcdca_cfg.lcd_pres = CONF_C42364A_PRES;
    lcdca_cfg.lcd_clkdiv = CONF_C42364A_CLKDIV;
    lcdca_cfg.fc0 = CONF_C42364A_FC0;
    lcdca_cfg.fc1 = CONF_C42364A_FC1;
    lcdca_cfg.fc2 = CONF_C42364A_FC2;
    lcdca_cfg.contrast = CONF_C42364A_CONTRAST;
    lcdca_set_config(&lcdca_cfg);
    lcdca_enable();
    lcdca_enable_timer(LCDCA_TIMER_FC0);
    lcdca_enable_timer(LCDCA_TIMER_FC1);
    lcdca_enable_timer(LCDCA_TIMER_FC2);
    return STATUS_OK;
    }
    全屏显示函数:
    void c42364a_show_all(void)
    {
    lcdca_blink_disable();
    lcdca_circular_shift_disable();
    lcdca_automated_char_stop();
    lcdca_set_display_memory();
    }
    清屏
    void c42364a_clear_all(void)
    {
    lcdca_blink_disable();
    lcdca_circular_shift_disable();
    lcdca_automated_char_stop();
    lcdca_clear_display_memory();
    }
    字符串显示:
    void c42364a_show_text(const uint8_t *data)
    {
    lcdca_write_packet(LCDCA_TDG_14SEG4COM, C42364A_FIRST_14SEG_4C, data,
    C42364A_WIDTH_14SEG_4C, LCDCA_CMCFG_DREV_LEFT);
    }
    字符串清屏:
    void c42364a_clear_text(void)
    {
    uint8_t clear_data[7] = {0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F};
    lcdca_write_packet(LCDCA_TDG_14SEG4COM, C42364A_FIRST_14SEG_4C,
    clear_data, C42364A_WIDTH_14SEG_4C, LCDCA_CMCFG_DREV_LEFT);
    }
    相关ICON显示
    void c42364a_show_icon(uint8_t icon_com, uint8_t icon_seg)
    {
    if (icon_com < 2) {
    lcdca_clear_blink_pixel(icon_com, icon_seg);
    }
    lcdca_set_pixel(icon_com, icon_seg);
    }
    可以看到,利用片内自动驱动来操作段式LCD,可谓易如反掌、极其便捷!
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

    手机版|小黑屋|与非网

    GMT+8, 2024-11-19 08:51 , Processed in 0.117419 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.