周琦
摘 要:以Keil for ARM集成開發(fā)環(huán)境為基礎(chǔ),以STM32F103C8T6單片機(jī)為核心,設(shè)計(jì)LCD12864液晶顯示系統(tǒng),能在屏幕的任意位置對字符及圖形進(jìn)行顯示,且具備貪吃蛇游戲等相關(guān)功能。另外,該LCD顯示系統(tǒng)具有較強(qiáng)的操作便捷性,且具有較低能耗、較快速度和較高的性價(jià)比。本文淺析了基于STM32F103C8T6單片機(jī)的LCD顯示系統(tǒng)設(shè)計(jì),以期為LCD顯示系統(tǒng)設(shè)計(jì)提供借鑒。
關(guān)鍵詞:單片機(jī);LCD;顯示系統(tǒng)
當(dāng)前,終端顯示器在諸多領(lǐng)域得到了日漸廣泛的應(yīng)用。同時(shí),人們對于所使用的終端顯示器提出了較高的要求。具有較小體積和較低能耗,且具有較高清晰度的LCD顯示器具有顯著的應(yīng)用優(yōu)勢,深受人們青睞。以單片機(jī)為核心的LCD顯示系統(tǒng)具備簡單的硬件結(jié)構(gòu),生產(chǎn)成本相對較低,且控制較為便捷,廣泛應(yīng)用于嵌入式系統(tǒng)中。本文主要基于STM32F103C8T6單片機(jī),對LCD顯示系統(tǒng)進(jìn)行設(shè)計(jì)。
一、系統(tǒng)硬件設(shè)計(jì)
LCD顯示系統(tǒng)方框圖如下圖1所示:
(一)Keil MDK以及STM32F103C8T6單片機(jī)
Keil MDK為集成開發(fā)環(huán)境,具備在線調(diào)試以及鏈接、編譯等功能,能實(shí)現(xiàn)對啟動代碼的自動配置,操作相對簡單,且具有優(yōu)越性能,廣泛應(yīng)用于嵌入式系統(tǒng)。[1]STM32F103C8T6單片機(jī)的寬電壓實(shí)際供電范圍保持在2.0V~3.6V之內(nèi),其最大CPU功率為72MHz,配備有單周期的硬件除法以及乘法指令,還配備有中斷系統(tǒng),具備編程功能。同時(shí),該單片機(jī)還配備有兩種存儲器,一種是FLash存儲器,容量為64KB,一種是SRAM存儲器,容量為20KB。另外,該單片機(jī)還具備多種類型的片內(nèi)外設(shè),諸如定時(shí)器、DMA控制器、IIC接口等。[2]該單片機(jī)不僅具有成本較低,且具有較快的速度和較高的性價(jià)比。
(二)LCD12864液晶顯示屏
LCD12864液晶顯示屏采用串行數(shù)據(jù)接口,其工作電壓保持在2.8V到5.5V范圍之內(nèi),采用128×64像素,以黑白色作為其顯示顏色,以藍(lán)色作為背光顏色,且不帶字庫。模塊內(nèi)部對ST7565P控制器進(jìn)行采用,此類控制器具有較低的功耗,在省電模式下,其最大工作電流為5μA,顯示模塊具備的引腳接口共有8個(gè),對主控制器I/O相應(yīng)的占用數(shù)量相對較少。
(三)LCD12864液晶顯示屏與STM32F103C8T6單片機(jī)的硬件連接
LCD12864液晶顯示屏與STM32F103C8T6單片機(jī)的硬件連接極為簡單。LCD12864液晶顯示屏引腳編號1~5相應(yīng)的控制端口,能與STM32F103C8T6單片機(jī)相應(yīng)的GPIO口進(jìn)行直接連接,第8引腳為LCD相應(yīng)的背光電源端口,借助單片機(jī)相應(yīng)的I/O口對三級管導(dǎo)通進(jìn)行控制,據(jù)此對通斷背光電源進(jìn)行控制,實(shí)現(xiàn)對功耗的有效節(jié)省。[3]單片機(jī) STM32F103C8T6 與 LCD12864 的硬件連接圖如下圖2所示:
二、系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)軟件設(shè)計(jì)涵蓋LCD初始化、數(shù)據(jù)命令編寫、字符畫點(diǎn)顯示等相關(guān)程序設(shè)計(jì)。在液晶顯示模塊開展工作前,要對之實(shí)施初始化,諸如對液晶進(jìn)行復(fù)位,對偏壓比以及顯示對比度等各項(xiàng)參數(shù)進(jìn)行確定等,在此基礎(chǔ)上,才能對字符以及圖形進(jìn)行顯示。針對液晶顯示模塊對數(shù)據(jù)、命令進(jìn)行寫入,要強(qiáng)調(diào)寫入時(shí)序,嚴(yán)格遵循相關(guān)時(shí)序,對驅(qū)動程序進(jìn)行編寫。對程序進(jìn)行設(shè)計(jì)時(shí),為增強(qiáng)移植的便捷性,可對相關(guān)引腳相應(yīng)的操作實(shí)施宏封裝。
寫數(shù)據(jù)相應(yīng)的功能函數(shù)void LCD12864_WriteData的實(shí)現(xiàn)方法相同于寫命令相應(yīng)的功能函數(shù),將片選打開后,對寫數(shù)據(jù)LCD_A0_1()進(jìn)行選擇。
對LCD液晶驅(qū)動程序進(jìn)行設(shè)計(jì),要在屏幕任意位置對一個(gè)點(diǎn)進(jìn)行顯示,據(jù)此實(shí)現(xiàn)復(fù)雜性更強(qiáng)的功能。每次對數(shù)據(jù)進(jìn)行寫入均包含8個(gè)點(diǎn)相應(yīng)的信息,且LCD顯示模塊未對讀控制端口進(jìn)行配置,無法借助讀數(shù)據(jù)命令實(shí)現(xiàn)對其他7點(diǎn)實(shí)際狀態(tài)的了解,難以實(shí)現(xiàn)最終目的。對此,可在單片機(jī)相應(yīng)的內(nèi)存區(qū)對數(shù)據(jù)空間進(jìn)行開辟,并對顯示器各點(diǎn)相應(yīng)的顯示情況進(jìn)行記錄。
液晶模塊未對字庫進(jìn)行配置,對字符進(jìn)行顯示之前,要在單片機(jī)相應(yīng)的存儲空間中對字模進(jìn)行儲存,并基于任意坐標(biāo)對一個(gè)點(diǎn)的現(xiàn)實(shí),實(shí)現(xiàn)對字符的有效現(xiàn)實(shí)。
三、實(shí)例設(shè)計(jì)
基于LCD12864驅(qū)動程序,將STM32F103C8T6單片機(jī)作為系統(tǒng)控制核心,即具備貪吃蛇游戲的相應(yīng)功能。該游戲程序主要具備鍵盤掃描、LCD12864驅(qū)動以及數(shù)據(jù)處理子程序模塊。在該游戲中,可將貪吃蛇和食物視作各不相同的兩個(gè)對象,可借助結(jié)構(gòu)體變量對其屬性進(jìn)行描述,將游戲功能作為依據(jù),對大模塊整體實(shí)施劃分,形成不同子模塊,并對各子模塊各自的功能函數(shù)進(jìn)行編寫,由主模塊函數(shù)對之進(jìn)行調(diào)用。在程序設(shè)計(jì)過程中,將貪吃蛇的長度定義為15,將貪吃蛇具體的運(yùn)動區(qū)域長度定義為20個(gè)單位,將其寬度定義為15個(gè)單位。另外,借助單片機(jī)相應(yīng)的AD采樣引腳基于懸空狀態(tài)實(shí)施采樣,對AD值進(jìn)行獲取,并經(jīng)由相關(guān)運(yùn)算實(shí)現(xiàn)對隨機(jī)數(shù)的獲取。
四、結(jié)語
綜上所述,STM32F103C8T6單片機(jī)性能良好,LCD12864具有較為簡單的硬件接口,對單片機(jī)相應(yīng)的I/O口資源占用較少,且單片機(jī)能為其他外設(shè)提供充足的硬件資源,顯示系統(tǒng)能在不同場合進(jìn)行應(yīng)用。另外,系統(tǒng)對C語言進(jìn)行采用實(shí)施程序設(shè)計(jì),具有較強(qiáng)的移植性。
參考文獻(xiàn):
[1]楊偉,肖義平.基于STM32F103C8T6單片機(jī)的LCD顯示系統(tǒng)設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2014(20):29-31.
[2]陳素芹,余紅英,萬鸞飛,等.基于STM32F103C8T6的USB直流充電器設(shè)計(jì)[J].重慶工商大學(xué)學(xué)報(bào):自然科學(xué)版,2016,33(2):45-48.
[3]梁亞峰.面向?qū)嵱?xùn)設(shè)備管理的指紋鎖控系統(tǒng)設(shè)計(jì)[J].成都航空職業(yè)技術(shù)學(xué)院學(xué)報(bào),2015,31(3):50-53.