基于單片機89C51和89C2051點陣LED圖文顯示
單片機89C51的P0.0~P0.3口(D0~D3)通過一個通用邏輯陣列GAL16V8D和三態收發器74HC245輸出用于行選通信號(OIA~OID),P3.0和P3.1經74HC245輸出用于列選通信號,如圖3所示。

圖3 行選通信號產生原理圖
行 驅動部分用兩個74HC138譯碼,將行選通信號作為兩個譯碼器地址輸入,可以得到16行的行值信號。考慮到74HC138的驅動能力有限,故LED陽極 通過三極管TIP127與電源相連,可提供2A左右的電流,74HC138輸出引腳僅需要提供幾個毫安的灌入電流即可控制其通斷。
列 輸入驅動由八個8位串行輸入,串行或并行輸出三態移位寄存器74HC595實現。該芯片具有串行輸入、并行輸出兩個獨立的時鐘信號。輸入數據在串行移位時 鐘SRCLK上升沿由串行輸入端SER 輸入到芯片內部串行移位寄存器中,同時, SQH端串行輸出;在鎖存時鐘信號RCLK上升沿到來時,芯片將內部串行移位寄存器8位數據并行輸出。正常工作時,應將復位端SRCLR與使能端RCLK 分別接高電平、低電平。單片機輸出信號直接與串入并出移位寄存器74HC595的鎖存器輸出端連接。列驅動電路原理圖如圖4所示。

圖4 列驅動電路原理圖
3 軟件系統
程 序可以實現與計算機的通信,可非常方便地任意修改所要顯示的漢字;并使顯示屏可固定、平移地顯示漢字。程序中將數據存儲器分為三個區:顯示緩沖區,數據存 儲區和接收緩沖區[4]。單片機通過串口接收PC機傳來的數據(包括顯示內容,顯示方式和顯示狀態)暫時放在接收緩沖區,處理后放入數據存儲區保存,然后 再根據顯示方式從數據存儲區中讀出數據放入顯示緩沖區用于顯示。顯示方式的實現取決于數據放入顯示緩沖區的順序,左移是從數據存儲區取出一位數放入顯示緩 沖區,上移是每次取出一行數據放到緩沖區,時間顯示是先把實時時鐘的數據放到顯示緩沖區。顯示時并不識別顯示緩沖區的數據,只是依次從顯示緩沖區提取數據 向顯示屏發送并送入相應的鎖存消隱和行值信號,完成掃描。程序功能框圖如圖5所示。

圖5 程序功能框圖
軟 件系統采用模塊化結構,包括主程序、顯示子程序和串口中斷服務程序。主程序為順序結構,完成堆棧、中斷、串口的初始化設置后,循環調用顯示子程序,以及響 應串行接收或發送中斷;顯示子程序從顯示緩沖區取出字模,輸出行選通信號至P0口并通過一個通用邏輯陣列GAL16V8D輸出,配合列掃描信號,進行動態 掃描顯示;中斷服務程序串口接收PC機發送的漢字機內碼數據,實現與計算機實時通信。程序各部分的功能,由各個模塊分別實現。程序模塊有: 串口初始化模塊、數據輸入模塊、漢字首地址計算模塊、取字模塊、顯示模塊和移動模塊。
4 結束語
本 文的點陣LED顯示系統以單片機89C51為基礎,加以外圍電路,利用RS-232接口實現與計算機實時通信,可實現漢字、數字及各種字符的多種方式和速 度的顯示。經實際應用驗證,本條屏作為信息顯示屏,工作穩定,字符清晰,字體美觀,亮度適中,根據需要可選擇多種顯示字幕效果,并具有分布靈活、擴展方便 等優點。
評論