單片機(jī)實(shí)驗(yàn)報(bào)告考試_第1頁(yè)
單片機(jī)實(shí)驗(yàn)報(bào)告考試_第2頁(yè)
單片機(jī)實(shí)驗(yàn)報(bào)告考試_第3頁(yè)
單片機(jī)實(shí)驗(yàn)報(bào)告考試_第4頁(yè)
單片機(jī)實(shí)驗(yàn)報(bào)告考試_第5頁(yè)
已閱讀5頁(yè),還剩3頁(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)題目:電子表程序的設(shè)計(jì)與仿真實(shí)驗(yàn)?zāi)康模簩W(xué)會(huì)掌握用C語(yǔ)言編寫電子表程序和利用proteus軟件畫(huà)出硬件電路圖進(jìn)行程序仿真,培養(yǎng)獨(dú)立的程序編寫流程思路和程序調(diào)試能力。實(shí)驗(yàn)要求:利用C語(yǔ)言編寫一個(gè)電子表程序,而且具有能設(shè)定時(shí)間的功能,用proteus軟件將硬件電路圖畫(huà)出來(lái),并仿真出來(lái)顯示在LED顯示屏上。實(shí)驗(yàn)原理:利用8251中的定時(shí)器/計(jì)數(shù)器定時(shí)50000us即50ms,每50ms計(jì)數(shù)一次,一共計(jì)二十次即1s,秒位往分位進(jìn)一,秒位清零。當(dāng)分位<59時(shí),分位依次加一,加到59時(shí)往時(shí)位進(jìn)一,分位清零。當(dāng)時(shí)位<23時(shí)時(shí)位依次加一,再計(jì)一次時(shí)位清零,再?gòu)牧汩_(kāi)始計(jì)數(shù)。程序中加一中斷服務(wù)程序,先對(duì)定時(shí)計(jì)數(shù)器關(guān)中斷,設(shè)置定時(shí)初值65535-5000,然后開(kāi)中斷,計(jì)數(shù)定時(shí)器開(kāi)始工作。當(dāng)計(jì)到二十時(shí),正好到一秒,秒位進(jìn)位,依次循環(huán),并顯示出來(lái)。定義初始化送代碼實(shí)驗(yàn)流程圖:定義初始化送代碼S清零S清零YNHour=0顯示h,m,s延時(shí)返回取位送P3口P0口輸出數(shù)據(jù)Hour+1Hour<23Y延時(shí)1000usTR0=0,s=0H=0Ym+1,s=0Ym=0M是否<59Y延時(shí)1000us禁止T0工作按鍵是否釋放NYN延時(shí)1000us啟動(dòng)T0是否有鍵按下顯示時(shí),分,秒開(kāi)總中斷及T0中斷對(duì)計(jì)數(shù)器定時(shí)器初始化YNHour=0顯示h,m,s延時(shí)返回取位送P3口P0口輸出數(shù)據(jù)Hour+1Hour<23Y延時(shí)1000usTR0=0,s=0H=0Ym+1,s=0Ym=0M是否<59Y延時(shí)1000us禁止T0工作按鍵是否釋放NYN延時(shí)1000us啟動(dòng)T0是否有鍵按下顯示時(shí),分,秒開(kāi)總中斷及T0中斷對(duì)計(jì)數(shù)器定時(shí)器初始化實(shí)驗(yàn)軟件程序:#include<reg51.h>sbitkey_start=P1^0;sbitkey_m=P1^1;sbitkey_h=P1^2;codeunsignedcharsag[11]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x40};//0123456789codeunsignedcharbitcode[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};unsignedcharcount=20;unsignedcharhour=0,minute=0,second=0;unsignedintintdata=65536-50000;//定時(shí)常數(shù)(按50ms計(jì)算T=(65535-intdata)Tcy,Tcy=1uS)voiddisplay(unsignedcharh,unsignedcharm,unsignedchars);voiddelay(unsignedintn);voidmain(void){ bitk_s=1,k_m=1,k_h=1; TMOD=0x01; //定時(shí)器0工作在定時(shí)方式 TH0=intdata/256;//商3C(intdata=C3B0) TL0=intdata%256;//余數(shù)B0 IE=0x82; //開(kāi)中斷(總中斷及T0中斷) TR0=1; //啟動(dòng)T0 while(1) { display(hour,minute,second); k_s=key_start; k_m=key_m; k_h=key_h; if(k_s==0||k_m==0||k_h==0)//判斷按鍵是否按下 { if(k_s==0) { //delay(1000);//去抖 TR0=1;//啟動(dòng)T0 } do { display(hour,minute,second); } while(key_start==0);/判斷按鍵是否釋放 if(k_m==0) { //delay(1000); TR0=0; //禁止T0工作 second=0;//初始狀態(tài)秒位為0 if(minute<59) minute=minute+1; else minute=0; } do { display(hour,minute,second); } while(key_m==0); if(k_h==0) { //delay(1000); TR0=0;//禁止TR0工作 second=0; if(hour<23) hour=hour+1; else hour=0; } do { display(hour,minute,second); } while(key_h==0); } }}voidt_0(void)interrupt1using2//1號(hào)中斷(定時(shí)器0),使用2號(hào)寄存器組{ IE=0x00; //關(guān)中斷 TH0=0x3c;//intdata/256; TL0=0xb0;//intdata%256,置定時(shí)初值 IE=0x82; //開(kāi)中斷 count=count-1; if(count==0)//1秒到后計(jì)時(shí) { count=20; if(second<59) { second=second+1;//秒依次加一 } else if(minute<59) { second=0;//秒位清零,分位進(jìn)位 minute=minute+1; } else if(hour<23) { minute=0; hour=hour+1;//分位清零,時(shí)位進(jìn)位 } else hour=0; } }voiddisplay(unsignedcharh,unsignedcharm,unsignedchars) //顯示{unsignedintoutdata[8];unsignedchari;outdata[0]=(h/10)%10;//取出高位(整形會(huì)將b/10的小數(shù)位丟掉)outdata[1]=h%10; //取出低位 outdata[2]=10; outdata[3]=(m/10)%10;//取出“m”的高位outdata[4]=m%10;//取出“m”的低位 outdata[5]=10; outdata[6]=(s/10)%10; outdata[7]=s%10; for(i=0;i<8;i++) { P3=bitcode[i];//P3口輸出位地址 switch(outdata[i]){case0:P0=sag[0];break;//P0口輸出顯示數(shù)據(jù)case1:P0=sag[1];break;case2:P0=sag[2];break;case3:P0=sag[3];break;case4:P0=sag[4];break;case5:P0=sag[5];break;case6:P0=sag[6];break;case7:P0=sag[7];break;case8:P0=sag[8];break;case9:P0=sag[9];break; case10:P0=sag[10];break;} delay(50); }}voiddelay(unsignedintn)//延時(shí){while(n--); }實(shí)驗(yàn)硬件電路原理圖:實(shí)驗(yàn)調(diào)用結(jié)果:用keil軟件編譯修改程序,編譯無(wú)誤。用protues作出硬件電路圖,將程序?qū)敕凑娐分羞M(jìn)行仿真。點(diǎn)擊播放,將開(kāi)關(guān)start閉合,顯示屏開(kāi)始顯示計(jì)數(shù),每秒變化一次,當(dāng)?shù)?9S時(shí)向分位進(jìn)一,秒位變0.再將開(kāi)關(guān)minute閉合,分位加一,閉合一次分為進(jìn)一,秒位清零。然后將開(kāi)關(guān)hour閉合,時(shí)位加一,閉合一次時(shí)位上加一,秒位也為0。實(shí)驗(yàn)總結(jié):實(shí)驗(yàn)中用主要到的8251的定時(shí)器/計(jì)數(shù)器T0,一共用到十一個(gè)顯示代碼“0—9”和“—”還有八個(gè)數(shù)碼管的位地址。用定時(shí)器定時(shí)50000us即50ms,計(jì)數(shù)20次,總共是一秒。計(jì)數(shù)從二十減到零,秒位加以,但秒位加到59后向分位進(jìn)一。當(dāng)時(shí)間到23:59:59秒時(shí),分位變0,想上進(jìn)一時(shí)位也變0,然后秒位進(jìn)一變0,從0開(kāi)始計(jì)數(shù)。在程序開(kāi)始時(shí)為了去抖動(dòng)要加一個(gè)延時(shí)判斷,還要判斷一下按鍵是否釋放。試驗(yàn)中用P0口輸出顯示數(shù)

溫馨提示

  • 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)論