

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 課程設計報告</b></p><p><b> 課程名稱:單片機</b></p><p> 報告題目:倒數計數器</p><p><b> 學生姓名:</b></p><p><b> 所在學院:</b></p&
2、gt;<p><b> 專業(yè)班級:</b></p><p> 學生學號: </p><p><b> 指導教師: </b></p><p> 2013年 12月25 日</p><p><b> 課程設計任務書</b></p>&
3、lt;p><b> 摘要</b></p><p> 本設計是基于AT89C51單片機的倒數計數器,根據單片機技術原理,主要通過軟件設計,制作出的倒數計數器能穩(wěn)定運行,并當計數完成時能發(fā)出聲音.本設計主要用到數碼管,LED燈,鍵盤,蜂鳴器,定時器/計數器等學習單片機中所必須掌握的部分.利用Keil uVision4作為編程軟件進行源程序設計及調試。同時利用STC-ISP-V483作為
4、程序下載器,將源程序燒入單片機中。</p><p> 關鍵詞:單片機 鍵盤 計數器 蜂鳴器 LED燈 數碼管</p><p><b> 目錄</b></p><p> 一、概述…………………………………………………………………………1</p><p> 二、設計方案………………………………………………………………
5、2</p><p> 1方案總體思路…………………………………………………………………2</p><p> 2.程序流程圖……………………………………………………………………2</p><p> 三、程序…………………………………………………………3</p><p> 四、總原理圖及元器件清單……………………………………………………4
6、</p><p> 五、結論與心得………………………………………………………………………6</p><p> 六、參考文獻……………………………………………………………………6</p><p><b> 概述</b></p><p> 單片機是20世紀中期發(fā)展起來的一種面向控制的大規(guī)模集成電路模塊,具有功能強、體
7、積小、可靠性高、價格低廉等特點,在工業(yè)控制、數據采集、智能儀表、機電一體化、家用電器等領域得到了廣泛的應用,極大的提高了這些領域的技術水平和自動化程度。 AT89C51是一種低功耗、高性能CMOS8位微控制器,具有8K 在線系統(tǒng)可編程Flash 存儲器。使用Atmel 公司高密度非易失性存儲器技術制造,與工業(yè)80C51 產品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CP
8、U 和在系統(tǒng)可編程Flash,使得AT89C51為眾多嵌入式控制應用系統(tǒng)提供高靈活、超有效的解決方案。</p><p> 本例利用AT89C51單片機設計一個簡易的倒數計數器,可用來煮方便面、煮開水或小睡片刻等。做一小段時間倒計數,當倒計數為0時,則發(fā)出聲響,通知倒計數終了。</p><p><b> 二、設計方案</b></p><p>
9、<b> 1. 方案總體思路</b></p><p> 用8051單片機控制程序執(zhí)行,通過LED動態(tài)掃描來顯示倒計時。買次執(zhí)行中斷時判斷計時是否繼續(xù)倒計時,同時通過按鍵掃描的方式來判斷是否有輸入更改倒計時的控制信息。通過單片機的處理來達到對倒計時的更新,當倒計時結束時來驅動蜂鳴器發(fā)出響聲。</p><p><b> 2.程序流程圖</b>&
10、lt;/p><p><b> v</b></p><p><b> 三、程序</b></p><p> C語言比匯編語言簡潔緊湊,靈活方便,語法限制不太嚴格,自由度大,本例采用C語言進行程序編寫。</p><p> #include <reg52.h></p><
11、p> #define uchar unsigned char</p><p> #define uint unsigned int</p><p> void diyi(); //函數聲明</p><p> void xianshi();//函數聲明</p><p> void panduan();//函數聲明</p&
12、gt;<p> void delay(uchar z);//函數聲明</p><p> uchar t=10,m=0,a,temp,b; //定義相關變量</p><p> uchar code at[]={0xe0,0xd0,0xb0,0x70};</p><p> uchar code as[10]={0xc0,0xf9,0xa4,0xb
13、0,0x99,0x92,0x82,0xf8,0x80,0x90};</p><p> uchar code bs[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};</p><p><b> //數組定義</b></p><p> void main()//主函數</p><p&
14、gt;<b> {</b></p><p> diyi(); //調用定義函數</p><p> EA=0; //關閉中斷 </p><p><b> while(1)</b></p><p><b> {</b></p><p>
15、 panduan(); //調用判斷函數</p><p><b> if(b==1)</b></p><p> xianshi();//調用顯示函數</p><p><b> }</b></p><p><b> }</b></p><p>
16、 void diyi()//定義定義子函數</p><p><b> {</b></p><p> P2=0xbf;P0=0xbf; P2=0x9f; P0=0xff;</p><p> TMOD=0x01;</p><p> TH0=(65536-50000)/256;</p><p
17、> TL0=(65536-50000)%256;</p><p><b> EA=1;</b></p><p><b> ET0=1;</b></p><p><b> TR0=1;</b></p><p><b> }</b></p
18、><p> void exer1() interrupt 1 //定義定時器/計數器子函數</p><p><b> {</b></p><p><b> uchar t1;</b></p><p> TH0=(65536-50000)/256;</p><p> T
19、L0=(65536-50000)%256;</p><p><b> t1++;</b></p><p> if(t1==10)</p><p> {P2=0x9f;P0=0x00;}</p><p> if(t1==20)</p><p><b> {</b>&
20、lt;/p><p> P2=0x9f;P0=0xff; //LED燈閃爍</p><p><b> t1=0; </b></p><p><b> if(t==0)</b></p><p><b> {</b></p><p> if((m
21、==0))</p><p><b> {</b></p><p> P2=0xbf; P0=0xff;P2=0x9f;P0=0xff;//定時時間到了 打開蜂鳴器 關閉LED燈</p><p> P2 = 0xdf;P0 =bs[4]; P2=0x1f; P0=0xff; P2 = 0xff; P0=0xff; P2=0x1f;P0=0
22、x00;</p><p><b> b=0;</b></p><p><b> EA=0;</b></p><p><b> }</b></p><p><b> if(m!=0)</b></p><p><b>
23、 {</b></p><p> t=60; m--;</p><p><b> } </b></p><p><b> } </b></p><p><b> t--;</b></p><p><b> }&
24、lt;/b></p><p><b> }</b></p><p> void xianshi()//定義顯示子函數 </p><p><b> {</b></p><p> P2 = 0xdf;P0 =bs[0]; P2=0x1f; P0=0xff; P2 = 0xff;
25、P0 =as[t%10]; P2=0x1f;P0=0x00;delay(3);</p><p> P2 = 0xdf;P0 =bs[1]; P2=0x1f; P0=0xff; P2 = 0xff; P0 =as[(t/10)%10]; P2=0x1f;P0=0x00;delay(3);</p><p> P2 = 0xdf;P0 =bs[2]; P2=0x1f; P0=0xff
26、; P2 = 0xff; P0 =0xbf; P2=0x1f;P0=0x00;delay(3);</p><p> P2 = 0xdf;P0 =bs[3]; P2=0x1f; P0=0xff; P2 = 0xff; P0 =as[m%10]; P2=0x1f;P0=0x00;delay(3);</p><p> P2 = 0xdf;P0 =bs[4]; P2=0x1f;
27、P0=0xff; P2 = 0xff; P0 =as[(m/10)%10]; P2=0x1f;P0=0x00;delay(3);</p><p><b> }</b></p><p> void delay(uchar z)//延時子函數</p><p><b> {</b></p><p>
28、; uchar i,j;</p><p> for(i=0;i<z;i++)</p><p> for(j=0;j<110;j++);</p><p><b> }</b></p><p> void panduan()//判斷子函數</p><p><b>
29、{</b></p><p><b> P3=0xfd; </b></p><p><b> delay(5);</b></p><p><b> temp=P3;</b></p><p> temp=temp&0xf0;</p><
30、;p> if(temp!=0xf0)</p><p><b> {</b></p><p><b> delay(5);</b></p><p> if(temp!=0xfd)</p><p><b> {</b></p><p>
31、 P2 = 0xc0;P0 =bs[4]; P2=0x00;P0=0xff;P2 = 0xe0;P0 =0xff;P2=0x00;P0=0x00;delay(3);</p><p> while(P3!=0xfd); //判斷是否有鍵按下及格鍵功能</p><p> if(temp==at[0]) </p><p>
32、; { a=1;EA=0; m++;if(m==60)m=0;t=0; P2=0x9f;P0=0xff; P2=0xbf;P0=0xbf;b=1; }</p><p> if(temp==at[1])</p><p><b> {</b></p><p><b> if(a==1)</b></p>
33、<p> {EA=1; a=0;m=5;t=0; P2=0x9f;P0=0xff;}</p><p><b> }</b></p><p> if(temp==at[2])</p><p><b> {</b></p><p><b> if(a==1)</b&
34、gt;</p><p> {EA=1;a=0;m=10;t=0; P2=0x9f;P0=0xff;}</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b&g
35、t; P3=0xfe; </b></p><p><b> delay(5);</b></p><p><b> temp=P3;</b></p><p> temp=temp&0xf0;</p><p> if(temp!=0xf0)</p><p
36、><b> {</b></p><p><b> delay(5);</b></p><p> if(temp!=0xfe)</p><p><b> {</b></p><p> P2 = 0xc0;P0 =bs[4]; P2=0x00;P0=0xff;
37、P2 = 0xe0;P0 =0xff;P2=0x00;P0=0x00;delay(3);</p><p> while(P3!=0xfe); //判斷是否有鍵按下及格鍵功能</p><p> if(temp==at[0])</p><p><b> {</b></p><p><b> if(a==
38、1)</b></p><p> {EA=1; a=0;m=20;t=0;P2=0x9f;P0=0xff;}</p><p><b> }</b></p><p> P2 = 0xc0;P0 =bs[4]; P2=0x00;P0=0xff;P2 = 0xe0;P0 =0xff;P2=0x00;P0=0x00;delay(3);&
39、lt;/p><p><b> }</b></p><p><b> }</b></p><p><b> } </b></p><p><b> 總原理圖</b></p><p><b> 1,單片機電路<
40、;/b></p><p><b> 2,按鍵電路</b></p><p> 3,LED燈及數碼管電路</p><p><b> 五、結論與心得</b></p><p> 在此次單片機項目設計的過程中,我進一步認識到全面專業(yè)知識以及邏輯思考方式對研究問題的重要性,以及成功最重要的一塊敲門
41、磚是不妥協,不放棄!</p><p> 在這過程中書到用時方恨少,天下還是好人多——同學和老師的幫助給了我莫大的動力。在這兩周周中,有時一天中翻專業(yè)書的次數比前三周理論學習時合起來翻的次數都多,對理論聯系實際的重要性有了更新的領悟。通過請教他人加上自己的理解,并與所學的知識緊密相結合,我相信這過程必然對我今后的學習和工作產生積極的影響。除了獲取新的知識,深感鞏固舊的學問也很重要,尤其是結合了這幾年學的相關的專業(yè)
42、知識,對各門課都做一個全面的溫習,才不用帶著書柜跑。這不僅對我現在的學習乃至今后的工作都會有很大的幫助。 </p><p> 通過此次多功能數字計數器的設計制作,我們將從書本上學到的知識應用于實踐,再次鞏固了我的單片機知識。雖然設計過程中遇到了很多困難,但是在解決這些問題的過程無疑是對自身專業(yè)素質的提高。當最終調試成功的時候也是對自己的一種肯定。此次的設計不僅增強了自己在專業(yè)設計方面的信息,鼓舞了自己,更是一
43、次興趣的培養(yǎng),為以后的學習方向明確了重點。 另外在這次設計中我們遇到了不少的問題,針對不同的問題我們采取不同的解決方法,最終一一解決了。在我們遇到不懂得問題時,利用課本上、參考書上的知識,以及網上的資料最終解決問題。和隊友之間相互討論,明白了團隊合作的重要性。 本次項目設計還存在很多不足,比如,計數功能也不夠詳細等。以后爭取完善這個設計,以提高我們的單片機設計能力。 這里很感謝李曉艷老師給我們的指導和教育,感謝她給我們提供了良好的學
44、習設計環(huán)境,也很感謝可愛的伙伴們,讓我覺得團隊的力量很偉大。 希望老師給以評點和支持,我將在今后朝著這些方向學習奮斗。</p><p><b> 六、參考文獻</b></p><p> 【3】張毅剛,彭喜元,彭宇.單片機原理及應用.高等教育出版社.2012,11</p><p> 【2】譚浩強.C程序設計教程.清華大學出版社2011,0
45、8</p><p> 【3】張永瑞.電子測量技術基礎[M].西安:西安電子科技大學出版社,2002.</p><p> 【4】李春.數字頻率計設計[D].北京:邵陽電子廠,2011,02: 4頁到7頁;</p><p> 【5】張杰,楊艷麗,馬莉莉,張立倩.基于單片機C語言的數字頻率計設計.</p><p> 內蒙古農業(yè)大學
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于c語言單片機倒數計時器設計
- 單片機課程設計--音樂倒數計時器
- 課程設計-基于單片機音樂倒數計時器的設計
- 單片機課程設計-單片機電秒計時器
- 單片機課程設計-秒計時器設計
- 單片機時鐘計時器課程設計
- 單片機課程設計--00-59_秒計時器
- 60秒倒計時器-單片機課程設計
- 單片機課程設計---籃球比賽計分計時器
- 單片機課程設計--單片機60秒計時器的設計與仿真
- 單片機答辯倒計時器課程設計報告
- 單片機課程設計---(00-59秒計時器設計)
- 課程設計---基于單片機at89c51的數字鐘自動計時器
- 60秒倒計時器-單片機課程設計報告
- 基于單片機的紅外計時器
- 單片機原理及應用課程設計--答辯倒計時器
- 課程設計報告-籃球30秒倒數計時器
- 單片機課程設計---倒數計數器
- 倒數計數器單片機課程設計
- 基于c語言單片機秒表課程設計
評論
0/150
提交評論