引 言
長(zhǎng)屏的LED顯示屏在生活中應(yīng)用的很多,,這種顯示屏的控制電路簡(jiǎn)單,掃描線(xiàn)有限,,顯示信息量也不是很大,。當(dāng)顯示信息量比較大時(shí),采用一般的長(zhǎng)屏顯示屏,,顯示信息過(guò)慢,,即使采用超長(zhǎng)屏的顯示屏,,其數(shù)據(jù)輸出速率也很慢,同時(shí)顯示屏的刷新頻率也不一定能滿(mǎn)足顯示需求,。矩形顯示屏顯示一屏的信息量大,,并且可以按需要擴(kuò)展顯示屏的高度,不存在頻率上的限制,,可以彌補(bǔ)長(zhǎng)條顯示屏顯示信息時(shí)存在的一些問(wèn)題,。本文用于控制矩形顯示屏的控制系統(tǒng)數(shù)據(jù)組織使用了雙RAM技術(shù),提高了信息垂直循環(huán)顯示時(shí)存儲(chǔ)器效率,,大幅度降低了數(shù)據(jù)存儲(chǔ)器的占用,,并且對(duì)刷新頻率的要求也不是很高[1]。
1 顯示數(shù)據(jù)組織
大多時(shí)候需要顯示的區(qū)域大于或等于實(shí)際顯示的區(qū)域,,相等以及小于時(shí)為靜態(tài)顯示,,圖1所示的是需要顯示的區(qū)域大于實(shí)際顯示的區(qū)域。為了簡(jiǎn)化問(wèn)題的分析,,本文將顯示區(qū)域高度設(shè)置為L(zhǎng)ED顯示屏高度的4倍,,寬度等于LED顯示屏寬度,顯示屏的高度為 ,,寬度為
,,則顯示區(qū)域高度
,寬度
,,掃描線(xiàn)條數(shù)
,,本文以單色顯示作為描述對(duì)象,且
(
為輸出數(shù)據(jù)寬度),,如圖1所示,。
圖1 顯示區(qū)域圖
對(duì)于一個(gè)LED顯示屏寬度為 ,,高度為
確定后,,顯示屏單元板的排列方式也就被確定了,單元板相鄰的兩條掃描線(xiàn)之間的距離為
,,顯示屏有
條掃描線(xiàn),,分別是
,
,,…
,,每
行對(duì)應(yīng)一位顯示數(shù)據(jù),顯示屏上的每一個(gè)點(diǎn)對(duì)應(yīng)于存儲(chǔ)器中某個(gè)字節(jié)的某一位,。各掃描線(xiàn)的起始位置如圖1所示,,
條掃描線(xiàn)分別指向
,
,,…,,
。用靜態(tài)顯示數(shù)據(jù)組織方法分別對(duì)顯示塊A、B,、C,、D組織顯示數(shù)據(jù)[2]。首先對(duì)顯示塊A的顯示信息進(jìn)行組織:
?、?img alt="" border="0" height="19" src="http://files.chinaaet.com/images/20110110/14daf9e5-2a0e-457f-ad85-783681867dbf.jpg" width="43" /> ,,即當(dāng)前掃描線(xiàn)各行與第0列相交各點(diǎn)的顯示數(shù)據(jù)按 ,
,,…,,
的順序存儲(chǔ)在存儲(chǔ)器的第一個(gè)存儲(chǔ)單元中。
?、?img alt="" border="0" height="17" src="http://files.chinaaet.com/images/20110110/4366facc-d783-4610-adb2-4ca7efb5de21.jpg" width="19" /> 值增加1,,當(dāng)前掃描線(xiàn)各行與 值對(duì)應(yīng)列相交各點(diǎn)的顯示數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器的下一個(gè)存儲(chǔ)單元中。
?、壑貜?fù)第 eq oac(○,,2)2步的操作,將 至
的
個(gè)數(shù)據(jù)按順序全部存儲(chǔ)在存儲(chǔ)器中,。
?、?img alt="" border="0" height="24" src="http://files.chinaaet.com/images/20110110/0a0a9852-0df0-4081-bb96-925cff4746c6.jpg" width="21" /> 條掃描線(xiàn)向下移動(dòng)一行,重復(fù)第 eq oac(○,,1)1至 eq oac(○,,3)3步。直到 移動(dòng)到
行時(shí),。
?、輸?shù)據(jù)組織結(jié)束。
顯示區(qū)域B,、C,、D,分別按照A的數(shù)據(jù)組織方式去組織顯示數(shù)據(jù),。組織后的顯示數(shù)據(jù)塊按A,、B、C,、D的順序存儲(chǔ)在RAM0里,,然后將RAM0中的顯示數(shù)據(jù)塊A、B,、C,、D按B、C,、D,、A的順序拷貝到RAM1中,,任何兩個(gè)相鄰顯示塊的顯示數(shù)據(jù)分別在兩塊RAM中都有相同地址存儲(chǔ)區(qū)域。RAM0 和RAM1的顯示數(shù)據(jù)與存儲(chǔ)器的對(duì)應(yīng)關(guān)系如圖2所示,。
圖2 數(shù)據(jù)塊與存儲(chǔ)器之間的排列圖
引 言
長(zhǎng)屏的LED顯示屏在生活中應(yīng)用的很多,,這種顯示屏的控制電路簡(jiǎn)單,掃描線(xiàn)有限,,顯示信息量也不是很大,。當(dāng)顯示信息量比較大時(shí),采用一般的長(zhǎng)屏顯示屏,,顯示信息過(guò)慢,,即使采用超長(zhǎng)屏的顯示屏,其數(shù)據(jù)輸出速率也很慢,,同時(shí)顯示屏的刷新頻率也不一定能滿(mǎn)足顯示需求,。矩形顯示屏顯示一屏的信息量大,并且可以按需要擴(kuò)展顯示屏的高度,,不存在頻率上的限制,,可以彌補(bǔ)長(zhǎng)條顯示屏顯示信息時(shí)存在的一些問(wèn)題。本文用于控制矩形顯示屏的控制系統(tǒng)數(shù)據(jù)組織使用了雙RAM技術(shù),,提高了信息垂直循環(huán)顯示時(shí)存儲(chǔ)器效率,,大幅度降低了數(shù)據(jù)存儲(chǔ)器的占用,并且對(duì)刷新頻率的要求也不是很高[1],。
1 顯示數(shù)據(jù)組織
大多時(shí)候需要顯示的區(qū)域大于或等于實(shí)際顯示的區(qū)域,,相等以及小于時(shí)為靜態(tài)顯示,圖1所示的是需要顯示的區(qū)域大于實(shí)際顯示的區(qū)域,。為了簡(jiǎn)化問(wèn)題的分析,,本文將顯示區(qū)域高度設(shè)置為L(zhǎng)ED顯示屏高度的4倍,寬度等于LED顯示屏寬度,,顯示屏的高度為 ,,寬度為
,則顯示區(qū)域高度
,,寬度
,,掃描線(xiàn)條數(shù)
,本文以單色顯示作為描述對(duì)象,,且
(
為輸出數(shù)據(jù)寬度),如圖1所示,。
圖1 顯示區(qū)域圖
對(duì)于一個(gè)LED顯示屏寬度為 ,,高度為
確定后,顯示屏單元板的排列方式也就被確定了,,單元板相鄰的兩條掃描線(xiàn)之間的距離為
,,顯示屏有
條掃描線(xiàn),,分別是
,
,,…
,,每
行對(duì)應(yīng)一位顯示數(shù)據(jù),顯示屏上的每一個(gè)點(diǎn)對(duì)應(yīng)于存儲(chǔ)器中某個(gè)字節(jié)的某一位,。各掃描線(xiàn)的起始位置如圖1所示,,
條掃描線(xiàn)分別指向
,
,,…,,
。用靜態(tài)顯示數(shù)據(jù)組織方法分別對(duì)顯示塊A,、B,、C、D組織顯示數(shù)據(jù)[2],。首先對(duì)顯示塊A的顯示信息進(jìn)行組織:
?、?img alt="" border="0" height="19" src="http://files.chinaaet.com/images/20110110/14daf9e5-2a0e-457f-ad85-783681867dbf.jpg" width="43" /> ,即當(dāng)前掃描線(xiàn)各行與第0列相交各點(diǎn)的顯示數(shù)據(jù)按 ,,
,,…,
的順序存儲(chǔ)在存儲(chǔ)器的第一個(gè)存儲(chǔ)單元中,。
?、?img alt="" border="0" height="17" src="http://files.chinaaet.com/images/20110110/4366facc-d783-4610-adb2-4ca7efb5de21.jpg" width="19" /> 值增加1,當(dāng)前掃描線(xiàn)各行與 值對(duì)應(yīng)列相交各點(diǎn)的顯示數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器的下一個(gè)存儲(chǔ)單元中,。
?、壑貜?fù)第 eq oac(○,2)2步的操作,,將 至
的
個(gè)數(shù)據(jù)按順序全部存儲(chǔ)在存儲(chǔ)器中,。
④ 條掃描線(xiàn)向下移動(dòng)一行,,重復(fù)第 eq oac(○,,1)1至 eq oac(○,3)3步,。直到
移動(dòng)到
行時(shí),。
⑤數(shù)據(jù)組織結(jié)束,。
顯示區(qū)域B,、C、D,,分別按照A的數(shù)據(jù)組織方式去組織顯示數(shù)據(jù),。組織后的顯示數(shù)據(jù)塊按A,、B、C,、D的順序存儲(chǔ)在RAM0里,,然后將RAM0中的顯示數(shù)據(jù)塊A、B,、C,、D按B、C,、D,、A的順序拷貝到RAM1中,任何兩個(gè)相鄰顯示塊的顯示數(shù)據(jù)分別在兩塊RAM中都有相同地址存儲(chǔ)區(qū)域,。RAM0 和RAM1的顯示數(shù)據(jù)與存儲(chǔ)器的對(duì)應(yīng)關(guān)系如圖2所示,。
圖2 數(shù)據(jù)塊與存儲(chǔ)器之間的排列圖
采用雙RAM并行輸出時(shí)的幾種情況,如圖2所示,,掃描組1從 到
,,對(duì)應(yīng)顯示塊A,數(shù)據(jù)已組織存放在存儲(chǔ)器中,,可以直接輸出顯示數(shù)據(jù),;掃描組2從
到
,對(duì)應(yīng)顯示塊B也已經(jīng)組織好,,可以直接輸出,。但是掃描組3,它的位置非同一般,,它的掃描線(xiàn)分別對(duì)應(yīng)著兩個(gè)塊A和B,,第0,1,,…
條掃描線(xiàn)分別對(duì)應(yīng)顯示塊A掃描組1的1,,2,…,,
,,而第
條掃描線(xiàn)對(duì)就顯示塊B掃描組2的第0條掃描線(xiàn),如果要在顯示屏上顯示掃描組3對(duì)應(yīng)的這一屏數(shù)據(jù),,就一定要同時(shí)使用到掃描組1的第1,,2,…,,
條掃描線(xiàn)和掃描組1的第0條掃描線(xiàn)組織的顯示數(shù)據(jù)作為輸出數(shù)據(jù),。由于顯示塊A和B的顯示數(shù)據(jù)是分別組織的,這時(shí)就要取RAM0的
,,
,,…,
和RAM1的
位作為輸出到顯示屏的
位數(shù)據(jù),,這就需要在兩塊RAM同時(shí)輸出的2
位中選擇需要的
位作為輸出數(shù)據(jù),,并且這
位數(shù)據(jù)是連續(xù)的
位數(shù)據(jù)。
顯示步驟(在此,,只考慮垂直移動(dòng)顯示效果):雙RAM技術(shù)將顯示數(shù)據(jù)輸出的時(shí)候,,是將兩塊RAM中相同地址的兩個(gè)數(shù)據(jù)同時(shí)輸出。所以,,如果設(shè)置RAM0為主存儲(chǔ)器,,RAM1為從存儲(chǔ)器,則將兩塊RAM的顯示數(shù)據(jù)存在一塊串行存儲(chǔ)器中的時(shí)候,,偶地址單元應(yīng)存儲(chǔ)RAM0的數(shù)據(jù),,奇地址單元存儲(chǔ)RAM1的數(shù)據(jù),由于數(shù)據(jù)寬度為8,,所以每次輸出16位數(shù)據(jù),。如果顯示區(qū)域中以( ,
)點(diǎn)為顯示起始點(diǎn),,在LED屏上顯示一屏顯示信息,,則其數(shù)據(jù)選擇控制位只與
、掃描線(xiàn)和掃描寬度
有關(guān)[3],。顯示區(qū)域的起始行坐標(biāo)為
,,一塊顯示區(qū)域有
行,則
所在的塊為:
這里討論 在實(shí)際顯示區(qū)域的坐標(biāo)沒(méi)有多大意義,,只須注意
在當(dāng)前顯示塊的相對(duì)坐標(biāo),,
就是
在當(dāng)前顯示塊的相對(duì)縱坐標(biāo),則相對(duì)坐標(biāo)為(
,,
),。動(dòng)態(tài)顯示的基礎(chǔ)是靜態(tài)顯示,靜態(tài)顯示以從特定行顯示一屏為特征,,當(dāng)顯示屏從第
行開(kāi)始顯示信息時(shí),,因?yàn)橐粔K顯示區(qū)域有
個(gè)數(shù)據(jù),則
所在塊顯示數(shù)據(jù)的起始地址為:
一塊顯示區(qū)域分為 個(gè)區(qū),,如圖2所示,,則
所在的分區(qū)記作:
一區(qū)存放有 個(gè)顯示數(shù)據(jù),所以
所在分區(qū)地址與所在塊起始地址之間的相對(duì)偏移地址為
,。所以,,只要知道了顯示信息的起始行坐標(biāo),就能得到顯示數(shù)據(jù)在存儲(chǔ)器中的存儲(chǔ)地址,。
因?yàn)?img alt="" border="0" height="24" src="http://files.chinaaet.com/images/20110110/02f16d67-467e-49bd-93f0-bcd1e19a3bdd.jpg" width="101" /> ,,記 ,,表示顯示信息跨越兩個(gè)數(shù)據(jù)塊時(shí),需要選擇的數(shù)據(jù)位數(shù),。存儲(chǔ)器輸出16位數(shù)據(jù)
后,,從
位控制選擇連續(xù)的8位數(shù)據(jù)
輸出到顯示屏。當(dāng)數(shù)據(jù)從一個(gè)字節(jié)的
位開(kāi)始輸出16位時(shí),,如
,,前面8位在當(dāng)前顯示是多余的幾位數(shù)據(jù),后面8位數(shù)據(jù)
正好是要輸出到顯示屏的8位數(shù)據(jù),,當(dāng)這16位數(shù)據(jù)串行輸出到一個(gè)8位的移位寄存器中時(shí),,移位寄存器剛好可以容納高8位數(shù)據(jù),并將其輸出顯示,。之后各列數(shù)據(jù)的輸出情況同樣如此,,不需要額外的指令或電路來(lái)對(duì)輸出數(shù)據(jù)進(jìn)行選擇輸出。
只是在每行第一列數(shù)據(jù)輸出前,,通過(guò)單片機(jī)模擬i個(gè)時(shí)鐘脈沖輸出到存儲(chǔ)器,,讓輸出數(shù)據(jù)產(chǎn)生錯(cuò)位,使數(shù)據(jù)從 位開(kāi)始輸出,。另外有一種情況,,當(dāng)顯示信息剛好是A、B,、C,、D塊中的某一塊時(shí),無(wú)須產(chǎn)生模擬脈沖對(duì)數(shù)據(jù)進(jìn)行選擇,,而是直接將數(shù)據(jù)輸出顯示,。通過(guò)分析可知,SPI模塊剛好具有這個(gè)功能,,通過(guò)單片機(jī)額外模擬
個(gè)時(shí)鐘脈沖,,輸出到串行存儲(chǔ)器的時(shí)鐘信號(hào)端,可以使數(shù)據(jù)錯(cuò)位,,從指定的某一位
開(kāi)始輸出,。當(dāng)顯示信息跨越
區(qū)間時(shí),此時(shí)如果一場(chǎng)顯示還沒(méi)有完畢,,內(nèi)存地址應(yīng)返回到
所在塊的起始地址,,并從起始地址開(kāi)始輸出顯示數(shù)據(jù),單片機(jī)模擬的脈沖數(shù)
也相應(yīng)發(fā)生變化[4],。
2 LED顯示屏控制系統(tǒng)設(shè)計(jì)
為了簡(jiǎn)化電路,,提高數(shù)據(jù)輸出效率,本控制系統(tǒng)采用RAMTRON(瑞創(chuàng))公司的帶SPI功能模塊的VRS51L3074單片機(jī),如圖3所示,。VRS51L3074單片機(jī)的時(shí)鐘頻率為40MHz,,指令周期短,處理速度快,,效率可以與ARM處理器媲美,,但是ARM處理器的價(jià)格要高得多,。VRS51L3074單片機(jī)工作電壓在3.3V左右,,但是可以兼容5V[5]。
圖3 LED顯示屏控制電路
2.1 VRS51L3074的SPI功能模塊
VRS51L3074單片機(jī)的SPI時(shí)鐘頻率可以在 范圍內(nèi)調(diào)整,,SPI時(shí)鐘頻率最高可以達(dá)到20MHz[6],。當(dāng)VRS51L3074作為SPI主機(jī)時(shí),可以對(duì)SPI運(yùn)行控制,、配置和狀態(tài)監(jiān)控以及其他的一些工作環(huán)境進(jìn)行設(shè)置:
配置寄存器SPICONFIG:主要對(duì)片選信號(hào)控制模式,、SPI中斷進(jìn)行設(shè)置。
狀態(tài)寄存器SPISTATUS:主要用于對(duì)SPI運(yùn)行狀態(tài)的監(jiān)控,。
傳輸字長(zhǎng)寄存器SPISIZE:設(shè)置傳輸字長(zhǎng),,本文設(shè)置為16位,即每次輸出16位數(shù)據(jù),。
控制寄存器SPICTRL:對(duì)SPI時(shí)鐘速率,、時(shí)鐘相位/極性、片選信號(hào),,以及SPI時(shí)鐘頻率進(jìn)行設(shè)置,。
數(shù)據(jù)寄存器SPIRXTX0~ SPIRXTX3:用于對(duì)SPI接口32位收發(fā)緩沖器的訪問(wèn),對(duì)數(shù)據(jù)寄存器執(zhí)行寫(xiě)操作是將數(shù)據(jù)送入發(fā)送緩沖器中,,對(duì)數(shù)據(jù)寄存器執(zhí)行讀操作是從接收緩沖器中取出收到的數(shù)據(jù),。SPI接口的發(fā)送和接收緩沖器都采用雙緩沖結(jié)構(gòu),從硬件上減少數(shù)據(jù)沖突并提高數(shù)據(jù)傳輸效率,。在主模式下對(duì)SPIRXTX0寄存器執(zhí)行寫(xiě)入操作將啟動(dòng)SPI傳輸,。當(dāng)傳輸字各行長(zhǎng)大于8時(shí),應(yīng)最后向SPIRXTX0寄存器寫(xiě)入,。
向串行FLASH輸入控制信號(hào)和數(shù)據(jù)地址后,,啟動(dòng)串行FLASH傳輸數(shù)據(jù),在SPI時(shí)鐘驅(qū)動(dòng)下,,輸出顯示數(shù)據(jù),。并且可以用單片機(jī)模擬串行FLASH時(shí)鐘信號(hào)控制任意位數(shù)據(jù)輸出。
2.2 數(shù)據(jù)選擇控制電路
設(shè)計(jì)的LED顯示屏控制系統(tǒng)如圖3所示,,VRS51L3074單片機(jī)內(nèi)部自帶精確的40MHz振蕩器,,不需要外部晶振電路提供系統(tǒng)時(shí)鐘,顯示數(shù)據(jù)使用內(nèi)存為16Mb的SST25VF016B,這是一款具有SPI接口的8PIN串行FLASH[7],。雙RAM技術(shù)輸出顯示數(shù)據(jù)的時(shí)候,,是將兩塊RAM中相同地址的兩個(gè)數(shù)據(jù)同時(shí)輸出,所以,,將兩塊RAM的顯示數(shù)據(jù)存放在一塊串行存儲(chǔ)器中的時(shí)候,,偶地址單元應(yīng)存儲(chǔ)RAM0的數(shù)據(jù),奇地址單元存儲(chǔ)RAM1的數(shù)據(jù),,數(shù)據(jù)輸出時(shí),,每次輸出16位數(shù)據(jù)。串行存儲(chǔ)器和單片機(jī)的工作電壓都在3.3V左右,,但是VRS51L3074單片機(jī)可以兼容5V,,簡(jiǎn)化了控制電路??刂菩盘?hào)和顯示數(shù)據(jù)在輸出到寄存器74LS164和顯示屏的時(shí)候,,需要用74LVC07進(jìn)行電平轉(zhuǎn)換。
控制系統(tǒng)控制顯示數(shù)據(jù)輸出的流程為:
?、賹呙杈€(xiàn)行地址通過(guò)P2端口的低四位送給LED顯示屏,。
②通過(guò)顯示數(shù)據(jù)在顯示區(qū)域中的位置,,計(jì)算顯示數(shù)據(jù)在存儲(chǔ)器中的地址,,并計(jì)算出數(shù)據(jù)選擇的位數(shù) 。
?、弁ㄟ^(guò)單片機(jī)P3.0口模擬移位脈沖,,輸出到串行FLASH時(shí)鐘信號(hào),移位脈沖數(shù)由數(shù)據(jù)選擇位數(shù) 決定,。使輸出數(shù)據(jù)產(chǎn)生錯(cuò)位,,正確的選擇輸出顯示數(shù)據(jù)。
?、軉?dòng)SPI讀取顯示數(shù)據(jù),, SPI傳輸字長(zhǎng)設(shè)置為16位。模擬脈沖已經(jīng)輸出到串行FLASH使數(shù)據(jù)產(chǎn)生了錯(cuò)位,,輸出16位數(shù)據(jù) ,,輸出到顯示屏的數(shù)據(jù)
在高8位,經(jīng)過(guò)移位剛好可以存放在移位寄存器中,,每行第一個(gè)數(shù)據(jù)輸出后,,以后此行各列數(shù)據(jù)都是直接輸出。
?、?6位數(shù)據(jù)輸出完畢后,,通過(guò)P3.1腳產(chǎn)生一個(gè)SCK脈沖,,將移位寄存器74LS164中的數(shù)據(jù)輸出移入到單元板的74HC595串行移位寄存器中。
?、拗貜?fù)第 eq oac(○,,4)4至 eq oac(○,5)5步,,直到一行數(shù)據(jù)全部輸出完畢后,,由P3.2 產(chǎn)生一個(gè)RCK脈沖,讀取的一行數(shù)據(jù)將輸出顯示,,然后掃描線(xiàn)下移一行,。
⑦重復(fù)第 eq oac(○,,1)1至 eq oac(○,,6)6步。
此電路有這樣幾個(gè)特點(diǎn):顯示數(shù)據(jù)從串行FLASH輸出后,,不經(jīng)單片機(jī)的處理,直接以“DMA”方式輸出到移位寄存器74LS164,,同時(shí)實(shí)現(xiàn)串并轉(zhuǎn)換,,節(jié)省數(shù)據(jù)處理時(shí)間,提高顯示效率,;在每場(chǎng)數(shù)據(jù)輸出之前,,通過(guò)信息在顯示區(qū)域中的地址計(jì)算數(shù)據(jù)選擇位數(shù) ,并通過(guò)P3.0 端口模擬
個(gè)脈沖輸出到串行FLASH,,移出
位數(shù)據(jù),,數(shù)據(jù)產(chǎn)生錯(cuò)位,使輸出顯示的數(shù)據(jù)在16位輸出數(shù)據(jù)的高8位,,可以直接存放在移位寄存器中,,輸出到顯示屏,以后同行各列的顯示數(shù)據(jù)輸出時(shí),,無(wú)需再進(jìn)行數(shù)據(jù)選擇位的判斷,,直接將顯示數(shù)據(jù)從存儲(chǔ)器中輸出到顯示屏。
存儲(chǔ)器效率分析:
表1 存儲(chǔ)器效率存儲(chǔ)器
存儲(chǔ)器 |
靜態(tài)顯示 |
一般垂直移動(dòng)顯示 |
雙RAM技術(shù)輸出顯示 |
η計(jì)算 |
|
|
|
效率 |
100% |
16% |
100% |
觀察表1可知,,在垂直移動(dòng)顯示使用雙RAM技術(shù)組織,,大大提高了存儲(chǔ)器效率,降低了顯示數(shù)據(jù)存儲(chǔ)器的占用,。當(dāng)顯示信息比較大時(shí),,動(dòng)態(tài)數(shù)據(jù)組織使用的存儲(chǔ)器比較大,利用率低,,而采用雙RAM技術(shù)正好解決這個(gè)問(wèn)題,。一塊RAM的效率是100%,,雙RAM是50%,當(dāng)有N塊RAM時(shí),,效率為 ,。
3 程序設(shè)計(jì)
針對(duì)圖3所示控制電路,按照數(shù)據(jù)輸出控制流程,,編寫(xiě)了一段程序,,隨機(jī)顯示一屏信息,顯示數(shù)據(jù)已按順序存儲(chǔ)在串行FLASH中,。
void display(unsigned int YL)
{ unsigned int i,,j,p;
unsigned char line,, unit_board_num,, board_i;
unsigned char code *ram_point, *block_addr,,* region_addr,,* ram_begin_addr;
block_addr=YL/(Bw*Sw) * (Sw*Dw); //所在塊的起始地址
region_addr=(YL%Sw)*Dw; /所在區(qū)的相對(duì)塊的相對(duì)地址
i=YL/Sw;
region_recod=YL%Sw; //此變量記錄顯示數(shù)據(jù)已進(jìn)入哪一區(qū)
ram_point=ram_begin_addr+block_addr+region_addr-1; // ram_begin_addr為數(shù)據(jù)起始地址
SPI_write_read(0x03); //向串行FLASH發(fā)讀命令,0x03為讀控制字
SPI_write_read(((ram_point & 0xffffff)》》16)); //3字節(jié)24位地址
SPI_write_read(((ram_point & 0xffff)》》8));
SPI_write_read (ram_point & 0xff);
unit_board_num=Dw/64; //計(jì)算單元板的數(shù)量
for(p=0;p
{ SCK=0; SCK=1; }
SCK=0;
for(line=0;line
{ SPISIZE=0x0f; //設(shè)置2字節(jié)16位傳輸方式
for( board_i=0;board_i
{ for(j=0;j《64;j++)
{ SPIRXTX0=ACC; //啟動(dòng)數(shù)據(jù)傳輸出
while((SPISTATUS & BIT1) == 0); //等待發(fā)送(接收)完成
LED_SCK=0;LED_SCK=1; //送入單元板
} }
EN=1,; //換行時(shí)暫關(guān)閉
P2=((P2&0xf0)|line);
if(region_recod》=Sw)
{ ram_point=ram_begin_addr+block_addr-1;
SPISIZE=0x07;
SPI_write_read(((ram_point & 0xffffff)》》16));
SPI_write_read(((ram_point & 0xffff)》》8));
SPI_write_read (ram_point & 0xff);
region_recod=0; i++;
if(i《=7)
for(p=0;p
{ SCK=0; SCK=1; }
SCK=0; }
RCK=1; RCK=0,; //產(chǎn)生74HC595輸出鎖存信號(hào)
EN=0; } //開(kāi)顯示
unsigned char SPI_write_read (unsigned char Wr_Rd_Data)
{ unsigned char Temp_Flag;
SPDR= Wr_Rd_Data; //啟動(dòng)SPI發(fā)送或接收
do //判斷發(fā)送或接收是否完成
{ Temp_Flag=SPSR&0x80;
}while(Temp_Flag!=0x80);
SPSR=SPSR&0x7F; //清SPI發(fā)送或接收完成標(biāo)志
return SPDR; } //返回SPI接收到的數(shù)據(jù)
結(jié) 論
本控制系統(tǒng)利用串行FLASH在輸出數(shù)據(jù)時(shí)的特點(diǎn),,最大的減少了數(shù)據(jù)處理的時(shí)間,,將顯示數(shù)據(jù)以“DMA”方式輸出到顯示屏,提高顯示效率,,并且彌補(bǔ)長(zhǎng)條顯示屏在顯示信息上的不足,。雙RAM技術(shù)大大提高了垂直移動(dòng)時(shí)的存儲(chǔ)器使用效率,所有的數(shù)據(jù)塊都是按靜態(tài)顯示方式組織數(shù)據(jù),,所以每一塊RAM的顯示數(shù)據(jù)效率都是100%,,雙RAM的效率為50%。
本文顯示數(shù)據(jù)存放在一塊FLASH中,,效率也為50%,,相比動(dòng)態(tài)顯示組織方式,降低了垂直移動(dòng)時(shí)顯示數(shù)據(jù)存儲(chǔ)器的占用,,提高存儲(chǔ)效率,。還可以雙RAM技術(shù)為基礎(chǔ),擴(kuò)展出多RAM方式,,提高顯示的高度,,增加每屏顯示信息,進(jìn)一步提高存儲(chǔ)效率,。本系統(tǒng)仍有改進(jìn)的空間,,譬如以雙RAM組織顯示數(shù)據(jù)后直接用兩個(gè)RAM來(lái)存放不同的數(shù)據(jù),,控制顯示數(shù)據(jù)直接輸出,提高輸出速率,。