版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 單片機原理及應(yīng)用 課程設(shè)計報告</p><p> ?。?013—2014學年 第一學期)</p><p> 題 目 基于單片機的電子時鐘設(shè)計 </p><p> 系 別 電子與電氣工程系 </p><p> 專 業(yè) 通信工程 </p><p>
2、; 班 級 </p><p> 學 號 </p><p> 姓 名 </p><p> 指導(dǎo)教師 </p><p> 完成時間 2013-11-
3、28 </p><p> 評定成績 </p><p><b> 目 錄</b></p><p> 一、設(shè)計的目的3</p><p> 二、設(shè)計的內(nèi)容與要求3</p><p><b> 三、設(shè)計方案4&l
4、t;/b></p><p> 四、硬件、軟件設(shè)計4</p><p><b> 五、設(shè)計總結(jié)4</b></p><p><b> 六、參考文獻4</b></p><p><b> 設(shè)計的目的</b></p><p> 在基本掌握
5、了《單片機原理及應(yīng)用》課程知識的基礎(chǔ)上,完成課程設(shè)計項目的設(shè)計。通過課程設(shè)計環(huán)節(jié)的訓(xùn)練,包括設(shè)計方案的論證、硬件設(shè)計、程序編寫和設(shè)計報告的撰寫,掌握單片機應(yīng)用項目的設(shè)計流程和方法,加深對《單片機原理及應(yīng)用》課程知識的理解和掌握,培養(yǎng)應(yīng)用系統(tǒng)的設(shè)計能力,初步積累單片機系統(tǒng)開發(fā)經(jīng)驗,以及分析問題和解決問題的方法,并進一步拓寬專業(yè)知識面,培養(yǎng)實踐應(yīng)用技能和創(chuàng)新意識。 </p><p><b> 設(shè)計的內(nèi)容與
6、要求</b></p><p> 根據(jù)《單片機原理及應(yīng)用》課程設(shè)計教學大綱、《單片機原理及應(yīng)用》課程設(shè)計指導(dǎo)書,開展課程設(shè)計環(huán)節(jié)。有四個設(shè)計項目供選擇:步進電機控制、直流電機調(diào)速、電子琴或電子時鐘。</p><p><b> 設(shè)計內(nèi)容與要求:</b></p><p> (1)選擇其中一個設(shè)計項目,進行設(shè)計方案的比較和論證,確定設(shè)
7、計思路和方案;</p><p> ?。?)進行硬件設(shè)計,畫出硬件結(jié)構(gòu)框圖,完成電路原理圖的設(shè)計和元器件選型,必要時應(yīng)給出重要電路參數(shù)的設(shè)計和計算過程,以及元器件參數(shù)的選型依據(jù);</p><p> ?。?)編寫單片機的軟件程序,先理清軟件設(shè)計思路并繪制程序流程圖,再編寫具體的匯編語言或C語言程序語句,并注釋說明。</p><p> 成績評定依據(jù):(分值百分比)<
8、;/p><p> (1)確定設(shè)計思路和方案——20%;</p><p> ?。?)畫出硬件結(jié)構(gòu)框圖、原理圖的設(shè)計、元器件選型,給出電路參數(shù)的設(shè)計依據(jù)——30%;</p><p> (3)繪制程序流程圖,再編寫程序語句,并注釋說明——30%;</p><p> ?。?)設(shè)計成果的功能完善程度、創(chuàng)新點、演示效果,撰寫設(shè)計報告的規(guī)范性——20%。&
9、lt;/p><p><b> 設(shè)計方案</b></p><p> 根據(jù)定時中斷的原理,數(shù)碼管顯示和鍵盤掃描電路,以及和MCS51單片機的接口方式,通過軟件編程,實現(xiàn)時間初值設(shè)置,時鐘運行和顯示。</p><p> 可供使用的硬件電路:</p><p> 七段數(shù)碼管顯示電路;</p><p>
10、 8155和74LS164“串轉(zhuǎn)并”實現(xiàn)的鍵盤掃描和數(shù)碼管控制顯示電路;</p><p> 串并轉(zhuǎn)換數(shù)碼管顯示電路:通過74LS164實現(xiàn)串入并出,控制四個七段數(shù)碼管的顯示。MCS-51單片機有一個全雙工的串行通信接口,當工作于方式0時,為同步移位寄存器輸入/輸出方式,常用于擴展I/O口,這時串行數(shù)據(jù)通過RxD引腳輸入或輸出,引腳TxD輸出同步移位信號,收/發(fā)數(shù)據(jù)都為8位,低位在前,波特率為振蕩頻率的1/12。
11、</p><p> 七段數(shù)碼管的字型代碼表如下表: </p><p><b> 硬件和軟件設(shè)計</b></p><p><b> 總原理圖</b></p><p> 1-1數(shù)碼管顯示部分</p><p><b> 1-2按鍵部分</b><
12、/p><p><b> 操作步驟</b></p><p><b> 2-1硬件操作</b></p><p><b> LED環(huán)境</b></p><p><b> PC環(huán)境</b></p><p> 與PC聯(lián)機狀態(tài),在keil
13、c軟件輸入程序。點擊圖標,設(shè)置“輸出”項。</p><p> 點擊圖標編譯文件,編譯通過后,點擊 圖標開始調(diào)試,等待下載完成。</p><p><b> 3)觀察運行結(jié)果</b></p><p> 點擊圖標用連續(xù)方法運行該程序。此時數(shù)碼管上實時顯示時間值。并按相關(guān)按鈕對時間進行調(diào)整</p><p><b&g
14、t; 終止運行</b></p><p> 按 “暫停圖標”或?qū)嶒炏渖系摹癛ST”按鍵,使系統(tǒng)無條件退出該程序的運行返回監(jiān)控狀態(tài)。</p><p><b> 2-2軟件仿真操作</b></p><p> 1)進入Proteus仿真系統(tǒng)</p><p> 2)點擊File/Open Design,導(dǎo)入
15、設(shè)計好的仿真原理圖。右擊AT89C51芯片,選擇“Edit Properties/Program File”載入在keilc軟件產(chǎn)生的 .HEX文件,并“OK”。 </p><p><b> 3)觀察仿真結(jié)果</b></p><p> 點擊“Play”, 數(shù)碼管上實時顯示時間值。</p><p><b> 時間調(diào)整</b&
16、gt;</p><p> 按“暫停/開始”按鈕,數(shù)碼管停止計時。按一次“選擇”按鈕,選中“秒”,并按“上調(diào)”或“下調(diào)”按鈕調(diào)整秒;再按一次“選擇”按鈕,將選中“分”,按相關(guān)按鈕對分上調(diào)/下調(diào)。 調(diào)整完后,再按 “暫停/開始”按鈕,數(shù)碼管繼續(xù)實時計時。</p><p><b> 3 程序源代碼</b></p><p> /*********
17、*********************電子時鐘********************************/</p><p> #include<reg51.h></p><p> #define uint unsigned int</p><p> #define uchar unsigned char</p><p&
18、gt; sbit CLK=P1^1; </p><p> sbit DIN=P1^2;</p><p> sbit k1_up=P1^3;//設(shè)置 上調(diào) 按鈕</p><p> sbit k2_down=P1^4;//下調(diào) 按鈕</p><p> sbit k_3=P1^5;//暫停/開始 按鈕</p><p&g
19、t; sbit k_4=P1^6;//選擇 按鈕</p><p> bit flag=0;</p><p> uchar code table1[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; /* 共陰極0~9 */ </p><p> uchar zzq[4]={0};//顯示緩存</p
20、><p> uchar second,minute; </p><p> uchar num_stop=0,us,k_num;</p><p> void delay(uint t) //延遲子程序 </p><p><b> { </b></p><p><b> uint
21、j; </b></p><p> while(t--) </p><p> for(j=125;j>0;j--); </p><p><b> } </b></p><p> void Write_164(uchar Data) </p><p> //寫入7
22、4LS164芯片</p><p><b> {</b></p><p><b> uchar i;</b></p><p> CLK =1; </p><p> for(i=0;i<8;i++)</p><p><b> {<
23、;/b></p><p> if((Data>>7)&0x01) </p><p><b> DIN =1;</b></p><p><b> else</b></p><p><b> DIN =0;</b></p>
24、<p><b> CLK =0;</b></p><p><b> CLK =1;</b></p><p> Data <<=1;</p><p><b> }</b></p><p><b> }</b></p&
25、gt;<p> void number_m_s(uchar s,char m)</p><p><b> { </b></p><p> zzq[0]=s%10;</p><p> zzq[1]=s/10;</p><p> zzq[2]=m%10;</p><p> z
26、zq[3]=m/10;</p><p><b> }</b></p><p> void speak_164(void) //164送數(shù)</p><p><b> {</b></p><p> Write_164(table1[zzq[0]]);</p><p>
27、Write_164(table1[zzq[1]]);</p><p> Write_164(table1[zzq[2]]|0x80);</p><p> Write_164(table1[zzq[3]]);</p><p><b> }</b></p><p> void t0_1()//T0初始化 子程序 &
28、lt;/p><p><b> { </b></p><p> TMOD=0x01; //定時器T0工作方式1 </p><p> TH0=(65535-50000)/256; //50ms </p><p> TL0=(65535-50000)%256; </p><p> EA=1
29、; //開總中斷 </p><p> ET0=1; </p><p><b> TR0=1;</b></p><p><b> } </b></p><p> void k_stop()//按鍵——暫停/開始</p><p><
30、;b> {</b></p><p> if(k_3==0)</p><p><b> {</b></p><p><b> delay(5);</b></p><p> if(k_3==0)</p><p> while(!k_3);&
31、lt;/p><p> flag=!flag;</p><p><b> }</b></p><p><b> }</b></p><p> void choose_m_s()//按鍵——選擇</p><p><b> {</b><
32、/p><p> if(k_4==0)</p><p><b> {</b></p><p><b> delay(5);</b></p><p> if(k_4==0)</p><p> while(!k_4);</p><p><b>
33、; k_num++;</b></p><p> if(k_num==3)</p><p><b> k_num=1;</b></p><p><b> }</b></p><p><b> }</b></p><p> void
34、key_m_s()//按鍵---上/下調(diào)</p><p><b> {</b></p><p> k_stop();//暫停</p><p> while(flag)//只有在暫停狀態(tài)才能調(diào)整</p><p><b> {</b></p><p> TR0=0;//
35、停止計時</p><p> choose_m_s();//調(diào)用選擇按鍵</p><p> if(k_num!=0)//當有按下選擇鍵 </p><p><b> {</b></p><p> if(k1_up==0)//上調(diào) </p><p> {
36、 </p><p> delay(5); </p><p> if(k1_up==0)//去抖 </p><p><b> { </b></p><p> while(!k1_up); /*按鍵彈起有效 */
37、 </p><p> if(k_num==1) //上調(diào)秒</p><p><b> {</b></p><p><b> second++;</b></p><p> if(second==60) </p><p> second= 0;</p>
38、<p><b> }</b></p><p> if(k_num==2) //上調(diào)分</p><p><b> {</b></p><p> minute++;if(minute==60) minute= 0;</p><p><b> } </b>&l
39、t;/p><p><b> }</b></p><p> } </p><p> if(k2_down==0)//下調(diào) </p><p> { </p><p> delay(5); </p
40、><p> if(k2_down==0) </p><p><b> { </b></p><p> while(!k2_down); </p><p> if(k_num==1) //下調(diào)秒</p><p><b>
41、 { </b></p><p><b> second--;</b></p><p> if(second==0) </p><p> second= 59;</p><p> } </p><p> if(k_num == 2) //下調(diào)分<
42、/p><p><b> { </b></p><p> minute--; </p><p> if(minute== 0) </p><p> minute=59;</p><p><b> } </b></p><p><b>
43、}</b></p><p> }</p><p> number_m_s(second,minute);//更新數(shù)據(jù) speak_164();//顯示數(shù)據(jù) </p><p> delay(200);}</p><p> k_stop();//取消暫停
44、 </p><p> } </p><p> k_num=0;/*保證每次暫停時,都要按“選擇鍵”才能調(diào)整*/</p><p> TR0=1; //恢復(fù)計時</p><p><b> } </b></p><p> void main() &
45、lt;/p><p><b> { </b></p><p> t0_1(); // 定時中斷</p><p> while(1) </p><p><b> { </b></p><p> key_m_s(); //按鍵掃描</p><p&g
46、t;<b> }</b></p><p><b> }</b></p><p> void time0() interrupt 1 //中斷服務(wù)子程序</p><p><b> { </b></p><p> TH0=(65535-50000)/256; /
47、/重新賦值 </p><p> TL0=(65535-50000)%256; </p><p><b> us++; </b></p><p> if(us==20) // 1秒鐘 </p><p><b> {</b></p><p><b> s
48、econd++;</b></p><p> if(second==60)//1分鐘</p><p><b> {</b></p><p><b> second=0;</b></p><p><b> minute++;</b></p><
49、;p> if(minute==60)//1小時</p><p> minute=0; </p><p><b> }</b></p><p><b> us=0;</b></p><p> number_m_s(second,minute);/*以1秒為單位更新數(shù)據(jù) */
50、 </p><p> speak_164();//顯示數(shù)據(jù)</p><p><b> }</b></p><p><b> } </b></p><p><b> 效果圖</b></p><p><b> 設(shè)計
51、總結(jié)</b></p><p> 通過這幾天的單片機的實訓(xùn),我在理論的基礎(chǔ)上更深刻的掌握了單片機的深層內(nèi)容及實際生活中的應(yīng)用,讓我對這門課有了許多新的了解彌補了在課堂上學習的不足。實訓(xùn)鍛煉了自己動手能力和思維能力,還有在軟件方面的編程能力,讓我受益匪淺,同時也暴露出一些平時學習上的問題,讓我深刻反思。這些問題的發(fā)現(xiàn)將為我以后的學習和工作找明道路,查漏補缺為進一步學習作好準備。通過實訓(xùn),讓我懂得了如何編
52、寫一些簡單的程序,學會了如何制作單片機應(yīng)用程序,并且可以在今后的日常生活中靈活運用。相信這對我們以后的學習和工作都會有很大的幫助。</p><p><b> 參考文獻</b></p><p> 單片機原理及接口技術(shù)(第二版),李全利,北京:高等教育出版社,2009年。</p><p> 單片機原理及應(yīng)用(第二版),李建忠,西安:西安電子科
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機原理及應(yīng)用課程設(shè)計(電子時鐘)
- 單片機原理及應(yīng)用課程設(shè)計電子時鐘設(shè)計
- 單片機原理及系統(tǒng)課程設(shè)計--電子時鐘
- 單片機課程設(shè)計報告---電子時鐘
- 單片機課程設(shè)計報告--電子時鐘
- 單片機原理及應(yīng)用課程設(shè)計--基于單片機的電子時鐘設(shè)計
- 單片機課程設(shè)計報告--電子時鐘
- 單片機課程設(shè)計-單片機課程設(shè)計---電子時鐘
- 電子時鐘單片機課程設(shè)計
- 單片機課程設(shè)計---電子時鐘
- 單片機課程設(shè)計——電子時鐘
- 單片機課程設(shè)計——電子時鐘
- 單片機課程設(shè)計--電子時鐘
- 單片機課程設(shè)計-電子時鐘
- 單片機課程設(shè)計--電子時鐘
- 單片機課程設(shè)計--電子時鐘
- 單片機課程設(shè)計----電子時鐘
- 單片機課程設(shè)計-電子時鐘
- 單片機應(yīng)用電子時鐘課程設(shè)計
- 單片機應(yīng)用課程設(shè)計實驗報告-電子時鐘
評論
0/150
提交評論