TA的每日心情 | 开心 2016-3-22 09:25 |
---|
签到天数: 115 天 连续签到: 1 天 [LV.6]常住居民II
|
艾特梅尔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,可谓易如反掌、极其便捷! |
|