版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> LED點陣電子顯示屏的設計</p><p> 簡述:LED點陣顯示系統(tǒng),由AT89S52單片機、串口通信模塊、LED屏幕顯示模塊等組成,實現(xiàn)了對星期、年月日、時分秒的顯示。</p><p> 關鍵詞:LED點陣電子顯示屏單片機鍵盤控制</p><p><b> 一、選用器材</b></p><
2、p> AT89C52單片機1個,74LS138型號3線-8線譯碼器1個,74LS373三態(tài)輸出的八D 透明鎖存器型號,+5V電源1個,Led8*8點陣屏綠色5個, tPd PD5個,帶公共端的8電阻排(排阻)1個,電容30pF3個,電阻10K歐1個,按鈕6個 ,石英晶振1MHz1個</p><p><b> 二、設計方案</b></p><p><b&
3、gt; 1、實驗功能</b></p><p> 本實驗要實現(xiàn)的功能就是,顯示時分秒,年月日,且可修改。實現(xiàn)實時時間的顯示,顯示屏數字顯示,時:分:秒;星期的顯示;年月日的顯示。顯示屏通過按鍵切換顯示星期,年月日,時間。</p><p><b> 2、總體方案</b></p><p><b> ?。?)工作原理<
4、/b></p><p> 用單片機AT89S52控制,寫入程序,將數據傳輸到顯示模塊,即點陣LED電子顯示屏顯示器,實現(xiàn)日歷的顯示。</p><p><b> (2)總體設計</b></p><p><b> 電路圖</b></p><p> LED和52單片機配合實現(xiàn)時間顯示功能。顯
5、示模塊為點陣LED電子顯示屏顯示器,把單片機中的數據顯示出來。該電路是通過按鍵來切換各種顯示要求。</p><p><b> 3、方案論證</b></p><p><b> ?。?)顯示部分:</b></p><p> 顯示部分是本次設計最核心的部分,對于LED8*8點陣顯示有以下兩種方案:靜態(tài)顯示,即將每個二極管的狀
6、態(tài)分別用1和0表示,0則無電流,為暗,1則有電流,為亮。若給每個二極管一個驅動電路,一個圖像輸入后,所有LED的狀態(tài)保持到下一個圖像。對于靜態(tài)顯示方式,所需的譯碼驅動裝置很多,引線多而負責,成本高,可靠性也低。動態(tài)顯示,即對每一個LED屏進行分割,對組成圖像的各個部分分別顯示,這樣利用人眼的暫留效應和發(fā)光二極管發(fā)光時間的長短,也同樣可以實現(xiàn)顯示功能,這樣就可以避免靜態(tài)顯示出現(xiàn)的問題。但是,設計上如果處理不當,容易造成圖像閃爍的問題,因此
7、合理的涉及要保證驅動電路容易實現(xiàn)而且保證圖像穩(wěn)定補閃爍。</p><p><b> ?。?)數字時鐘</b></p><p> 本實驗采用軟件實現(xiàn)數字時鐘。原理為:在單片機內部存儲器分別存放時鐘的年、月、日、時、分、秒、星期的信息。利用定時器與軟件結合實現(xiàn)1秒定時中斷,每產生一次中斷,存儲器內相應的秒值加1;若秒值達到60,則清零且相應的分值加1;若分值達到60,則
8、清零且相應的時值加1;若相應的時值達到24,則清零且相應的日值加1;若相應的日值分別達到29,30,31時,根據判斷來增加月值;若相應的月值達到12時,清零且年值加1。</p><p> ?。?)顯示接口芯片的選擇</p><p> 采用串口輸入,使用少量I/O口,但傳輸速度稍微慢了一些,但是不影響顯示質量。于是我們采用TI公司的DMOS器件TPIC6B595,其最大特點是驅動功率大,可
9、直接做LED的驅動。</p><p><b> 4、元件介紹</b></p><p> (1) AT89S52 是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程 Flash 存儲器。使用Atmel 公司高密度非易失性存儲器技術制造,與工業(yè)80C51 產品指令和引腳完 全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于 常規(guī)編程器。在單芯片上
10、,擁有靈巧的8 位CPU 和在系統(tǒng) 可編程Flash,使得AT89S52為眾多嵌入式控制應用系統(tǒng)提 供高靈活、超有效的解決方案。 AT89S52具有以下標準功能: 8k字節(jié)Flash,256字節(jié)RAM, 32 位I/O 口線,看門狗定時器,2 個數據指針,三個16 位 定時器/計數器,一個6向量2級中斷結構,全雙工串行口, 片內晶振及時鐘電路。另外,AT89S52 可降至0Hz 靜態(tài)邏 輯操作,支持2種軟件可選擇節(jié)電模式。空閑模式下,C
11、PU 停止工作,允許RAM、定時器/計數器、串口、中斷繼續(xù)工 作。掉電保護方式下,RAM內容被保存,振蕩器被凍結, 單片機一切工作停止,直到下一個中斷或硬件復位為止。</p><p> AT89S52單片機引腳圖</p><p> ?。?)74LS373</p><p> 74LS373為三態(tài)輸出的八D透明鎖存器。它的輸出端O0~O7可直接與總線相連。當三態(tài)允許
12、控制端OE為低電平時,O0~O7為正常邏輯狀態(tài),可用來驅動負載或總線。當OE為高電平時,O0~O7呈高阻態(tài),即不驅動總線,也不為總線的負載,但鎖存器內部的邏輯操作不受影響。當鎖存允許端LE為高電平時,O隨數據D而變。當LE為低電平時,O 被鎖存在已建立的數據電平。</p><p> 74LS373引腳圖</p><p> ?。?)74LS138</p><p>
13、 71LS138有三個附加的控制端、和。當、時,輸出為高電平(S=1),譯碼器處于工作狀態(tài)。否則,譯碼器被禁止,所有的輸出端被封鎖在高電平,如表3.3.5所示。這三個控制端也叫做“片選”輸入端,利用片選的作用可以將多篇連接起來以擴展譯碼器的功能。帶控制輸入端的譯碼器又是一個完整的數據分配器。在圖3.3.8電路中如果把作為“數據”輸入端(在同一個時間),而將作為“地址”輸入端,那么從送來的數據只能通過所指定的一根輸出線送出去。這就不難理解
14、為什么把叫做地址輸入了。例如當=101時,門的輸入端除了接至輸出端的一個以外全是高電平,因此的數據以反碼的形式從輸出,而不會被送到其他任何一個輸出端上。</p><p> 74LS138引腳圖</p><p> ?。?)LED8*8點陣屏</p><p> 雙基色8*8 點陣嚴格有共陰型和共陽型之分的,一個雙基色LED(一個發(fā)亮點)陰極接在一起就是共陰、否則反之
15、為共陽。我們使用的就是共陽型的LED雙基色8*8點陣屏。</p><p><b> 三、結論與總結</b></p><p> 本電路的設計原理比較復雜,而焊接電路的難度更加之高,由于線路的復雜性,使得焊接時很容易出現(xiàn)錯誤,以致于一步失誤全盤皆輸。通過實驗對單片機有了進一步的了解,也加強了動手焊接的能力。所以,通過此實驗認識了很多新問題,以及培養(yǎng)了解決問題的能力。&
16、lt;/p><p><b> 四、參考文獻</b></p><p> [1] 李朝青. 單片機原理及接口技術 [M]. 北京航空航天大學出版社,2005.</p><p><b> 附:</b></p><p><b> a電路設計實物圖</b></p>&l
17、t;p><b> 正面</b></p><p><b> 反面</b></p><p><b> b 實驗程序</b></p><p> #include "reg51.h"</p><p> #define uchar unsigned c
18、har</p><p> #define uint unsigned int</p><p> #define true 1</p><p> #define faluse 1</p><p> sbit set_key = P3^0;</p><p> sbit up_key = P3^1;</p&
19、gt;<p> sbit down_key = P3^2;</p><p> sbit sign = P3^3;</p><p> sbit select_key= P3^4;</p><p> sbit set_ring_key = P3^5;</p><p><b> uint sec;</b>
20、;</p><p> uint min=23;</p><p> uint hour=12;</p><p> uint day=10;</p><p> uint month=10;</p><p> uint yearl=7;</p><p> uint yearh=20;<
21、;/p><p> uint tcnt;</p><p> uint cnt=0;</p><p> uint cursor=0;</p><p> uint sjsz=0;</p><p> uchar a=0xff;</p><p> uchar code Seg[]={0x3f,0x
22、06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};</p><p> void delay(uint t)</p><p><b> {</b></p><p><b> uint i;</b></p><p> while(t--)</p>
23、<p> {for (i=0;i<125;i++);}</p><p><b> }</b></p><p> void Kdelay()</p><p><b> {</b></p><p> uchar i,j;</p><p> for(
24、i=100;i>0;i--) </p><p> for(j=248;j>0;j--);</p><p><b> }</b></p><p> void display(uchar L1,uchar L2,uchar L3,uchar L4,uchar L5,uchar L6,uchar L7,uchar L8,uchar
25、L9,uchar L10,uchar L11,uchar L12,uchar L13,uchar L14)</p><p><b> {</b></p><p> if(cnt==1){ </p><p> if(cursor==6){P2=0x7F|a;P0=L1;delay(1);}else{P2=0x7F;P0=L1;d
26、elay(1);} //yearh</p><p> if(cursor==6){P2=0xBF|a;P0=L2;delay(1);}else{P2=0xBF;P0=L2;delay(1);} //yearh</p><p> if(cursor==6){P2=0xDF|a;P0=L3;delay(1);}else{P2=0xDF;P0=L3;delay(1);}
27、 //yearl</p><p> if(cursor==6){P2=0xEF|a;P0=L4;delay(1);}else{P2=0xEF;P0=L4;delay(1);} //yearl</p><p> if(cursor==5){P2=0xF7|a;P0=L5;delay(1);}else{P2=0xF7;P0=L5;delay(1);} //month&
28、lt;/p><p> if(cursor==5){P2=0xFB|a;P0=L6;delay(1);}else{P2=0xFB;P0=L6;delay(1);} //month</p><p> if(cursor==4){P2=0xFD|a;P0=L7;delay(1);}else{P2=0xFD;P0=L7;delay(1);} //day</p>&
29、lt;p> if(cursor==4){P2=0xFE|a;P0=L8;delay(1);}else{P2=0xFE;P0=L8;delay(1);} //day</p><p><b> P2=0xFF;}</b></p><p><b> else{</b></p><p> if(cursor
30、==3){P2=0x7F|a;P0=L9;delay(1);}else{P2=0x7F;P0=L9;delay(1);} //hour</p><p> if(cursor==3){P2=0xBF|a;P0=L10;delay(1);}else{P2=0xBF;P0=L10;delay(1);} //hour</p><p> if(cnt!=1){P2=0xDF;P
31、0=0X40;delay(1);}</p><p> if(cursor==2){P2=0xEF|a;P0=L11;delay(1);}else{P2=0xEF;P0=L11;delay(1);} //min</p><p> if(cursor==2){P2=0xF7|a;P0=L12;delay(1);}else{P2=0xF7;P0=L12;delay(1);} //min<
32、;/p><p> if(cnt!=1){P2=0xFB;P0=0X40;delay(1);}</p><p> if(cursor==1){P2=0xFD|a;P0=L13;delay(1);}else{P2=0xFD;P0=L13;delay(1);} //sec</p><p> if(cursor==1){P2=0xFE|a;P0=L14;delay(1);
33、}else{P2=0xFE;P0=L14;delay(1);} //sec</p><p><b> P1=0xFF;</b></p><p><b> }}</b></p><p><b> main()</b></p><p><b> { </
34、b></p><p> TMOD=0x02; //設置模式為定時器T0的模式2 斷的產生中斷去執(zhí)行中斷函數本次定時時間為64ms </p><p> TH0=0x06; //設置計數器初值,靠TH0存儲重裝的計數值X0=256-250=6</p><p><b> TL0=
35、0x06;</b></p><p> TR0=1; //啟動T0</p><p> ET0=1; //開啟定時器T0中斷允許</p><p> EA=1; //開啟中斷總控制</p><p><b> w
36、hile(1)</b></p><p><b> {</b></p><p> if(set_key==0)</p><p><b> {</b></p><p><b> Kdelay();</b></p><p> if(set
37、_key==0)</p><p><b> {</b></p><p><b> cursor++;</b></p><p> if(cursor>=7){cursor=0;} //在選擇到調整年時又返回秒設置,當CURSOR=7時不選中</p><p><b> }<
38、/b></p><p><b> }</b></p><p> if(up_key==0)</p><p><b> {</b></p><p><b> Kdelay();</b></p><p> if(up_key==0)</
39、p><p> { //加部分</p><p> if(cursor==1){sec++;if(sec==60)sec=0;}</p><p> if(cursor==2){min++;if(min==60)min=0;}</p><p> if(cursor==3){hour++;if(hour==24)hou
40、r=0;}</p><p> if(cursor==4){day++;if(day==31)day=1;}</p><p> if(cursor==5){month++;if(month==13)month=1;}</p><p> if(cursor==6){yearl++;if(yearl==100)yearl=0;}</p><p&g
41、t; if(cursor==7){yearh++;if(yearh==30)yearh=20;}</p><p><b> }</b></p><p><b> }</b></p><p> if(down_key==0)</p><p><b> {</b><
42、/p><p><b> Kdelay();</b></p><p> if(down_key==0)</p><p> { //減部分</p><p> if(cursor==1){sec--;if(sec==00)sec=59;}</p><p>
43、; if(cursor==2){min--;if(min==0)min=59;}</p><p> if(cursor==3){hour--;if(hour==0)hour=23;}</p><p> if(cursor==4){day--;if(day==0)day=31;}</p><p> if(cursor==5){month--;if(month=
44、=0)month=12;}</p><p> if(cursor==6){yearl--;if(yearl==0)yearl=99;}</p><p> if(cursor==7){yearh--;if(yearh==20)yearh=30;}</p><p><b> }</b></p><p><b>
45、; }</b></p><p> if(select_key==0)</p><p><b> {</b></p><p><b> Kdelay();</b></p><p> if(select_key==0){</p><p> cnt++;if
46、(cnt>=2)cnt=0;}}</p><p> display(Seg[yearh/10],Seg[yearh%10],Seg[yearl/10],Seg[yearl%10],Seg[month/10],Seg[month%10],Seg[day/10],Seg[day%10],Seg[hour/10],Seg[hour%10],Seg[min/10],Seg[min%10],Seg[sec/10],
47、Seg[sec%10]); </p><p><b> }</b></p><p><b> }</b></p><p> void t0(void)interrupt 1 using 0 //t0的中斷程序</p><p><b> {</b><
48、;/p><p><b> tcnt++;</b></p><p> if(tcnt==4000)//定時器的定時計數,4000次250us為1秒,中斷4000次后才執(zhí)行刷新,期間照上面的語句顯示</p><p><b> {</b></p><p><b> tcnt=0;</b
49、></p><p> sign=~sign;</p><p><b> a=~a;</b></p><p><b> sec++;</b></p><p> if(sec==60)</p><p><b> { </b></
50、p><p><b> sec=0;</b></p><p><b> min++;</b></p><p> if(min==60)</p><p><b> {</b></p><p><b> min=0;</b><
51、/p><p><b> hour++;</b></p><p> if(hour==24)</p><p><b> {</b></p><p><b> hour=0;</b></p><p><b> day++;</b>
52、</p><p> if(month==2&&((yearl==0&&yearh%4==0)||(yearl!=0&&yearl%4==0))&&day==30)day=1; </p><p> else if(month==2&&day==29)day=1;</p><p>
53、else if((month==4||month==6||month==9||month==11)&&day==31)day=1;</p><p> else if(day==32)day=1;</p><p> if(day==1)</p><p><b> {</b></p><p><b
54、> month++;</b></p><p> if(month==13)</p><p><b> {</b></p><p><b> month=1;</b></p><p><b> yearl++;</b></p><p
55、> if(yearl==100)</p><p><b> {</b></p><p><b> yearl=0;</b></p><p><b> yearh++;</b></p><p> if(yearh==100)</p><p>
56、;<b> {</b></p><p><b> yearh=20;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p
57、><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p>&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機課程設計---點陣led電子顯示屏
- 單片機課程設計---led點陣電子顯示屏的設計
- 單片機課程設計之led點陣電子顯示屏設計
- 單片機課程設計---點陣電子顯示屏設計
- 基于單片機的led點陣電子顯示屏設計
- led顯示屏單片機課程設計
- 單片機課程設計報告--- led點陣動態(tài)顯示屏設計
- 基于單片機的led點陣顯示屏設計
- led點陣顯示屏課程設計
- 基于51單片機控制的點陣led電子顯示屏設計
- 單片機課程設計---液晶點陣顯示屏程序設計
- 單片機課程設計--16x16點陣led電子顯示屏的設計
- 基于單片機的LED點陣顯示屏設計定稿.doc
- 基于單片機的LED點陣顯示屏設計初稿.doc
- 基于單片機的點陣電子顯示屏的設計
- 單片機課程設計---基于51單片機的電子顯示屏設計
- 基于51單片機的led點陣顯示屏
- 基于單片機的led點陣電子顯示屏長師畢業(yè)設計
- 單片機課程設計---led點陣屏滾動
- 單片機課程設計lcd顯示屏設計
評論
0/150
提交評論