16*16點陣LED屏單片機學習板是一款非常適合有一定單片機基礎的客戶選購,我們設計的這款點陣屏硬件成熟可靠,LED亮度充足而且均勻圖像清晰穩定無串擾,顯示效果非常理想,既可以顯示靜態的圖形和文字也能通過編程讓圖形和文字運動起來,運動方式靈活多樣可以平移、下降、激光掃描、滾動播出等等,大家一定看到過商場門口的紅色流動字幕吧?只要你有足夠的耐心你也能實現這個效果!
一個 16*16點陣LED屏單片機學習板:
?
硬件資源:
1、一片AT89S51單片機
2、由4個8*8點陣LED模塊組成一個16X16點陣LED
3、4個按鍵開關(功能預留)
4、一個REST手動復位按鍵
5、一個DS1302時鐘芯片、CR2032斷電記憶電池座、蜂鳴器(功能預留)。
6、電路板大小:204*100*15 毫米
注意:本電路板耗電較大,正常工作時LM7805穩壓器比較燙手,有條件的客戶可以加裝散熱器或者直接用5V/1A開關電源供電(跳過7805穩壓器)
詳細配套軟件資料:
1、由下向上滾動的“單片機是工業中最基礎的運用......”匯編語言完整源程序
2、PDF格式的原理圖、裝配安裝示意圖
3、配有中、英文字模資料、示范程序
工作原理分析:
從理論上說,不論顯示圖形還是文字,只要控制與組成這些圖形或文字的各個點所在位置相對應的LED器件發光,就可以得到我們想要的顯示結果,這種同時控制各個發光點亮滅的方法稱為靜態驅動顯示方式。16×16的點陣共有256個發光二極管,顯然單片機沒有這么多端口,如果我們采用鎖存器來擴展端口,按8位的鎖存器來計算,1 6×16的點陣需要256/8=32個鎖存器。這個數字很龐大,因為我們僅僅是16×16的點陣,在實際應用中的顯示屏往往要大得多,這樣在鎖存器上花的成本將是一個很龐大的數字。
因此在實際應用中的顯示屏都不采用這種設計,而采用另一種稱為動態掃描的顯示方法。動態掃描的意思簡單地說就是逐行輪流點亮,這樣掃描驅動電路就可以實現多行(比如16行)的同名列共用一套列驅動器。具體就1 6×16的點陣來說,把所有同l行的發光管的陽極連在一起,把所有同一列的發光管的陰極連在一起(共陽的接法),先送出對應第1行發光管亮滅的數據并鎖存,然后選通第l行使其燃亮一定的時間,然后熄滅;再送出第2行的數據并鎮存,然后選通第2行使其燃亮相同的時間,然后熄滅;-…?第16行之后,又重新燃亮第1行,腹輪回。當這樣輪回的速度足夠快(每秒24次以上),由于人眼的視覺暫留現象,就能看到顯示屏上穩定的圖形了。
采用掃描方式進行顯示時,每行有一個行驅動器,各行的同名列共用一個列驅動器。顯示數據通常存儲在單片機的存儲器中,按8位一個字節的形式順序排放。顯示時要把一行中各列的數據都傳送到相應的列驅動器上去,這就存在一個顯示數據傳輸的問題。從控制電路到列驅動器的數據傳輸可以采用并行方式或串行方式。顯然,采用并行方式時,從控制電路到列驅動器的線路數量大,相應的硬件數目多。當列數很多時,并行傳輸的方案是不可取的。
采用串行傳輸的方法,控制電路可以只用一根信號線,將列數據一位一位傳往列驅動器,在硬件方面無疑是十分經濟的。但是,串行傳輸過程較長,數據按順序一位一位地輸出給列驅動器,只有當一行的各列數據都已傳輸到位之后,這一行的各列才能并行地進行顯示。這樣,對于一行的顯示過程就可以分解成列數據準備(傳輸)和列數據顯示兩個部分。對于串行傳輸方式來說,列數據準備時間可能相當長.在行掃描周期確定的情況下,留給行顯示的時間就太少了,以致影響到LED的亮度。
解決串行傳輸中列數據準備和列數據顯示的時間矛盾問題,可以采用重疊處理的方法。即在顯示本行各列數據的同時,傳送下一行的列數據。為了達到重疊處理的目的,列數據的顯示就需要具有鎖存功能。經過上述分析,可以歸納出列驅動器電路應具備的主要功能。對于列數據準備來說,它應能實現串人并出的移位功能;對于列數據顯示來說,應具有并行鎖存的功能。這樣,本行已準備好的數據打入并行鎖存器進行顯示時,串并移位寄存器就可以準備下一行的列數據,而不會影響本行的顯示。
?
硬件電路大致上可以分成單片機系統及外圍電路、列驅動電路和行驅動電路三部分
單片機系統及外圍電路:
單片機采用89C51或其兼容系列的芯片,采用24MHz或更高頻率的晶振,以獲得較高的刷新頻率,使顯示更穩定。單片機的串口與列驅動器相連,用來送顯示數據。P1口低4位與行驅動器相連,送出行選信號;P1.5~P1.7口則用來發送控制信號。PO和P2口空著,在有必要時可以擴展系統的ROM和RAM。
列驅動電路:
列驅動電路由集成電路74HC595構成。它具有一個8位串人并出的移位寄存器和一個8位輸出鎖存器的結構,而且移位寄存器和輸出鎖存器的控制是各自獨立的,可以實現在顯示本行各列數據的同時,傳送下一行的列數據,即達到重疊處理的目的。
它的輸入側有8個串行移位寄存器,每個移位寄存器的輸出都連接一個輸出鎖存器。引腳SI是串行數據的輸入端。引腳SCK是移位寄存器的移位時鐘脈沖,在其上升沿發生移位,并將SI的下一個數據打人最低位。移位后的各位信號出現在各移位寄存器的輸出端,也就是輸出鎖存器的輸入端。RCK是輸出鎖存器的打人信號,其上升沿將移位寄存器的輸出打人到輸出鎖存器。引腳G是輸出三態門的開放信號,只有當其為低時鎖存器的輸出才開放,否則為高阻態。SCLR信號是移位寄存器的靖0輸入端,當其為低時移位寄存器的輸出全部為o。由于SCK和RCK兩個信號是互相獨立的,所以能夠做到輸人串行移位與輸出鎖存互不干擾。芯片的輸出端為QA~QH.最高位QH可作為多片74HC595級聯應用時,向上一級的級聯輸出。但因QH受輸出鎖存器打人控制,所以還從輸出鎖存器前引出了QH’,作為與移位寄存器完全同步的級聯輸出。
行驅動電路:
單片機P1口低4位輸出的行號經4/16線譯碼器74LSl54譯碼后生成1 6條行選通信號線,再經過驅動器驅動對應的行線。一條行線上要帶動16列的LED進行顯示,按每一LED器件20 mA電流計算,16個LED同時發光時,需要320 mA電流,選用三極管8550作為驅動管可滿足要求。
系統程序的設計
顯示屏軟件的主要功能是向屏體提供顯示數據,并產生各種控制信號,使屏幕按設計的要求顯示。根據軟件分層次設計的原理,可把顯示屏的軟件系統分成兩大層:第一層是底層的顯示驅動程序,第二層是上層的系統應用程序。顯示驅動程序負責向屏體送顯示數據,并負責產生行掃描信號和其它控制信號,配合完成LED顯示屏的掃描顯示工作。顯示驅動程序由定時器T0中斷程序實現。系統應用程序完成系統環境設置(初始化)、顯示效果處理等工作,由主程序來實現。
從有利于實現較復雜的算法(顯示效果處理)和有利于程序結構化考慮,顯示屏程序適宜采用c語言編寫。
顯示驅動程序:
顯示驅動程序在進人中斷后首先要對定時器T0重新賦初值,以保證顯示屏刷新率的穩定,1/16掃描顯示屏的刷新率(幀頻)計算公式如下:
刷新率(幀頻)=1/16×T0溢出率=1/16×fosc/12(65536—to) 其中fosc為晶振頻率,to為定時器T0初值(工作在16位定時器模式)。
然后顯示驅動程序查詢當前燃亮的行號,從顯示緩存區內讀取下一行的顯示數據,并通過串口發送給移位寄存器。為消除在切換行顯示數據的時候產生拖尾現象,驅動程序先要關閉顯示屏,即消隱,等顯示數據打人輸出鎖存器并鎖存,然后再輸出新的行號,重新打開顯示。
圖7.4 顯示驅動程序流程圖
?
系統主程序:
系統主程序開始以后,首先是對系統環境初始化,包括設置串口、定時器、中斷和端口;然后向上滾動顯示“單片機是工業中最基礎的運用......”。由于單片機沒有停機指令,所以可以設置系統程序不斷地循環執行上述顯示效果。
裝配圖片
?
評論
查看更多