//========================================================================

//TITLE:

//    漫谈LCD调试(二)

//AUTHOR:

//    norains

//DATE:

//    Friday  23-July-2008

//Environment:

//    NONE

//========================================================================

    在硬件设计时,如果不够谨慎,经常会犯一些小错误。最常见的一个错误就是LCDCPU的数据线接反。

   

    比如,CPU输出8 BIT RGB信号,正确的硬件连接应该是这样:

    CPU_D0 --> LCD_D0

    CPU_D1 --> LCD_D1

    CPU_D2 --> LCD_D2

    CPU_D3 --> LCD_D3

    CPU_D4 --> LCD_D4

    CPU_D5 --> LCD_D5

    CPU_D6 --> LCD_D6

    CPU_D7 --> LCD_D7

   

    可能错的序列如下:

    CPU_D0 --> LCD_D7

    CPU_D1 --> LCD_D6

    CPU_D2 --> LCD_D5

    CPU_D3 --> LCD_D4

    CPU_D4 --> LCD_D3

    CPU_D5 --> LCD_D2

    CPU_D6 --> LCD_D1

    CPU_D7 --> LCD_D0

   

    这种电路接错的最明显的一个特点就是,某些颜色能够正常显示,比如纯红,纯绿等;但大多数颜色都无法正常。特别是如果让代码显示渐变色的话,颜色会有跳变,感觉很不舒服。

   

    其实,如果从二进制角度来看,也就不难理解。

   

    比如,我们需要输出这么一个红色序列,是从255渐变到250,则:

   

    十进制     CPU输出的二进制      LCD接收的二进制     对应的十进制

      255        11111111              11111111            255

      254        11111110              01111111            127

      253        11111101              10111111            191

      252        11111100              00111111            63

      251        11111011              11011111            223

      250        11111010              01011111            95

     

    LCD接收的颜色序列为:2551271916322395。所以本应该输出渐变颜色的序列,现在只能无奈变成突变了。

   

    而之所以纯红可以正常显示,是因为纯红的表示为255,对应的二进制为11111111,无论怎么颠倒得到的结果都是相同。也就是说,只要二进制排列能够对称的颜色都可以正常显示。