本帖最后由 11kxmx 于 2015-3-30 09:29 编辑
火哥: r g b参数是read_data read_data来自LCD_GetPoint(y+j, x+i) LCD_GetPoint(uint16_t x , uint16_t y)又来自LCD_RD_data(void) LCD_RD_data(void) 原程序是這樣的:
uint16_t LCD_RD_data(void)
{
uint16_t R=0, G=0, B=0 ;
R = *(__IO uint16_t *)Bank1_LCD_D; /*FIRST READ OUT DUMMY DATA*/
R = *(__IO uint16_t *)Bank1_LCD_D; /*READ OUT RED DATA */
B = *(__IO uint16_t *)Bank1_LCD_D; /*READ OUT BLACK DATA*/
G = *(__IO uint16_t *)Bank1_LCD_D; /*READ OUT GREEN DATA*/
return (((R>>11)<<11) | ((G>>10)<<5) | (B>>11));
}
R G B 三個變量都 是16 位的 若是8位(或有效數據都在低8 位上), 象R右移11 位不就成0了嗎?再左移11位回去還是0
主要是下面幾句話不太明白:
R = *(__IO uint16_t *)Bank1_LCD_D; /*READ OUT RED DATA */
B = *(__IO uint16_t *)Bank1_LCD_D; /*READ OUT BLACK DATA*/
G = *(__IO uint16_t *)Bank1_LCD_D; /*READ OUT GREEN DATA*/
我想它們只是簡單的讀出,讀出來都是16位數據,因為我們配置8080數據總線寬度也是16位的,可當初寫入LCD時RGB三個參數合起來才占16位呀
是不是讀出的這三個16 位數的低8 位全是0呀,還是低8 位根本就無意義?
|