單片機課程設(shè)計 設(shè)計并實現(xiàn)可編倒計時裝置
《單片機課程設(shè)計 設(shè)計并實現(xiàn)可編倒計時裝置》由會員分享,可在線閱讀,更多相關(guān)《單片機課程設(shè)計 設(shè)計并實現(xiàn)可編倒計時裝置(17頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 課程設(shè)計任務(wù)書 題 目: 設(shè)計并實現(xiàn)可編倒計時裝置 初始條件: 1. Protues軟件或Xl1000實驗箱; 2. 課程設(shè)計輔導(dǎo)資料:“Xl1000說明書以及實驗指導(dǎo)”“、單片微型計算機”等; 3. 先修課程:模擬電子技術(shù)、數(shù)字電子技術(shù)、Protues電路設(shè)計教程及單片機原理及應(yīng)用等課程 要求完成的主要任務(wù):(包括課程設(shè)計工作量及其技術(shù)要求,以及說明書撰寫等具體要求) 1. 課程設(shè)計時間:1周; 2. 課程設(shè)計內(nèi)容:設(shè)計并實現(xiàn)可編倒計時裝置; 要求:按秒倒計時,鍵盤預(yù)置分、秒各兩位數(shù),鍵控啟動計時,數(shù)碼管顯示倒計時。計時器歸零時輸出一音頻信號。 3. 本課程設(shè)
2、計統(tǒng)一技術(shù)要求:研讀輔導(dǎo)資料對應(yīng)章節(jié),對選定的設(shè)計題目進行理論分析,針對具體設(shè)計部分的原理分析、建模、必要的推導(dǎo)和可行性分析,畫出程序設(shè)計框圖,編寫程序代碼(含注釋),上機調(diào)試運行程序,記錄實驗結(jié)果(含計算結(jié)果和圖表),并對實驗結(jié)果進行分析和總結(jié); 4. 課程設(shè)計說明書按學(xué)?!罢n程設(shè)計工作規(guī)范”中的“統(tǒng)一書寫格式”撰寫,具體包括: ① 目錄; ② 設(shè)計原理; ③ 系統(tǒng)硬件線路設(shè)計圖; ④ 程序框圖; ⑤ 資源分配表; ⑥ 源程序 ⑦ 性能分析 ⑧ 課程設(shè)計的心得體會(至少500字); 時間安排: 指導(dǎo)教師簽名: 年 月
3、 日 系主任(或責(zé)任教師)簽名: 年 月 日 目錄 1.設(shè)計原理…………………………………………………………..2 1.1倒計時原理…………………………………………………2 1.2數(shù)碼管顯示原理…………………………………………..2 1.3矩陣鍵盤工作原理………………………………………..2 1.4小喇叭工作原理……………………………………………3 1.5led燈顯示原理……………………………………………..3 2.系統(tǒng)硬件線路設(shè)計圖……………………………………………4 2.1單片機部分………………………………………………..4 2.2數(shù)碼管
4、部分……………………………………………….4 2.3矩陣鍵盤部分……………………………………………5 2.4小喇叭及LED部分…………………………………….5 2.5X1000實驗箱連線………………………………………6 3.程序框圖………………………………………………………7 4.資源分配表……………………………………………………9 5.源程序………………………………………………………….9 6.性能分析……………………………………………………….14 7.總結(jié)與心得……………………………………………………15 8.本科生課程設(shè)計成績評定表………………………………….16
5、 1.設(shè)計原理 1.1倒計時原理 利用定時器T0工作于方式1下,為16位定時計數(shù)方式,由TH提供高8位,TL提供低8位的計數(shù)初值,最大計數(shù)為65536個脈沖,當(dāng)時,工作于定時方式,以振蕩源的12分頻信號作為計數(shù)脈沖;當(dāng)時,工作于計數(shù)方式,對外部脈沖輸入端輸入的脈沖計數(shù)。計數(shù)脈沖能否加到計數(shù)器上,受啟動信號的控制,當(dāng)GATE=0時只要TR=1則定時/計數(shù)器啟動工作。當(dāng)GATE=1時,TR=1和同時滿足才能啟動,此時啟動受到雙重控制。每啟動定時、計數(shù)前,需預(yù)置計數(shù)初值。啟動后計數(shù)器立即加1計數(shù),TL低8位的計數(shù)滿回零后向TH進位,當(dāng)16位計數(shù)滿回零后,中斷溢出標(biāo)志TF置1,產(chǎn)生中斷請
6、求,表示定時時間到或計數(shù)次數(shù)到。若允許中斷ET=1且CPU開中斷(EA=1),則CPU響應(yīng)中斷,轉(zhuǎn)向中斷服務(wù)程序,同時TF自動清零。TMOD=0x01設(shè)置定時器T0工作與方式1且為定時方式,由于每個計數(shù)脈沖的周期為1us,故若將定時器設(shè)置為10ms需接受10000次脈沖,所以要從初值55536處開始計數(shù),為定時器賦初值為TH=0xd8,TL=0xf0。在此基礎(chǔ)上以count--作為倒計時程序,設(shè)置count從100開始減1即可實現(xiàn)時間間隔為1s的倒計時。 1.2數(shù)碼管顯示原理 數(shù)碼管實際上是由7個發(fā)光二極管組成8字形構(gòu)成的,加上小數(shù)點就是8個,我們分別把他命名為A,B,C,D,E,F,
7、G,H。在Xl1000實驗箱接法為共陽極接法,我們獲得0123456789字符所對應(yīng)的HEX代碼即為0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60 。由于所有數(shù)碼管顯示端和控制端都接在一起,為了顯示出時鐘倒計時的效果,我們需要采用動態(tài)掃描以實現(xiàn)靜態(tài)顯示。在單片機里,首先顯示一個數(shù),然后關(guān)掉,顯示第二數(shù)數(shù),再關(guān)掉,那么將看到連續(xù)的數(shù)字顯示,輪流點亮掃描過程中,每位顯示器的點亮?xí)r間是極為短暫的(約1ms),由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝作用,盡管實際上各位顯示器并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù)。
8、 1.3矩陣鍵盤工作原理 矩陣按鍵部分由16個輕觸按鍵按照4x4的方式排列將行線所接的單片機I/O口作為輸出端,將列線所接的I/O口作為輸入。這樣,當(dāng)按鍵沒有按下時,所有的輸出端都是高電平,代表無鍵按下。行線輸出的是低電平,一旦有鍵按下,則輸入線就會被拉低,這樣通過讀入輸入線的狀態(tài)就可得知是否有按鍵按下了。確定矩陣式鍵盤上何鍵被按下有許多方法,在此次設(shè)計中采用了一種行列反轉(zhuǎn)掃描法。相較于行掃描法跟為簡單。利用行列的變化,確定出其交點出的按鍵的按下與否。 1.4小喇叭工作原理 聲音是由震動所產(chǎn)生的,一定頻率的震動就產(chǎn)生了一定頻率的聲音。在倒計時結(jié)束時,根據(jù)計時結(jié)束后每一位都是0,啟動設(shè)
9、置好的一定頻率的脈沖,將脈沖傳送到實驗箱上的小喇叭,即可實現(xiàn)小喇叭的報警。 1.5led燈顯示原理 在實驗要求的基礎(chǔ)之上引入了幾個led燈作為現(xiàn)象燈,對應(yīng)于倒計時秒高位為5,4,3,2,時依次點亮,且有一個燈在計時結(jié)束后伴隨著小喇叭報警聲不停閃爍。顯示原理,即是在相應(yīng)的時間點給led低電平可實現(xiàn)點亮,給予方波脈沖實現(xiàn)閃爍。 2.系統(tǒng)硬件線路設(shè)計圖 2.1單片機部分 2.2數(shù)碼管部分 2.3矩陣鍵盤部分 2.4小喇叭及LED部分 2.5X1000實驗箱連線 3.程序框圖 分高位顯
10、示 開始 鍵盤掃描 flag1=1 鍵盤掃描 flag2=1 分低位顯示 鍵盤掃描 flag3=1 秒高位顯示 鍵盤掃描 flag4=1 秒低位顯示 鍵盤掃描 flag5=1 Y N N N N Y Y N N N N N Y Y 啟動倒計時 分秒公式計算 單片機賦初值 動態(tài)掃描實現(xiàn)靜態(tài)顯示 單片機重新賦初值 秒信號進行減計數(shù) 檢測 minute==0&&second==0 分秒顯示值處理 檢測 Second==0 flag6=1 second=60 minute-- 關(guān)閉數(shù)碼管 音頻輸出 檢測秒高位
11、為5,4,3,2,1 對應(yīng)led=0 對應(yīng)led=1 結(jié)束 Y N Y N N Y 4.資源分配表 單片機P0口:連接8段數(shù)碼管的顯示端,即JP51連接JP5,P0.0連接B,P0.1連接F,P0.2連接A,P0.3連接G,P0.4連接D,P0.5連接H,P0.6連接E,P0.7連接C。 單片機的P2口:連接8段數(shù)碼管的控制端,即JP52連接JP8,P2.0到P2.7依次連接控制端的0到7。 單片機的P1口:連接矩陣鍵盤,即JP44連接JP50。 單片機的P3口:P3.2連接小喇叭,P3.2連接JP16。P3.3到P3.7連接8路指示燈中的任意5路。 5.
12、源程序
#include
13、x21,0x7a,0x20,0x60}; //定義秒和分顯示的高低位 uchar Show_MH,Show_ML,Show_SH,Show_SL; //定義相關(guān)變量 uchar minute,second,key1,key2,key3,key4,key5,MH,ML,SH,SL; //設(shè)置標(biāo)志位 uchar flag1=1,flag2=1,flag3=1,flag4=1,flag5=1,flag6=0; //鍵盤掃描程序(行列翻轉(zhuǎn)法) uchar keyscan(void); //比較簡單的自減延時函數(shù) void delay(uint cnt) {while(--cnt
14、);} //********************************主函數(shù)*********************************// main() { //**********************輸入分的高位**********************************// while(flag1) { key1=keyscan();//調(diào)用鍵盤掃描, P2=0xfe;//第1個數(shù)碼管顯示 switch(key1)//按下相應(yīng)的鍵顯示相對應(yīng)的碼值 { case 0x7e:{P0=tab[0];MH=
15、0;flag1=0;};break;//0 case 0x7d:{P0=tab[1];MH=1;flag1=0;};break;//1 case 0x7b:{P0=tab[2];MH=2;flag1=0;};break;//2 case 0x77:{P0=tab[3];MH=3;flag1=0;};break;//3 case 0xbe:{P0=tab[4];MH=4;flag1=0;};break;//4 case 0xbd:{P0=tab[5];MH=5;flag1=0;};break;//5 } delay(30000
16、); } //******************************輸入分的低位****************************// while(flag2) { key2=keyscan();//調(diào)用鍵盤掃描, P2=0xfd;//第2個數(shù)碼管顯示 switch(key2)//按下相應(yīng)的鍵顯示相對應(yīng)的碼值 { case 0x7e:{P0=tab[0];ML=0;flag2=0;};break;//0 case 0x7d:{P0=tab[1];ML=1;flag2=0;};break;//1
17、 case 0x7b:{P0=tab[2];ML=2;flag2=0;};break;//2 case 0x77:{P0=tab[3];ML=3;flag2=0;};break;//3 case 0xbe:{P0=tab[4];ML=4;flag2=0;};break;//4 case 0xbd:{P0=tab[5];ML=5;flag2=0;};break;//5 case 0xbb:{P0=tab[6];ML=6;flag2=0;};break;//6 case 0xb7:{P0=tab[7];ML=7;flag2=0;};
18、break;//7 case 0xde:{P0=tab[8];ML=8;flag2=0;};break;//8 case 0xdd:{P0=tab[9];ML=9;flag2=0;};break;//9 } delay(30000); } //******************************輸入秒的高位*****************************// while(flag3) { key3=keyscan();//調(diào)用鍵盤掃描, P2=0xf7;//第3個數(shù)碼管顯示 switch(
19、key3)//按下相應(yīng)的鍵顯示相對應(yīng)的碼值 { case 0x7e:{P0=tab[0];SH=0;flag3=0;};break;//0 case 0x7d:{P0=tab[1];SH=1;flag3=0;};break;//1 case 0x7b:{P0=tab[2];SH=2;flag3=0;};break;//2 case 0x77:{P0=tab[3];SH=3;flag3=0;};break;//3 case 0xbe:{P0=tab[4];SH=4;flag3=0;};break;//4 case 0xbd:{P0=tab
20、[5];SH=5;flag3=0;};break;//5 } delay(30000); } //********************************輸入秒的低位******************************// while(flag4) { key4=keyscan();//調(diào)用鍵盤掃描, P2=0xef;//第4個數(shù)碼管顯示 switch(key4)//按下相應(yīng)的鍵顯示相對應(yīng)的碼值 { case 0x7e:{P0=tab[0];SL=0;flag4=0;};break;//0
21、 case 0x7d:{P0=tab[1];SL=1;flag4=0;};break;//1 case 0x7b:{P0=tab[2];SL=2;flag4=0;};break;//2 case 0x77:{P0=tab[3];SL=3;flag4=0;};break;//3 case 0xbe:{P0=tab[4];SL=4;flag4=0;};break;//4 case 0xbd:{P0=tab[5];SL=5;flag4=0;};break;//5 case 0xbb:{P0=tab[6];SL=6;flag4=0;};break;//
22、6 case 0xb7:{P0=tab[7];SL=7;flag4=0;};break;//7 case 0xde:{P0=tab[8];SL=8;flag4=0;};break;//8 case 0xdd:{P0=tab[9];SL=9;flag4=0;};break;//9 } delay(30000);//延時 } //*****************************按鍵啟動倒計時************************8***// while(flag5) { key5=keyscan();
23、//調(diào)用鍵盤掃描 switch(key5)//檢測鍵控信號 case 0xe7:flag5=0; delay(30000); } //******************************分秒計算式*********************************// minute=MH*10+ML; second=SH*10+SL; //*****************************單片機賦初值****************************// TMOD=0x01;//定時器0設(shè)置 10ms
24、in 12M crystal TH0=0xd8; TL0=0xf0; IE= 0x82;//打開中斷T0 TR0=1; //***************************數(shù)碼管動態(tài)掃描實現(xiàn)靜態(tài)顯示********************// while(1)// { P0=Show_MH;//顯示分十位 P2=0xfe; delay(300); P0=Show_ML; //顯示分個位 P2=0xfd; delay(300); P0=0xf7; //顯示分隔符 P
25、2=0xfb; delay(300); P0=Show_SH;//顯示秒十位 P2=0xf7; delay(300); P0=Show_SL; //顯示秒個位 P2=0xef; delay(300); } } //**************************************************************************// void tim(void) interrupt 1 using 1//定時器T0中斷服務(wù)程序 {static uchar coun
26、t; uchar g,control2,control3,control4,control5; //**********************************單片機賦初值************************// TH0=0xd8;//賦初值55536 TL0=0xf0; count++; //*************************100x10ms=1s,實現(xiàn)秒信號減計數(shù)****************// if (count==100) { count=0; second--;//秒減1 //*****檢測是否計時結(jié)束并對顯示值處理
27、*********// if(minute==0 && second==0) { Show_MH=tab[minute/10];//十位顯示值處理 Show_ML=tab[minute%10]; //個位顯示處理 Show_SH=tab[second/10];//十位顯示值處理 Show_SL=tab[second%10]; //個位顯示處理 delay(30000); flag6=1;//轉(zhuǎn)向音頻輸出 } //***********檢測秒位是否計時結(jié)束并對顯示值處理*************
28、// else if(second==0 ) { Show_MH=tab[minute/10];//十位顯示值處理 Show_ML=tab[minute%10]; //個位顯示處理 Show_SH=tab[second/10];//十位顯示值處理 Show_SL=tab[second%10]; //個位顯示處理 second=60; minute--; } //***************顯示值處理****************// else { Show_MH=ta
29、b[minute/10];//十位顯示值處理 Show_ML=tab[minute%10]; //個位顯示處理 Show_SH=tab[second/10];//十位顯示值處理 Show_SL=tab[second%10]; //個位顯示處理 } //*****************計時結(jié)束數(shù)碼管關(guān)閉,喇叭響起,指示燈閃爍************// while(flag6) { flag6=1; P0=0;//關(guān)閉數(shù)碼管 for(g=0;g<200;g++)//音頻輸出
30、 { delay(80); speaker=!speaker; led1=!led1; } speaker=1; led1=1; delay(20000); } //當(dāng)秒高位變化時5個LED輪流閃爍 control2=second/10; control3=second/10; control4=second/10; control5=second/10; if (control2==2) led2=0; else led2=1; if (
31、control3==3) led3=0; else led3=1; if (control4==4) led4=0; else led4=1; if (control5==5) led5=0; else led5=1; } } //鍵盤掃描函數(shù),使用行列反轉(zhuǎn)掃描法 uchar keyscan(void) { uchar cord_h,cord_l;//行列值 P1=0x0f; //行線輸出全為0 cord_h=P1&0x0f; //讀入列線值 if(cord_h!=0x0f) //先
32、檢測有無按鍵按下 { delay(100); //去抖 if(cord_h!=0x0f) { cord_h=P1&0x0f; //讀入列線值 P1=cord_h|0xf0; //輸出當(dāng)前列線值 cord_l=P1&0xf0; //讀入行線值 return(cord_h+cord_l);//鍵盤最后組合碼值 } } return(0xff); //返回該值 } 6
33、.性能分析 實現(xiàn)了可編倒計時裝置,能夠按秒倒計時,鍵盤預(yù)置分、秒各兩位數(shù),鍵控啟動計時,數(shù)碼管顯示倒計時。計時器歸零時輸出一音頻信號并有指示燈閃爍提示計時完畢。并在秒高位為5,4,3,2時分別有不同的指示燈點亮。 7.總結(jié)與心得 本科生課程設(shè)計成績評定表 姓 名 孫連城 性 別 男 專業(yè)、班級 電信0804 課程設(shè)計題目:設(shè)計并實現(xiàn)可編倒計時裝置 課程設(shè)計答辯或質(zhì)疑記錄: 成績評定依據(jù): 最終評定成績(以優(yōu)、良、中、及格、不及格評定) 指導(dǎo)教師簽字: 年 月 日 16
- 溫馨提示:
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. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025《增值稅法》高質(zhì)量發(fā)展的增值稅制度規(guī)范增值稅的征收和繳納
- 深入學(xué)習(xí)《中華人民共和國科學(xué)技術(shù)普及法》推進實現(xiàn)高水平科技自立自強推動經(jīng)濟發(fā)展和社會進步
- 激揚正氣淬煉本色踐行使命廉潔從政黨課
- 加強廉潔文化建設(shè)夯實廉政思想根基培育風(fēng)清氣正的政治生態(tài)
- 深入學(xué)習(xí)2024《突發(fā)事件應(yīng)對法》全文提高突發(fā)事件預(yù)防和應(yīng)對能力規(guī)范突發(fā)事件應(yīng)對活動保護人民生命財產(chǎn)安全
- 2023年四年級數(shù)學(xué)上冊第一輪單元滾動復(fù)習(xí)第10天平行四邊形和梯形作業(yè)課件新人教版
- 2023年四年級數(shù)學(xué)上冊第14單元階段性綜合復(fù)習(xí)作業(yè)課件新人教版
- 2023年四年級數(shù)學(xué)上冊易錯清單十五課件新人教版
- 2023年四年級數(shù)學(xué)上冊易錯清單七課件西師大版
- 2023年五年級數(shù)學(xué)下冊易錯清單六作業(yè)課件北師大版
- 2023年五年級數(shù)學(xué)下冊易錯清單二作業(yè)課件北師大版
- 2023年五年級數(shù)學(xué)下冊四分數(shù)的意義和性質(zhì)第10課時異分母分數(shù)的大小比較作業(yè)課件蘇教版
- 2023年五年級數(shù)學(xué)下冊周周練四作業(yè)課件北師大版
- 2023年五年級數(shù)學(xué)下冊六折線統(tǒng)計圖單元復(fù)習(xí)卡作業(yè)課件西師大版
- 2023年四年級數(shù)學(xué)上冊6除數(shù)是兩位數(shù)的除法單元易錯集錦一作業(yè)課件新人教版