基于單片機89C51和89C2051點陣LED圖文顯示
單片機89C51的P0.0~P0.3口(D0~D3)通過一個通用邏輯陣列GAL16V8D和三態(tài)收發(fā)器74HC245輸出用于行選通信號(OIA~OID),P3.0和P3.1經(jīng)74HC245輸出用于列選通信號,如圖3所示。
圖3 行選通信號產(chǎn)生原理圖
行 驅(qū)動部分用兩個74HC138譯碼,將行選通信號作為兩個譯碼器地址輸入,可以得到16行的行值信號??紤]到74HC138的驅(qū)動能力有限,故LED陽極 通過三極管TIP127與電源相連,可提供2A左右的電流,74HC138輸出引腳僅需要提供幾個毫安的灌入電流即可控制其通斷。
列 輸入驅(qū)動由八個8位串行輸入,串行或并行輸出三態(tài)移位寄存器74HC595實現(xiàn)。該芯片具有串行輸入、并行輸出兩個獨立的時鐘信號。輸入數(shù)據(jù)在串行移位時 鐘SRCLK上升沿由串行輸入端SER 輸入到芯片內(nèi)部串行移位寄存器中,同時, SQH端串行輸出;在鎖存時鐘信號RCLK上升沿到來時,芯片將內(nèi)部串行移位寄存器8位數(shù)據(jù)并行輸出。正常工作時,應(yīng)將復(fù)位端SRCLR與使能端RCLK 分別接高電平、低電平。單片機輸出信號直接與串入并出移位寄存器74HC595的鎖存器輸出端連接。列驅(qū)動電路原理圖如圖4所示。
圖4 列驅(qū)動電路原理圖
3 軟件系統(tǒng)
程 序可以實現(xiàn)與計算機的通信,可非常方便地任意修改所要顯示的漢字;并使顯示屏可固定、平移地顯示漢字。程序中將數(shù)據(jù)存儲器分為三個區(qū):顯示緩沖區(qū),數(shù)據(jù)存 儲區(qū)和接收緩沖區(qū)[4]。單片機通過串口接收PC機傳來的數(shù)據(jù)(包括顯示內(nèi)容,顯示方式和顯示狀態(tài))暫時放在接收緩沖區(qū),處理后放入數(shù)據(jù)存儲區(qū)保存,然后 再根據(jù)顯示方式從數(shù)據(jù)存儲區(qū)中讀出數(shù)據(jù)放入顯示緩沖區(qū)用于顯示。顯示方式的實現(xiàn)取決于數(shù)據(jù)放入顯示緩沖區(qū)的順序,左移是從數(shù)據(jù)存儲區(qū)取出一位數(shù)放入顯示緩 沖區(qū),上移是每次取出一行數(shù)據(jù)放到緩沖區(qū),時間顯示是先把實時時鐘的數(shù)據(jù)放到顯示緩沖區(qū)。顯示時并不識別顯示緩沖區(qū)的數(shù)據(jù),只是依次從顯示緩沖區(qū)提取數(shù)據(jù) 向顯示屏發(fā)送并送入相應(yīng)的鎖存消隱和行值信號,完成掃描。程序功能框圖如圖5所示。
圖5 程序功能框圖
軟 件系統(tǒng)采用模塊化結(jié)構(gòu),包括主程序、顯示子程序和串口中斷服務(wù)程序。主程序為順序結(jié)構(gòu),完成堆棧、中斷、串口的初始化設(shè)置后,循環(huán)調(diào)用顯示子程序,以及響 應(yīng)串行接收或發(fā)送中斷;顯示子程序從顯示緩沖區(qū)取出字模,輸出行選通信號至P0口并通過一個通用邏輯陣列GAL16V8D輸出,配合列掃描信號,進行動態(tài) 掃描顯示;中斷服務(wù)程序串口接收PC機發(fā)送的漢字機內(nèi)碼數(shù)據(jù),實現(xiàn)與計算機實時通信。程序各部分的功能,由各個模塊分別實現(xiàn)。程序模塊有: 串口初始化模塊、數(shù)據(jù)輸入模塊、漢字首地址計算模塊、取字模塊、顯示模塊和移動模塊。
4 結(jié)束語
本 文的點陣LED顯示系統(tǒng)以單片機89C51為基礎(chǔ),加以外圍電路,利用RS-232接口實現(xiàn)與計算機實時通信,可實現(xiàn)漢字、數(shù)字及各種字符的多種方式和速 度的顯示。經(jīng)實際應(yīng)用驗證,本條屏作為信息顯示屏,工作穩(wěn)定,字符清晰,字體美觀,亮度適中,根據(jù)需要可選擇多種顯示字幕效果,并具有分布靈活、擴展方便 等優(yōu)點。
評論