版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 1 緒論</b></p><p> 電子鐘已成為人們日常生活中必不可少的物品,廣泛用于個人、家庭以及車站、影院、辦公室等公共場所,給人們的生活、學習、工作帶來了極大的方便。隨著電子技術的發展,人們已不再滿足于鐘表原先最簡單的報時,希望出現一些新的功能,諸如日歷的顯示、鬧鐘的非接觸式止鬧、秒表功能、重要日期倒計時顯示等,以帶來更大的方便,而所有這些,又都是以數
2、字化的電子時鐘為基礎的。因此,研究數字電子鐘及其擴展應用,有著非?,F實的意義和實用價值。</p><p> 單片機是指將微處理器、一定容量的RAM和ROM以及I/O口、定時器等電路集成在一塊芯片上的完整計算機系統。89C51單片機是一種低功耗、高性能的,它采用CMOS工藝和高密度非易失性存儲器(NURAM)技術,其輸出引腳和指令系統都與MCS-51兼容;片內的Flash ROM允許在系統內改編程序或用常規的NU
3、RAM編程器來編程。因此,89C51是一種功能強、靈活性高,而且價格合理的單片機,可以方便的利用AT89C51定時器和6位7段數碼管,設計一個電子時鐘。顯示格式位 “XX XX XX”,從左向右分別是:時、分、秒。</p><p><b> 1.1 設計目的</b></p><p> 利用MCS-51芯片及相關芯片設計數字鐘。</p><p
4、><b> 1.2 設計內容</b></p><p><b> 1)硬件設計</b></p><p> 設計數字鐘的電路原理圖,用PROTEUS繪制硬件電路。制作實物。</p><p><b> 2)軟件設計</b></p><p> (1)時、分、秒的設置及顯
5、示;</p><p> (2)畫出程序框圖;</p><p> (3)調試與分析。用PROTEUS仿真。</p><p><b> 2 硬件設計</b></p><p> 2.1 設計的總體思路</p><p> 硬件系統主要由單片機最小應用系統、LED數碼管顯示模塊、晶振模塊、按鍵模
6、塊等組成。在使用單片機的過程中必定會使用單片機的最小系統,由于我購買的單片機內部沒有晶振,所以設計了外接的晶振模塊。鑒于本次課程設計要求制作數字鐘,所以使用了六位7段數碼管來顯示“XX XX XX”,從左向右分別是:時、分、秒。除了能上電復位,還設計了用三個按鍵實現時、分、秒的調制,使用方便靈活。</p><p> 2.2 單片機最小系統</p><p> 對51系列單片機來說,單
7、片機+晶振電路+復位電路,便組成了一個最小系統。見圖2.1。</p><p><b> 圖2.1</b></p><p><b> 2.3 晶振模塊</b></p><p> 在AT89C51芯片內部有一個高增益反相放大器,其輸入端為芯片引腳XTAL1(19腳),輸出端為引腳XTAL2(18腳)。而在芯片內部,XTA
8、L1和XTAL2之間跨接晶體振蕩器和微調電容,從而構成一個穩定的自激振蕩器。時鐘電路產生的振蕩脈沖經過觸發器進行二分頻之后,才成為單片機的時鐘脈沖信號。見圖2.2。</p><p><b> 圖2.2</b></p><p><b> 2.4 按鍵模塊</b></p><p> 用三個按鍵實現對時分秒的設置,其中一個
9、按鍵實現對時分秒的控制,接P1.4口,另外兩個按鍵接單片機的P1.5和P1.6口實現加一和減一的功能。</p><p> 2.5 LED數碼管顯示模塊</p><p> 本次課程設計由于要顯示時、分、秒,所以采用廣泛使用的數碼管動態顯示接口。動態驅動是將所有數碼管的8個顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個數碼管的公共極COM增加位
10、選通控制電各自獨立的I/O線控制,當單片機輸出字形碼時,所有數碼管都接收到相同的字形碼,但究竟是哪個數碼管會顯示出字形,取決于單片機對位選通COM端電路的控制,所以我們只要將需要顯示的數碼管的選通控制打開,該位就顯示出字形,沒有選通的數碼管就不會亮。通過分時輪流控制各個數碼管的COM端,就使各個數碼管輪流受控顯示,這就是動態驅動。在輪流顯示過程中,每位數碼管的點亮時間為1~2ms,由于人的視覺暫留現象及發光二極管的余輝效應,盡管實際上各
11、位數碼管并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩定的顯示數據,不會有閃爍感,動態顯示的效果和靜態顯示是一樣的,能夠節省大量的I/O端口,而且功耗更低。</p><p> 將數碼管的位選信號接P2口的六個位,段選信號接P0口的八個位。再通過Keil軟件以及51C語言編程實現數字鐘的功能。本系統利用6位LED數碼管顯示時間,共陰極結構,當要顯示某個數字時只要將數字所對應的引腳送入低電平。</
12、p><p><b> 2.6 硬件連接圖</b></p><p> 通過對設計電路的各個模塊的分析,可以用PROTEUS繪制硬件電路。如圖2.3所示。</p><p><b> 圖2.3</b></p><p><b> 2.7制作實物</b></p><
13、;p><b> ?。ㄒ姼戒汚)</b></p><p><b> 3 軟件設計</b></p><p> 單片機最主要的功能是通過程序來實現各種功能,有了硬件的描述,再加上軟件的編程,通過不斷的調試與修改程序就能實現本次課程設計的目的。</p><p> 3.1 程序流程圖</p><p
14、> 系統總的流程圖,見圖3.1。</p><p><b> 圖3.1</b></p><p> 3.2 調試與分析</p><p> 由于在焊接實物之前,我大量查閱了資料,弄明白了此次課程設計任務的基本原理,對原理有了基本的認識后,就開始了焊接工作。雖然焊接花費了我大量的時間,但是在焊好以后上電時,所有的數碼管都亮,說明焊接連線
15、沒有短路情況。</p><p> 硬件連接好以后就是軟件編程,但是編寫程序中遇到了挺多問題,比如:編寫程序是沒有消除抖動。在同學的幫助下,使得數碼管能正常實現數字鐘的功能。</p><p><b> 3.3 源程序</b></p><p><b> ?。ㄒ姼戒汢)</b></p><p>&l
16、t;b> 4 心得與結論</b></p><p> 本次課程設計以AT89C51為核心部件,實現時間的設置功能。通過六位7段數碼管顯示可方便地校對時間,利用Keil軟件編程完成時鐘的功能。</p><p> 通過實物的焊接以及軟件的仿真和編寫程序基本完成了數字電子鐘的功能,盡量做到了硬件電路簡單穩定,減小電磁干擾和其它環境干擾,充分發揮了軟件編程的優點,減小了因器
17、件精度不夠引起的誤差。由于時間有限和本身知識水平的局限,我認為此次設計還有需要改進和提高的地方,例如選用更高精度的元器件,硬件電路更加精確穩定等。</p><p><b> 參考文獻</b></p><p> [1] 楊文龍.單片機原理及應用[M].西安電子科技大學出版社,1993.</p><p> [2] 李朝青.單片機原理及接口
18、技術[M].北京航空航天大學出版社,2003.</p><p> [3] 胡漢才.單片機原理及系統設計[M].清華大學出版社,2003.</p><p> [4] 楊忠煌,黃博俊,李文昌.單芯片8051實務與應用[M].中國水利水電出版社,2001.</p><p> [5] 王守中,51單片機開發入門與典型實例[M].人民郵電出版社.</p>
19、;<p> [6] 黃文梅.系統分析與仿真:MATLAB語言及應用[M].國防科技大學出版社,1999.</p><p> [7] 閻石.數字電子技術(第五版)[M].北京高等教育出版社,2006.</p><p> [8] 蔡明文,馮先成.單片機課程設計[M].華中科技大學出版社,2007.</p><p> [9] 陳明螢.8051
20、單片機課程設計實訓材料[M].清華大學出版社,2004.</p><p> [10] 李可為.數字鐘電路及應用[M].電子工業出版社,1996.</p><p> [11] 夏繼強,沈德金.單片機實驗與實踐教程(二)[M]北航出版社,2001.</p><p> [12] 張紅潤,藍清華.單片機應用技術教程[M]清華大學出版社,1997.</p&g
21、t;<p> [13] 周立功.單片機實驗與實踐[M]北京航空航天大學出版社,2004.</p><p> [14] 何立民.單片機應用文集(一)[M].北京航空航天大學出版社,1991.</p><p> [15] 方大千,鮑俏偉.使用電子控制電路[M].國防科技出版社,2003. </p><p> [16] 曾繁泰.EDA工程概論
22、[M].清華大學出版社,2002.</p><p> [17] 譚會生,張昌凡.EDA技術及應用[M].西安電子科技大學出版社,2004.</p><p> [18] 李強.鍵盤接口程序計數[J].電子設計出版社,2003.</p><p> [19] 肖來勝.單片機技術實用教程[M].華中科技大學出版社,2004.</p><p&g
23、t; [20] 楊曉川.Portel設計指導教程[M].清華大學出版社,2003.</p><p><b> 致謝</b></p><p> 首先,很感謝學院給我們電氣工程及其自動化專業的學生一次把理論加深的機會,使得我們更好的理解《單片機原理及接口技術》這門課程,通過實物的焊接以及軟件仿真使得自己的動手能力有了一定的提高;其次,雖然這次課程設計是每個人制作一
24、個實物,但是大家一起討論,分析,最終調試成功,使大家的思維更加開闊;最后,感謝余老師的研究生給予我們焊接工具的支持。</p><p><b> 附錄A</b></p><p><b> 制作的實物照片</b></p><p><b> 附錄B</b></p><p>&l
25、t;b> 源程序清單</b></p><p> #include<reg52.h></p><p> #define uint unsigned int</p><p> #define uchar unsigned char</p><p> uint hhh,mmm,sss;</p>
26、<p> uint status;</p><p><b> //函數聲明 </b></p><p> void delayMS(uint t) ; </p><p> void keyprocess(unsigned char key);</p><p> void display();<
27、;/p><p> void timer0();</p><p> main() //主函數</p><p><b> { </b></p><p> ucharsegcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0,1,2,3
28、,4,5,6,7,8,9</p><p> uchar dispbit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};//數碼管位選碼</p><p> buffer[]={0,0,0,0,0,0,0,0};</p><p> bit keyrel;</p><p> uchar buf;</p>
29、<p> uchar keyin;</p><p><b> keyrel=1;</b></p><p><b> buf=0xff;</b></p><p> TMOD=0x01; //T0工作在方式1,16位計數器</p><p> TH0=(65536-100
30、0)/256;// 定時器0設置延時1ms中斷初始值</p><p> TL0=(65536-1000)%256; </p><p> TR0=1; </p><p> IE=0x82; //開定時器0中斷</p><p><b> status=0;</b></p>&l
31、t;p><b> //延時函數</b></p><p> void delayMS(uint t) // 晶振頻率12MHZ</p><p><b> {</b></p><p><b> uint i;</b></p><p> while(t--)
32、</p><p> for(i=0;i<125;i++);</p><p><b> }</b></p><p> while(1) //鍵掃描程序 </p><p> { </p><p> keyin=P1&0xf0;</
33、p><p> if(keyin!=0xf0) </p><p><b> { </b></p><p> delayMS(10);</p><p> if(keyin!=0xf0)</p><p><b> {</b></p><p>
34、 if(keyrel==1)</p><p><b> {</b></p><p><b> keyrel=0;</b></p><p> buf = keyin; //buf用來暫時存放鍵值</p><p><b> }</b></p><p
35、><b> else</b></p><p><b> {</b></p><p><b> keyrel=1;</b></p><p> keyprocess(buf); //調用按鍵處理函數</p><p> buf = 0xff;</p>
36、<p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> keyrel=1;</b></
37、p><p> keyprocess(buf);</p><p><b> buf=0xff;</b></p><p><b> } </b></p><p> display();</p><p><b> }</b></p>&l
38、t;p><b> }</b></p><p><b> //按鍵處理函數</b></p><p> void keyprocess(unsigned char key) //鍵值處理,正常計時,設置時分秒</p><p> { switch (key)</p><p><b&
39、gt; {</b></p><p> case 0xe0:status++; //按下設置鍵</p><p> if (status>=4) status = 0; </p><p><b> break;</b></p><p> case 0xd0:switch(status
40、) //按下加1鍵,3種模式下加1</p><p><b> {</b></p><p> case 0x01:if(hhh<24) hhh++;</p><p> else hhh=0; break; </p><p> case 0x02:if(mmm<60) mmm++;</p
41、><p> else mmm=0; break;</p><p> case 0x03:if(sss<60) sec++;</p><p> else sss=0; break; </p><p><b> }</b></p><p><b> break;&l
42、t;/b></p><p> case 0xb0:switch(status) //按下減1鍵</p><p><b> {</b></p><p> case 0x01:if(hhh>0) hhh--;</p><p> else hour=23; break;</p><
43、;p> case 0x02:if(mmm>0) mmm--;</p><p> else min=59; break;</p><p> case 0x03:if(sss>0) sss--;</p><p> else sss=59; break; </p><p><b> }<
44、/b></p><p><b> break; </b></p><p> default:break;</p><p><b> }</b></p><p><b> }</b></p><p><b> //數碼管顯示函數&
45、lt;/b></p><p> void display()</p><p><b> {</b></p><p><b> uchar i;</b></p><p><b> //正常計時顯示</b></p><p><b>
46、 {</b></p><p> buffer[0]=hhh/10; // 顯示時的十位</p><p> buffer[1]=hhh%10 // 顯示時的個位</p><p> buffer[2]=mmm/10; // 顯示分的十位</p><p> buffer[3]=mmm
47、%10; // 顯示分的個位</p><p> buffer[4]=sss/10; // 顯示秒的十位</p><p> buffer[5]=sss%10; // 顯示秒的個位</p><p> for(i=0;i<6;i++)</p><p><b> { </b
48、></p><p> P0=segcode[buffer[i]];</p><p> P2=dispbit[i];</p><p> delayMS(1); //防止數碼管顯示的時候閃動</p><p> P2=0xff; //</p><p><b> P0=0xff;
49、</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> //定時器0中斷函數</p><p> void timer0() interrupt 1
50、 using 2 </p><p><b> { </b></p><p> static uint count;</p><p> TH0=(65536-1000)/256; // 定時器0設置初始值1ms中斷初始值</p><p> TL0=(65536-1000)%256; </p&g
51、t;<p><b> TR0=1;</b></p><p> count++; //正常計時</p><p> if(count>=1000) // 定時 1S 到,以下為時鐘的正常走鐘邏輯</p><p> { </p><p><
52、b> count=0;</b></p><p><b> sss++;</b></p><p> if(sss>60)</p><p> { </p><p> sss=0; mmm++;</p><p> if(mmm>60
53、) </p><p> { </p><p> mmm=0; hhh++;</p><p> if(hhh>24) </p><p><b> { </b></p><p><b> hhh=0; </b></p><
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機課程設計(電子鐘)
- 電子鐘單片機課程設計
- 電子鐘課程設計--基于單片機的電子鐘設計
- 《單片機技術》電子鐘課程設計---數字電子鐘
- 單片機課程設計——數字電子鐘
- 單片機課程設計--數字電子鐘
- 單片機課程設計--數字電子鐘
- 單片機課程設計---智能電子鐘
- 單片機課程設計--數字電子鐘
- 單片機課程設計-智能電子鐘
- 單片機原理課程設計--電子鐘
- 單片機數字電子鐘課程設計
- 單片機課程設計--數字鐘電子鐘
- 單片機課程設計--簡單電子鐘設計
- 單片機課程設計--數字電子鐘設計
- 單片機課程設計---電子鐘的設計
- 單片機課程設計報告-電子鐘設計
- 單片機課程設計報告---單片機的電子鐘設計
- 基于單片機的電子鐘課程設計
- 《單片機原理》課程設計報告--電子鐘
評論
0/150
提交評論