STM32學習之路-LCD(2)

這些天一直在研究LCD的初始化函數,因爲不過是用IO口模擬時序還是用FSMC來驅動LCD,都必須要弄好LCD的初始化

其實LCD的初始化就是跟着LCD IC的datasheet來寫寄存器,大部分都使用上面的默認值,網上有很多修改的例子,這裏就不

放出來了.但是我想寫下一些比較重要的東西。

這是從網上下載來的一個文件的前半部分:


當然,別的型號的IC也是有這些東西的,不過可能有些地址不同而已.

R0,這個命令有兩個功能,如果對它寫,則最低位爲OSC,用於開啓和關閉振盪器。而如果對它讀操作,

則返回的是控制器的型號。這個命令最大的功能是通過讀它可以得到控制器的型號,而我們的代碼知道了控制器的型號之後,

可以針對不同型號的控制器,進行不同的初始化。因爲93xx系列的初始化,其實都比較類似,我們完全可以用一個代碼兼容好幾個控制器。

R3,入口模式命令。我們重點關注的是I/D0、I/D1、AM這三個位,因爲這三個位控制了屏幕的顯示方向。

AM:控制GRAM更新方向。當AM=0的時候,地址以行方向更新。當AM=1的時候,地址以列方向更新。

I/D[1:0]:當更新一個數據之後,根據這兩個位的設置來控制地址計數器自動增加/減少1,其關係如下:



通過這幾個位置的設置,我們就可以控制屏幕的顯示方向了。

還有一點就是關於是否要硬件復位這裏, 這裏要看芯片的datasheet,看Bus Interface這裏是否要求硬件復位

R61509就明確要求了這一點:


所以在初始化函數開頭是要加上覆位的代碼的

GPIO_ResetBits(GPIOE, GPIO_Pin_1);  //硬件復位
 Delay(0x1AFFf);   
 GPIO_SetBits(GPIOE, GPIO_Pin_1 );

Delay(0x1AFFf);

還有一點就是關於伽馬校準寄存器的配置,實在是看不懂爲要這樣設置這些參數

	LCD_WR_CMD(0x0300, 0x00C00);//gamma
	LCD_WR_CMD(0x0301, 0x05A0B);
	LCD_WR_CMD(0x0302, 0x00906);
	LCD_WR_CMD(0x0303, 0x01017);
	LCD_WR_CMD(0x0304, 0x02300);
	LCD_WR_CMD(0x0305, 0x01700);
	LCD_WR_CMD(0x0306, 0x06309);
	LCD_WR_CMD(0x0307, 0x00C09);
	LCD_WR_CMD(0x0308, 0x0100C);
	LCD_WR_CMD(0x0309, 0x02232);
而且不同的IC芯片的伽馬校正設置參數也不一樣.. 或許看到這篇文章的大蝦又剛好知道這裏是怎麼回事的話,那就請拉小弟一把,解釋下什麼原因

剩下的還有就是其他一下顯示圖片,字符的函數什麼的了, 下次再寫下來,因爲還沒研究多少呢.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章