www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 電源 > 電源-LED驅(qū)動
[導(dǎo)讀]4  軟件系統(tǒng)設(shè)計及實現(xiàn)  4. 1  操作YD2502 的程序設(shè)計  YD2502 的指令碼格式如下:     其中: CA1 ,CA0 組合功能為內(nèi)部寄存器通道的選擇,功能如下:     D

4  軟件系統(tǒng)設(shè)計及實現(xiàn)

  4. 1  操作YD2502 的程序設(shè)計

  YD2502 的指令碼格式如下:

  

 

  其中: CA1 ,CA0 組合功能為內(nèi)部寄存器通道的選擇,功能如下:

  

 

  DISP :顯示控制位。

  當(dāng)DISP 設(shè)置為“1”時,液晶顯示模塊為開顯示狀態(tài)。

  當(dāng)DISP 設(shè)置為“0”時,液晶顯示模塊為關(guān)顯示狀態(tài)。

  X:表示未用位,可設(shè)為“0”。

  ATmega128 訪問外部存儲器的軟件設(shè)計步驟是:先用extern 聲明一個外部變量,再用map2ping_init 函數(shù)(外部存儲地址分配函數(shù)) 分配給此變量一個外部存儲地址(因A Tmega128 內(nèi)部有4 kB 的SRAM 所以外部存儲地址范圍為1000H~0FFFFH) ,那么對該變量的操作就實現(xiàn)了CPU 對相應(yīng)地址的外部存儲空間的訪問。

  根據(jù)此步驟,對YD2502 寫指令和寫數(shù)據(jù)的具體函數(shù)如下:

  extern unsigned char LCD_DA TA ;

  void  mapping_init (void) {

  asm(“。 area memory (abs) n”

  “。 org 0x4000n ”  / / 分配給LCD_DA TA 的地址為4000H

  “ _LCD_DA TA : : . blkb 1\ n”/ / 存儲空間為1

  “。 text/ n”) ;}

  寫指令函數(shù)如下:

  void  LCD_writeinstr (unsigned char data) {

  PORTD & = 0xFC ;    / / 置/ CS 為低電平,并且置RS 為低電平,處于寫指令狀態(tài)

  LCD_DA TA = data ; / / 送數(shù)據(jù)

  PORTD | = 0x03 ;} / / 置/ CS 和RS為高電平

  寫數(shù)據(jù)函數(shù)如下:

  void  LCD_writedata (unsigned char data) {

  PORTD & = 0xFE ;   / / 置/ CS 為低,并且置RS 為高電平,處于寫數(shù)據(jù)狀態(tài)

  LCD_DA TA = data ; / / 送數(shù)據(jù)

  PORTD | = 0x01 ;} / / 置/ CS 為高電平除了上面兩個基本的函數(shù)外,對YD2502 最基本的操作是往VRAM 里寫數(shù)據(jù),根據(jù)上面給出的指令碼,具體函數(shù)如下:

  # define  HREG   0x09  / / 顯示地址高8 位寄存器指令

  # define  L REG 0x08 / / 顯示地址低8 位寄存器指令

  # define  DA TARW 0x0A / / 顯示數(shù)據(jù)讀寫通道指令

  void  LCD_filldata ( unsigned int address ,

  unsigned char data) {

  unsigned char addrh ,addrl ;

  addrh = (char) (address > > 8) ;  / / 取內(nèi)存地址的高8 位數(shù)據(jù)

  addrl = (char) (address &0xFF) ;  / / 取內(nèi)存地址的低8 位數(shù)據(jù)

  LCD_writeinst r ( HREG) ;  / / 送顯示地址高8 位寄存器指令

  LCD_writedata (addrh) ;  / / 送內(nèi)存地址的高8 位數(shù)據(jù)

  LCD_writeinst r (L REG) ;  / / 送顯示地址低8 位寄存器指令

  LCD_writedata (addrl) ;  / / 送內(nèi)存地址的低8 位數(shù)據(jù)

  LCD_writeinst r (DA TARW) ;  / / 送顯示數(shù)據(jù)讀寫通道指令

  LCD_writedata (data) ;}  / / 送數(shù)據(jù)

  4. 2  畫點(diǎn)函數(shù)的實現(xiàn)

  要在液晶上實現(xiàn)顯示字符和畫圖等功能,在屏幕上顯示一個點(diǎn)是實現(xiàn)這些功能的基礎(chǔ)。畫點(diǎn)函數(shù)實現(xiàn)的步驟是:首先確定該點(diǎn)對應(yīng)的VRAM中的內(nèi)存位置,找到該點(diǎn)具體對應(yīng)的數(shù)據(jù)位,填充顯示顏色的數(shù)據(jù),該點(diǎn)就按對應(yīng)的顏色顯示出來了。

  4. 2. 1  顯示內(nèi)存與屏幕點(diǎn)陣的對應(yīng)關(guān)系

  YD2502 屏幕點(diǎn)陣為320 ×240 ,每一個點(diǎn)對應(yīng)3 個像素(RGB) ,屏幕上8 個點(diǎn)對應(yīng)內(nèi)存3 個字節(jié),一行對應(yīng)320/ 8 ×3 = 120 個字節(jié),其對應(yīng)關(guān)系如下:

  

 

  其中R ,G,B 表示紅、綠、藍(lán)三原色,D7~D0 表示對應(yīng)的數(shù)據(jù)位。

  對于屏幕上坐標(biāo)為( X , Y) 的點(diǎn),其對應(yīng)內(nèi)存地址的計算方法為:

  當(dāng)Y = 0 時  SRAM = 0EFH ×100H +[ IN T( X/ 8) ] ×3

  當(dāng)Y > 0 時  SRAM = ( Y - 1) ×100H +[ IN T( X/ 8) ] ×3

  通過( X/ 8) 的余數(shù)得出具體的內(nèi)存位置:

  當(dāng)余數(shù)為0  則 RAM = SRAM  [ 1110 ,0000 ]

  當(dāng)余數(shù)為1  則 RAM = SRAM  [ 0001 ,1100 ]

  當(dāng)余數(shù)為2  則 RAM1 = SRAM  [ 0000 ,0011 ]

  RAM2 = SRAM + 1[1000 ,0000 ]

  當(dāng)余數(shù)為3  則 RAM = SRAM + 1[0111 ,0000 ]

  當(dāng)余數(shù)為4  則 RAM = SRAM + 1[0000 ,1110 ]

  當(dāng)余數(shù)為5  則 RAM1 = SRAM + 1[0000 ,0001 ]

  RAM2 = SRAM + 2[1100 ,0000 ]

  當(dāng)余數(shù)為6  則 RAM = SRAM + 2[0011 ,1000 ]

  當(dāng)余數(shù)為7  則 RAM = SRAM + 2[0000 ,0111 ]

  其中[ ]內(nèi)為“1”的位表示應(yīng)該填充顏色的位置, SRAM 表示該點(diǎn)對應(yīng)的基礎(chǔ)地址, RAM、RAM1 和RAM2 表示該點(diǎn)對應(yīng)的實際內(nèi)存地址。

  當(dāng)數(shù)據(jù)位為“1”時,對應(yīng)色點(diǎn)為亮;為“0”時,對應(yīng)色點(diǎn)為暗。通過RGB 三原色組合而得到的8 種顏色代碼如下:

  

 

  例1 :若X 、Y 坐標(biāo)為(7 ,0)

  SRAM = 0EFH ×100H + 0 = 0EF00H

  余數(shù)為7 ,則 RAM = 0EF00H + 2 = 0EF02H

  若此點(diǎn)為紅色,則送入0EF02H 內(nèi)存單元里的數(shù)據(jù)為[ 0EF02H] &11111000B + 00000100B

  例2 :若X 、Y 坐標(biāo)為(15 ,5)

  SRAM = (5 - 1) ×100H + 1 ×3 = 403H

  余數(shù)為5 ,則 RAM1 = 403H + 1 = 404H

  RAM2 = 403H + 2 = 405H

  若此點(diǎn)為白色,則送入這兩個單元的數(shù)據(jù)為

  [ 404H] &11111110B + 00000001B

  [ 405H] &00111111B + 11000000B[!--empirenews.page--]

  4. 2. 2  畫點(diǎn)函數(shù)的具體實現(xiàn)

  從例1 和例2 可以看出,要只顯示一個色點(diǎn),就必須知道該點(diǎn)對應(yīng)的內(nèi)存中的數(shù)據(jù),而前面提到過內(nèi)存中的數(shù)據(jù)是不能讀出的,所以要將寫入內(nèi)存中的數(shù)據(jù)先保存起來,即在向YD2502 的顯示緩沖區(qū)里寫數(shù)據(jù)之前, 應(yīng)先將此數(shù)據(jù)寫入61LV5128 。若在坐標(biāo)( X , Y) 處畫顏色為color 的點(diǎn),其具體函數(shù)如下:

  void  LCD_ disppixel ( unsigned int X , unsigned int Y ,unsigned char color) {

  unsigned int address ;

  unsigned char data ;

  address = LCD_pixeladdr ( X , Y) ;

  / / 計算該點(diǎn)對應(yīng)的內(nèi)存地址

  switch ( X %8) {

  case 0 : data = read _ exram ( ad2

  dress) ; / / 讀取相應(yīng)SRAM 中的數(shù)據(jù)

  data & = 0x1F; / / [1110 ,

  0000]保存其他點(diǎn)的數(shù)據(jù)

  data | = (color < < 5) ;

  / / 填充相應(yīng)的顏色

  write _ exram ( data , ad2

  dress) ; / / 把修改好的數(shù)據(jù)寫回到SRAM

  LCD_filldata (address ,da2

  ta) ; / / 把數(shù)據(jù)寫到液晶顯示緩沖區(qū)

  break ;

  ……

  case 7 : …; break ;}}

  以上只給出了余數(shù)是0 的情況,其他的情況可依此類推。計算內(nèi)存地址的LCD_pixeladdr 函數(shù)可根據(jù)給出的內(nèi)存地址計算方法編寫,讀寫61LV5128 的read_exram 函數(shù)和write_exram 函數(shù)可根據(jù)具體的硬件設(shè)計編寫,這里不再給出。

  4. 3  顯示漢字和其他功能的實現(xiàn)

  在屏幕上顯示16 ×16 點(diǎn)陣漢字的基本步驟是:首先取得該漢字的32 個字節(jié)的點(diǎn)陣數(shù)據(jù),再確定屏幕上顯示的位置,利用畫點(diǎn)函數(shù)即可顯示該漢字。因本模塊使用了硬件漢字庫技術(shù),所以漢字的點(diǎn)陣數(shù)據(jù)是從漢字庫中獲取的。

  在計算機(jī)漢字系統(tǒng)中,漢字是用機(jī)內(nèi)碼的形式存儲的,將漢字機(jī)內(nèi)碼減去0A0A0H 就得到該漢字的區(qū)位碼,通過區(qū)位碼就可以找到該漢字點(diǎn)陣數(shù)據(jù)在漢字庫中的位置。例如:漢字“中”的機(jī)內(nèi)碼是十六進(jìn)制的“D6D0”,其中前兩位“D6”表示機(jī)內(nèi)碼的區(qū)碼,后兩位“D0”表示機(jī)內(nèi)碼的位碼。所以“中”的區(qū)位碼為0D6D0H - 0A0A0H =3630H ,將區(qū)碼和位碼分別轉(zhuǎn)換為十進(jìn)制,得漢字“中”的區(qū)位碼為“5448”。即“中”的點(diǎn)陣位于第54區(qū)的第48 個字的位置,在文件HZK16 中的位置為第32 ×[(54 - 1)×94 + (48 - 1)] = 160928D以后的32 個字節(jié)為“中”的點(diǎn)陣數(shù)據(jù),用SUPER2PRO25 編程器讀入文件HZK16 后利用其編輯功能中的緩沖區(qū)編輯查找到274A0H (160928D 的十六進(jìn)制表示) 開始的32 個字節(jié): 01H , 00H ,01H , 00H , 01H , 04H , 7FH , FEH , 41H , 04H ,41H , 04H , 41H , 04H , 41H , 04H , 7FH , FCH ,41H , 04H , 01H , 00H , 01H , 00H , 01H , 00H ,01H ,00H ,01H ,00H ,01H ,00H。這些數(shù)據(jù)與其點(diǎn)陣圖形的對應(yīng)關(guān)系如圖4 所示,圖中黑色方格表示二進(jìn)制位“1”,即對應(yīng)該顯示的點(diǎn),白色方格表示二進(jìn)制位“0”,即不該顯示的點(diǎn)。因此要在液晶屏幕上顯示16 ×16 點(diǎn)陣的漢字,首先應(yīng)找到該漢字在硬件漢字庫中的位置,取出其后的32 個字節(jié)數(shù)據(jù)。取這32 個字節(jié)數(shù)據(jù)的函數(shù)如下:

  

 

  圖4  漢字“中”的點(diǎn)陣圖形

  unsigned  char  chinese[ ] [ 2 ] = {“中”“, 國”} ;

  unsigned  char  buffer [32 ] ;

  void  LCD_ readdata ( unsigned char num2

  ber) {

  unsigned  char  temp1 ,temp2 , k ;

  unsigned  long  address , i ;

  temp1 = chinese  [ number ] [ 0 ] - 0xA0 ;/ / 把機(jī)內(nèi)碼轉(zhuǎn)換成區(qū)位碼

  temp2 = chinese  [ number ] [ 1 ] - 0xA0 ;

  address = 32 3 ( ( (long) temp1 - 1) 3 94 +( (long) temp2 - 1) ) ;  / / 計算該漢字在漢字庫中的首地址

  k = 0 ;

  for ( i = address ; i < address + 32 ; i + + ) {

  data = read_exrom( i) ;

  buffer [ k ] = data ;

  k + + ; }}

  讀A T29C040A 的read_exrom 函數(shù)可根據(jù)硬件設(shè)計編寫,這里不再給出。

  取得這32 個字節(jié)數(shù)據(jù)后,下面的程序設(shè)計就比較容易了,這里只給出程序流程(如圖5 所示) ,具體函數(shù)可根據(jù)此流程編寫。其中( X , Y) 是該漢字顯示的起始點(diǎn), color 是該漢字的顯示顏色,number 是該漢字在chinese 數(shù)組中的位置。顯示英文和數(shù)字的函數(shù)可根據(jù)顯示漢字的函數(shù)稍加改造后即可得到,這里不再詳細(xì)分析。

  

 

  圖5  顯示一個漢字程序流程圖

  在本模塊中也實現(xiàn)了在屏幕上畫斜線、圓等功能,其具體實現(xiàn)過程就是在畫點(diǎn)函數(shù)的基礎(chǔ)上通過相應(yīng)的算法來編寫這些函數(shù)。畫線和畫圓算法比較多,在這里畫線算法采用的是整數(shù)數(shù)字微分分析法,畫圓算法采用的是貝森海姆算法。

  鑒于篇幅所限,這里不再具體分析。由于YD2502是點(diǎn)陣式液晶顯示器, 還可以通過移植嵌入式GUI(如μC/ GUI) 軟件,使其顯示多種曲線,各種窗口對象,如按鈕、編輯框、滑動條等更加豐富靈活的圖形界面。

  5  結(jié)語

  以上程序均在ICCAVR 編譯器里調(diào)試通過,實現(xiàn)了在液晶屏幕上正常顯示各種顏色的漢字、英文、數(shù)字及簡單的圖形功能。在筆者參與開發(fā)的油田探測爆炸機(jī)設(shè)備中,采用了本液晶模塊,達(dá)到了顯示穩(wěn)定,顯示色彩豐富,人機(jī)界面友好的較理想的顯示效果。

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

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

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

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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