單片機(jī)課程設(shè)計(jì) 設(shè)計(jì)并實(shí)現(xiàn)可編倒計(jì)時(shí)裝置
《單片機(jī)課程設(shè)計(jì) 設(shè)計(jì)并實(shí)現(xiàn)可編倒計(jì)時(shí)裝置》由會(huì)員分享,可在線閱讀,更多相關(guān)《單片機(jī)課程設(shè)計(jì) 設(shè)計(jì)并實(shí)現(xiàn)可編倒計(jì)時(shí)裝置(17頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、 課程設(shè)計(jì)任務(wù)書 題 目: 設(shè)計(jì)并實(shí)現(xiàn)可編倒計(jì)時(shí)裝置 初始條件: 1. Protues軟件或Xl1000實(shí)驗(yàn)箱; 2. 課程設(shè)計(jì)輔導(dǎo)資料:“Xl1000說明書以及實(shí)驗(yàn)指導(dǎo)”“、單片微型計(jì)算機(jī)”等; 3. 先修課程:模擬電子技術(shù)、數(shù)字電子技術(shù)、Protues電路設(shè)計(jì)教程及單片機(jī)原理及應(yīng)用等課程 要求完成的主要任務(wù):(包括課程設(shè)計(jì)工作量及其技術(shù)要求,以及說明書撰寫等具體要求) 1. 課程設(shè)計(jì)時(shí)間:1周; 2. 課程設(shè)計(jì)內(nèi)容:設(shè)計(jì)并實(shí)現(xiàn)可編倒計(jì)時(shí)裝置; 要求:按秒倒計(jì)時(shí),鍵盤預(yù)置分、秒各兩位數(shù),鍵控啟動(dòng)計(jì)時(shí),數(shù)碼管顯示倒計(jì)時(shí)。計(jì)時(shí)器歸零時(shí)輸出一音頻信號。 3. 本課程設(shè)
2、計(jì)統(tǒng)一技術(shù)要求:研讀輔導(dǎo)資料對應(yīng)章節(jié),對選定的設(shè)計(jì)題目進(jìn)行理論分析,針對具體設(shè)計(jì)部分的原理分析、建模、必要的推導(dǎo)和可行性分析,畫出程序設(shè)計(jì)框圖,編寫程序代碼(含注釋),上機(jī)調(diào)試運(yùn)行程序,記錄實(shí)驗(yàn)結(jié)果(含計(jì)算結(jié)果和圖表),并對實(shí)驗(yàn)結(jié)果進(jìn)行分析和總結(jié); 4. 課程設(shè)計(jì)說明書按學(xué)?!罢n程設(shè)計(jì)工作規(guī)范”中的“統(tǒng)一書寫格式”撰寫,具體包括: ① 目錄; ② 設(shè)計(jì)原理; ③ 系統(tǒng)硬件線路設(shè)計(jì)圖; ④ 程序框圖; ⑤ 資源分配表; ⑥ 源程序 ⑦ 性能分析 ⑧ 課程設(shè)計(jì)的心得體會(huì)(至少500字); 時(shí)間安排: 指導(dǎo)教師簽名: 年 月
3、 日 系主任(或責(zé)任教師)簽名: 年 月 日 目錄 1.設(shè)計(jì)原理…………………………………………………………..2 1.1倒計(jì)時(shí)原理…………………………………………………2 1.2數(shù)碼管顯示原理…………………………………………..2 1.3矩陣鍵盤工作原理………………………………………..2 1.4小喇叭工作原理……………………………………………3 1.5led燈顯示原理……………………………………………..3 2.系統(tǒng)硬件線路設(shè)計(jì)圖……………………………………………4 2.1單片機(jī)部分………………………………………………..4 2.2數(shù)碼管
4、部分……………………………………………….4 2.3矩陣鍵盤部分……………………………………………5 2.4小喇叭及LED部分…………………………………….5 2.5X1000實(shí)驗(yàn)箱連線………………………………………6 3.程序框圖………………………………………………………7 4.資源分配表……………………………………………………9 5.源程序………………………………………………………….9 6.性能分析……………………………………………………….14 7.總結(jié)與心得……………………………………………………15 8.本科生課程設(shè)計(jì)成績評定表………………………………….16
5、 1.設(shè)計(jì)原理 1.1倒計(jì)時(shí)原理 利用定時(shí)器T0工作于方式1下,為16位定時(shí)計(jì)數(shù)方式,由TH提供高8位,TL提供低8位的計(jì)數(shù)初值,最大計(jì)數(shù)為65536個(gè)脈沖,當(dāng)時(shí),工作于定時(shí)方式,以振蕩源的12分頻信號作為計(jì)數(shù)脈沖;當(dāng)時(shí),工作于計(jì)數(shù)方式,對外部脈沖輸入端輸入的脈沖計(jì)數(shù)。計(jì)數(shù)脈沖能否加到計(jì)數(shù)器上,受啟動(dòng)信號的控制,當(dāng)GATE=0時(shí)只要TR=1則定時(shí)/計(jì)數(shù)器啟動(dòng)工作。當(dāng)GATE=1時(shí),TR=1和同時(shí)滿足才能啟動(dòng),此時(shí)啟動(dòng)受到雙重控制。每啟動(dòng)定時(shí)、計(jì)數(shù)前,需預(yù)置計(jì)數(shù)初值。啟動(dòng)后計(jì)數(shù)器立即加1計(jì)數(shù),TL低8位的計(jì)數(shù)滿回零后向TH進(jìn)位,當(dāng)16位計(jì)數(shù)滿回零后,中斷溢出標(biāo)志TF置1,產(chǎn)生中斷請
6、求,表示定時(shí)時(shí)間到或計(jì)數(shù)次數(shù)到。若允許中斷ET=1且CPU開中斷(EA=1),則CPU響應(yīng)中斷,轉(zhuǎn)向中斷服務(wù)程序,同時(shí)TF自動(dòng)清零。TMOD=0x01設(shè)置定時(shí)器T0工作與方式1且為定時(shí)方式,由于每個(gè)計(jì)數(shù)脈沖的周期為1us,故若將定時(shí)器設(shè)置為10ms需接受10000次脈沖,所以要從初值55536處開始計(jì)數(shù),為定時(shí)器賦初值為TH=0xd8,TL=0xf0。在此基礎(chǔ)上以count--作為倒計(jì)時(shí)程序,設(shè)置count從100開始減1即可實(shí)現(xiàn)時(shí)間間隔為1s的倒計(jì)時(shí)。 1.2數(shù)碼管顯示原理 數(shù)碼管實(shí)際上是由7個(gè)發(fā)光二極管組成8字形構(gòu)成的,加上小數(shù)點(diǎn)就是8個(gè),我們分別把他命名為A,B,C,D,E,F,
7、G,H。在Xl1000實(shí)驗(yàn)箱接法為共陽極接法,我們獲得0123456789字符所對應(yīng)的HEX代碼即為0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60 。由于所有數(shù)碼管顯示端和控制端都接在一起,為了顯示出時(shí)鐘倒計(jì)時(shí)的效果,我們需要采用動(dòng)態(tài)掃描以實(shí)現(xiàn)靜態(tài)顯示。在單片機(jī)里,首先顯示一個(gè)數(shù),然后關(guān)掉,顯示第二數(shù)數(shù),再關(guān)掉,那么將看到連續(xù)的數(shù)字顯示,輪流點(diǎn)亮掃描過程中,每位顯示器的點(diǎn)亮?xí)r間是極為短暫的(約1ms),由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝作用,盡管實(shí)際上各位顯示器并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù)。
8、 1.3矩陣鍵盤工作原理 矩陣按鍵部分由16個(gè)輕觸按鍵按照4x4的方式排列將行線所接的單片機(jī)I/O口作為輸出端,將列線所接的I/O口作為輸入。這樣,當(dāng)按鍵沒有按下時(shí),所有的輸出端都是高電平,代表無鍵按下。行線輸出的是低電平,一旦有鍵按下,則輸入線就會(huì)被拉低,這樣通過讀入輸入線的狀態(tài)就可得知是否有按鍵按下了。確定矩陣式鍵盤上何鍵被按下有許多方法,在此次設(shè)計(jì)中采用了一種行列反轉(zhuǎn)掃描法。相較于行掃描法跟為簡單。利用行列的變化,確定出其交點(diǎn)出的按鍵的按下與否。 1.4小喇叭工作原理 聲音是由震動(dòng)所產(chǎn)生的,一定頻率的震動(dòng)就產(chǎn)生了一定頻率的聲音。在倒計(jì)時(shí)結(jié)束時(shí),根據(jù)計(jì)時(shí)結(jié)束后每一位都是0,啟動(dòng)設(shè)
9、置好的一定頻率的脈沖,將脈沖傳送到實(shí)驗(yàn)箱上的小喇叭,即可實(shí)現(xiàn)小喇叭的報(bào)警。 1.5led燈顯示原理 在實(shí)驗(yàn)要求的基礎(chǔ)之上引入了幾個(gè)led燈作為現(xiàn)象燈,對應(yīng)于倒計(jì)時(shí)秒高位為5,4,3,2,時(shí)依次點(diǎn)亮,且有一個(gè)燈在計(jì)時(shí)結(jié)束后伴隨著小喇叭報(bào)警聲不停閃爍。顯示原理,即是在相應(yīng)的時(shí)間點(diǎn)給led低電平可實(shí)現(xiàn)點(diǎn)亮,給予方波脈沖實(shí)現(xiàn)閃爍。 2.系統(tǒng)硬件線路設(shè)計(jì)圖 2.1單片機(jī)部分 2.2數(shù)碼管部分 2.3矩陣鍵盤部分 2.4小喇叭及LED部分 2.5X1000實(shí)驗(yàn)箱連線 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 啟動(dòng)倒計(jì)時(shí) 分秒公式計(jì)算 單片機(jī)賦初值 動(dòng)態(tài)掃描實(shí)現(xiàn)靜態(tài)顯示 單片機(jī)重新賦初值 秒信號進(jìn)行減計(jì)數(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.資源分配表 單片機(jī)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。 單片機(jī)的P2口:連接8段數(shù)碼管的控制端,即JP52連接JP8,P2.0到P2.7依次連接控制端的0到7。 單片機(jī)的P1口:連接矩陣鍵盤,即JP44連接JP50。 單片機(jī)的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í)函數(shù) void delay(uint cnt) {while(--cnt
14、);} //********************************主函數(shù)*********************************// main() { //**********************輸入分的高位**********************************// while(flag1) { key1=keyscan();//調(diào)用鍵盤掃描, P2=0xfe;//第1個(gè)數(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個(gè)數(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個(gè)數(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個(gè)數(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);//延時(shí) } //*****************************按鍵啟動(dòng)倒計(jì)時(shí)************************8***// while(flag5) { key5=keyscan();
23、//調(diào)用鍵盤掃描 switch(key5)//檢測鍵控信號 case 0xe7:flag5=0; delay(30000); } //******************************分秒計(jì)算式*********************************// minute=MH*10+ML; second=SH*10+SL; //*****************************單片機(jī)賦初值****************************// TMOD=0x01;//定時(shí)器0設(shè)置 10ms
24、in 12M crystal TH0=0xd8; TL0=0xf0; IE= 0x82;//打開中斷T0 TR0=1; //***************************數(shù)碼管動(dòng)態(tài)掃描實(shí)現(xiàn)靜態(tài)顯示********************// while(1)// { P0=Show_MH;//顯示分十位 P2=0xfe; delay(300); P0=Show_ML; //顯示分個(gè)位 P2=0xfd; delay(300); P0=0xf7; //顯示分隔符 P
25、2=0xfb; delay(300); P0=Show_SH;//顯示秒十位 P2=0xf7; delay(300); P0=Show_SL; //顯示秒個(gè)位 P2=0xef; delay(300); } } //**************************************************************************// void tim(void) interrupt 1 using 1//定時(shí)器T0中斷服務(wù)程序 {static uchar coun
26、t; uchar g,control2,control3,control4,control5; //**********************************單片機(jī)賦初值************************// TH0=0xd8;//賦初值55536 TL0=0xf0; count++; //*************************100x10ms=1s,實(shí)現(xiàn)秒信號減計(jì)數(shù)****************// if (count==100) { count=0; second--;//秒減1 //*****檢測是否計(jì)時(shí)結(jié)束并對顯示值處理
27、*********// if(minute==0 && second==0) { Show_MH=tab[minute/10];//十位顯示值處理 Show_ML=tab[minute%10]; //個(gè)位顯示處理 Show_SH=tab[second/10];//十位顯示值處理 Show_SL=tab[second%10]; //個(gè)位顯示處理 delay(30000); flag6=1;//轉(zhuǎn)向音頻輸出 } //***********檢測秒位是否計(jì)時(shí)結(jié)束并對顯示值處理*************
28、// else if(second==0 ) { Show_MH=tab[minute/10];//十位顯示值處理 Show_ML=tab[minute%10]; //個(gè)位顯示處理 Show_SH=tab[second/10];//十位顯示值處理 Show_SL=tab[second%10]; //個(gè)位顯示處理 second=60; minute--; } //***************顯示值處理****************// else { Show_MH=ta
29、b[minute/10];//十位顯示值處理 Show_ML=tab[minute%10]; //個(gè)位顯示處理 Show_SH=tab[second/10];//十位顯示值處理 Show_SL=tab[second%10]; //個(gè)位顯示處理 } //*****************計(jì)時(shí)結(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)秒高位變化時(shí)5個(gè)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、.性能分析 實(shí)現(xiàn)了可編倒計(jì)時(shí)裝置,能夠按秒倒計(jì)時(shí),鍵盤預(yù)置分、秒各兩位數(shù),鍵控啟動(dòng)計(jì)時(shí),數(shù)碼管顯示倒計(jì)時(shí)。計(jì)時(shí)器歸零時(shí)輸出一音頻信號并有指示燈閃爍提示計(jì)時(shí)完畢。并在秒高位為5,4,3,2時(shí)分別有不同的指示燈點(diǎn)亮。 7.總結(jié)與心得 本科生課程設(shè)計(jì)成績評定表 姓 名 孫連城 性 別 男 專業(yè)、班級 電信0804 課程設(shè)計(jì)題目:設(shè)計(jì)并實(shí)現(xiàn)可編倒計(jì)時(shí)裝置 課程設(shè)計(jì)答辯或質(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)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 我的藍(lán)藍(lán)的威尼斯課件
- 消化系合理用藥資料課件
- 42電流的磁效應(yīng)
- 幾何量公差與測量技術(shù)4-4公差原則課件
- 秋九年級語文上冊第三單元第12課世上沒有傻問題課件2語文版
- 大學(xué)文科物理第五章打開微觀世界的三大發(fā)現(xiàn)
- 9加幾課件修改 (2)(教育精品)
- 腎活檢技術(shù)和腎臟病理診療規(guī)范
- 16整式的乘法課件(1)
- 九年級數(shù)學(xué)正多邊形和圓課件2
- 大班PPT:交通工具
- 國培計(jì)劃培訓(xùn)的實(shí)施方案做成PPT
- 專利申請流程課件
- 醫(yī)用局部解剖學(xué)臂、肘和前臂前區(qū)
- 因式分解法 (3)