STM8L152XX系列帶有片上段式LCD驅(qū)動(dòng)程序,這為低成本應(yīng)用和高密度系統(tǒng)設(shè)計(jì)提供了保證,利用片上LCD驅(qū)動(dòng)模塊,可以有效的控制系統(tǒng)整體功耗,簡(jiǎn)化系統(tǒng)結(jié)構(gòu),從整體來(lái)說(shuō)可靠性得到提高。
此處不介紹LCD驅(qū)動(dòng)模塊的原理以及驅(qū)動(dòng)時(shí)序,請(qǐng)參考STM8原版英文說(shuō)明文檔,已描述的很詳細(xì),以下介紹其寄存器的配置方法以及編程方法。
時(shí)鐘,系統(tǒng)時(shí)鐘同樣用來(lái)產(chǎn)生LCD驅(qū)動(dòng)時(shí)鐘,通過(guò)時(shí)鐘模塊配置:
CLK_PCKENR2|=S3; //LCD 使能LCD模塊時(shí)鐘
CLK_CRTCR=S7|S6|S5|S1; //RTC&LCD->FCLK/128 注意RTC和LCD是共同一路時(shí)鐘
以上配置根據(jù)實(shí)際時(shí)鐘進(jìn)行調(diào)整,我在此處采用FCLK=HSI=16MHZ,所以LCDclk=16M/128=125KHZ
我的LCD為六個(gè)數(shù)字的段式LCD,1/3偏壓方式,4根COM線,12根COM線,這兩個(gè)參數(shù)請(qǐng)讀者自己查找自己的LCD資料找到,對(duì)于驅(qū)動(dòng)LCD來(lái)說(shuō)這兩個(gè)參數(shù)最重要,以下為寄存器配置:
LCD_CR1=S5|S2|S1; //1/3偏壓 1/4占空比
LCD_CR2=S6|S4|S0; //3.3V
LCD_FRQ=5<<4; //FCK=125000/2^5*16=128000/512=244 Frame=244/4=61HZ
LCD_PM0=0xFF;
LCD_PM1=0x0F;
LCD_CR3|=S6;
首先由偏壓方式?jīng)Q定了驅(qū)動(dòng)到LCD段碼上的電壓種類(lèi),占空比(標(biāo)準(zhǔn)并非如此翻譯)Duty值決定掃過(guò)每根COM線的時(shí)序比例,由于我將VLCD與VCC接在一起了,所以選擇外部電源參考3.3V,若選擇內(nèi)部,則可以進(jìn)一步選擇最高輸出電壓大小,實(shí)測(cè)發(fā)現(xiàn)選大些對(duì)比度可提高一些。LCD_FRQ用于配置掃描更新頻率,具體計(jì)算不想說(shuō),文檔里都有。最后是配置那些接在LCD上的COM線和SEG線為L(zhǎng)CD驅(qū)動(dòng)復(fù)用有效模式,否則仍可以作為IO口使用,最后開(kāi)啟LCD驅(qū)動(dòng)模塊掃描。
配置完以上寄存器之后,LCD模塊已開(kāi)始工作,它是通過(guò)從LCD_RAM0-LCD_RAM12這一組寄存器來(lái)控制顯示內(nèi)容的,這時(shí)向LCD_RAM0-LCD_RAM12寫(xiě)入數(shù)據(jù)會(huì)發(fā)現(xiàn)有段碼顯示在LCD上,作為應(yīng)用層,需要找到這種關(guān)系。
查手里這塊LCD資料列出段碼表如下所示:
/*-----------------------------------------------------
SEG: 0 1 2 3 4 5 6 7 8 9 10 11
1D X2 2D X3 3D X1 4D 4P 5D 5P 6D 6P
1E 1C 2E 2C 3E 3C 4E 4C 5E 5C 6E 6C
1G 1B 2G 2B 3G 3B 4G 4B 5G 5B 6G 6B
1F 1A 2F 2A 3F 3A 4F 4A 5F 5A 6F 6A
CODE: A F B G C E P D
-----------------------------------------------------*/
于是我把一個(gè)字節(jié)最高位至最低位從A段到D段按如上CODE順序進(jìn)行排列,并得到段表碼如下:
[cpp] view plain copy
const uint8 LCD_CodeTable[]={0xED,0x28,0xB5,0xB9,0x78,0xD9,0xDD,0xA8,0xFD,0xF9,0xFC,0x5D,0x15,0x3D,0xD5,0xD4,0x5C,0x10,0xC5,0xA9,0x00};
這些段碼表分別對(duì)應(yīng)于以下字符:0,1,2,3,4,5,6,7,8,9,A,b,c,d,E,F,h,-,[,], [注,最后一個(gè)為空格]
為編程方便,我對(duì)字符進(jìn)行編碼:A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U [依次和上面的字符相對(duì)應(yīng)]
為六個(gè)字符定義顯示內(nèi)容緩沖區(qū):
uint8 LCD_DisplayBuffer[6];
void LCD_SetSegValue(void)
{
uint16 T,SEG[4];
uint8 i,j,Code[6];
for(i=0;i<6;i++){
Code[5-i]=LCD_CodeTable[LCD_DisplayBuffer[i]&0x7F];
if(LCD_DisplayBuffer[i]&0x80)Code[5-i]|=0x02;
}
for(i=0;i<4;i++){
for(T=0,j=0;j<6;j++){
T<<=2;
T|=(Code[j]&0x03);
Code[j]>>=2;
}
SEG[i]=T;
}
LCD_RAM0=(uint8)(SEG[0]); //COM0->B[7:0]
LCD_RAM1=(uint8)(SEG[0]>>8); //COM0->B[11:8]
LCD_RAM3=(uint8)(SEG[1]<<4); //COM1->B[3:0]->H
LCD_RAM4=(uint8)(SEG[1]>>4); //COM1->B[11:4]
LCD_RAM7=(uint8)(SEG[2]); //COM2->B[7:0]
LCD_RAM8=(uint8)(SEG[2]>>8); //COM2->B[11:8]
LCD_RAM10=(uint8)(SEG[3]<<4); //COM3->B[3:0]->H
LCD_RAM11=(uint8)(SEG[3]>>4); //CoM3->B[11:4]
}
以上這段程序?qū)CD_DisplayBuffer[]中的六個(gè)字符解碼后寫(xiě)入LCD模塊的顯示緩沖區(qū)中,最終顯示成相應(yīng)字符,這其中用每個(gè)字符的最高位代表是否含有小數(shù)點(diǎn)位,若為高則點(diǎn)亮相當(dāng)?shù)男?shù)點(diǎn),否則關(guān)閉。至于LCD_RAM的更新和拆分方法,此外不再描述,文檔中已相當(dāng)詳細(xì)。
圍繞以上刷新程序,可得到如下常用方法:
//清顯示
void LCD_Clear(uint8 Index)
{
uint8 i;
if(Index==0xFF)for(i=0;i<6;i++)LCD_DisplayBuffer[i]='U'-'A';
else LCD_DisplayBuffer[Index]='U'-'A';
LCD_SetSegValue();
}
//寫(xiě)顯示緩沖區(qū)點(diǎn)
void LCD_ShowSpecial(uint8 Saddr,uint8 Char)
{
if(Char>0)LCD_DisplayBuffer[Saddr]|=0x80;
else LCD_DisplayBuffer[Saddr]&=0x7F;
}
//顯示字符
void LCD_ShowChar(uint8 Saddr,uint8 Char)
{
LCD_DisplayBuffer[Saddr]&=0x80;
LCD_DisplayBuffer[Saddr]|=Char;
LCD_SetSegValue();
}
//顯示字符串
void LCD_ShowString(uint8 Saddr,void *Text)
{
uint8 T,P,*Str;
Str=(uint8 *)Text;
while(*Str>0){
T=*Str++;
P=LCD_DisplayBuffer[Saddr];
LCD_DisplayBuffer[Saddr++]=(P&0x80)|(T-'A');
}
LCD_SetSegValue();
}
//顯示數(shù)字
void LCD_ShowNumber(uint8 Saddr,uint16 Number,uint8 Length)
{
uint8 P;
Saddr+=Length-1;
while(Length--){
P=LCD_DisplayBuffer[Saddr];
LCD_DisplayBuffer[Saddr]=(P&0x80)|(Number%10);
Saddr--;Number/=10;
}
LCD_SetSegValue();
}
由以上函數(shù)庫(kù),可以方便的顯示出如LCD_ShowString(0,"BCDEF")(顯示“12345"),LCD_ShowNumber(0,1244,4)(顯示"1244"),等等。配合一些簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu),便可得到一個(gè)相對(duì)復(fù)雜點(diǎn)的菜單操作界面。
上一篇:keil調(diào)試出現(xiàn)反匯編的解決方法
下一篇:段式LCD液晶顯示屏的底層驅(qū)動(dòng)程序
推薦閱讀
史海拾趣
CW Industries公司的前身Wirt Company由愛(ài)迪生的助手查爾斯·沃爾特于1904年創(chuàng)立。在公司初創(chuàng)時(shí)期,沃特率先發(fā)展了線繞電位器、固定線繞電阻器、汽車(chē)火花抑制器和滑動(dòng)開(kāi)關(guān)等產(chǎn)品。這些創(chuàng)新為公司的初步發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ)。隨著電子行業(yè)的快速發(fā)展,CW Industries逐漸在多個(gè)電子領(lǐng)域開(kāi)發(fā)出專(zhuān)利產(chǎn)品和工藝,如滑動(dòng)、搖臂和按鈕開(kāi)關(guān),以及絕緣穿刺連接器等。公司憑借其獨(dú)特的設(shè)計(jì)和專(zhuān)利功能,逐漸在市場(chǎng)上占據(jù)了一席之地。
BOOKHAM公司深知人才是企業(yè)發(fā)展的核心。因此,公司一直致力于引進(jìn)和培養(yǎng)高素質(zhì)的人才。通過(guò)與高校和研究機(jī)構(gòu)的合作,公司吸引了大批優(yōu)秀的科研人員和工程師加入。同時(shí),公司還建立了完善的培訓(xùn)體系,為員工提供持續(xù)的學(xué)習(xí)和發(fā)展機(jī)會(huì)。這些措施使得BOOKHAM公司擁有一支技術(shù)實(shí)力強(qiáng)大、富有創(chuàng)新精神的人才隊(duì)伍,為公司的發(fā)展提供了有力保障。
BOOKHAM公司深知人才是企業(yè)發(fā)展的核心。因此,公司一直致力于引進(jìn)和培養(yǎng)高素質(zhì)的人才。通過(guò)與高校和研究機(jī)構(gòu)的合作,公司吸引了大批優(yōu)秀的科研人員和工程師加入。同時(shí),公司還建立了完善的培訓(xùn)體系,為員工提供持續(xù)的學(xué)習(xí)和發(fā)展機(jī)會(huì)。這些措施使得BOOKHAM公司擁有一支技術(shù)實(shí)力強(qiáng)大、富有創(chuàng)新精神的人才隊(duì)伍,為公司的發(fā)展提供了有力保障。
Comchip Technology公司于2000年在新北市鶯歌區(qū)創(chuàng)立,創(chuàng)始人憑借對(duì)半導(dǎo)體技術(shù)的深刻理解和前瞻眼光,決定專(zhuān)注于二極管制造技術(shù)的研發(fā)與創(chuàng)新。在創(chuàng)立初期,公司面臨資金緊張、市場(chǎng)競(jìng)爭(zhēng)激烈等挑戰(zhàn),但憑借卓越的技術(shù)實(shí)力和堅(jiān)定的信念,成功開(kāi)發(fā)出了一系列高質(zhì)量的二極管產(chǎn)品,逐漸在市場(chǎng)中站穩(wěn)腳跟。
隨著市場(chǎng)的不斷發(fā)展和競(jìng)爭(zhēng)的加劇,Cygnal意識(shí)到需要通過(guò)收購(gòu)來(lái)加速其技術(shù)和市場(chǎng)的布局。經(jīng)過(guò)一系列談判和協(xié)商,Cygnal成功收購(gòu)了另一家專(zhuān)注于嵌入式系統(tǒng)技術(shù)的公司。這次收購(gòu)不僅為Cygnal帶來(lái)了更多的技術(shù)和市場(chǎng)資源,還使其能夠更好地滿(mǎn)足客戶(hù)的需求并提供更全面的解決方案。收購(gòu)后,Cygnal通過(guò)內(nèi)部整合和優(yōu)化,將兩家公司的優(yōu)勢(shì)融合在一起,形成了更強(qiáng)大的市場(chǎng)競(jìng)爭(zhēng)力。
近年來(lái),隨著智能醫(yī)療和金融科技等新興領(lǐng)域的興起,DFI看到了新的發(fā)展機(jī)遇。公司開(kāi)始將這些領(lǐng)域作為重點(diǎn)發(fā)展方向,投入大量資源進(jìn)行研發(fā)和創(chuàng)新。通過(guò)與合作伙伴的緊密合作,DFI成功推出了一系列具有創(chuàng)新性的智能醫(yī)療和金融科技產(chǎn)品。這些產(chǎn)品不僅為客戶(hù)提供了更便捷、更高效的服務(wù)體驗(yàn),也為DFI帶來(lái)了新的增長(zhǎng)點(diǎn)。隨著這些新興領(lǐng)域的不斷發(fā)展壯大,DFI有望在未來(lái)實(shí)現(xiàn)更大的突破和發(fā)展。
請(qǐng)注意,以上故事均為虛構(gòu),旨在展示DFI公司可能的發(fā)展歷程和業(yè)務(wù)活動(dòng)。實(shí)際情況可能有所不同,具體信息請(qǐng)參考DFI公司的官方資料。
這是從本壇下載的一段程序,繞得頭暈,哪位能在后面注釋一下啊。先謝了! ;中值濾波,采樣值分別放在R2,r3,r4中, 結(jié)果從小到大排序放在R2,R3,R4中 ;R3為中值 FILT2:MOV A,R2 CLR C &nbs ...… 查看全部問(wèn)答∨ |
本帖最后由 paulhyde 于 2014-9-15 03:14 編輯 循跡 [ 本帖最后由 open82977352 于 2009-12-20 16:27 編輯 ] … 查看全部問(wèn)答∨ |
http://digibbs.tech.163.com/bbs/article.jsp?boardid=notebook&articleid=155219764 如果可以嵌入優(yōu)酷的視頻就好了 [ 本帖最后由 空氣 于 2009-11-3 13:35 編輯 ]… 查看全部問(wèn)答∨ |
protel99原理圖元器件庫(kù)詳細(xì)說(shuō)明 1.電阻 固定電阻:RES 半導(dǎo)體電阻:RESSEMT 電位計(jì);POT 變電阻;RVAR 可調(diào)電阻;res1 2.電容 定值無(wú)極性電容;CAP 定值有極性電容;CAP 半導(dǎo)體電容:CAPSEMI 可調(diào)電容:CAPVAR 3.電感:INDUCTOR 4.二極管:DIODE.LIB 發(fā)光 ...… 查看全部問(wèn)答∨ |
EVC4.0開(kāi)發(fā)一個(gè)界面,卻不知左右軟鍵功能開(kāi)發(fā),用哪一個(gè)類(lèi),模擬器上沒(méi)有這兩個(gè)鍵的,也不知是VK_??啥子?望哪位仁兄不吝賜教?!? 查看全部問(wèn)答∨ |
包含了ntddndis.he為什么會(huì)出這樣的錯(cuò)誤。 rawethernet\\ntddndis.h(101) : error C2146: syntax error : missing \';\' before identifier \'Offset\' rawethernet\\ntddndis.h(101) : error C2501: \'ULONG_PTR\' : missing storage-class or type specifiers rawethernet\\ntddndis.h ...… 查看全部問(wèn)答∨ |
【打聽(tīng)帖】派睿電子大家知道不?用起來(lái)感覺(jué)怎么樣? 聽(tīng)朋友說(shuō)是小批量分銷(xiāo)商,很多大的企業(yè)都通過(guò)它購(gòu)買(mǎi), 大家使用過(guò)么?用起來(lái)怎么樣?速度???質(zhì)量啊??jī)r(jià)格?。康鹊取? 查看全部問(wèn)答∨ |
本帖最后由 paulhyde 于 2014-9-15 09:44 編輯 電子設(shè)計(jì)大賽討論群,交流模塊準(zhǔn)備情況和相關(guān)問(wèn)題 群號(hào):161413266 歡迎大家積極加入! [ 本帖最后由 baijunyan 于 2011-8-25 21:06 編輯 ] … 查看全部問(wèn)答∨ |
收到【EEWORLD大學(xué)堂——玩轉(zhuǎn)LaunchPad及G2xx系列超值單片機(jī)】禮品啦! 經(jīng)測(cè)試使用,一切 [ 本帖最后由 zdhm_Web 于 2011-11-30 12:05 編輯 ]… 查看全部問(wèn)答∨ |
MSP-EXP43G2或LAUNCHXL-F28027或EK-LM4F120XL 請(qǐng)問(wèn)大神這三個(gè)芯片具體有什么特點(diǎn) 還有我打算做機(jī)器人對(duì)抗方面應(yīng)該選擇哪個(gè)?… 查看全部問(wèn)答∨ |
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦
- Alif 大幅增強(qiáng)邊緣 AI 處理器性能
- VS Code+PlatformIO搭建ESP32 Arduino開(kāi)發(fā)環(huán)境
- ESP32學(xué)習(xí)筆記(49)——RFID RC522使用
- Esp32環(huán)境離線搭建參考
- ESP32使用舵機(jī)庫(kù)時(shí)的錯(cuò)誤
- ESP32 S3接ST7789屏幕線序
- Arduino IDE安裝ESP32開(kāi)發(fā)環(huán)境的最簡(jiǎn)單方法
- 基于S3C44B0X和μC/OS-Ⅱ智能家居嵌入式系統(tǒng)設(shè)計(jì)
- 8位還能打,新唐推出全新工業(yè)級(jí)MCU
- 半導(dǎo)體關(guān)稅可能會(huì)使您的下一輛汽車(chē)更加昂貴
- 潮起!人形機(jī)器人成本的20%-30%——靈巧手,國(guó)產(chǎn)3大廠商正快速產(chǎn)業(yè)化!
- AB Dynamics發(fā)布用于無(wú)人駕駛測(cè)試的物體檢測(cè)系統(tǒng)
- AI重構(gòu)出行:高階輔助駕駛的破局之路
- 廣汽即將發(fā)布全新星源增程技術(shù)
- Yole表示,到2030年,數(shù)據(jù)中心芯片市場(chǎng)規(guī)模將達(dá)到5000億美元
- 綠色節(jié)能趨勢(shì)下的延時(shí)繼電器發(fā)展:低功耗設(shè)計(jì)與環(huán)保材料應(yīng)用
- 國(guó)內(nèi)車(chē)企在固態(tài)電池領(lǐng)域的挑戰(zhàn)和技術(shù)方案
- 資本熱捧 + 政策護(hù)航,2025 人形機(jī)器人能否叩開(kāi) “量產(chǎn)元年” 大門(mén)?
- 耐世特推出用于智能運(yùn)動(dòng)控制的 MotionIQ?軟件套件
- 關(guān)于STM32L152 運(yùn)行時(shí)程序卡在B.處的解決方法
- STM32啟動(dòng)文件——startup_stm32f10x_hd.s
- MDK開(kāi)發(fā)環(huán)境STM32啟動(dòng)文件_main函數(shù)分析
- ucOS_II移植:Stm32啟動(dòng)代碼分析
- STM32的啟動(dòng)文件的選擇(由容量大小決定)
- 電話機(jī)器人是如何“殺死”騷擾電話的
- 亞馬遜測(cè)試送貨機(jī)器人 測(cè)試階段有人類(lèi)陪同
- FLIR獲8900萬(wàn)美元“黑黃蜂”個(gè)人偵察系統(tǒng)供應(yīng)合同
- 蘋(píng)果能否守住“最受尊敬公司”這一名譽(yù)
- Uber重回戰(zhàn)場(chǎng),這次它想在兩輪自動(dòng)駕駛領(lǐng)域搞點(diǎn)大事?
- MSP430G2xx3 Code Examples
- SPI同步通訊建立不起來(lái),要命啊,跪求高手指點(diǎn)!
- Xilinx 2007年培訓(xùn)教程(已經(jīng)全部上傳完畢)
- 【沁恒RISC-V內(nèi)核 CH582】SPI 驅(qū)動(dòng)ST7735
- stm32 pwm波控制
- 哪位有UDP的組播例程?
- 51管腳的內(nèi)部詳細(xì)結(jié)構(gòu)
- 【CN0144】利用LO二分頻調(diào)制器構(gòu)建寬帶低EVM直接變頻發(fā)射機(jī)
- 外包一個(gè)STM32開(kāi)發(fā)項(xiàng)目
- THS3001背面的散熱墊需要連接在地平面上嗎?