版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 《單片機原理及應用》</p><p><b> 課程設計報告</b></p><p> 專 業(yè): </p><p> 班 級: </p><p> 姓 名: </p>
2、;<p> 指導教師: </p><p> 二0一二 年 十二月 二十五 日</p><p> 單片機原理及應用課程設計任務書</p><p> 一、設計題目:答辯倒計時器</p><p><b> 二、設計目的 </b></p><p>
3、 1、鞏固和加深單片機原理課程知識的理解和運用。 </p><p> 2、進一步提高學生單片機應用系統(tǒng)的設計能力。 </p><p> 3、培養(yǎng)學生綜合分析問題、發(fā)現(xiàn)問題和解決問題的能力。</p><p><b> 三、設計要求</b></p><p> 設計一個答辯倒計時器,用2位數(shù)碼管顯示剩余分鐘,2位數(shù)碼管
4、顯示剩余秒 ,復位后顯示10.00表示設定10分鐘,并可加減修改,按開始/取消按鈕開始倒計時,再次按開始/取消按鈕則復位,時間到則蜂鳴音提示。總體要求如下:</p><p> 1、方案論證,確定總體電路原理圖。 </p><p> 2、元器件選擇,設計PCB圖(或用萬能電路實驗板搭線)。</p><p> 3、繪制程序流程圖,編寫匯編語言源程序(或C語言源程序
5、)。</p><p> 4、安裝調試,實現(xiàn)倒計時器的基本功能。 </p><p> 四、可提供的主要電子元器件 </p><p> 1、AT89S51;7407; (均為DIP封裝)</p><p> 2、LED(4位一體共陰);按鍵;電阻排;三極管;蜂鳴器</p><p> 3、石英晶振6M;30pF;0.
6、1uF;10uF電容;電阻若干。</p><p><b> 五、實踐步驟</b></p><p> 1、收集相關資料,完成電路原理圖和應用程序流程圖。</p><p> 2、編寫匯編語言(或C語言)源程序。</p><p> 3、根據(jù)所設計的原理圖,完成電路板的制作安裝(可用萬能板)。</p>&l
7、t;p> 4、硬件軟件綜合調試,并完善其設計功能。</p><p><b> 六、實踐標準</b></p><p> 完成電路制作安裝,完成程序設計并調試通過,實現(xiàn)其設計要求和功能,裝配工藝美觀,電路運行穩(wěn)定、可靠。</p><p><b> 七、設計報告總結</b></p><p>
8、 1、寫出設計方案(包括方案對比,方案確定),給出完整的電路原理圖和設計程序流程圖。 </p><p> 2、對所設計方案的實現(xiàn)進行全面分析。</p><p> 3、編程調試方法和程序清單。</p><p> 4、安裝調試過程,出現(xiàn)的各種現(xiàn)象,總結經(jīng)驗和體會。</p><p> 5、進一步完善的設想。</p><
9、p> 目 錄</p><p> 一、設計題目:答辯倒計時器1</p><p><b> 二、設計目的1</b></p><p><b> 三、設計要求1</b></p><p> 四、元器件清單及所用儀器設備1</p><p><b
10、> 五、實踐步驟3</b></p><p><b> 六、實踐標準3</b></p><p> 七、設計報告總結3</p><p> 1、寫出設計方案3</p><p> 3、編程調試方法7</p><p> 4、安裝調試過程,出現(xiàn)的各種現(xiàn)象7</p
11、><p> 5、總結經(jīng)驗和體會8</p><p> 6、進一步完善的設想9</p><p><b> 參考書目:9</b></p><p> 附錄A:仿真電路原理圖10</p><p> 附錄B:源代碼11</p><p> 設計題目:答辯倒計時器<
12、/p><p><b> 二、設計目的</b></p><p> 1、鞏固和加深單片機原理課程知識的理解和運用。 </p><p> 2、進一步提高學生單片機應用系統(tǒng)的設計能力。 </p><p> 3、培養(yǎng)學生綜合分析問題、發(fā)現(xiàn)問題和解決問題的能力。</p><p><b> 三、
13、設計要求</b></p><p> 設計一個答辯倒計時器,用2位數(shù)碼管顯示剩余分鐘,2位數(shù)碼管顯示剩余秒 ,復位后顯示10.00表示設定10分鐘,并可加減修改,按開始/取消按鈕開始倒計時,再次按開始/取消按鈕則復位,時間到則蜂鳴音提示??傮w要求如下:1、方案論證,確定總體電路原理圖。</p><p> 2、元器件選擇,設計PCB圖(或用萬能電路實驗板搭線)。</p&g
14、t;<p> 3、繪制程序流程圖,編寫匯編語言源程序(或C語言源程序)。</p><p> 4、安裝調試,實現(xiàn)倒計時器的基本功能。 </p><p> 四、元器件清單及所用儀器設備</p><p><b> 表1設備清單</b></p><p> 表2 工具清單
15、 </p><p><b> 表3 元器件清單</b></p><p><b> 五、實踐步驟</b></p><p> 1、根據(jù)實驗要求,完成電路原理圖和應用程序流程圖。(見圖1和圖3)</p><p> 2、C語言源程序。(見附錄B)</p><p&
16、gt; 3、根據(jù)所設計的原理圖,完成電路板的焊接,在進行測試。</p><p> 4、硬件軟件綜合調試,如果不能實行,在分析哪里出了問題,糾正問題在去測試,直到測試完成,完善其設計功能。</p><p><b> 六、實踐標準</b></p><p> 1、完成電路的制作,排版與焊接,并進行測量是否能正常的運行;</p>
17、<p> 2、完成程序的設計,并進行程序調試是否出現(xiàn)錯誤;</p><p> 3、硬件與軟件結合進行調試看是否能達到課程設計目的;</p><p> 4、最后實現(xiàn)其設計要求和功能,裝配工藝美觀,電路運行穩(wěn)定、可 靠。</p><p><b> 七、設計報告總結</b></p><p><b
18、> 1、寫出設計方案</b></p><p><b> A、設計方案:</b></p><p> 1、根據(jù)電路要求,設計硬件電路和軟件程序。(見圖3)</p><p> 2、對已設計出的硬件電路進行模擬仿真,確保硬件電路能正常工作。(見附錄A)</p><p> 3、準備好相關電子元件,制作硬
19、件電路。(見圖2)</p><p> 4、將軟件程序下載到已經(jīng)制作好的硬件電路中調試,實現(xiàn)設計要求。</p><p><b> B、電路原理圖</b></p><p><b> 圖1 原理圖</b></p><p> 圖2 電路版式圖(一)</p><p> 圖2
20、 電路版式圖(二)</p><p><b> C 硬件流程圖</b></p><p><b> 圖3硬件流程圖</b></p><p> D、設計程序流程圖 </p><p><b> 判斷</b></p><p><b> NO&
21、lt;/b></p><p><b> YES</b></p><p><b> 圖4程序流程圖</b></p><p> 2、對所設計方案的實現(xiàn)進行全面分析</p><p> A、 該硬件電路的核心部分為一塊AT89S51單片機,對電路進行各方面控制和計算。用一個4位一體的8段共陰
22、數(shù)碼顯示,用7407作為緩沖級,提高輸出電路驅動能力,使數(shù)碼管能正常顯示。用一個9013三極管驅動蜂鳴器,當電路上電和計時時間到時響一秒提示時間到。用一個6M石英晶振和2個30pF的電容為AT89S51芯片提供時鐘頻率,2個30pF電容主要是為了方便晶振起振。K1、K2、K3、3個開關分別用于加時間、減時間、復位和開始。用若干電阻作為上拉電阻,增大電路輸出電流。</p><p> B、 軟件程序全部采用C語言
23、編寫。</p><p><b> 3、編程調試方法</b></p><p> 編程與調試是C語言和Keil C軟件相結合的。C語言是一種C語言是國際上廣泛流行的、很有發(fā)展前途的計算機高級語言。它適合作為系統(tǒng)描述語言,即可用來編寫系統(tǒng)軟件,也可用來編寫應用軟件。Keill軟件是一種目前用得比較廣泛的一款單片機編程軟件,它支持 c 和 匯編的編譯,并可生成 HEX
24、文件,還可進行代碼的軟硬件仿真軟件。</p><p> 4、安裝調試過程,出現(xiàn)的各種現(xiàn)象</p><p><b> 硬件:</b></p><p> 焊接中易出現(xiàn)虛焊,假焊和多點連接導致短路等故障;</p><p> 焊接中粗心,導致某些點未焊接直接調試;</p><p><b>
25、; 軟件:</b></p><p> 1、數(shù)碼管有一位不顯示。主要原因:有一位輸出I/O接錯(P2.7)。</p><p> 2、 按鍵未設有防抖功能導致按下一次出現(xiàn)多次按下結果;</p><p> 3、 定時程序,沒有考慮到主函數(shù)的運行時間引起定時不是很準,稍有延 時;</p><p> 4、延時函數(shù)用法不
26、當,數(shù)碼管有重影;</p><p><b> 5、總結經(jīng)驗和體會</b></p><p> 在這次課程設計中,我們運用到了以前所學的專業(yè)課知識,如:CAD制圖、匯編語言、模擬和數(shù)字電路知識等。雖然過去從未獨立應用過它們,但在學習的過程中帶著問題去學我發(fā)現(xiàn)效率很高,這是我做這次課程設計的又一收獲。 </p><p> 另外,這次課程設計讓我
27、感到了團隊合作的重要性。在團隊中,我們互幫互助,對整個課程設計來說,這是至關重要的,缺少每一個人都會對我們的設計產(chǎn)生影響,組長鄒威從課題的確定,元器件的分類,電路的焊接等各個方面都盡心盡責,花的心思。還有要感謝指導老師在我們遇到困難時,給予我們的建議與鼓勵。</p><p> 最后,要做好一個課程設計,就必須做到:在設計程序之前,對所用單片機的內(nèi)部結構有一個系統(tǒng)的了解,知道該單片機內(nèi)有哪些資源;要有一個清晰的思
28、路和一個完整的的軟件流程圖;在設計程序時,不能妄想一次就將整個程序設計好,反復修改、不斷改進是程序設計的必經(jīng)之路;要養(yǎng)成注釋程序的好習慣,一個程序的完美與否不僅僅是實現(xiàn)功能,而應該讓人一看就能明白你的思路,這樣也為資料的保存和交流提供了方便;在設計課程過程中遇到問題是很正常德,但我們應該將每次遇到的問題記錄下來,并分析清楚,以免下次再碰到同樣的問題。 </p><p> 從選題到定稿,從理論到實踐,在接近兩星期
29、的日子里,可以說得是苦多于甜,但是可以學到很多很多的的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設計的
30、過程中發(fā)現(xiàn)了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,比如說不懂一些元器件的使用方法,對單片機C語言掌握得不好…… </p><p> 課程設計結束了,但是從中學到的知識會讓我受益終身。發(fā)現(xiàn)、提出、分析、解決問題和實踐能力的提高都會受益于我在以后的學習、工作和生活中。 。</p><p> 6、進一步完善的設想</p><p> A、新
31、增一段程序,對硬件的按鍵進行防抖,使計時器計時更加的精確;</p><p> B、對于硬件的導線線路,盡量在線路比較短的地方不使用導線,使用焊錫進行導通,這樣就會比較的美觀;</p><p> C、硬件元器件的排版要進行比較的規(guī)律,盡量做到導線排版的時候不會出現(xiàn)重疊的現(xiàn)象;</p><p> D、計算每一條語句的時間,提高執(zhí)行的定時器的精度。</p>
32、;<p><b> 參考書目:</b></p><p> 趙偉軍,《Protel99se教程》,北京,人民郵電出版社,1996年</p><p> 樓然苗,李光飛.單片機課程設計指導[M].北京:北京航空航天大學出版社, 2007年</p><p> 楊居義.單片機課程設計指導(實例教程) [M].北京:清華大學出版社,
33、2010年</p><p> 李華.MCS-51系列單片機實用接口技術[M].北京:北京航空航天大學出版社, 1993年</p><p> 唐華光,《電子技術基礎》,高等教育出版社,北京,2006年</p><p> 譚浩強,《C程序設計教程》,北京,清華大學出版社,2007年</p><p> 附錄A:仿真電路原理圖</p&g
34、t;<p><b> 附錄B:源代碼</b></p><p> #include<reg51.h></p><p> #define uint unsigned int </p><p> #define uchar unsigned char</p><p> uchar code
35、WEIMA[]={</p><p> 0x3f,0x06,0x5b,0x4f,</p><p> 0x66,0x6d,0x7d,0x07,</p><p> 0x7f,0x6f};</p><p> uchar num1;</p><p> void BELL();</p><p>
36、 void Delay(uint z);</p><p> void Display(uint M1,uint M2,uint S3,uint S4);</p><p> void jishi(uint minute1,uint minute2,uint second1,uint second2);</p><p> int minute1,minute2,s
37、econd1,second2,save1,save2,save3,save4;</p><p> sbit BUZZER=P1^0; //定義P1.0為喇叭驅動端 </p><p> sbit t1=P3^5;//定時器T1</p><p><b> uint t=0;</b></p><p> void mai
38、n()</p><p><b> {</b></p><p><b> uint f,w;</b></p><p><b> num1=0;</b></p><p><b> BUZZER=0;</b></p><p>&
39、lt;b> P2=0x00;</b></p><p> Delay(228);</p><p> minute1=1;</p><p> minute2=second1=second2=0;</p><p><b> while(1)</b></p><p><b
40、> {</b></p><p> EA=1;//開總中斷</p><p> TCON=0x05;</p><p><b> if(t==15)</b></p><p><b> {</b></p><p> EX0=1;//開外部中斷0<
41、;/p><p><b> EX1=1;</b></p><p><b> }</b></p><p> else t=t+1;</p><p><b> t1=1;</b></p><p><b> f=0;</b></
42、p><p><b> if(t1==0)</b></p><p><b> {</b></p><p><b> num1=0;</b></p><p> save1=minute1;</p><p> save2=minute2;</p&
43、gt;<p> save3=second1;</p><p> save4=second2;</p><p><b> t1=1;</b></p><p><b> w=1;</b></p><p><b> }</b></p><p
44、><b> while(w)</b></p><p><b> {</b></p><p> TMOD=0x01;</p><p> TH1=(65536-50000)/256;</p><p> TL1=(65536-50000)%256;</p>&l
45、t;p><b> ET0=1;</b></p><p><b> TR0=1;</b></p><p> if(num1==10)</p><p><b> {</b></p><p> EX0=0;//關外部中斷</p><p><
46、;b> EX1=0;</b></p><p><b> num1=0;</b></p><p> if((second2==0)&&(second1==0)&&(minute2==0))</p><p><b> {</b></p><p>
47、; minute1=minute1-1;</p><p> minute2=10;</p><p> minute2=minute2-1;</p><p> second1=6;</p><p> second1=second1-1;</p><p> sec
48、ond2=10;</p><p><b> }</b></p><p> second2=second2-1;</p><p> if((minute1==0)&&(minute2==0)&&(second1==0)&&(second2==0))</p><p>
49、; {</p><p><b> BELL();</b></p><p><b> w=0;</b></p><p> Delay(300);</p><p> }</p><p>
50、;<b> }</b></p><p> Display(second2,second1,minute2,minute1); </p><p><b> if(t1==0)</b></p><p><b> {</b></p><p> minute1=sa
51、ve1;</p><p> minute2=save2;</p><p> second1=save3;</p><p> second2=save4;//復位保存</p><p><b> w=0;</b></p><p> Delay(300);</p><p&g
52、t;<b> }</b></p><p><b> else </b></p><p><b> f++;</b></p><p><b> }</b></p><p> Display(second2,second1,minute2,min
53、ute1);</p><p><b> }</b></p><p><b> }</b></p><p> void Display(uint M1,uint M2,uint S3,uint S4)</p><p><b> {</b></p><p
54、><b> uint i;</b></p><p> for(i=0;i<4;i++)</p><p><b> {</b></p><p><b> if(i==0)</b></p><p><b> {</b></p>
55、;<p><b> P2=0xf7;</b></p><p><b> P0=0x00;</b></p><p> Delay(1);</p><p> P0=WEIMA[M1];</p><p><b> }</b></p>&l
56、t;p><b> if(i==1)</b></p><p><b> {</b></p><p><b> P2=0xfb;</b></p><p><b> P0=0x00;</b></p><p><b> Delay(1);
57、</b></p><p> P0=WEIMA[M2];</p><p><b> }</b></p><p><b> if(i==2)</b></p><p><b> {</b></p><p><b> P2=0xf
58、d;</b></p><p><b> P0=0x80;</b></p><p><b> Delay(1);</b></p><p> P0=WEIMA[S3];</p><p><b> }</b></p><p><b&g
59、t; if(i==3)</b></p><p><b> {</b></p><p><b> P2=0xfe;</b></p><p><b> P0=0x00;</b></p><p><b> Delay(1);</b><
60、/p><p> P0=WEIMA[S4];</p><p><b> }</b></p><p><b> Delay(4);</b></p><p><b> }</b></p><p><b> }</b></p&g
61、t;<p> void Delay(uint z)</p><p><b> {</b></p><p><b> int x,j;</b></p><p> for(x=0;x<z;x++)</p><p> for(j=0;j<50;j++);</p&g
62、t;<p><b> }</b></p><p> void exter0() interrupt 0</p><p><b> {</b></p><p> if(minute2==0)</p><p><b> {</b></p>&
63、lt;p> minute1=minute1-1;</p><p> minute2=10;</p><p><b> }</b></p><p> minute2=minute2-1;</p><p> if(minute1==0)</p><p><b> {
64、</b></p><p> if(minute2==0)</p><p><b> {</b></p><p> minute1=1;</p><p> minute2=0;</p><p><b> }</b></p><p&
65、gt;<b> }</b></p><p> EX0=0;//關外部中斷</p><p><b> EX1=0;</b></p><p><b> t=0;</b></p><p><b> }</b></p><p>
66、 void ADD() interrupt 2</p><p><b> {</b></p><p> minute2=minute2+1;</p><p> if(minute2==10)</p><p><b> {</b></p><p> minute1=m
67、inute1+1;</p><p> minute2=0;</p><p> if(minute1==10)</p><p><b> {</b></p><p> minute1=0;</p><p> minute2=0;</p><p><b>
68、 }</b></p><p><b> }</b></p><p> EX0=0;//關外部中斷</p><p><b> EX1=0;</b></p><p><b> t=0;</b></p><p><b> }&
69、lt;/b></p><p> void time1() interrupt 1</p><p><b> {</b></p><p> TH1=(65536-50000)/256;</p><p> TL1=(65536-50000)%256;</p><p><b>
70、 num1++;</b></p><p><b> }</b></p><p> uint g=0; //定義一變量,用于控制喇叭響的時間</p><p> void delay_500us(void) //500us延遲函數(shù),用于產(chǎn)生1KHZ信號</p><p><b> {</b&
71、gt;</p><p> unsigned char a,b;</p><p> for(b=71;b>0;b--)</p><p> for(a=2;a>0;a--);</p><p><b> }</b></p><p> void delay_250us(void) /
72、/250us延遲函數(shù),用于產(chǎn)生2KHZ信號</p><p><b> {</b></p><p> unsigned char a,b;</p><p> for(b=19;b>0;b--)</p><p> for(a=5;a>0;a--);</p><p><b>
73、; }</b></p><p> void BELL() //報警函數(shù)</p><p><b> { </b></p><p><b> uint a,b;</b></p><p><b> a=1;</b></p><p><
74、;b> b=0;</b></p><p><b> while(a)</b></p><p><b> {</b></p><p> for(;b<10;b++)</p><p><b> {</b></p><p>&
75、lt;b> P2=0x00;</b></p><p> P0=WEIMA[0];</p><p> while(g<=200) //1KHZ響1S</p><p><b> {</b></p><p> delay_500us(); //延遲500us</p><p&
76、gt; BUZZER=~BUZZER; </p><p> g++; //取反次數(shù)加1</p><p><b> }</b></p><p> g=0; //清時間控制變量</p><p> while(g<=400) //2KHZ響1S</p><p><b> {&
77、lt;/b></p><p> delay_250us(); //延遲250US</p><p> BUZZER=~BUZZER; //喇叭驅動位取反</p><p> g++; //取反次數(shù)加1</p><p><b> }</b></p><p> g=0; //清時間控制變量
78、</p><p><b> }</b></p><p><b> P2=0x00;</b></p><p><b> BUZZER=0;</b></p><p><b> if(t1==0)</b></p><p><
79、b> {</b></p><p> minute1=save1;</p><p> minute2=save2;</p><p> second1=save3;</p><p> second2=save4;</p><p><b> a=0;</b></p&g
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機答辯倒計時器課程設計報告
- 《單片機原理及應用》課程設計任務書--倒計時器
- 60秒倒計時器-單片機課程設計
- 60秒倒計時器-單片機課程設計報告
- 單片機課程設計--倒計時
- 倒計時器課程設計
- 單片機課程設計--簡單的倒計時器的設計與制作
- 單片機60倒計時課程設計
- 課程設計報告---倒計時器
- 智能倒計時器課程設計
- 智能倒計時器課程設計
- 課程設計--倒計時計時器的設計
- 單片機【倒計時音樂鬧鐘】課程設計
- 單片機課程設計-30s倒計時
- 單片機99s倒計時課程設計
- 單片機課程設計--籃球倒計時牌設計
- led數(shù)字倒計時器課程設計報告
- 課程設計-籃球比賽倒計時器
- 外文翻譯--基于單片機的學習式倒計時器
- 單片機課程設計---六十秒倒計時電路設計
評論
0/150
提交評論