單片機原理及應用實習總結報告_第1頁
單片機原理及應用實習總結報告_第2頁
單片機原理及應用實習總結報告_第3頁
單片機原理及應用實習總結報告_第4頁
單片機原理及應用實習總結報告_第5頁
已閱讀5頁,還剩8頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

PAGEPAGE3單片機實習總結一實習目的1.通過對單片機小系統的設計、焊接、裝配,掌握電路原理圖及電子線路的基本焊接裝配工藝、規范及注意事項;2。通過對系統板的測試,了解系統板的工作原理及性能,掌握元器件及系統故障的排除方法;3。掌握程序編制及調試方法,完成系統初始化、存儲器操作、端口操作、鍵盤、顯示等程序的編制及調試(匯編語言、C語言均可);4。通過單片機系統的硬件焊接、調試,程序的編制、調試及運行,與理論及實驗的有機結合和指導教師的補充介紹,使學生掌握測控系統的工作原理、開發方法;5.培養學生解決實際問題的能力,提高對理論知識的感性認識.二實習意義通過本實習不但可以單片機的軟硬件的綜合調試方法,而且可以熟練掌握電路原理圖,激發對單片機智能型的探索精神,提高學生的綜合素質,培養學生應用單片機實現工業控制系統的設計、開發與調試的能力。在制作學習過程中,不但可以掌握軟硬件的綜合調試方法,而且可以是學生對單片機智能性產生強烈的欲望達到最大限度的掌握微機應用技術,軟件及接口設計和數據采集與處理的技能,培養電綜合實踐素質的目的。三系統基本組成及工作原理3。1系統基本組成最小系統包括單片機的晶振、復位、電源、下載電路,以及簡單的輸入輸出等模塊,其框圖如圖1所示。在基本檔完成的前提下設計完成擴展模塊,使顯示信息更豐富,其框圖如圖2所示。圖1最小系統框圖電源模塊喇叭電源模塊喇叭四位LED顯示顯示驅動樂曲演奏琴鍵模塊STC89C5四位LED顯示顯示驅動樂曲演奏琴鍵模塊STC89C52RC鍵盤模塊鍵盤模塊循環燈模塊復位循環燈模塊復位串口下載、通訊模塊晶振串口下載、通訊模塊晶振圖2擴展總框圖3.2系統工作原理在單片機的P3口接12個發光二極管,通過外部中斷、定時中斷和位掃描等程序控制實現每個發光二極管指示燈閃爍。將全部行線至于低電平,檢驗列線的狀態,只要有一列的電平為底,則表示鍵盤中鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個按鍵之中;若所有列線均為高電平,則表示鍵盤中無按鍵按下。四系統硬件設計4。1電路設計利用單片機的P1口擴展一個4×4的矩陣鍵盤;單片機的P3。0和P3.1連接聯機通訊模塊;P2。0—P2。3口作四位數碼顯示接口;P3。2—P3。7口做交通燈和循環燈接口。電路最小系統原理和模塊如圖3所示。電路系統原理圖如圖附錄1所示圖3-1圖3-2五系統軟件設計5.1主程序設計開始初始化狀態號設為默認1取得狀態號n,根據n值,選擇程序分支n=1,執行狀態1處理程序n=2,執行狀態2處理程序n=3,執行狀態3處理程序n=4,執行狀態4處理程序開始初始化狀態號設為默認1取得狀態號n,根據n值,選擇程序分支n=1,執行狀態1處理程序n=2,執行狀態2處理程序n=3,執行狀態3處理程序n=4,執行狀態4處理程序圖5主程序流程框圖、n=5,執行狀態5處理程序PC機(狀態號位5)主程序流程框圖如圖5所示:5。2功能子程序設計5.2.1循環燈控制模塊利用查表法,定時器定時實現任意歷程跑馬燈的控制。5。2.2四位數碼顯示模塊編程實現千位數秒倒計時。5.2.3交通燈控制模塊利用模塊1和模塊2的硬件電路模擬實現十字路口交通等的管理功能,要求有黃燈閃爍警示功能。信號燈控制系統:南北線有紅黃綠三只信號燈,東西線有紅黃綠三只信號燈。表1交通燈切換控制順序表時間(秒)南北線綠黃紅東西線綠黃紅3010亮滅滅滅閃滅滅滅亮滅滅亮3010滅滅亮滅滅亮亮滅滅滅閃滅5.2。4電子琴模塊該模塊的硬件電路,可以利用單片機的1位IO口接一只三極管來驅動蜂鳴器,演奏編好的樂譜;或者實現利用按鍵模擬電子琴演奏。利用定時器控制單片機引腳發出一定頻率(聲波頻率20Hz~20000Hz)的方波信號,就可使喇叭發出單調的聲音,也可以產生DO,RE,ME,FA,SO,LA,XI等音階在內的各種頻率聲音。樂曲演奏模塊通過編程將樂譜輸入輸入單片機,由外接揚聲器奏出悅耳動聽的音樂。5.2.5PC通訊六實習總結、體會

通過這次單片機實習,我不僅加深了對單片機理論的理解,將理論很好地應用到實際當中去,而且我還學會了如何去培養我們的創新精神,從而不斷地戰勝自己,超越自己。創新可以是在原有的基礎上進行改進,使之功能不斷完善,成為真真正自己的東西。

首先在做本次實習的過程中,我感觸最深的當屬查閱大量的設計資料了。為了讓自己的設計更加完善,查閱這方面的設計資料是十分必要的,同時也是必不可少的。我們是在做單片機實習,但我們不是藝術家,他們可以拋開實際盡情在幻想的世界里翱翔,而我們一切都要有據可依,有理可尋,不切實際的構想永遠只能是構想,永遠無法升級為設計.

其次,在這次課程設計中,我們運用到了以前所學的專業課知識,如:C語言、模擬和數字電路知識等。雖然過去從未獨立應用過它們,但在學習的過程中帶著問題去學我發現效率很高,這是我做這次課程設計的又一收獲。最后,在實習之前,我們要對所用單片機的內部結構有一個系統的了解,知道該單片機內有哪些資源;要有一個清晰的思路和一個完整的的軟件流程圖;在設計程序時,不能妄想一次就將整個程序設計好,反復修改、不斷改進是程序設計的必經之路;要養成注釋程序的好習慣,一個程序的完美與否不僅僅是實現功能,而應該讓人一看就能明白你的思路,這樣也為資料的保存和交流提供了方便;在實習過程中遇到問題是很正常的,但我們應該將每次遇到的問題記錄下來,并分析清楚,以免下次再碰到同樣的問題。但是從中學到的知識會讓我受益終身。發現、提出、分析、解決問題和實踐能力提高都會受益于我在以后的學習、工作和生活中。參考文獻1.彭偉。單片機C語言程序設計實訓100例——基于8051+Proteus仿真。北京:電子工業出版社,20112。郭天祥.新概念51單片機C語言教程-—入門、提高、開發、拓展全攻略。北京:電子工業出版社,20093.劉建清。輕松玩轉51單片機C語言.北京:北京航空航天大學出版社,20104。譚浩強.C程序設計.北京:清華大學出版社,19915.求是科技.單片機典型模塊設計實例導航.北京:人民郵電出版社,20046.潘新民,王燕芳.單片微型計算機實用系統設計。北京:電子工業出版社,20117.胡漢才。單片微機原理及其接口技術。清華大學出版社,2010(推薦教材)8.宏晶科技STCMicrocontrollerHandbook,20079。單片機教程網/附件1單片機實習最小系統原理總圖附件2實習材料清單附件3實習工作進展及完成記錄表附件4調試通過的源程序清單附件1原理總圖附件2單片機實習最小系統設計材料清單材料名稱規格數量備注說明電阻10k1R1電阻1k7R2—R8電阻20012R10-R21電容30pf2C1C2電容1uf4C4-C7電解性電容220uf1C3電解性電容10uf1C8芯片AT89C511芯片NAX2321三極管5pnpQ1-Q5發光二極管LED-RED4D1D2D9D10發光二極管LED-GREEN4D3D4D11D12發光二極管LED—YELLOW4D5D6D13D149鍵插座CONN-D9F1喇叭SOUNDER1多功能電路板1管座40位1管座16位1按鈕16晶振12M1排阻8*10k1RP14位液晶數碼管1共陽極實習工具清單工具規格數量電烙鐵1鉗子尖口1鉗子圓口1附件4源程序清單循環燈點亮#include〈reg52。h>#include<intrins。h〉#include”led。h”#defineucharunsignedchar#defineuintunsignedintucharcodeled_table[]={ 0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff, 0xfb,0xf3,0xe7,0xcf,0x9f,0x3f,0x7f,0xff, 0xfb,0xf3,0xe3,0xc7,0x8f,0x1f,0x3e,0x7f,0xff,0xff, 0xcf,0xb7,0x7b,0xff,0xff,0x7b,0xb7,0xcf,0xff};intsu_du=1500;voidlighting_led(){ staticuchari; staticuintm; m++; if(i==34)i=0; if(m==su_du) { m=0; P3=led_table[i++]; } if(m〉su_du) m=0; }2.四位數碼顯示(1)#include”daojishi。h”#include”timer0.h"bitdaojishi_OK=0;intjishi=0;void_Dao_Ji_Shi(){ staticucharMinute_buf=2; if(daojishi_OK==1) { if(Minute_buf!=shi_zhong) { jishi——; if(jishi〈0) { jishi=0; daojishi_OK=0; } } Minute_buf=shi_zhong; }}(2)#include”REG52。h"#include"timer0.h”typedefunsignedcharBYTE;typedefunsignedintWORD;//——-———————--———--—-——--—-————-/*defineconstants*/#defineFOSC12000000L#defineT1MS(65536—FOSC/12/1000)//1mstimercalculationmethodin12Tmode/*defineSFR*/sbitwe1=P2^3;sbitwe2=P2^2;sbitwe3=P2^1;sbitwe4=P2^0;/*definevariables*/BYTEcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xa7,0xa1,0x86,0x8e};WORDcount;//1000timescounterWORDshi_zhong=0;WORDbeep_delay_count;bitseg_flag;bitsearch_key_flag;//——-——--—--——-—--—--————--—-————————-—voidseg_display(WORDdat){ switch(count%4) { case0: P0=0xff; we1=0;we2=1;we3=1;we4=1; P0=table[dat/1000]; break; case1: P0=0xff; we1=1;we2=0;we3=1;we4=1; P0=table[dat%1000/100]; break; case2: P0=0xff; we1=1;we2=1;we3=0;we4=1; P0=table[dat%100/10]; break; case3: P0=0xff; we1=1;we2=1;we3=1;we4=0; P0=table[dat%10]; break; default:; }}/*Timer0interruptroutine*/voidtm0_isr()interrupt1{TL0=T1MS;//reloadtimer0lowbyteTH0=T1MS>〉8;//reloadtimer0highbyte if(TR1==1)beep_delay_count++;if(count++==1000)//1ms*1000-〉1s{count=0; //resetcounter shi_zhong++; } seg_flag=1; if(count%10==0) search_key_flag=1;}//———-———--—-——-————-—-——-——-———————voidtm0_int(){TMOD=0x01;//settimer0asmode1(16-bit)TL0=T1MS;//initialtimer0lowbyteTH0=T1MS>>8;//initialtimer0highbyteTR0=1;//timer0startrunningET0=1;//enabletimer0interruptEA=1;//openglobalinterruptswitchcount=0;//initialcounter}3。交通燈控制#include<reg52。h〉#include"traffic。h”#include”timer0.h"#defineucharunsignedchar#defineuintunsignedintsbitRED_A=P3^2;sbitRED_B=P3^3;sbitGREEN_A=P3^4;sbitGREEN_B=P3^5;sbitYELLOW_A=P3^6;sbitYELLOW_B=P3^7;uchardao_ji_shi=0;ucharOperation_Type=1;voidTraffic_lignt(){ dao_ji_shi=29—shi_zhong%30; switch(Operation_Type) { case1: RED_A=1;YELLOW_A=1;GREEN_A=0;//A綠燈、B紅燈亮 RED_B=0;YELLOW_B=1;GREEN_B=1; if(dao_ji_shi〈11)//十秒 { Operation_Type=2; } break; case2: if(dao_ji_shi==10||dao_ji_shi==8||dao_ji_shi==6||dao_ji_shi==4||dao_ji_shi==2||dao_ji_shi==0) { YELLOW_A=0; }else YELLOW_A=1; //A黃燈閃爍5s if(dao_ji_shi==29) Operation_Type=3; RED_A=1;GREEN_A=0;//A綠燈、B紅燈亮 RED_B=0;GREEN_B=1; break; case3: RED_A=0;YELLOW_A=1;GREEN_A=1;//A紅燈、B綠燈亮 RED_B=1;YELLOW_B=1;GREEN_B=0; if(dao_ji_shi<11)//十秒 { Operation_Type=4; } break; case4: //B黃燈閃爍5s if(dao_ji_shi==10||dao_ji_shi==8||dao_ji_shi==6||dao_ji_shi==4||dao_ji_shi==2||dao_ji_shi==0) { YELLOW_B=0; }else YELLOW_B=1; RED_A=0;GREEN_A=1;//A紅燈、B綠燈 RED_B=1;GREEN_B=0; if(dao_ji_shi==29) Operation_Type=1; break; default:break; }}4.電子琴、樂曲演奏#include<reg52。h〉#include”dianziqin.h"#include"timer0。h"#include"key.h"#defineucharunsignedchar#defineuintunsignedintsbitbeep=P2^4;uintcodeTone_Delay_Table[]= //音符延時{64021,64103,64260,64400,64524,64580,64684,64777,64820,64898,64968,65030,65058,65110,65157,65178};ucharcodeDSY_Table[]= //數碼管{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xBF};//第一段ucharcodesong1_Tone[]={0,1,2,3,4,5,5,6,7,8,9,10,11,12,13,14,15,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0xff};ucharcodesong1_Time[]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0xff};//第二段ucharcodesong2_Tone[]={3,5,5,3,2,1,2,3,5,3,2,3,5,5,3,2,1,2,3,2,1,1,0xff};ucharcodesong2_Time[]={2,1,1,2,1,1,1,2,1,1,1,2,1,1,2,1,1,1,2,1,1,1,0xff};//第三段ucharcodesong3_Tone[]={1,3,3,3,3,5,4,2,5,3,7,6,5,5,7,4,4,3,6,7,2,1,0xff};ucharcodesong3_Time[]={2,1,1,2,1,1,1,2,1,1,1,2,1,1,2,1,1,1,2,1,1,1,0xff};//音樂片段引索,音符引索ucharsong_index=0,Tone_index=0;//指針uchar*song_Tone_Pointer,*song_Time_Pointer;//取音符位置uchari=0;ucharKeyNo;//按鍵ucharinter_cont=0;voidDian_zi_qin(){ if(Key_value!=0) { TR1=1; KeyNo=Key_value; beep_delay_count=0; } elseif(beep_delay_count〉=200) { beep=1; TR1=0; } if(inter_cont>0) { switch(inter_cont—1) { case0:song_Tone_Pointer=song1_Tone; song_Time_Pointer=song1_Time; break; case1:song_Tone_Pointer=song2_Tone; song_Time_Pointer=song2_Time; break; case2:song_Tone_Pointer=song3_Tone; song_Time_Pointer=song3_Time; break; default:break; } Tone_index=song_Tone_Pointer[i]; if(Tone_index==0xff) { TR1=0; i=0; } else { TR1=1; } if(beep_delay_count〉=song_Time_Pointer[i]*200) { beep=1; beep_delay_count=0; i++; } }}/*Timer0interruptroutine*/voidtm1_isr()interrupt3{ if(inter_cont==0) { TH1=Tone_Delay_Table[KeyNo]〉〉8; TL1=Tone_Delay_Table[KeyNo]; } else//if(inter_cont==0) { TL1=Tone_Delay_Table[Tone_index];//reloadtimer1lowbyte TH1=Tone_Delay_Table[Tone_index]>>8;//reloadtimer1highbyte } beep=~beep;}//———-—-—-————-——-——-———-———-—-—-——-—--voidtm1_int(){TMOD=TMOD|0x10; //settimer1asmode1(16-bit)TL1=Tone_Delay_Table[Tone_index]; //reloadtimer1lowbyteTH1=Tone_Delay_Table[Tone_index]〉〉8; //reloadtimer1highbyteTR1=0;//timer1startrunningET1=1;//enabletimer1interruptEA=1;//openglobalinterruptswitch}5。聯機通訊#include<REG52.h>#include”intrins.h"#include”uart。h”#include"timer0。h”//sfrT2CON=0xC8;//timer2controlregister//sfrRCAP2L=0xCA;//sfrRCAP2H=0xCB;//sfrTL2=0xCC;//sfrTH2=0xCD;#defineucharunsignedchar#defineuintunsignedint#defineFOSC12000000L//Systemfrequency#defineBAUD2400//UARTbaudrate/*DefineUARTparitymode*/#defineNONE_PARITY0//Noneparity#defineODD_PARITY1//Oddparity#defineEVEN_PARITY2//Evenparity#defineMARK_PARITY3//Markparity#defineSPACE_PARITY4//Spaceparity#definePARITYBITEVEN_PARITY//Testingevenparitybitbusy;voidSendData(uchardat);voidSendString(char*s);voidUart_int(){#if(PARITYBIT==NONE_PARITY)SCON=0x50;//8—bitvariableUART#elif(PARITYBIT==ODD_PARITY)||(PARITYBIT==EVEN_PARITY)||(PARITYBIT==MARK_PARITY)SCON=0xda;//9-bitvariableUART,paritybitinitialto1#elif(PARITYBIT==SPACE_PARITY)SCON=0xd2;//9-bitvariableUART,paritybitinitialto0#endifTL2=RCAP2L=(65536-(FOSC/32/BAUD));//Setauto—reloadvauleTH2=RCAP2H=(65536—(FOSC/32/BAUD))〉〉8;T2CON=0x34;//Timer2startrunES=1;//EnableUARTinterruptEA=1;//Openmasterinterruptswitch}voidUart(){ if(shi_zhong%3==0) { SendString("12電氣本!\r\n"); shi_zhong++; }}/*--——-—-——--———-———————UARTinterruptserviceroutine————-————-——--—-—————*/voidUart_Isr()interrupt4{if(RI){RI=0;//Clearreceiveinterruptflag//bit9=RB8;//P2.2showparitybit}if(TI){TI=0;//Cleartransmitinterruptflagbusy=0;//Cleartransmitbusyflag}}/*———-——--————-SendabytedatatoUARTInput:dat(datatobesent)Output:None--———-——-—--—-—-————-————*/voidSendData(uchardat){while(busy);//Waitforthecompletionofthepreviousdataissent ACC=dat;//CalculatetheevenparitybitP(PSW。0) if(P)//SettheparitybitaccordingtoP {#if(PARITYBIT==ODD_PARITY) TB8=0;//Setparitybitto0#elif(PARITYBIT==EVEN_PARITY) TB8=1;//Setparitybitto1#endif } else {#if(PARITYBIT==ODD_PARITY) TB8=1;//Setparitybitto1#elif(PARITYBIT==EVEN_PARITY) TB8=0;//Setparitybitto0#endif } busy=1; SBUF=ACC;//SenddatatoUARTbuffer}/*--——————--——-———-——-—SendastringtoUARTInput:s(addressofstring)Output:None————-——-—-——————-——-*/voidSendString(char*s){while(*s)//Checktheendofthestring{SendData(*s++);//Sendcurrentcharandincrementstringptr}}6.按鍵#include<REG52。h>#include"key。h”#include"led。h"#include"dianziqin.h"#defineucharunsignedchar#defineuintunsignedintucharModel=1;ucharKey_value;externintjishi;externbitdaojishi_OK;ucharKey_get(){ unsignedcharKeyNo=0; ucharTmp,k; staticuchark_yanchi=0; //高四位置0,放入四行 P1=0x0F; //Delayms(10); k_yanchi++; if(k_yanchi>=18) { //按鍵后00001111將變成0000XXXX,X中1個為0,3個仍為1,下面抑或會把3個1變0。唯一一個0變1 Tmp=P1^0X0F; //判斷按鍵發生于0-3哪一列 switch(Tmp) { case1:k=0;break; case2:k=1;break; case4:k=2;break; case8:k=3;break; default:return0;//無鍵按下 } //低四位0,放入四列 P1=0xf0; // Delayms(10); if(k_yanchi〉=20) { k_yanchi=0; //按鍵后11110000將變成xxxx0000,X中1個為0,3個仍為1,下面會將高四位移至低四位 Tmp=P1^0Xf0; //對0—3行分別附加起始值0。4.8.12 switch(Tmp>>4) { case1:k+=0;break; case2:k+=4;break; case4:k+=8;break; case8:k+=12;break; default:return0; } KeyNo=k+1; } } returnKeyNo;}voidKey_serve(){ Key_value=Key_get(); switch(Model) { caselighting: if(Key_value==0) ; elseif(Key_value==13) { Model++; P3=0xff; Key_value=0; } elseif(Key_value==8)//減速 { su_du=su_du+200; if(su_du>5000) su_du=5000; Key_value=0; } elseif(Key_value==4)//加速 { su_du=su_du—200; if(su_du〈400) su_du=400; Key_value=0; } break; casedaojishi: if(Key_value!=0&&jishi〉1000) jishi=0; if(Key_value==13) Model++; elseif(daojishi_OK==0) switch(Key_value) { case0:break; case1: jishi=jishi*10+1; //數字鍵1 break; case2: jishi=jishi*10+2; //數字鍵2 break; case3: jishi=jishi*10+3; //數字鍵3 break; case5: jishi=jishi*10+4; //數字鍵4 break; case6: jishi=jishi*10+5; //數字鍵5 break; case7: jishi=jishi*10+6; //數字鍵6 break; case9: jishi=jishi*10+7; //數字鍵7 break; case10: jishi=jishi*10+8; //數字鍵8 break; case11: jishi=jishi*10+9; //數字鍵9 break; case14: jishi=jishi*10; //數字鍵0 break; case15: daojishi_OK=1; //確定鍵鍵 break; case4: jishi++; //加 break; case8: jishi--; //減 break; case16: //daojishi_OK=0; //修改 jishi=0; break; default:break; } elseif(Key_value==16) da

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論