<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于單片機(jī)的LED顯示屏控制系統(tǒng)設(shè)計(jì)

          基于單片機(jī)的LED顯示屏控制系統(tǒng)設(shè)計(jì)

          作者: 時(shí)間:2013-01-18 來源:網(wǎng)絡(luò) 收藏

          基于單片機(jī)的LED顯示屏控制系統(tǒng)設(shè)計(jì)

            這里討論YL在實(shí)際顯示區(qū)域的坐標(biāo)沒有多大意義,只須注意YL在當(dāng)前顯示塊的相對(duì)坐標(biāo),NL=YL%(Bw·Sw)就是YL在當(dāng)前顯示塊的相對(duì)縱坐標(biāo),則相對(duì)坐標(biāo)為(NL,YL)。動(dòng)態(tài)顯示的基礎(chǔ)是靜態(tài)顯示,靜態(tài)顯示以從特定行顯示一屏為特征,當(dāng)顯示屏從第YL行開始顯示信息時(shí),因?yàn)橐粔K顯示區(qū)域有Sw·Dw個(gè)數(shù)據(jù),則YL所在塊顯示數(shù)據(jù)的起始地址為:

          基于單片機(jī)的LED顯示屏控制系統(tǒng)設(shè)計(jì)

            一塊顯示區(qū)域分為Sw個(gè)區(qū),則YL所在的分區(qū)記作:

          基于單片機(jī)的LED顯示屏控制系統(tǒng)設(shè)計(jì)

            一區(qū)存放有Dw個(gè)顯示數(shù)據(jù),所以YL所在分區(qū)地址與所在塊起始地址之間的相對(duì)偏移地址為(YL%Sw)·Dw。所以,只要知道了顯示信息的起始行坐標(biāo),就能得到顯示數(shù)據(jù)在存儲(chǔ)器中的存儲(chǔ)地址。

            NL=YL/(Bw·Sw),這里記i=NL/Sw(0≤i≤7),表示顯示信息跨越兩個(gè)數(shù)據(jù)塊時(shí)需要選擇的數(shù)據(jù)位數(shù)。存儲(chǔ)器輸出16位數(shù)據(jù)[D0,D1,…,D15]后,從Di位控制選擇連續(xù)的8位數(shù)據(jù)[Di,Di+1,…,D7,…,D7+i]輸出到顯示屏。當(dāng)數(shù)據(jù)從一個(gè)字節(jié)的Di位開始輸出16位時(shí),如[Di,Di+1,…,D7,…,D15,D0,…,Di-1],前面8位在當(dāng)前顯示是多余的幾位數(shù)據(jù),后面8位數(shù)據(jù)[D8+i,…,D15,D0,…,Di-1]正好是要輸出到顯示屏的8位數(shù)據(jù)。當(dāng)這16位數(shù)據(jù)串行輸出到一個(gè)8位的移位寄存器中時(shí),移位寄存器剛好可以容納高8位數(shù)據(jù),并將其輸出顯示。之后各列數(shù)據(jù)的輸出情況同樣如此,不需要額外的指令或電路來對(duì)輸出數(shù)據(jù)進(jìn)行選擇輸出。只是在每行第一列數(shù)據(jù)輸出前,通過模擬i個(gè)時(shí)鐘脈沖輸出到存儲(chǔ)器,讓輸出數(shù)據(jù)產(chǎn)生錯(cuò)位,使數(shù)據(jù)從Di位開始輸出。另外,當(dāng)顯示信息剛好是A、B、C、D塊中的某一塊時(shí),無須產(chǎn)生模擬脈沖對(duì)數(shù)據(jù)進(jìn)行選擇,而是直接將數(shù)據(jù)輸出顯示。通過分析可知,SPI模塊剛好具有這個(gè)功能,通過額外模擬i個(gè)時(shí)鐘脈沖,輸出到串行存儲(chǔ)器的時(shí)鐘信號(hào)端,可以使數(shù)據(jù)錯(cuò)位,從指定的某一位Di開始輸出。當(dāng)顯示信息跨越Sw-1區(qū)間時(shí),如果一場(chǎng)顯示還沒有完畢,內(nèi)存地址應(yīng)返回到Y(jié)L所在塊的起始地址,并從起始地址開始輸出顯示數(shù)據(jù),模擬的脈沖數(shù)i也相應(yīng)發(fā)生變化。

          2 、設(shè)計(jì)

            控制電路。為了提高數(shù)據(jù)輸出效率,采用RAMtron公司的帶SPI功能模塊的VRS51L3074單片機(jī)。VRS51L3074的時(shí)鐘頻率為40 M-Hz,指令周期短,處理速度快,效率高;工作電壓在3.3 V左右,但是可以兼容5 V。SST25VF016B是一款具有SPI接口的8引腳串行Flash。7 4LSl64為移位寄存器。

            2.1 VRS51L3074的SPI功能模塊

            VRS51L3074的SPI時(shí)鐘頻率可以在SysClk/2~SysClk/10

          24范圍內(nèi)調(diào)整,SPI時(shí)鐘頻率最高可以達(dá)到20MHz。當(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ā)緩沖器的訪問,對(duì)數(shù)據(jù)寄存器執(zhí)行寫操作是將數(shù)據(jù)送入發(fā)送緩沖器中,對(duì)數(shù)據(jù)寄存器執(zhí)行讀操作是從接收緩沖器中取出收到的數(shù)據(jù)。SPI接口的發(fā)送和接收緩沖器都采用雙緩沖結(jié)構(gòu),從硬件上減少數(shù)據(jù)沖突并提高數(shù)據(jù)傳輸效率。在主模式下對(duì)SPIRXTX0寄存器執(zhí)行寫入操作將啟動(dòng)SPI傳輸。當(dāng)傳輸字各行長(zhǎng)大于8時(shí),應(yīng)最后向SPIRXTX0寄存器寫入。

            向串行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ù)選擇控制電路

            如圖3所示,VRS51L3074單片機(jī)內(nèi)部自帶精確的40 MHz振蕩器,不需要外部晶振電路提供系統(tǒng)時(shí)鐘。數(shù)據(jù)顯示采用內(nèi)存為16 Mb的SST25VF016B。雙RAM技術(shù)輸出顯示數(shù)據(jù)的時(shí)候,是將兩塊RAM中相同地址的兩個(gè)數(shù)據(jù)同時(shí)輸出,所以,將兩塊RAM的顯示數(shù)據(jù)存放在一塊串行存儲(chǔ)器中時(shí),偶地址單元應(yīng)存儲(chǔ)RAM0的數(shù)據(jù),奇地址單元存儲(chǔ)RAMl的數(shù)據(jù),數(shù)據(jù)輸出時(shí)每次輸出16位數(shù)據(jù)。串行存儲(chǔ)器和單片機(jī)的工作電壓都在3.3 V左右,但是VRS51L3074可以兼容5V,簡(jiǎn)化了控制電路。控制信號(hào)和顯示數(shù)據(jù)在輸出到寄存器74LS164和顯示屏的時(shí)候,需要用74LVC07進(jìn)行電平轉(zhuǎn)換。

          陀螺儀相關(guān)文章:陀螺儀原理




          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();