初始化序列由廠家提供,直接向廠家要
對于這個(gè)指令9341的描述是錯(cuò)誤的
FSMC的簡介
TFTLCD沒有地址線沒有地址線,而把RS連接到A0-A15其中的任意一根線。當(dāng)?shù)刂肪€來用,這樣就可以吧TFTLCD當(dāng)成一個(gè)SROM來用了。
HADDR不可以直接配置,而是固定死的,我們只能選擇不能修改
當(dāng)bank1接的是16位寬的存儲器的時(shí)候要右移一位對齊。
這其中NBL是用不到的。A只用到了一個(gè),最重要的還是看最下面這個(gè)D信號的時(shí)序,它對應(yīng)我們的ILI9341的讀寫時(shí)序。
FSMC_BCRx 這個(gè)寄存器,x代表1-4,對應(yīng)我們的前面的第一個(gè)區(qū)到第四個(gè)區(qū)。
上圖中如果單片機(jī)是STM32F4那么DATAST就不需要加1,而對于ADDSET[3:0]F1 F4都需要加1
..
---------------------------------------------LCD液晶顯示實(shí)驗(yàn)講解----------------------------
-------------------- -----------------------------1.硬件連接這里不多講了-----------------------------------------------------------------
--------------------------------------------------2.LCD&LCDdev結(jié)構(gòu)體講解 下面這個(gè)結(jié)構(gòu)體 lcd.h里面定義的-----------------------------
上面這個(gè)結(jié)構(gòu)體在LCD.h里面 RS為1命令 為0的時(shí)候是數(shù)據(jù)
這部分是將lcd-base強(qiáng)制轉(zhuǎn)化為lcd-typedef這樣的機(jī)構(gòu)體指針。最終我們要用的就是這個(gè)lcd了。
有7個(gè)參數(shù) 這樣一個(gè)結(jié)構(gòu)體就很方便的管理LCD相關(guān)的結(jié)構(gòu)體
//設(shè)置lcd顯示方向
//dir:0,豎屏 1,橫屏,
void LCD_Display_Dir(u8 dir)
{
if(dir==0) //豎屏
{
lcddev.dir=0; //豎屏
lcddev.width=240;
lcddev.height=320;
if(lcddev.id==0X9341||lcddev.id==0X6804||lcddev.id==0X5310)
{
lcddev.wramcmd=0X2C;
lcddev.setxcmd=0X2A;
lcddev.setycmd=0X2B;
if(lcddev.id==0X6804||lcddev.id==0X5310)
{
lcddev.width=320;
lcddev.height=480;
}
}else if(lcddev.id==0x5510)
{
lcddev.wramcmd=0X2C00;
lcddev.setxcmd=0X2A00;
lcddev.setycmd=0X2B00;
lcddev.width=480;
lcddev.height=800;
}else if(lcddev.id==0X1963)
{
lcddev.wramcmd=0X2C; //設(shè)置寫入GROM的指令
lcddev.setxcmd=0X2B; //設(shè)置寫x坐標(biāo)指令
lcddev.setycmd=0X2A; //設(shè)置寫y坐標(biāo)指令
lcddev.width=480; //設(shè)置寬度480
lcddev.height=800; //設(shè)置高度800
}else
{
lcddev.wramcmd=0X22;
lcddev.setxcmd=0X20;
lcddev.setycmd=0X21;
}
}else //橫屏
{
lcddev.dir=1; //橫屏
lcddev.width=320;
lcddev.height=240;
if(lcddev.id==0X9341||lcddev.id==0X5310)
{
lcddev.wramcmd=0X2C;
lcddev.setxcmd=0X2A;
lcddev.setycmd=0X2B;
}else if(lcddev.id==0X6804)
{
lcddev.wramcmd=0X2C;
lcddev.setxcmd=0X2B;
lcddev.setycmd=0X2A;
}else if(lcddev.id==0x5510)
{
lcddev.wramcmd=0X2C00;
lcddev.setxcmd=0X2A00;
lcddev.setycmd=0X2B00;
lcddev.width=800;
lcddev.height=480;
}else if(lcddev.id==0X1963)
{
lcddev.wramcmd=0X2C; //設(shè)置寫入GROM的指令
lcddev.setxcmd=0X2A; //設(shè)置寫x坐標(biāo)指令
lcddev.setycmd=0X2B; //設(shè)置寫y坐標(biāo)指令
lcddev.width=800; //設(shè)置寬度800
lcddev.height=480; //設(shè)置寬度480
{
lcddev.wramcmd=0X22;
lcddev.setxcmd=0X21;
lcddev.setycmd=0X20;
}
if(lcddev.id==0X6804||lcddev.id==0X5310)
{
lcddev.width=480;
lcddev.height=320;
}
}
LCD_Scan_Dir(DFT_SCAN_DIR); //默認(rèn)掃描方向
}
-------------------------------------------------------3 7個(gè)底層接口函數(shù)--------------------------------------------------------
寫寄存器值函數(shù)+寫數(shù)據(jù)函數(shù)=寫寄存器內(nèi)容函數(shù)
5.讀寄存器內(nèi)容函數(shù),發(fā)送寄存器地址,讀取的數(shù)據(jù)返回給調(diào)用函數(shù)。
6開始寫GRAM函數(shù)
7寫GROM函數(shù),開始寫一些顏色值進(jìn)去
這樣一個(gè)函數(shù)就完成了寫寄存器操作,因?yàn)橛蠪SMC會(huì)自動(dòng)完成
//寫LCD數(shù)據(jù)
//data:要寫入的值
void LCD_WR_DATA(vu16 data)
{
data=data; //使用-O2優(yōu)化的時(shí)候,必須插入的延時(shí)
LCD->LCD_RAM=data;
}
//讀LCD數(shù)據(jù)
//返回值:讀到的值
u16 LCD_RD_DATA(void)
{
vu16 ram; //防止被優(yōu)化
ram=LCD->LCD_RAM;
return ram;
}
//讀寄存器
//LCD_Reg:寄存器地址
//返回值:讀到的數(shù)據(jù)
u16 LCD_ReadReg(u16 LCD_Reg)
{
LCD_WR_REG(LCD_Reg); //寫入要讀的寄存器序號
delay_us(5);
return LCD_RD_DATA(); //返回讀到的值
}
//寫寄存器內(nèi)容函數(shù)
//LCD_Reg:寄存器地址
//LCD_RegValue:要寫入的數(shù)據(jù)
void LCD_WriteReg(u16 LCD_Reg,u16 LCD_RegValue)
{
LCD->LCD_REG = LCD_Reg; //寫入要寫的寄存器序號
LCD->LCD_RAM = LCD_RegValue;//寫入數(shù)據(jù)
}
//開始寫GRAM
void LCD_WriteRAM_Prepare(void)
{
LCD->LCD_REG=lcddev.wramcmd;
}
------------------------------------------------4 LCD初始化函數(shù)講解---------------------------------------------------------------------------
初始化完GPIO后就要對FSMC 進(jìn)行配置,
對應(yīng)這些寄存器對FSMC進(jìn)行初始化設(shè)置。
對FSMC進(jìn)行讀寫時(shí)序的初始化,就是上面的這段代碼,對應(yīng)的寄存器是下面這兩個(gè)寄存器。
接下來要配置的一個(gè)結(jié)構(gòu)體
-----------------------------------------5坐標(biāo)設(shè)置函數(shù)-----------------------------------------------------------------------
setxcmd指令 作用:設(shè)置x坐標(biāo)
x的高8位
x的低8位
setycmd
y坐標(biāo)的高8位
y坐標(biāo)的低8位
-------------------------------------------6 LCD畫點(diǎn)函數(shù)-----------------------------------------------------------------------------
快速畫點(diǎn)函數(shù)
------------------------------------7 LCD讀點(diǎn)函數(shù)-----------------------------------------------
x y是讀取的點(diǎn)的坐標(biāo),返回值是這個(gè)點(diǎn)的顏色。
讀出來的是RGB565的格式。
----------------------------------------8 LCD字符顯示函數(shù) ------------------------------------------------------
疊加方式 保持底色 非疊加方式 沒有底色,這里 減空格 是因?yàn)槭菑目崭耖_始取模的。
csize是一個(gè)字節(jié)點(diǎn)陣集所對應(yīng)的字節(jié)數(shù)。
csize 這個(gè)句話得到一個(gè)字符點(diǎn)陣集的字節(jié)數(shù)。 其中 size=12 、16、24四種值。
下一句num是字符的偏移量,假如我們要顯示!,那么此時(shí)num就是2 又因?yàn)?nbsp; “-”(減號)的mun是0,所以, “!” 的mun是1·
顏色由POINT_color
上述的字模數(shù)組在上面的 font.h里面。
生成上面的字符碼可以用PCtoLCD2002
在LIENTEK后輸入 要生成的字符,然后點(diǎn)擊 生成字模,就可以自動(dòng)生成上面的字符碼了。
根據(jù)下面這個(gè)來進(jìn)行取模設(shè)置。 輸出方式是從上到下從坐到右
ASCII的字符 高度=寬度的一倍 例如:asc2_2412[95][36] 就是豎向的(字符高為24)那么字符寬就=12。那么這個(gè)字符共有3x8=24 也會(huì)是高度占3個(gè)字節(jié),寬度=24/2=12 高度的字節(jié)數(shù)x寬度=3x12=36個(gè)字節(jié)。95代表這個(gè)數(shù)組中有95個(gè)字符。
生成是最高位在上,一直減到最低位。這樣字節(jié)1的8位都有效, 字節(jié)2只有高4位有效,字節(jié)3 的8位都有效,字節(jié)4也只有高4位有效。這樣以此類推。
看上面的字符數(shù)組 行坐標(biāo)表示 一個(gè) 字符
--------------------------------------------------例程測試----------------------------------------------------------
上一篇:劉凱老師 硬件 IIC通信一
下一篇:STM32(9) GPIO口復(fù)用功能實(shí)現(xiàn)(正點(diǎn)原子)
推薦閱讀
史海拾趣
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- 神經(jīng)形態(tài)芯片可能是革新機(jī)器人實(shí)時(shí)電機(jī)控制的未來
- 從三個(gè)方面理解ARM嵌入式系統(tǒng)
- 自動(dòng)報(bào)警 基于MCU的家庭防盜報(bào)警系統(tǒng)的設(shè)計(jì)
- 存儲控制器及其訪問外設(shè)的原理
- 基于51系列單片機(jī)的智能照明控制系統(tǒng)設(shè)計(jì)方案
- 基于STM32的四旋翼飛行器控制系統(tǒng)
- 單片機(jī)應(yīng)用編程技巧解析
- 基于89C52的教室智能節(jié)能照明系統(tǒng)設(shè)計(jì)
- 一種新型的雨量光照傳感器的設(shè)計(jì)
- 誰控制了電解質(zhì),誰就為電動(dòng)汽車鋪平了道路
- 力旺電子旗下熵碼科技攜手資策會(huì)簽署合作備忘錄 共推芯片安全教育及人才培育
- 英飛凌推出XENSIV? 3D磁傳感器,為汽車、工業(yè)和消費(fèi)類應(yīng)用帶來高精度位置檢測功能
- RKDC2025 丨米爾亮相第九屆瑞芯微開發(fā)者大會(huì),共繪工業(yè)數(shù)智新圖景
- 「芯生態(tài)」杰發(fā)科技AC7870攜手IAR開發(fā)工具鏈,助推汽車電子全棧全域智能化落地
- 緊湊型PTS647輕觸開關(guān)系列增加了降噪和防塵功能
- 新型固態(tài)鋰離子電池技術(shù)提高了功率密度和可靠性標(biāo)準(zhǔn)
- 電動(dòng)汽車換電的好處
- 高壓BMS如何增強(qiáng)安全性并延長電池的使用壽命
- 消息稱英偉達(dá)-聯(lián)發(fā)科 AI PC 芯片延遲除設(shè)計(jì)修改亦與微軟系統(tǒng)進(jìn)度緩慢等有關(guān)
- 助推電動(dòng)時(shí)代,與英飛凌一起探索電動(dòng)汽車三大產(chǎn)品技術(shù)
- 早睡早起,為自己的健康打個(gè)卡
- ST AMG SensorTile開發(fā)大賽駕到,重磅大獎(jiǎng)與知識兼得,速來~
- 了解是德科技校準(zhǔn)服務(wù)及5G 精彩專題,下載技術(shù)文章送好禮!
- 報(bào)名觀看TI嵌入式主題月直播,場場精彩,好運(yùn)連連
- Microchip 直播|利用motorBench®開發(fā)套件高效開發(fā)電機(jī)磁場定向控制方案
- 有獎(jiǎng)直播報(bào)名中|想了解人形機(jī)器人背后的硬科技嗎?來英飛凌直播為您揭曉!
- 新專利顯示:蘋果高端頭戴耳機(jī)將來 2500元起步
- 京東方向華為提供on-cell OLED面板:用于Mate40
- Apple Pay快捷交通卡加入蘇州支持
- 蘋果發(fā)布2020年環(huán)境報(bào)告:十年后所有產(chǎn)品將實(shí)現(xiàn)碳中和
- 中興天機(jī)Axon11 SE極光冰川新色上市
- 高通:明年多家手機(jī)采5G規(guī)格,上半年至少兩家采用X50
- 出資額超過1000億元!國家集成電路產(chǎn)業(yè)投資進(jìn)度提前9個(gè)月
- 胡正明:全球和平靠微電子的進(jìn)步來支撐,2018 IC WORLD大會(huì)在
- 1820位上市公司高管辭職,半導(dǎo)體企業(yè)董事長“隱退”頗顯無
- 比特大陸落戶福州,投資13億元打造區(qū)域總部與算豐科技產(chǎn)業(yè)