問題由來
網(wǎng)友問答
NOKIA 5110 屏
Nokia5110屏是一個(gè)非常經(jīng)典的液晶顯示模塊,在小哈哥玩單片機(jī)的時(shí)候,可選的液晶模塊并不多,一般來說就是LCD1602、LCD12864,這個(gè)Nokia5110屏在我當(dāng)時(shí)來看,是相當(dāng)高級的一個(gè)液晶屏了。
Nokia/諾基亞5110 屏是用在5110、6150,6100 等系列移動(dòng)電話上的液晶顯示模塊,國內(nèi)廠家也生產(chǎn)有類似的兼容產(chǎn)品。
該產(chǎn)品除應(yīng)用于移動(dòng)電話外,也可廣泛應(yīng)用于各類便攜式設(shè)備的顯示系統(tǒng)。單片機(jī)控制顯示,人機(jī)交互界面顯示,數(shù)據(jù)采集顯示等電子設(shè)計(jì)場合。
Nokia5110手機(jī)
規(guī)格參數(shù)
工作電壓:DC3.3-5.0V
屏幕顏色:單色
分辨率:84*48,字符:6*8字符的話,可以顯示6行字符,每行14個(gè)字符
通信方式:串行SPI接口
液晶模塊:LPH7366
運(yùn)用場合:單片機(jī)檢測信息顯示,人機(jī)交互界面開發(fā)等電子設(shè)計(jì)
外形尺寸:45x43x1.6mm
管腳定義
模塊原理圖
網(wǎng)上找的一個(gè)模塊原理圖
實(shí)際硬件連接
模塊尺寸
程序移植
小哈哥之前用51單片機(jī)驅(qū)動(dòng)過這個(gè)液晶屏,實(shí)際使用只需要五個(gè)IO引腳即可驅(qū)動(dòng)。
我們今天就看看,如果網(wǎng)上找不到你所用芯片的例程,只有別的芯片的例程你怎么參考呢?下面咱們就來移植一下。
拷貝驅(qū)動(dòng)文件
將液晶屏的驅(qū)動(dòng)文件拷貝到STM32工程下的HARDWARE目錄下,并在STM32的工程中添加文件。
添加GPIO初始化函數(shù)
void lcd_gpio_init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
}
修改GPIO操作的宏定義
//51單片機(jī)
//sbit LCD_RST=P0^0;
//sbit LCD_CE=P0^1;
//sbit LCD_DC=P0^2;
//sbit LCD_DIN=P0^3;
//sbit LCD_CLK=P0^4;
//STM32單片機(jī)
#define LCD_RST PCout(5)
#define LCD_CE PCout(0)
#define LCD_DC PCout(1)
#define LCD_DIN PCout(2)
#define LCD_CLK PCout(3)
修改1us的延時(shí)
#define Wait1us delay_us(1)
函數(shù)調(diào)用
//Nokia5110初始化
lcd_gpio_init();
lcd_init();
lcd_clear(); //清屏幕
lcd_string(0,0,"Time:");
編譯程序,沒有錯(cuò)誤,下載程序,發(fā)現(xiàn)屏幕中可以正常顯示預(yù)設(shè)內(nèi)容,證明驅(qū)動(dòng)已經(jīng)移植成功了。
源碼獲取/素材獲取
公眾號后臺回復(fù)關(guān)鍵字:Nokia5110,獲取測試Demo源碼。
結(jié)果展示
總結(jié)
這次測試用的杜邦線,杜邦線雖然方便,但是一碰,屏幕顯示輸出就沒有了,只能重新插拔,復(fù)位單片機(jī),很是無語。
另外還要注意,有的時(shí)候,杜邦線接觸不是很好,在測試程序的時(shí)候,首先要保證杜邦線的接觸良好,大家不確定的話,可以使用萬用表蜂鳴器檔,測測每個(gè)引腳的兩端是否導(dǎo)通。