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

          新聞中心

          EEPW首頁 > 光電顯示 > 設(shè)計應(yīng)用 > 基于AVR的LED數(shù)字大屏幕的設(shè)計與實現(xiàn)

          基于AVR的LED數(shù)字大屏幕的設(shè)計與實現(xiàn)

          作者: 時間:2006-07-12 來源:網(wǎng)絡(luò) 收藏
          1引言

            顯示屏是八十年代后期在全球迅速發(fā)展起來的新型信息顯示媒體,應(yīng)用越來越廣泛。ATMEGA16L單片機是一款 RISC 的、低功耗CMOS 8 位單片機,具有16K字節(jié)的自編程FLASH, 512字節(jié)的EEPROM, 1K字節(jié)的SRAM, 通過單片機來控制的顯示,結(jié)構(gòu)簡單,應(yīng)用靈活,并且易于擴展。

          2 系統(tǒng)原理

          2.1 編碼

            編碼有兩個過程:字庫提取以及字模編碼轉(zhuǎn)換。字庫的提取涉及到的兩個字庫文件,一個為ASC16,專門存放ASCII編碼;另一個為HZK16,專門存放漢字字庫編碼。要提取字庫,首先要對它進行初始化,即打開字庫。然后根據(jù)一個字符提取它相應(yīng)的編碼。首先取出字符的內(nèi)碼后(注意區(qū)分單字節(jié)和雙字節(jié)的內(nèi)碼),接著通過內(nèi)碼得到該字符對應(yīng)的字模的編碼在ASCII或HZK16內(nèi)的偏移量,最后就可以根據(jù)這個地址在文件中的偏移位置找到相應(yīng)的字模編碼,我們可以通過這個公式來計算:

            在ASCII中,偏移量=(內(nèi)碼的低地址)*16,

            在HZK16中,偏移量= ((內(nèi)碼的高地址-161)*94 + (內(nèi)碼的低地址-161))*32。

            此時得到的字模編碼不是最終所要的編碼(單字節(jié)數(shù)據(jù)如英文是按8*16點陣來顯示,而雙字節(jié)數(shù)據(jù)時如漢字是按16*16點陣來顯示的)。這里統(tǒng)一使用8*16點陣,這就需要對其轉(zhuǎn)換。下圖左表格表示的是漢字編碼在字庫內(nèi)存放順序,右表格表示的是經(jīng)過轉(zhuǎn)換過后的編碼存放順序。編碼轉(zhuǎn)換過程如圖1所示:

                     圖1 編碼轉(zhuǎn)換

          2.2 矩陣轉(zhuǎn)換移位算法

            
          矩陣轉(zhuǎn)換移位算法目的就是如何把這些原始的數(shù)據(jù)轉(zhuǎn)換成串行的數(shù)據(jù), 以便把數(shù)據(jù)正確的輸入到74HC595。原始的數(shù)據(jù)必須要對其轉(zhuǎn)換。下面為它的算法。

          for(m=0;m8;m++)       //m表示的是第幾個

            {? for(j=0;j8;j++)   //j表示的是某個LED的第幾排數(shù)據(jù)

            {? for(i=0;i8;i++)   //i表示的是取某個LED的第某排數(shù)據(jù)的第幾位

            { displayport_a[m][j]|=((displaycode_a[i][m]0x01)

                displaycode_a[i][m]=displaycode_a[i][m]>>1;

                         // displayport_a[m][j]表示存放已轉(zhuǎn)換好數(shù)據(jù)

                         // displaycode_a[i][m]表示存放的是原始數(shù)據(jù)

          //‘|’表示相或,‘&’表示相與,‘’表示左移

          }

          }

          }

          2.3 上位機和下位機的通信

            
          上位機和下位機的通信主要是通過RS232接口進行的,對于上位機的數(shù)據(jù)傳輸?shù)乃俾蕿?600bps。為了便于數(shù)據(jù)的傳輸和接收,可以給要傳輸數(shù)據(jù)的前后加上標志位。如果數(shù)據(jù)發(fā)送量大,在發(fā)送數(shù)據(jù)時還可采用線程的方式來發(fā)送。而下位機接收數(shù)據(jù)則可采用單片機內(nèi)全雙工的通用異步收發(fā)器(UART)來進行。

            UART有中斷和查詢兩種工作方式,UART初始化需要設(shè)置相關(guān)幾個控制寄存器,我們可以把UART幾個控制寄存器的初始化情況表示出來:

            UCR = 0x00 設(shè)置波特率時要先關(guān)閉UART

            UBRR = 0x33 設(shè)置波特率為9600bps

            UCR = 0xD8 打開串口:8位數(shù)據(jù)

            UART如何接收和發(fā)送數(shù)據(jù)通過數(shù)據(jù)寄存器UDR完成。UDR雖然只有一個地址,但是在物理上分離了二個寄存器,一個用于發(fā)送,一個用于接收。對于數(shù)據(jù)的接收和發(fā)送采用中斷的方式,其中斷向量為12,即是interrupt handler uart0_rx_isr:12。接收和發(fā)送方式如下:

            Receive=UDR 接收一個數(shù)據(jù)

            UDR= Send  發(fā)送一個數(shù)據(jù)

          2.4 顯示原理

            要想點亮LED,必須把LED的位選數(shù)據(jù)信號置成低電平。顯示的過程如下:首先是將74HC595的RCK置0,再從相應(yīng)數(shù)組中取出要顯示的數(shù)據(jù)和位選信號,通過SCK的一個上升沿脈沖,就可以將這個數(shù)據(jù)輸入74HC595,等所有的數(shù)據(jù)打入相應(yīng)的芯片后最后再把RCK置1,這些數(shù)據(jù)就可以通過74HC595并行的傳輸出去。

          3 系統(tǒng)的設(shè)計方案

            硬件總體框架的設(shè)計是根據(jù)上位機與下位機通信原理以及LED點陣顯示原理和74HC595的特性所構(gòu)成的。下面的圖2說明的是LED點陣顯示驅(qū)動原理圖及其連線方式。


                  圖2 LED點陣顯示驅(qū)動原理圖

            PA、PB口將作為數(shù)據(jù)輸出口,一共連接16個8*8的LED。端口的每一個引腳將作為74HC595的數(shù)據(jù)輸入端。RCK、SCK的并聯(lián)的使用的目的是為了LED字符的同步顯示。在線路連接中Q`H必須連接SI,因為根據(jù)74HC595的特性,如果輸入的數(shù)據(jù)數(shù)大于8,那么前面的數(shù)據(jù)將會被自動溢出,根據(jù)這一思想就將兩個芯片連接起來,按照先輸入8位數(shù)據(jù)信號,再輸入8位位選信號的順序,那么正好前一個74HC595存放位選信息,后一個74HC595存放數(shù)據(jù)信息。

            根據(jù)系統(tǒng)的設(shè)計原理,得出如下圖3的軟件流程框架:


                              圖3  軟件流程框架

          4 結(jié)論

            對于目前這個顯示系統(tǒng),優(yōu)點在于電路簡單,成本較低。如果系統(tǒng)需要更大的字符顯示庫,只需要擴展的RAM或EEPROM,并且用多個AVR單片機進行的通訊即可。當然,這時需要注意數(shù)據(jù)寫入時間問題,以免造成顯示的不同步。

          參考文獻
          [1]丁化成,耿德根,李君凱. AVR單片機應(yīng)用設(shè)計[M].北京:北京航空航天大學出版社,2002
          [2]沈文,Eagle lee,詹衛(wèi)前. AVR單片機.C語言開發(fā)入門指導(dǎo)[M].北京:清華大學出版社,2003
          [3] 金春林, 邱慧芳, 張皆喜. AVR系列單片機---C語言編程與應(yīng)用實例[M].北京:清華大學出版社 2003
          [4] 劉樂善, 歐陽星明 ,劉學清. 微型計算機接口技術(shù)及應(yīng)用[M].武漢:華中科技大學出版社,2000



          評論


          相關(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); })();