單片機(jī)實(shí)驗(yàn)報(bào)告(BUPT)_第1頁(yè)
單片機(jī)實(shí)驗(yàn)報(bào)告(BUPT)_第2頁(yè)
單片機(jī)實(shí)驗(yàn)報(bào)告(BUPT)_第3頁(yè)
單片機(jī)實(shí)驗(yàn)報(bào)告(BUPT)_第4頁(yè)
單片機(jī)實(shí)驗(yàn)報(bào)告(BUPT)_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

實(shí)驗(yàn)課程名稱自動(dòng)控制綜合實(shí)驗(yàn)2》姓名學(xué)院自動(dòng)化學(xué)院專業(yè)班級(jí)學(xué)號(hào)、班內(nèi)序號(hào)指導(dǎo)教師2013年月單片機(jī)部分仿真軟件的使用以及跑馬燈的設(shè)計(jì)實(shí)驗(yàn)?zāi)康模赫莆辗抡孳浖氖褂梅椒?。掌握MCS-51單片機(jī)的P0、P1、P2口的使用方法。掌握實(shí)現(xiàn)發(fā)光二極管的移動(dòng)、閃爍程序的編寫(xiě)方法。實(shí)驗(yàn)儀器:LJD-SY-5200單片機(jī)開(kāi)發(fā)板實(shí)驗(yàn)內(nèi)容:掌握單片機(jī)仿真器的程序輸入、調(diào)試和運(yùn)行等方法。所有按鍵的一端接通過(guò)上拉電阻接至+5V電源,另一端和電源地GND相連接。P0、P1作輸出,接16個(gè)發(fā)光二極管,P0口接前八個(gè)發(fā)光二極管,由程序控制二極管的亮和滅。P0八個(gè)發(fā)光二極管先奇數(shù)的發(fā)光二極管點(diǎn)亮,然后偶數(shù)的發(fā)光二極管點(diǎn)亮,并循環(huán)進(jìn)行。實(shí)驗(yàn)程序要求用匯編語(yǔ)言編寫(xiě)。實(shí)驗(yàn)線路:實(shí)驗(yàn)程序及流程圖:實(shí)驗(yàn)流程圖:定義程序起始位置定義程序起始位置0030H將將01111111d通過(guò)累加器A傳給IO0改變累加器的值調(diào)用延時(shí)子程序調(diào)用延時(shí)子程序delay(為了有明顯效果,調(diào)用兩次)二進(jìn)制左移一位(改變8次)八位移位過(guò)后循環(huán)實(shí)驗(yàn)程序:org0000hajmpstart;跳轉(zhuǎn)到程序開(kāi)始o(jì)rg0030h;定義起始匯編地址start:mova,#7fhmovp0,a;lcalldelay;延時(shí)lcalldelaymova,#0dfhmovp0,a;lcalldelay;延時(shí)lcalldelaymova,#0f7hmovp0,a;lcalldelay;延時(shí)lcalldelaymova,#0fdhmovp0,a;lcalldelay;延時(shí)lcalldelaymova,#0bfhmovp0,a;lcalldelay;延時(shí)lcalldelaymova,#0efhmovp0,a;lcalldelay;延時(shí)lcalldelaymova,#0fbhmovp0,a;。lcalldelay;延時(shí)lcalldelaymova,#0fehmovp0,a;lcalldelay;延時(shí)lcalldelayjmpstart;回到程序的開(kāi)頭delay:movr3,#250;延時(shí)子程序d1:movr4,#200d2:nopdjnzr4,d2djnzr3,d1retend實(shí)驗(yàn)心得:通過(guò)本次實(shí)驗(yàn),我了解了跑馬燈的程序設(shè)計(jì)方法;而且利用匯編語(yǔ)言編寫(xiě)也鍛煉了我的匯編能力。本實(shí)驗(yàn)是對(duì)單片機(jī)I/O端口的基本應(yīng)用,掌握簡(jiǎn)單的流水燈設(shè)計(jì),為接下來(lái)的實(shí)驗(yàn)做準(zhǔn)備。定時(shí)器及計(jì)數(shù)器的應(yīng)用實(shí)驗(yàn)?zāi)康模菏煜?051的T0作為定時(shí)器的設(shè)置及使用方法掌握T0作為計(jì)數(shù)器的軟件設(shè)計(jì)方法。掌握單脈沖發(fā)生電路的硬件線路連接方式。實(shí)驗(yàn)儀器:LJD-SY-5200單片機(jī)實(shí)驗(yàn)內(nèi)容:在液晶屏上顯示定時(shí)、計(jì)數(shù)結(jié)果:利用定時(shí)器T0進(jìn)行計(jì)時(shí),并把計(jì)時(shí)結(jié)果通過(guò)液晶屏顯示出來(lái)。以每秒為單位顯示。把T0作為計(jì)數(shù)器對(duì)T0引腳的輸入脈沖進(jìn)行計(jì)數(shù),并通過(guò)液晶顯示屏顯示T0計(jì)數(shù)結(jié)果。我們給出液晶屏顯示程序,同學(xué)自己用編寫(xiě)T0定時(shí)器程序(中斷部分程序)及由T0引腳輸入的外部脈沖進(jìn)行計(jì)數(shù)的計(jì)數(shù)器程序(匯編或C語(yǔ)言均可)。將定時(shí)或計(jì)數(shù)結(jié)果付給液晶屏顯示程序中的count即可顯示。利用定時(shí)器T0控制八個(gè)發(fā)光二極管利用定時(shí)器T0進(jìn)行計(jì)時(shí),在程序運(yùn)行2s后首先使得發(fā)光二極管順序循環(huán)點(diǎn)亮三次,隨后使用定時(shí)器T0使得發(fā)光二極管奇數(shù)位和偶數(shù)位循環(huán)點(diǎn)亮三次,并循環(huán)顯示。以500ms為單位顯示。把T0作為計(jì)數(shù)器對(duì)T0引腳的輸入脈沖進(jìn)行計(jì)數(shù),使用P2口中的一位作為輸入口,接1個(gè)按鍵。所有按鍵的一端接通過(guò)上拉電阻接至+5V電源,另一端和電源地GND相連接。在沒(méi)有按鍵被按下時(shí)P2的輸入為高電平,當(dāng)有按鍵被按下時(shí)對(duì)應(yīng)的P2的相應(yīng)引腳被拉低,該引腳輸入變成低電平。當(dāng)按鍵次數(shù)達(dá)到3的整數(shù)倍時(shí)點(diǎn)亮P1口的一個(gè)發(fā)光二極管。提高部分(附加分)使用定時(shí)器作為軟件看門(mén)狗

利用定時(shí)器T0進(jìn)行計(jì)時(shí),在程序運(yùn)行3s后使得發(fā)光二極管逆序循環(huán)點(diǎn)亮,并當(dāng)循環(huán)運(yùn)行8s之后程序重啟。二極管點(diǎn)亮以100ms為單位顯示。實(shí)驗(yàn)線路:外部計(jì)數(shù)電路圖實(shí)驗(yàn)程序及流程圖:1s定時(shí)器LCD顯示流程圖:定時(shí)器初始化定時(shí)器初始化(定時(shí)器1,50ms進(jìn)入一次中斷,打開(kāi)總中斷,定時(shí)器1中斷,打開(kāi)定時(shí)器)WWhile(1)LCD循環(huán)顯示50ms后進(jìn)入中斷,計(jì)時(shí)器重新賦值50ms后進(jìn)入中斷,計(jì)時(shí)器重新賦值a++Noa=20?Yescountcount加一a=0程序(除去宏定義,LCD顯示函數(shù),延時(shí)函數(shù)等):uchara=0;main(){uchari;TMOD=0x10;//使用定時(shí)器1TH1=(65535-50000)/256;TL1=65535-50000;//每進(jìn)入一次中斷,使用50msEA=1;//打開(kāi)總中斷ET1=1;//打開(kāi)定時(shí)器1中斷TR1=1;//打開(kāi)定時(shí)器1flag_count=0;count=0;initial_GLCD();/*清屏*/while(1){command_GLCD(0x80);for(i=0;i<7;i++){write_GLCD(disp_hz[i]);}write_GLCD(disp_num[count/1000]);/*顯示定時(shí)結(jié)果的千位*/write_GLCD(disp_num[count%1000/100]);/*顯示定時(shí)結(jié)果的百位*/write_GLCD(disp_num[count%1000%100/10]);/*顯示定時(shí)結(jié)果的十位*/write_GLCD(disp_num[count%1000%100%10]);/*顯示定時(shí)結(jié)果的個(gè)位*/write_GLCD(disp_hz[11]);delay1(1000);}}voidtimer1()interrupt3{a++;if(a==20) { a=0; count++;}TH1=(65535-50000)/256;TL1=65535-50000;//每進(jìn)入一次中斷,使用50ms}計(jì)數(shù)器LCD顯示W(wǎng)hile(1)LCDWhile(1)LCD循環(huán)顯示計(jì)數(shù)器初始化計(jì)數(shù)器初始化(計(jì)數(shù)器1,計(jì)數(shù)一次進(jìn)入一次中斷,打開(kāi)總中斷,計(jì)數(shù)器1中斷,打開(kāi)計(jì)數(shù)器)No是否有脈沖?Yes進(jìn)入中斷,計(jì)時(shí)器重新賦值進(jìn)入中斷,計(jì)時(shí)器重新賦值count加一程序(除去宏定義,LCD顯示函數(shù),延時(shí)函數(shù)等):main(){EA=1;//打開(kāi)總中斷ET1=1;//打開(kāi)計(jì)數(shù)器1中斷TMOD=0x50;//計(jì)數(shù)器1,方式一,16位TH1=0xFF;TL1=0xFF;//計(jì)數(shù)一次后立即中斷TR1=1;//開(kāi)始計(jì)數(shù)initial_GLCD();/*清屏*/while(1){command_GLCD(0x80);for(i=0;i<11;i++){write_GLCD(disp_hz[i]);}write_GLCD(disp_num[count/100]);/*顯示計(jì)數(shù)結(jié)果的百位*/write_GLCD(disp_num[count%100/10]);/*顯示計(jì)數(shù)結(jié)果的十位*/write_GLCD(disp_num[count%100%10]);/*顯示計(jì)數(shù)結(jié)果的個(gè)位*/delay1(1000);}}voidint0()interrupt3//定時(shí)計(jì)數(shù)器1中斷,中斷向量號(hào)為3{TH1=0xFF;TL1=0xFF;//重新賦值count++;//計(jì)數(shù)值加一}定時(shí)器LED流程圖定時(shí)器定時(shí)器0初始化,10ms進(jìn)入一次中斷,2s中斷標(biāo)志flag1,500ms中斷標(biāo)志flag2Noflag2=1?Yes進(jìn)入流水燈顯示進(jìn)入流水燈顯示Z=3,m=0flag2=0,P0=table[m],flag2=0,P0=table[m],流水燈Yes,m++m<8?Noz--Yesz>0?No,三次流水燈結(jié)束z=3z=3,m=0m<8?Yes Noz--Yesz>0?No程序結(jié)尾程序結(jié)尾程序#include<reg52.h>typedefunsignedcharuchar;typedefunsignedintuint;ucharcount1=0,count2;ucharflag1=0;ucharflag2=0;ucharz,m;ucharcodetable[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//流水燈ucharcodetable1[]={0xfe,0xfb,0xef,0xbf,0xfd,0xf7,0xdf,0x7f};//奇偶流水燈voidinitial()//定時(shí)器初始化{TMOD=0x01;//定時(shí)器T0工作在方式一TH0=(65535-10000)/256;TL0=65535-10000;//每10ms進(jìn)入一次中斷EA=1;//打開(kāi)總中斷ET0=1;//打開(kāi)中斷TR0=1;//啟動(dòng)定時(shí)器}main(){initial();while(!flag1);//等待2s后flag1=1,跳出循環(huán)while(1) { for(z=3;z>0;z--)//循環(huán)點(diǎn)亮三次流水燈 { for(m=0;m<8;m++)//循環(huán)點(diǎn)亮流水燈 { flag2=0;//清除上一次的flag2 P0=table[m]; while(!flag2); } } for(z=3;z>0;z--)//循環(huán)奇偶點(diǎn)亮 { for(m=0;m<8;m++) { flag2=0; P0=table1[m]; while(!flag2); } }}}voidTimer0()interrupt1{count1++;count2++;if(count1==200)//進(jìn)入兩百次中斷即達(dá)到2s{count1=0;flag1=1;}if(count2==50)//進(jìn)入50次中斷即達(dá)到500ms{count2=0;flag2=1;}TH0=(65535-10000)/256;//定時(shí)器重新賦值TL0=65535-10000;}計(jì)數(shù)器LED流程圖計(jì)數(shù)器計(jì)數(shù)器0初始化,計(jì)數(shù)初值為0xffff,即計(jì)數(shù)一次就進(jìn)入中斷等待脈沖進(jìn)入等待脈沖進(jìn)入脈沖進(jìn)入進(jìn)入中斷,進(jìn)入中斷,number++Nonumber=3?Yesshow=0show=0,LED亮,number=0程序#include<reg52.h>unsignedcharnumber=0;sbitshow=P1^0;//使用P1口的第一個(gè)LED當(dāng)做指示燈voidcount_initial(){ TMOD=0x05;//使用計(jì)數(shù)器0,工作方式一 TH0=0xff; TL0=0xff;//計(jì)數(shù)初值為0xffff EA=1; ET0=1; TR0=1;}voidmain(){count_initial();//計(jì)數(shù)器初始化while(1);//在中斷中執(zhí)行程序,故主程序無(wú)序內(nèi)容,無(wú)限循環(huán)}voidcounter()interrupt1{ number++; if(number==3) { number=0; show=0;//進(jìn)入三次中斷就使標(biāo)志位show=0 } elseshow=1; TH0=0xff; TL0=0xff;}定時(shí)器看門(mén)狗流程圖定時(shí)器定時(shí)器0初始化,賦初值使0.05s進(jìn)入一次中斷Noflag=1?Yes流水燈流水燈Yesflag2=1?No等待等待程序#include<reg52.h>sfrWHD=0xe1;//看門(mén)狗定時(shí)器,位置為SFR區(qū)的0xe1unsignedchara,b,c,i,j;unsignedcharflag1=0,flag2=0,flag3=0;unsignedcharcodetable[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};voidtimer_initial(){ TMOD=0x01;//計(jì)數(shù)器0,工作方式1 TH0=(65535-50000)/256;//0.05s進(jìn)入一次中斷 TL0=65535-50000; EA=1; ET0=1; TR0=1;}voidmain(){ //WHD=0x3f;//打開(kāi)看門(mén)狗,設(shè)置溢出間隔為8.3s timer_initial(); while(!flag1); while(1){ for(i=0;i<8;i++) { flag2=0;//判斷是否到達(dá)100ms P1=table[i]; while(!flag2);//沒(méi)到達(dá)100ms則等待 }}}voidtimer0()interrupt1{a++;b++;c++;if(a==60)//進(jìn)入中斷60次,使用3s { flag1=1; a=0; }if(b==2)//進(jìn)入中斷兩次,使用100ms { b=0; flag2=1; } if(c==219)//進(jìn)入中斷220次時(shí),使用11s,考慮到看門(mén)狗65ms后復(fù)位,故//此處減一 { c=0; WHD=0x30;//放狗,設(shè)置分頻及復(fù)位時(shí)間 }TH0=(65535-50000)/256;//0.05s進(jìn)入一次中斷 TL0=65535-50000;}實(shí)驗(yàn)心得:通過(guò)本次定時(shí)計(jì)數(shù)器的使用,我熟悉了TMOD,TH,TL及中斷開(kāi)關(guān)的使用,也熟悉了中斷服務(wù)程序的使用。其中,方式一不是自動(dòng)重裝初值,所以在中斷服務(wù)程序中一定要再次裝入計(jì)時(shí)或計(jì)數(shù)初值。模擬/數(shù)字(A/D,TLC549)實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康模毫私?位串行輸出A/D轉(zhuǎn)換器TLC549的工作原理。掌握TLC549的硬件線路連接方式。掌握A/D轉(zhuǎn)換器TLC549的編程方法實(shí)驗(yàn)儀器:LJD-SY-5200實(shí)驗(yàn)內(nèi)容:仔細(xì)閱讀TLC549的數(shù)據(jù)手冊(cè)。仔細(xì)閱讀CH451的應(yīng)用手冊(cè)。編寫(xiě)程序把A/D轉(zhuǎn)換器的轉(zhuǎn)換結(jié)果通過(guò)液晶顯示出來(lái)。實(shí)驗(yàn)線路:TLC549管腳圖連接圖實(shí)驗(yàn)程序及流程圖:流程圖:ADAD轉(zhuǎn)換初始化cscs低電平選中芯片clkclk下降沿從低位到高位讀取數(shù)據(jù)左移左移a八次ddata=a,count=dataLCDLCD顯示程序(除去LCD顯示部分):sbit

溫馨提示

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

評(píng)論

0/150

提交評(píng)論