这是一个常见的12864画点函数
我完全看不懂switch那部分啊,为什么要左移动7减Tier_bit。
哪位大佬可以给我讲讲
- void DrawPoint( unsigned char X, unsigned char Y, unsigned char Color )
- {
- unsigned char Row , Tier , Tier_bit ;
- unsigned char ReadOldH, ReadOldL ;
- Tier = X >> 4 ;
- Tier_bit = X & 0x0f ;
- if( Y < 32 )
- {
- Row = Y ;
- }
- else
- {
- Row = Y - 32 ;
- Tier += 8 ;
- }
- wr_cmd(Row + 0x80); //写入行坐标
- wr_cmd(Tier + 0x80); //写入列坐标
- rd_dat();
- ReadOldH = rd_dat() ; //读出原始数据
- ReadOldL = rd_dat() ;
- wr_cmd(Row + 0x80);
- wr_cmd(Tier + 0x80);
- if( Tier_bit < 8 )
- {
- switch( Color)
- {
- case 0 : ReadOldH &=( ~( 0x01 << ( 7 - Tier_bit ))) ; break ; //不显示
- case 1 : ReadOldH |= ( 0x01 << ( 7 - Tier_bit )) ; break ; //显示
- case 2 : ReadOldH ^= ( 0x01 << ( 7 - Tier_bit )) ; break ; //翻转
- default : break ;
- }
- wr_dat(ReadOldH); //写入新数据
- wr_dat(ReadOldL);
- }
- else
- {
- switch(Color)
- {
- case 0 : ReadOldL &= (~( 0x01 << ( 15 - Tier_bit ))) ; break ;
- case 1 : ReadOldL |= ( 0x01 << ( 15 - Tier_bit )) ; break ;
- case 2 : ReadOldL ^= ( 0x01 << ( 15 - Tier_bit )) ; break ;
- default : break ;
- }
- wr_dat(ReadOldH);
- wr_dat(ReadOldL);
- }
- }
复制代码 |