Ultimaker2Marlin函数详解——lcd_lib_draw_hline(3, 124, 48); 

3D打印技术 /[固件]
2016-12-05 10:10
      Ultimaker2Marlin函数详解.jpg          

位置:UltiLCD2_low_lib.cpp
函数原型:
void lcd_lib_draw_hline(uint8_t x0, uint8_t x1, uint8_ty)
{
    uint8_t* dst =lcd_buffer + x0 + (y / 8) * LCD_GFX_WIDTH;
    uint8_t mask = 0x01<< (y % 8);
    while(x0<= x1)
    {
       *dst++ |= mask;
       x0 ++;
    }
}
函数说明:
在48行的第3个位置开始显示一行的点,显示到124个位置结束。
详解:
x0:     3    第3列开始显示
x1: 124    第124列结束显示
y  :   48    第48行开始显示
uint8_t* dst = lcd_buffer + x0 + (y / 8) *LCD_GFX_WIDTH;
dst指向lcd_buffer数组的位置,指向的下标是0+3+(48/8)*128=771,即lcd_buffer[771],48行第3个位置。
为什么是 (y / 8)?
是因为该OLED是列行式,所以 lcd_buffer 可以看成是128列*8行的二维数组。
uint8_t mask = 0x01 << (y %8);
mask 是显示的数据,这里都是1。OLED是阴码,高电平点亮。
while(x0 <= x1)
x0 ++;
显示的范围3---124
*dst++ |= mask;
把显示的数据填入lcd_buffer数组
声明:3D打印资源库(3dzyk)内网友所发表的所有内容及言论仅代表其本人,并不代表3D打印资源库(3dzyk)观点和立场;如对文章有异议或投诉,请联系kefu@3dzyk.cn。
Ultimaker2Marlin函数详解——lcd_lib_draw_hline(3, 124, 48); 
快速回复 返回顶部 返回列表