摘 要:本文主要介紹了利用單片機對點陣塊進行控制,外加時鐘芯片DS1302、按鍵對其功能進行擴展。討論了利用數字芯片對點陣列、行的驅動及單片機的掃描使其顯示漢字,字符,通過讀取DS1302里面的時間顯示到點陣上,接收按鍵的指示改變相應的程序對其顯示內容進行改變。通過本設計可以了解單片機的工作過程以及對外圍器件進行的控制。
關鍵詞:單片機;STC89C52;DS1302;點陣顯示屏
中圖分類號:TP368.1 文獻標識碼:A 文章編號:1674-7712 (2015) 02-0000-02
本文以STC89C52為主控外加數字芯片74LS154及三極管掃描點陣塊,根據人眼的視覺暫留來顯示漢字及圖形文字。同時也可以對時鐘芯片DS1302進行讀取時間顯示到點陣上。
一、設計要求與目的
本設計要求運用STC89C52單片機,四塊8*8點陣塊及一些數字芯片,設計出一個點陣顯示屏,使其能顯示漢字、時間、圖形等,同時利用按鍵可對其顯示內容進行改動。
作品設計好后,初始狀態移動顯示字幕,當按一下第一個按鍵時顯示屏幕切換到單獨顯示字幕,當按兩下第一個按鍵時屏幕顯示時間,當按三下第一個按鍵時屏幕顯示一個心形,同時按第二個按鍵可以更改其它圖形。在顯示時間的同時按后兩個按鍵對時間進行更改。
二、電路設計
(一)設計方案
本設計采用并行方式顯示,這種方式也可以驅動多個由四個8*8點陣塊組成的點陣模塊。行信號直接接到單片機的P口上,驅動用三極管8550進行電流放大;列信號用數字譯碼芯片74LS154來實現。通過對74LS154的增加可增加列的個數,每增加一個74LS154可增加一個16*16的點陣模塊。采用并行方式顯示,直接將取得的字模通過單片機P口傳送到點陣上,這樣使得掃描速度增快,減少了單片機的工作時間。
(二)硬件電路設計
1.電路原理圖
2.電路工作原理
本設計利用單片機的P1口、P3口經三極管8550放大電流來驅動16*16點陣模塊的行;利用單片機的P2口低四位作為74LS154的輸入端,通過74LS154的譯碼依次控制16*16點陣模塊的列。利用取字模軟件對所顯示的字進行取數據,通過P1口、P3口依次送到點陣上,在經過列的快速掃描使其顯示出字、符號等。
通過單片機與DS1302時鐘芯片的通信對其進行讀、寫來獲得精確地時間,同時給DS1302時鐘芯片加上備用電池在電源掉電時也能精確的計時。通過外接的按鍵對其時間進行修改。
在P2口的高四位設計了獨立按鍵,按鍵向單片機輸入不同的數據單片機對按鍵進行處理執行相應的程序來控制不同的顯示內容。
3.主控部分
主控部分采用了STC89C52單片機,它應用廣泛、集成度高、功能強大、體積小、功耗低、使用方便、下載電路簡單。
單片機若想工作必須有最小系統。最小系統包括兩部分,復位電路和時鐘電路。復位是單片機整個系統的初始化操作,其主要功能是把CP初始化為0000H,使單片機從0000H地址單元開始執行程序。當程序運行出錯或操作錯誤使系統處于死鎖狀態時,為擺脫困境,可以按復位鍵以重新啟動,也可以通過監視定時器來使系統復位。在振蕩運行的情況下,要實現復位操作,必須使RST引腳至少保持兩個機器周期的高電平,這樣才能實現復位。
時鐘電路是用于產生單片機工作時所需的時鐘信號的電路。在XTAL1和XATL2引腳上接石英晶體和電容組成的并聯諧振電路使之產生自激振蕩,給單片機以時鐘信號使單片機正常工作。石英晶體可選用5MHz-80MHz,電容可選用22PF-40pF無極性瓷片電容。
4.行驅動及列選擇部分
本電路設計是用單片機的P1口、P3口經三極管8550放大后直接接到16*16點陣模塊的行上。用4線16線譯碼器74LS154對列進行選擇,當輸入端輸入0000時選中了輸出端Y0也就是點陣模塊的第一列,當輸入端輸入0001時選中了輸出端Y1也就是點陣模塊的第二列,依次對十六列進行掃描。
5.時鐘控制部分
考慮到時間的準確度和芯片價格問題,本設計選用了DALLAS公司推出的涓流充電時鐘芯片DS1302。它內部含有一個實時時鐘/日歷和31字節靜態RAM。通過簡單的串行接口與單片機進行通信,實時時鐘/日歷電路提供秒、分、時、日、月、年、星期的信息,每月的天數和閏年的天數可自動調整。時鐘操作可通過AM/PM指示決定采用24或者12小時格式。
DS1302與單片機之間能簡單地采用同步串行的方式進行通信,僅需用到三個口線:(1)RES(復位);(2)I/O(數據線);(3)SCLK(串行時鐘)。時鐘/RAM的讀/寫數據以一個字節或多達31字節的字符組方式通信,DS1302工作時功耗很低,保持數據和時鐘信息時功率小于1mW。
本設計利用單片機的I/O進行串行數字傳送,來讀取DS1302里面的時間,經過主控部分的相應處理把它顯示在點陣上。
6.外部控制部分
外部控制部分采用的復位是按鍵。當按下復位式按鍵時兩觸點接觸,當按鍵抬起時觸點斷開。本設計把按鍵的一端直接接地,另一端經上拉電阻接到單片機的I/O口上,當按鍵按下時給單片機的I/O口一個低電平信號,單片機接收到信號時執行相應的程序更改顯示內容。本設計用了5個按鍵,第一個按鍵用來選擇顯示的內容,第二個按鍵用來選擇所顯示的圖形,最后三個按鍵用來調節時間。
7.顯示部分
顯示部分采用了四塊6cm*6cm的8*8點陣塊組成的16*16的點陣模塊。一塊8*8的點陣塊內部是由64個發光二極管組成。點陣模塊的內部是由發光二極管連接而成,其單點工作電壓為1.8V左右,正向電流為8~10mA左右。當某一行線為高電平而某一列線為低時,其行列交叉的點就被點亮;當某一行線為低電平時,無論列線如何,對應這一行的點全部為暗。這樣首先通過74LS154選中一列,再通過單片機的P1、P3口給行所需要亮的點送“1”,不需要亮的點送“0”由此利用人眼的視覺暫留,對所需要亮的依次進行掃描來顯示漢字、字符、圖形。
三、軟件部分設計
通過kile軟件我編譯了一個檢測單片機是否正常工作的程序:就是往P1口送“10101010”,若單片機工作了,P1口就會輸出“10101010”。通過STC-isp軟件下載到單片機中用萬用表測得P1口是“10101010”,單片機正常工作。單片機正常工作后我編寫了讓顯示屏全亮的的程序,進行全屏調試。其程序如下:
#include
void ys()
{ int i,j;
for(i=0;i<10;i++)
for(j=0;j<10;j++);
}
void main()
{
unsigned char i;
while(1)
{
for(i=0;i<8;i++)
{
P1=i;
P1=0xff;
P3=0xff;
ys();
}
}
}
把程序下載好后上電觀察16*16點陣模塊全部被點亮。由此確定本設計的硬件亦可以工作,軟件思想正確。這樣就可以對程序進行編寫了。經過對程序的編寫以及利用電路仿真軟件進行仿真,其功能得以實現。
參考文獻:
[1]詹林.單片機原理與應用[M].西安:西北工業大學出版社,2009(02).
[2]周興華.手把手教你學單片機C語言程序設計[M].北京:北京航天航空大學出版社,2007(08).
[3]余江.動態掃描顯示電路實驗的設計與實現[J].實驗科學與技術,2008(01).
[作者簡介]李曉平,女,河南太康人,電子技術教研室主任,助教,研究方向:電子技術。