//TITLE:
// 漫谈LCD调试(二)
//AUTHOR:
// norains
//DATE:
// Friday 23-July-2008
//Environment:
// NONE
//========================================================================
在硬件设计时,如果不够谨慎,经常会犯一些小错误。最常见的一个错误就是LCD和CPU的数据线接反。
比如,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接收的颜色序列为:255,127,191,63,223,95。所以本应该输出渐变颜色的序列,现在只能无奈变成突变了。
而之所以纯红可以正常显示,是因为纯红的表示为255,对应的二进制为11111111,无论怎么颠倒得到的结果都是相同。也就是说,只要二进制排列能够对称的颜色都可以正常显示。