當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]本篇文章三個(gè)主題:FSMC有關(guān)配置、一串字符顯示原理、漢字顯示原理。。下面進(jìn)入正題一、FSMC的有關(guān)配置(博主用的是FSMC_A10): 來自別人家的博客http://blog.csdn.net/jxnu_xiaobing/article/details/8718566 FSMC

本篇文章三個(gè)主題:FSMC有關(guān)配置、一串字符顯示原理、漢字顯示原理。。下面進(jìn)入正題
一、FSMC的有關(guān)配置(博主用的是FSMC_A10):
來自別人家的博客http://blog.csdn.net/jxnu_xiaobing/article/details/8718566
FSMC的介紹就不介紹了,網(wǎng)上一大片。我們就討論討論為什么用FSMC的地址線與TFTLCD的RS引腳相連?以及我們?nèi)绾瓮鵏CD寫數(shù)據(jù)/命令?
FSMC稱為可變靜態(tài)存儲(chǔ)控制器。可變:之所以稱為“可變”,是由于通過對(duì)特殊功能寄存器的設(shè)置,F(xiàn)SMC 能夠根據(jù)不同的外部存儲(chǔ)器類型,發(fā)出相應(yīng)的數(shù)據(jù)/地址/控制信號(hào)類型以匹配信號(hào)的速度。(這點(diǎn)很重要,后文會(huì)提到。。)
簡單說明一下吧~為什么不拿STM32的IO口直接接LCD的對(duì)應(yīng)引腳?(看看我上邊發(fā)的鏈接就清楚了),大致就是操作麻煩,效率低嘛。。好,F(xiàn)SMC是吧TFTLCD當(dāng)成SRAM設(shè)備來用的,其操作時(shí)序和SRAM的控制完全類似,唯一不同的就是TFTLCD有RS信號(hào),但是沒有地址信號(hào)。
TFTLCD是通過RS信號(hào)來決定傳送的數(shù)據(jù)是數(shù)據(jù)還是命令,本質(zhì)上可以理解為一個(gè)地址信號(hào),比如我們把RS接在A10上面(當(dāng)然A0-Axx都可以)。那么LCD到底是怎么判斷我們寫的是命令還是數(shù)據(jù)呢?下面是重點(diǎn)?。?
以戰(zhàn)艦的程序?yàn)槔?br/>
這里因?yàn)閿?shù)據(jù)線寬度是16位時(shí),HADDR[25:1]->FSMC[24:0],相當(dāng)于右移一位。下面是戰(zhàn)艦給出的A10偏移量:

0x6c000000相比大家都沒有問題。按理說A10的偏移量應(yīng)該是2的11次方(0-10)=2048,轉(zhuǎn)換為16進(jìn)制就是800,那也比7FE大兩位!
(這里復(fù)習(xí)下基礎(chǔ)知識(shí):RS=0,寫命令;RS=1,寫數(shù)據(jù)。)
為什么呢?我是這么理解的(倒推法):按我的思路推,如果我們?nèi)CD->LCD_REG的地址0x6c000800的話,當(dāng)?shù)刂酚乙茣r(shí),第10位就不是0了,而是1。對(duì)應(yīng)RS=1,那么對(duì)于LCD就不是寫命令了,而變成寫數(shù)據(jù)了;又因?yàn)榻Y(jié)構(gòu)體內(nèi)部成員對(duì)齊規(guī)則,LCD->LCD_RAM的地址就是0x6c00802了,當(dāng)?shù)刂酚乙茣r(shí),第10位也是1,對(duì)應(yīng)RS=1。還是寫數(shù)據(jù)?。。?!
推到這應(yīng)該明白了。如果按正常算法來計(jì)算的話,RS就只會(huì)等與1,就不會(huì)區(qū)分寫命令和寫數(shù)據(jù)了。
故我們要將A10的偏移量減去兩位。就得到圖中戰(zhàn)艦的0x000007FE了。LCD->LCD_REG的地址就是0x6c0007FE了。當(dāng)?shù)刂酚乙埔晃粫r(shí)第10位是0,對(duì)應(yīng)RS=0,為對(duì)于LCD就是寫命令了;而因?yàn)榻Y(jié)構(gòu)體內(nèi)部成員對(duì)齊規(guī)則,LCD->LCD_RAM的地址就是0x6c000800了。當(dāng)?shù)刂酚乙埔晃粫r(shí)第10位是1,對(duì)應(yīng)RS=1,為對(duì)于LCD就是寫數(shù)據(jù)了。這樣FSMC就能區(qū)分傳送的是數(shù)據(jù)還是命令了。。大功告成!
到這里,問題來了:我們就控制A10這一根線怎么就可以完成讀寫了呢?那些十多個(gè)引腳的電平又是誰在控制呢?
這個(gè)神秘的‘人物’就是上文我們提到的FSMC啦!先看一個(gè)戰(zhàn)艦上的寫寄存器函數(shù):

第一個(gè)圖:這里的LCD->LCD_REG是一個(gè)地址(0x6c000007FE),這里的寄存器序號(hào)哦:是指LCD手冊(cè)里定義的寄存器地址。只要我們往LCD->LDC_REG這個(gè)地址里寫一個(gè)變量(地址)。因?yàn)長CD->LDC_REG這個(gè)地址是FSMC管轄的。所以這時(shí)候FSMC就要勇敢的站出來管了~FSMC會(huì)自己生成相應(yīng)的時(shí)序,包括CS、WR、RD和IO方向都是由FSMC控制!這就大大便利了我們對(duì)LCD的控制。
第二個(gè)圖:這里的LCD->LCD_RAM也是一個(gè)地址(0x6c00000800),LCD->LCD_RAM=data;是往該寄存器地址里面寫入數(shù)據(jù)。

二、一串字符的顯示原理(戰(zhàn)艦)
1、比如我們要顯示一個(gè)字符串LCD_ShowString(x,x,x,"hello 21ic");x:是一些坐標(biāo)哦和字體大小參數(shù),先不管→_→
2、那我們就得調(diào)用字符顯示函數(shù):LCD_ShowChar();來把一個(gè)字符的點(diǎn)陣全部取完。
3、字符是有點(diǎn)組成的,故在字符函數(shù)中不斷調(diào)用畫點(diǎn)函數(shù)LCD_DrawPoint();來畫點(diǎn)(往LCD->LCD_RAM里寫顏色值,這個(gè)顏色值在lcd.h里被定義為16位的地址)。
4、至此,在lcd_init()中有過LCD屏的初始化(設(shè)置顯示參數(shù)),就可以顯示了。

5、簡析一下疊加和非疊加的原理吧→_→
疊加就是字符點(diǎn)陣中是‘1’就用賦畫筆顏色,是‘0’就賦背景顏色(那個(gè)字符的背景顏色,與全屏背景顏色無關(guān)),沒毛??!因?yàn)樽詈箫@示的時(shí)候有個(gè)覆蓋的作用。就是先把全屏顏色顯示出來,再在全屏顏色的基礎(chǔ)上覆蓋上你的字符。所以就顯示出疊加和非疊加(只有一個(gè)畫筆顏色)了。
三、漢字顯示原理
其實(shí)漢字顯示和英文顯示一個(gè)原理。很簡單!顯示的原理就是根據(jù)你的漢字字模字節(jié)大小來畫點(diǎn)。
簡單說說哈:大家都知道,字母的顯示原理就是兩個(gè)for循環(huán)(博主就知道這個(gè)),第一個(gè)for是控制‘行’的,第二個(gè)for是控制‘列’的。先給兩個(gè)例子:比如顯示一個(gè)16*08的字母,第一個(gè)for是循環(huán)16次,第二個(gè)for是循環(huán)8次;顯示一個(gè)24*24的漢字,第一個(gè)for是循環(huán)72次,第二個(gè)for還是循環(huán)8次。不知道到這里大家看沒看出來什么規(guī)律來→_→
規(guī)律:第一個(gè)for是字模所占的字節(jié)數(shù),第二個(gè)for是每次畫8位(從列最高處往下描8個(gè)點(diǎn)),字符顯示函數(shù)中間會(huì)有y-y0的字樣,這是判斷一列點(diǎn)數(shù)是否達(dá)到16或者24個(gè)了,是就x+1,換下一列。
總的來說,漢字的字模字節(jié)說就是比字母字模字節(jié)數(shù)大。修改的也就是第一個(gè)fo和y-y0里面的參數(shù)。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉