單片機(jī)實(shí)驗(yàn)報(bào)告(學(xué)期全部實(shí)驗(yàn))_第1頁(yè)
單片機(jī)實(shí)驗(yàn)報(bào)告(學(xué)期全部實(shí)驗(yàn))_第2頁(yè)
單片機(jī)實(shí)驗(yàn)報(bào)告(學(xué)期全部實(shí)驗(yàn))_第3頁(yè)
單片機(jī)實(shí)驗(yàn)報(bào)告(學(xué)期全部實(shí)驗(yàn))_第4頁(yè)
單片機(jī)實(shí)驗(yàn)報(bào)告(學(xué)期全部實(shí)驗(yàn))_第5頁(yè)
已閱讀5頁(yè),還剩15頁(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)介

1、單片機(jī)程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告 姓名:學(xué)號(hào): 專業(yè)班級(jí):第二節(jié)課:實(shí)驗(yàn)一:1357,2468位置的燈交替閃爍一 實(shí)驗(yàn)要求1357,2468位置的燈交替閃爍。二 硬件連接圖與結(jié)果 三 原理簡(jiǎn)述程序直接控制LED各位置的燈亮滅,時(shí)間間隔簡(jiǎn)單的用了一個(gè)延時(shí)的語(yǔ)句。四 程序 #include<reg51.h> main () int i; P0=0XAA; /1357四個(gè)燈亮 for (i=0;i<=25000;i+); /延時(shí)程序 P0=0X55; /2468四個(gè)燈亮 for (i=0;i<=25000;i+); /延時(shí)程序 五 所遇問(wèn)題與解決方式程序比較簡(jiǎn)單,沒(méi)有遇到問(wèn)題。實(shí)驗(yàn)二:

2、流水燈一 實(shí)驗(yàn)要求 流水燈,一個(gè)接一個(gè)的燈亮,亮到最后一個(gè)后,全部的燈亮,然后重頭開始。二 硬件連接圖與結(jié)果三 原理簡(jiǎn)述程序定義第一個(gè)位置的燈亮,通過(guò)一個(gè)時(shí)間間隔,運(yùn)用一個(gè)循環(huán)移位程序轉(zhuǎn)移到下一個(gè)燈,移位7次后全部的燈亮,最后定義整個(gè)循環(huán)。時(shí)間間隔簡(jiǎn)單的用了一個(gè)延時(shí)的語(yǔ)句。因?yàn)橐莆粫r(shí)是直接補(bǔ)0,發(fā)送低電平不亮,所以直接移位達(dá)到要求。四 程序/流水燈 #include<reg51.h> main () int i,j; while(1) P0=0X01; /第1個(gè)燈亮 for (i=0;i<=30000;i+); /延時(shí)程序 for(j=0;j<=7;j+) /移位循環(huán)程

3、序 P0=P0<<1; /移位 for (i=0;i<=30000;i+); /延時(shí)程序 P0=0xff; /全亮 for (i=0;i<=30000;i+); /延時(shí)程序 五 所遇問(wèn)題與解決方式程序比較簡(jiǎn)單,沒(méi)有遇到問(wèn)題。實(shí)驗(yàn)三:跑馬燈一 實(shí)驗(yàn)要求 一個(gè)接一個(gè)的燈亮,前面亮過(guò)的等依舊亮,直到最后一個(gè)燈,最后重新開始,循環(huán)。二 硬件連接圖與結(jié)果三 原理簡(jiǎn)述程序定義第一個(gè)位置的燈亮,通過(guò)一個(gè)時(shí)間間隔,運(yùn)用一個(gè)循環(huán)移位程序轉(zhuǎn)移到下一個(gè)燈,移位7次后全部的燈亮,最后定義整個(gè)循環(huán)。時(shí)間間隔簡(jiǎn)單的用了一個(gè)延時(shí)的語(yǔ)句。因?yàn)橐莆粫r(shí)是直接補(bǔ)0,為了使之前的燈依舊亮,所以我們用了一個(gè)取反

4、,讓新補(bǔ)入的0位保持燈亮,達(dá)到要求。四 程序#include<reg51.h> main () int i,j,m; while(1) m=0Xfe; P0=m; /第1個(gè)燈亮 for (i=0;i<=30000;i+); /延時(shí)程序 for(j=0;j<=7;j+) /移位循環(huán)程序 m=m<<1; /移位 P0=m; for (i=0;i<=30000;i+); /延時(shí)程序 P0=0xff; /全亮 for (i=0;i<=30000;i+); /延時(shí)程序 五 所遇問(wèn)題與解決方式程序比較簡(jiǎn)單,沒(méi)有遇到問(wèn)題。第3節(jié) 課:實(shí)驗(yàn)四:矩陣按鍵控制數(shù)碼管

5、顯示數(shù)字一 實(shí)驗(yàn)要求 通過(guò)矩陣鍵盤控制數(shù)碼管的顯示對(duì)應(yīng)數(shù)字。二 硬件連接圖與結(jié)果三 原理簡(jiǎn)述 通過(guò)程序定義鍵位碼,對(duì)應(yīng)到顯示數(shù)碼管的位。然后通過(guò)掃描程序得出鍵盤鍵碼,通過(guò)程序讓數(shù)碼管顯示數(shù)字。四 程序#include<reg51.h>#define uchar unsigned char#define unit unsigned intvoid dlms(void);uchar kbscan(void);unsigned char i;unsigned char code out16=0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6

6、f,0x77,0x7c,0x39,0x5e,0x79,0x71;unsigned char tab16=0xdb,0xee,0xde,0xbe, 0x7e,0xed,0xdd,0xbd, 0x7d,0xeb,0xbb,0x7b, 0xe7,0xd7,0xb7,0x77;/主程序void main (void) uchar key; while(1) key=kbscan(); dlms(); for(i=0;i<16;i+)if(key=tabi)P0=outi; /延時(shí)程序void dlms (void) uchar i; for (i=200;i>0;i-) /掃描程序ucha

7、r kbscan(void) uchar sccode,recode; P2=0xf0; /高四位輸入1,低四位輸入0 if (P2&0xf0)!=0xf0) /有按鍵時(shí) dlms(); if(P2&0xf0)!=0xf0) sccode=0xfe; while (sccode&0x10)!=0) P2=sccode; if(P2&0xf0)!=0xf0) recode=P2&0xf0; sccode=sccode&0x0f; return(sccode+recode); else sccode=(sccode<<1)|0x01; r

8、eturn(0); 五 所遇問(wèn)題與解決方式 程序比較簡(jiǎn)單,沒(méi)有遇到問(wèn)題。第4節(jié) 課實(shí)驗(yàn)五:數(shù)碼管顯示 停電了,做的是數(shù)碼管的程序,由于下個(gè)實(shí)驗(yàn)的時(shí)候也用了數(shù)碼管,在數(shù)碼管的基礎(chǔ)上進(jìn)行的,所以沒(méi)有補(bǔ)做。第五節(jié)課實(shí)驗(yàn)六:獨(dú)立按鍵控制燈的亮滅一 實(shí)驗(yàn)要求 通過(guò)獨(dú)立按鍵來(lái)控制LED燈的亮滅,用中斷程序控制。 二 硬件連接圖與結(jié)果(控制單個(gè)燈的圖丟了,所以用了后面加深實(shí)驗(yàn)的圖)三 原理簡(jiǎn)述 中斷程序定義一個(gè)等待,通過(guò)獨(dú)立按鍵發(fā)送信號(hào),執(zhí)行程序,控制燈的亮滅。四 程序/K1中斷程序控制LED燈亮滅#include <reg51.h>sbit led=P05;int0()interrupt 0

9、led=led;main() led=1; IT0=0; EA=1; EX0=1; while(1);五 所遇問(wèn)題與解決方式 問(wèn)題:按鍵會(huì)抖動(dòng)接觸不太好,總是不能每次人工按下時(shí)只變化一次。 解決方式:在程序里加了延時(shí)程序,讓它在延時(shí)時(shí)間后再重新執(zhí)行中斷程序,這樣可保證每次按下時(shí)不會(huì)跳變。實(shí)驗(yàn)七:通過(guò)數(shù)碼管顯示按鍵次數(shù)一 實(shí)驗(yàn)要求 利用中斷程序,寫出按鍵程序,用數(shù)碼管顯示所按次數(shù)。二 硬件連接圖與結(jié)果三 原理簡(jiǎn)述 中斷程序定義一個(gè)等待,通過(guò)獨(dú)立按鍵發(fā)送信號(hào),執(zhí)行數(shù)碼管的顯示程序,程序計(jì)數(shù)每按一次加1,數(shù)碼管顯示。四 程序/數(shù)碼管計(jì)數(shù)中斷次數(shù)#include <reg51.h>char

10、 i=0;int j;unsigned char code tab11=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88;int0()interrupt 2 i=i+1; if(i<11) P2=tabi; for(j=0;j<=30000;j+); else i=0; P2=0x3F;main() IT1=0; EA=1; EX1=1; while(1); 五 所遇問(wèn)題與解決方式 問(wèn)題:按鍵會(huì)抖動(dòng)接觸不太好,總是不能每次人工按下時(shí)只變化一次。 解決方式:在程序里加了延時(shí)程序,讓它在延時(shí)時(shí)間后再重新執(zhí)行中斷程序,這樣可保證

11、每次按下時(shí)不會(huì)跳變。第6節(jié) 課實(shí)驗(yàn)八:定時(shí)器控制LED燈1S閃爍一 實(shí)驗(yàn)要求 利用定時(shí)程序計(jì)時(shí),控制小燈每隔1S閃爍。二 硬件連接圖與結(jié)果三 原理簡(jiǎn)述 通過(guò)定時(shí)程序?qū)懸粋€(gè)定時(shí)時(shí)間,每到一次計(jì)時(shí)直接控制LED燈亮滅。四 程序/定時(shí)器控制LED燈1S閃爍 #include<reg51.h> #define uchar unsigned char uchar num = 0; sbit led = P10; void main() TMOD = 0x01;TH0 = (65536-50000)/256;TL0 = (65536-50000)%256;EA=1;ET0=1;TR0=1;le

12、d = 1;while(1)if(num = 20)num = 0;led = led; void T0_time()interrupt 1 TH0 = (65536-50000)/256;TL0 = (65536-50000)%256;num+; 五 所遇問(wèn)題與解決方式 驗(yàn)證程序,問(wèn)題不多。實(shí)驗(yàn)九:定時(shí)器控制兩個(gè)燈以不同周期閃爍一 實(shí)驗(yàn)要求 用定時(shí)器1工作方式1控制兩個(gè)LED以不同周期。 說(shuō)明:設(shè)計(jì)一個(gè)LED以200ms為周期閃爍,另一個(gè)為800ms閃爍,設(shè)計(jì)定時(shí)器1每50ms產(chǎn)生一次中斷,由兩個(gè)變量分別對(duì)中斷次數(shù)計(jì)數(shù),其中一個(gè)變量計(jì)數(shù)兩次,即100ms,控制LED亮滅,另一個(gè)變量計(jì)數(shù)8次即

13、400ms,控制LED亮滅。 二 硬件連接圖與結(jié)果三 原理簡(jiǎn)述 通過(guò)定時(shí)程序?qū)懸粋€(gè)50ms的定時(shí),一個(gè)燈運(yùn)行計(jì)時(shí)2遍變化一次,另一個(gè)燈在上一個(gè)燈的計(jì)時(shí)基礎(chǔ)上計(jì)數(shù)4次再變化,從而控制LED燈亮滅。四 程序/用定時(shí)器1工作方式1控制兩個(gè)LED以不同周期/說(shuō)明:設(shè)計(jì)一個(gè)LED以200ms為周期閃爍,另一個(gè)為800ms閃爍/設(shè)計(jì)定時(shí)器1每50ms產(chǎn)生一次中斷,由兩個(gè)變量分別對(duì)中斷次數(shù)計(jì)數(shù),/其中一個(gè)變量計(jì)數(shù)兩次,即100ms,控制LED亮滅/另一個(gè)變量計(jì)數(shù)8次即400ms,控制LED亮滅 #include<reg51.h> #define uchar unsigned char uchar num = 0; /4 uchar n = 0; /16 sbit led1 = P10; sbit led2 = P12; void main() TMOD = 0x01;TH0 = (65536-50000)/256;TL0 = (65536-50000)%256;EA=1;ET0=1;TR0=1;/計(jì)時(shí)開始l

溫馨提示

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