第一篇:單片機(jī)最小系統(tǒng)實(shí)訓(xùn)報(bào)告
單片機(jī)最小系統(tǒng)實(shí)訓(xùn)報(bào)告
一、實(shí)訓(xùn)目的
1、掌握并理解單片機(jī)最小系統(tǒng)的原理及制作, 牢記最小系統(tǒng)中各元器件 的參數(shù)及各元器的作用./
2、掌握單片機(jī)芯片內(nèi)部的組成及存儲(chǔ)機(jī)構(gòu)。
3、理解常用指令的功能和使用方法。
4、掌握單片機(jī)的中斷源,中斷控制寄存器,中斷響應(yīng)過程,定時(shí)/計(jì)數(shù)器的電路結(jié)構(gòu)、功能我使用方法,定時(shí)器/計(jì)數(shù)控制寄存器.5、復(fù)習(xí)利用Keil51軟件對(duì)程序進(jìn)行編譯。
6、用protel軟件繪制“單片機(jī)最小系統(tǒng)”電路,并用測(cè)試程序進(jìn)行仿真。
7、會(huì)根據(jù)實(shí)際功能,正確選擇單片機(jī)功能接線,編制正確程序。對(duì)實(shí)驗(yàn)結(jié)果能做出不分析我解釋,能學(xué)出符合規(guī)格的實(shí)驗(yàn)報(bào)告。
二、實(shí)訓(xùn)工具
1、點(diǎn)偏激測(cè)試平臺(tái):PC機(jī),串口線,并口線,單片機(jī)開發(fā)板
2、軟件:keil51測(cè)試軟件,protel仿真軟件,DXP2004軟件。
三、實(shí)訓(xùn)要求
通過實(shí)訓(xùn),學(xué)生應(yīng)達(dá)到以下經(jīng)濟(jì)方面的要求:
素質(zhì)要求
1、以積極認(rèn)真的態(tài)度對(duì)待本次實(shí)訓(xùn),遵章守紀(jì)、團(tuán)結(jié)協(xié)作。
2、善于發(fā)現(xiàn)數(shù)字電路中存在的問題、分析問題、解決問題,努力培養(yǎng)獨(dú)立工作能力。
能力要求
1、模擬電路的理論知識(shí)
2、脈沖與數(shù)字電路的理念知識(shí)
3、通過模擬、數(shù)字電路實(shí)驗(yàn)有一定的動(dòng)手能力
4、能熟練的制作單片機(jī)最小系統(tǒng)
5、嫩熟練的編寫8951單片機(jī)匯編程序
6、能夠熟練的運(yùn)用仿真軟件對(duì)單片機(jī)最小系統(tǒng)仿真
四、實(shí)訓(xùn)內(nèi)容
1、掌握并理解“單片機(jī)最小系統(tǒng)”的原理及制作,牢記最小系統(tǒng)中各元器件的參數(shù)及格元器件的作用。
2、用keil51測(cè)試元件編寫8951單片機(jī)匯編程序
3、用peotel軟件繪制“單片機(jī)最小系統(tǒng)”單路原理圖。
4、運(yùn)用仿真軟件對(duì)單片機(jī)最小系統(tǒng)進(jìn)行仿真。五.實(shí)訓(xùn)基本步驟
1、用peotel乳酸鈉幾十年繪制“單片機(jī)最小系統(tǒng)”單路原理圖。
2、根據(jù)原理圖生成pcb圖、GB文件。鉆孔文件
3、繪制印刷電路板。
4、根據(jù)原理圖焊接元件,生成單片機(jī)開發(fā)板。
5、用keil51軟件編寫單片機(jī)最小系統(tǒng)測(cè)試程序。
6、用仿真軟件繪制單片機(jī)最小系統(tǒng)原理圖,測(cè)試測(cè)量程序。
7、把測(cè)試程序拷貝到單片機(jī)里進(jìn)行實(shí)物測(cè)試。
8、觀察測(cè)試結(jié)果。
六、51單片機(jī)C編語言程序測(cè)試 測(cè)試程序流水燈1: //用定時(shí)器做流水燈測(cè)試 //為定時(shí)顯示做準(zhǔn)備
//P1-0-----PF1.3
L0-----L3 #include
#define unit unsigned int #define unchar unsigned char
sbit L0 = P1^0;sbit L1 = P1^1;sbit L2 = P1^2;sbit L3 = P1^3;
unsigned char data BUFFER[1]={0};
void main(void){ P2=0X0F;
EA=1;IT0=1;ET0=1;TMOD=0X01;TH0=-5000/256;TL0=-5000%256;TR0=1;
while(1){
};} //定時(shí)器0中斷服務(wù)程序// void timer0(void)interrupt 1 using 1 { TH0=-5000/256;TL0=-5000%256;BUFFER[0]=BUFFER[0]+1;if(BUFFER[0]==100)
{
L3=!L3;
L2=!L2;
L1=!L1;
L0=!L0;
} } 測(cè)試程序流水燈2:
//此程序?yàn)榱俗龌恿魉疅舻?/p>
//采用了C的宏定義 X 可以實(shí)現(xiàn)一改全改 #include
#define X 16 //
unsigned int time=0;
unsigned int a[X]={
0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80,0X18,0X24,0X42,0X81,0X42,0X24,0X18,0X00,void main(void){ P1=0X0f;EA=1;IT0=1;ET0=1;TMOD=0X01;TH0=9000/256;TL0=9000%256;TR0=1;
while(1){
P1=a[time];};} //定時(shí)器0中斷服務(wù)程序// void timer0(void)interrupt 1 using 1 { TH0=9000/256;TL0=9000%256;
time++;if(time==X)time=0;
} //此程序來測(cè)試數(shù)碼管
//P0.0--P0.7
A B C D E F G dp //P2.0--P2.7
C0M0--------C0M8 #include
#define unit unsigned int #define unchar unsigned char
unsigned char data BUFFER[1]={0};unsigned char X=0;//共陽極碼表數(shù)碼管
unsigned char leddata[]={
0xC0, //“0”
0xF9, //“1”
0xA4, //“2”
};
0xB0, //“3”
0x99, //“4”
0x92, //“5”
0x82, //“6”
0xF8, //“7”
0x80, //“8”
0x90, //“9”
0x88, //“A”
0x83, //“B”
0xC6, //“C”
0xA1, //“D”
0x86, //“E”
0x8E, //“F”
0x89, //“H”
0xC7, //“L”
0xC8, //“n”
0xC1, //“u”
0x8C, //“P”
0xA3, //“o”
0xBF, //“-”
0xFF, //熄滅
0xFF //自定義
};
unsigned char com[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,};void Delay(unsigned char cnt){ while(cnt--);} void xian_shi(unsigned char cp){ unsigned char i;unsigned int z=cp;for(i=0;i<8;i++)
{
P0=leddata[z%10];
P2=com[i];
Delay(200);
z=z/10;
} } void main(void){
P0=0X00;P2=0Xff;EX0=1;IT0=1;EA=1;
while(1){
xian_shi(X);};} //定時(shí)器0中斷服務(wù)程序// void timer0(void)interrupt 1 using 1 { X++;if(X==25){
X=0;} } 此程序測(cè)試鍵盤
//P3.0---P3.3
L0-------L3 //從左到有顯示為 0 1 2 3
P3.4/ //上///
5 6 7
P3.5/ //到///
9 A B
P3.6/ //下///
C D E F
P3.7/ //P3.4--=P3.7
H0----H3 #include
#define uchar unsigned char #define uint unsigned int
unsigned char led_data[]={
0xC0, //“0”
0xF9, //“1”
0xA4, //“2”
0xB0, //“3”
0x99, //“4”
0x92, //“5”
0x82, //“6”
0xF8, //“7”
0x80, //“8”
0x90, //“9”
0x88, //“A”
0x83, //“B”
0xC6, //“C”
0xA1, //“D”
0x86, //“E”
0x8E, //“F”
0x89, //“H”
0xC7, //“L”
0xC8, //“n”
0xC1, //“u”
0x8C, //“P”
0xA3, //“o”
0xBF, //“-”
0xFF, //熄滅
0xFF //自定義
};
void delay(uint i)
{ while(i--);}
uchar keyscan(void)// { uchar cord_h,cord_l;//行列值中間變量
P3=0x0f;
//行線輸出全為0 cord_h=P3&0x0f;
//讀入列線值
if(cord_h!=0x0f)
//先檢測(cè)有無按鍵按下
{
delay(100);
//去抖
if(cord_h!=0x0f)
{
cord_h=P3&0x0f;//讀入列線值
P3=cord_h|0xf0;//輸出當(dāng)前列線值
cord_l=P3&0xf0;//讀入行線值
return(cord_h+cord_l);//鍵盤最后組合碼值
}
}
return 0xFF;}
void main()
{ uchar key;P2=0xbb;
//1數(shù)碼管亮 按相應(yīng)的按鍵,會(huì)顯示按鍵上的字符
while(1){ key=keyscan();//調(diào)用鍵盤掃描,switch(key){
case 0xEE:P0=led_data[0];break;//0 按下相應(yīng)的鍵顯示相對(duì)應(yīng)的碼值
case 0xED:P0=led_data[1];break;//1
case 0xEB:P0=led_data[2];break;//2
case 0xE7:P0=led_data[3];break;//3
case 0xDE:P0=led_data[4];break;//4
case 0xDD:P0=led_data[5];break;//5
case 0xDB:P0=led_data[6];break;//6
case 0xD7:P0=led_data[7];break;//7
case 0xBE:P0=led_data[8];break;//8
case 0xBD:P0=led_data[9];break;//9
case 0xBB:P0=led_data[10];break;//a
case 0xB7:P0=led_data[11];break;//b
case 0x7E:P0=led_data[12];break;//c
case 0x7D:P0=led_data[13];break;//d
case 0x7B:P0=led_data[14];break;//e
case 0x77:P0=led_data[15];break;//f } } } //此程序用來測(cè)試中斷鍵盤P3.2 INT0 //下跳沿觸發(fā) // #include
#define unit unsigned int #define unchar unsigned char
sbit L0=P1^0;sbit L1=P1^1;sbit L2=P1^2;sbit L3=P1^3;
unsigned int times=0;
void delay(unsigned int cp)
{
unsigned int i=cp;
while(i--);
}
unsigned char leddata[]={
0xC0, //“0”
0xF9, //“1”
0xA4, //“2”
0xB0, //“3”
0x99, //“4”
0x92, //“5”
0x82, //“6”
0xF8, //“7”
0x80, //“8”
0x90, //“9”
0x88, //“A”
0x83, //“B”
0xC6, //“C”
0xA1, //“D”
0x86, //“E”
0x8E, //“F”
0x89, //“H”
0xC7, //“L”
0xC8, //“n”
0xC1, //“u”
0x8C, //“P”
0xA3, //“o”
0xBF, //“-”
0xFF, //熄滅
0xFF //自定義
};
unsigned char com[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,};
void xian_shi(unsigned char cp){
unsigned char i;unsigned int z=cp;for(i=0;i<8;i++)
{
P0=leddata[z%10];
P2=com[i];
delay(200);
z=z/10;
} }
void main(void){ P1=0Xdd;EX0=1;IT0=1;EA=1;
while(1){
xian_shi(times);};}
//INT0低電平中斷服務(wù)程序// void intersvr0(void)interrupt 0 using 1 {
L0=!L0;
L1=!L1;
L2=!L2;
L3=!L3;
times ++;}
//最簡單的24小時(shí)顯示 #include
#define unit unsigned int #define unchar unsigned char
unsigned char data BUFFER[1]={0};unsigned char time[3]={0};
unsigned char leddata[]={
0xC0, //“0”
0xF9, //“1”
0xA4, //“2”
0xB0, //“3”
0x99, //“4”
0x92, //“5”
0x82, //“6”
0xF8, //“7”
0x80, //“8”
0x90, //“9”
0x88, //“A”
0x83, //“B”
0xC6, //“C”
0xA1, //“D”
0x86, //“E”
0x8E, //“F”
0x89, //“H”
0xC7, //“L”
0xC8, //“n”
0xC1, //“u”
0x8C, //“P”
0xA3, //“o”
0xBF, //“-”
0xFF, //熄滅
0xFF //自定義
};
unsigned char com[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,};void Delay(unsigned char cnt){ while(cnt--);} void xian_shi(void){ unsigned char i;unsigned int SS=time[0]+100*time[1]+10000*time[2];for(i=0;i<6;i++)
{
P0=leddata[SS%10];
P2=com[i];
Delay(200);
SS=SS/10;
} } void main(void){ P0=0X00;P2=0Xff;EA=1;IT0=1;ET0=1;TMOD=0X01;TH0=0xec;TL0=0x78;
TR0=1;
while(1){
xian_shi();};} //定時(shí)器0中斷服務(wù)程序// void timer0(void)interrupt 1 using 1 { TH0=0xec;TL0=0x78;
BUFFER[0]=BUFFER[0]+1;if(BUFFER[0]==100){
time[0]++;
BUFFER[0]=0;
if(time[0]==60)
{
time[0]=0;
time[1]++;
if(time[1]==60)
{
time[1]=0;
if(time[1]==60)
{
time[1]=0;
time[2]++;
if(time[2]==24)
}
}
}
time[2]=0;
} }
七、實(shí)訓(xùn)心得
高職高專教育培養(yǎng)的是技術(shù)應(yīng)用型人才,學(xué)校為了陪養(yǎng)我們的創(chuàng)新精神和工程實(shí)踐能力,提高我們的綜合素質(zhì),我們進(jìn)行實(shí)訓(xùn),在實(shí)踐中相互學(xué)習(xí)和進(jìn)步。通過實(shí)踐我們更清楚的認(rèn)識(shí)了我們所學(xué)習(xí)專業(yè)在實(shí)踐中的運(yùn)用。也感覺到理論和實(shí)踐的差距。
八、附件
單片機(jī)最小系統(tǒng)生成原理圖
第二篇:單片機(jī)最小系統(tǒng)實(shí)驗(yàn)總結(jié)
STC89C51單片機(jī)最小系統(tǒng)板開發(fā)實(shí)驗(yàn)總結(jié) 實(shí)驗(yàn)小組成員:陸敘旺 張愛華 溫小靜
總的要求:設(shè)計(jì)并制作STC89C51單片機(jī)最小系統(tǒng)板。提供單片機(jī)最基本的運(yùn)行環(huán)境并具備ISP下載程序的功能。由于該板將來擬用作參賽設(shè)計(jì)的核心板,所以要求該板的設(shè)計(jì)具備使用靈活、方便,并采用模塊化設(shè)計(jì)使該板能與將來的整個(gè)系統(tǒng)很好的連接。同時(shí)應(yīng)具備很好的可維修與可維護(hù)性。具體要求:
[1] [2] [3] [4] [5] [6] 提供合適的電源接口并具備電源指示燈 應(yīng)具有上電復(fù)位和手動(dòng)復(fù)位功能 支持最大40MHz的運(yùn)行頻率
具有RS232接口,可連接電腦下載程序
八位流水燈,用于測(cè)試最小系統(tǒng)板是否工作正常 應(yīng)引出單片機(jī)的所有輸入輸出引腳
考慮的問題:
[1] [2] [3] [4] [5] [6] [7] 如何做到模塊化? 是否需要復(fù)位按鍵? 是否要編程座?
系統(tǒng)晶振插座:可更換升級(jí)晶振。是否需要EA跳線?
考慮是否需要電源開關(guān),以及采用哪種開關(guān)最好? 其它
實(shí)驗(yàn)設(shè)計(jì)過程: 原理圖設(shè)計(jì):
(1)單片機(jī)CPU部分:采用STC89C51芯片,封裝DIP-40。40個(gè)引腳,用40個(gè)排針引出,40腳接VCC,20腳接GND,VCC與GND之間用一小電容(可以用104)耦合。(去耦電容的主要功能就是提供一個(gè)局部的直流電源給有源器件,以減少開關(guān)噪聲在板上的傳播和將噪聲引導(dǎo)到地。)P0,P1,P2,P3做IO接口。9腳接RST(復(fù)位電路)。18,19腳接晶振,(這次實(shí)驗(yàn)用晶振為40M)。31腳接EA。
(2)電源供電部分:直接用排針引入電源給單片機(jī)供電,另外一種電源輸入就是加一個(gè)穩(wěn)壓塊7805,正電源端接一個(gè)二極管,保護(hù)電路,防止上電時(shí)正負(fù)反接。經(jīng)過穩(wěn)壓后串一個(gè)電阻(幾百歐)引出一個(gè)發(fā)光二極管。做為電源指示燈。問題出現(xiàn)在,如果是5V供電,經(jīng)過7805
穩(wěn)壓后,得到的電源并不夠5V了,只有3V多,所以,如果是選用經(jīng)過穩(wěn)壓后的電源供電,那么輸入就要有7V。(3)晶振部分:采用40M晶振,電容可以采用30P(可以用更小點(diǎn)的電容,小點(diǎn)的電容理論上效果會(huì)好點(diǎn))。在封裝電路的時(shí)候,晶振部分加了一個(gè)晶振插座,這樣,可以更換升級(jí)晶振。
(4)復(fù)位電路部分:電復(fù)位和手動(dòng)復(fù)位,電復(fù)位就是接一個(gè)1U的電容,手動(dòng)復(fù)位就是接一個(gè)開關(guān),這個(gè)開關(guān)選用點(diǎn)觸開關(guān)比較方便。
(5)EA電位選擇部分:單片機(jī)的9腳(EA)。采用了排針引出,與電源的正負(fù)兩端一起用三列排針引出,實(shí)驗(yàn)用到時(shí),用兩個(gè)孔的插帽做EA跳線。
(6)RS232接口,電腦下載程序部分:下載程序接口用DB9,電平轉(zhuǎn)換采用MAX232芯片。DB9的2,3腳接到MAX232的7(T2OUT),8(R2IN)腳,5腳接地。MAX232的9(R2OUT),10(T2IN)分別接到單片機(jī)上的P3^0(RXD)和P3^1(TXD)腳。MAX232的1,3腳,4,5腳,6,15腳,2,16腳,都串接一個(gè)電容,這些電容的大小最好都是1U,當(dāng)然,也可以采用其他的小電容,例如:104。15接地,16接VCC,加一個(gè)去耦電容104。(7)LED試驗(yàn)燈部分:8個(gè)發(fā)光二極管,正端接到P2端,負(fù)端接330歐的排阻,當(dāng)P2口輸出高電位時(shí),發(fā)光二極管亮,地電位時(shí),發(fā)光二極管熄滅。(8)總電路圖如下:
PCB圖設(shè)計(jì):電源線,地線,做得相對(duì)大點(diǎn),排線時(shí),考慮到信號(hào)干擾,線與線之間的距離要適當(dāng)。特別是電源與地線不要靠太近,輸入輸出排版盡量合理。輸入輸出接口放到板子比較好接,好調(diào)的地方。盡量避免跳線,主干部分(CPU)最好排在板子中間。調(diào)試過程:
焊接好板子,做出來的實(shí)物圖,接上電源,燒寫一個(gè)流水等程序進(jìn)去,可以看到8個(gè)發(fā)光二極管閃亮。
實(shí)際做板遇到的問題;在做板中,出現(xiàn)的問題主要集中在RS232接口,電腦下載程序部分和電源部分。剛開始用RS232的13腳和14腳接DB9的2,3腳。11腳和12腳接到單片機(jī)的P3^0腳和P3^1腳,調(diào)試過程中,程序下載不進(jìn)去,進(jìn)過檢查,其它部分電路都沒有錯(cuò)。后來又用跳線按照上述講的接。結(jié)果程序可以下載進(jìn)去了。電源部分:采用7805穩(wěn)壓,效果不是很好,帶來了不少麻煩。所以,后面干脆把7805也去掉,如果是用我們自己做的電源供電,穩(wěn)定性已經(jīng)很好了,沒必要i再次穩(wěn)壓?,F(xiàn)在我們基本都是用自己做的直流穩(wěn)壓電源。所以,這里可以去掉穩(wěn)壓塊電路。
想做一塊好的板子,封裝一定要對(duì)口,不對(duì)口的話就接不上去,或者接上去了也不好看。原理圖盡量要做得清晰好看,PCB圖盡量用手工布線,布線的時(shí)候不要布得太繞了。線是追求最短。做板的時(shí)候最好買一些好的材料做,效果會(huì)更好,比如說,銅板,電容。
想做一塊好的板子,就以我們現(xiàn)在的水平。不要追求速度。能按時(shí)完成就好。以后再慢慢提高。遇到不懂的,希望大家一起討論。
******2***101112******9101112***819201
19876543212019******42526272829303******6543212019******2121212121212***89
第三篇:單片機(jī)實(shí)訓(xùn)報(bào)告范文
四川電子機(jī)械職業(yè)技術(shù)學(xué)院
單片機(jī)原理及應(yīng)用
實(shí) 訓(xùn)報(bào)告1
班級(jí):應(yīng)電14.2班 姓名:劉華利 學(xué)號(hào):140302058 指導(dǎo)教師:向兵
四川電子機(jī)械職業(yè)技術(shù)學(xué)院
摘要:
《單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)項(xiàng)目化教程》這本書根據(jù)教育部新的教學(xué)改革要求和企業(yè)崗位技能需求,以高技能應(yīng)用型人才專業(yè)能力培養(yǎng)為目標(biāo),結(jié)合作者多年的教學(xué)經(jīng)驗(yàn)與課程改革成果進(jìn)行編寫。全書通過6個(gè)典型項(xiàng)目任務(wù),著重介紹單片機(jī)基本原理及應(yīng)用系統(tǒng)的設(shè)計(jì)方法與技巧,包括流水燈控制系統(tǒng)設(shè)計(jì)、簡易數(shù)字時(shí)鐘設(shè)計(jì)、數(shù)字電壓表設(shè)計(jì)、低頻信號(hào)發(fā)生器設(shè)計(jì)、數(shù)據(jù)存儲(chǔ)及回放系統(tǒng)設(shè)計(jì)和窗簾智能控制系統(tǒng)設(shè)計(jì)等。本書采用“理實(shí)一體、項(xiàng)目化教學(xué)”模式進(jìn)行內(nèi)容編排,將單片機(jī)原理及應(yīng)用系統(tǒng)設(shè)計(jì)的相關(guān)知識(shí)點(diǎn)融入項(xiàng)目中進(jìn)行講解,易教易學(xué),效果良好。
目錄
摘要········································ 2 目錄········································ 2 實(shí)訓(xùn)名稱···································· 3 實(shí)訓(xùn)地點(diǎn)···································· 3 實(shí)訓(xùn)時(shí)間···································· 3 實(shí)訓(xùn)目的···································· 3 實(shí)訓(xùn)項(xiàng)目···································· 3 項(xiàng)目1·······································3 項(xiàng)目2·······································4 項(xiàng)目3·······································5 項(xiàng)目4·······································6 實(shí)訓(xùn)總結(jié)····································· 7
四川電子機(jī)械職業(yè)技術(shù)學(xué)院
實(shí)訓(xùn)名稱:單片機(jī)原理及應(yīng)用 實(shí)訓(xùn)地點(diǎn):行政樓523 實(shí)訓(xùn)時(shí)間:2016.6.27—6.30 實(shí)訓(xùn)目的:1、2、3、4、5、6、7、掌握結(jié)構(gòu)化程序設(shè)計(jì)的基本方法,基本掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的基本思路和方法。
掌握C的基本概念和基礎(chǔ)知識(shí)。
通過訓(xùn)練能夠讀懂較為復(fù)雜的C語言源程序并具備基本C語言程序設(shè)計(jì)的能力。
熟練掌握各種常用類的定義繼承文件的應(yīng)用,為更好的理解面向?qū)ο蟠蛳赂玫幕A(chǔ)。
掌握面向?qū)ο蟮幕驹恚岣邔W(xué)生綜合程序設(shè)計(jì)的能力。
培養(yǎng)自己獨(dú)立解決問題,找資料的能力。同學(xué)之間相互幫助、相互交流、相互合作的團(tuán)隊(duì)精神。
通過實(shí)訓(xùn)檢查自己學(xué)習(xí)上的不足,達(dá)到熟練掌握C語言的基本知識(shí)和技能。
實(shí)訓(xùn)項(xiàng)目: 項(xiàng)目1 點(diǎn)亮一個(gè)LED,每隔一定時(shí)間循環(huán)熄滅、點(diǎn)亮…
設(shè)計(jì)思路:端口送高電平,led熄滅,延時(shí)1s,端口送低電平,led點(diǎn)亮,延時(shí)1s,就這樣一直循環(huán)。
程序
#include
L2 = 1;
while(Ms--)
DelayMs(1000);
{
L2 = 0;
for(i = 0;i < 114;i+
DelayMs(1000);+);} } }
四川電子機(jī)械職業(yè)技術(shù)學(xué)院
原理圖
項(xiàng)目2 點(diǎn)亮一個(gè)LED,讓它每隔一定時(shí)間循環(huán)左移(課使用delay函數(shù)進(jìn)行延時(shí))
設(shè)計(jì)思路:在項(xiàng)目1的的基礎(chǔ)上,用dalay函數(shù)進(jìn)行延時(shí),用<<來表示左移,添加一個(gè)左移的函數(shù)。通俗一點(diǎn)的講的話,就如天天天同一些人排隊(duì)領(lǐng)東西,領(lǐng)完了返回隊(duì)位繼續(xù)排(當(dāng)然一只是這幾個(gè)人排)。
程序
#include } while(1){ for(i=0;i<7;i++){ delay(100); LED=(LED<<1)|0x01;P3=LED;} } 四川電子機(jī)械職業(yè)技術(shù)學(xué)院 原理圖 項(xiàng)目3 將任務(wù)二中delay延時(shí)改用定時(shí)器延時(shí),且延時(shí)一秒 設(shè)計(jì)思路:在項(xiàng)目2的的基礎(chǔ)上,用定時(shí)器來進(jìn)行延時(shí),首先設(shè)置定時(shí)器工作方式 也就是TMOD,在設(shè)置TH0/1,TL0/1的初值,也就是定時(shí)時(shí)間的設(shè)置,然后設(shè)置中斷允許,并開中斷。用中斷來控制。 程序 #include { TH0=(65536-50000)/256;TL0=(65536-50000)%256;j++;if(j==5){ j=0; P1=~(0x01< if(++i==8)i=0; } } 四川電子機(jī)械職業(yè)技術(shù)學(xué)院 原理圖 項(xiàng)目4 四位數(shù)碼管并排顯示,從左到右依次為分、秒十位、秒各位、0.1秒,相當(dāng)于移動(dòng)可計(jì)時(shí)9分59.9秒,使用一個(gè)按鍵,當(dāng)按鍵第一次按下,啟動(dòng)秒表,第二次按下,停止,第三次按下,清零。(數(shù)碼管可選共陰極、共陽極,至于對(duì)應(yīng)數(shù)字的段選可參考教材) 設(shè)計(jì)思路:用delay函數(shù)來進(jìn)行延時(shí),用內(nèi)部中斷來控制T1,用外部中斷來實(shí)現(xiàn)計(jì)數(shù)、暫停、清零這三個(gè)功能。 程序 #include uintx,y; for(x=100;x>0;x--) for(y=z;y>0;y--);} void dihplay(){ P1=0xfd; 四川電子機(jī)械職業(yè)技術(shù)學(xué)院 P0=Tab[xiao%10]; delay(1); } void display(){ P1=0xfb;P0=Tab[miao/10];delay(1); P1=0xfe;P0=Tab[miao%10];dp=0;delay(1);} void dimplay(){ P1=0xf7;P0=Tab[fen%10];dp=0;delay(1);} void main(){ EA = 1;EX0 = 1;IT0 = 1; ET0=1;TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=0;xiao=0;miao=0;fen=0; while(1) { display();delay(1);dimplay();delay(1);dihplay();delay(1); } } void timer0()interrupt 1 { xiao++; if(xiao==10) { xiao=0;miao++; if(miao==59) { miao=0; fen++; if(fen==10) { fen=0; } } } } void ex0_int0()interrupt 0 { swnum++;if(swnum == 1){ TR0= 1;} if(swnum == 2){ TR0 = 0;} if(swnum == 3){ xiao = 0; miao = 0; fen = 0; swnum=0;} } 四川電子機(jī)械職業(yè)技術(shù)學(xué)院 原理圖 實(shí)訓(xùn)總結(jié): 通過今次單片機(jī)實(shí)訓(xùn),使我對(duì)單片機(jī)的認(rèn)識(shí)有了更深刻的理解。系統(tǒng)以51單片機(jī)為核心部件,利用C語言編程,通過對(duì)led燈控制到用數(shù)碼管實(shí)現(xiàn)秒表功能、中斷控制功能,能實(shí)現(xiàn)本設(shè)計(jì)題目的基本要求和發(fā)揮部分。由于時(shí)間有限和本身知識(shí)水平的限制,本系統(tǒng)還存在一些不夠完善的地方,要作為實(shí)際應(yīng)用還有一些具體細(xì)節(jié)問題需要解決。 踉踉蹌蹌地忙碌了一周,我的程序終于編譯成功。當(dāng)看著自己的程序,自己成天相伴的系統(tǒng)能夠健康的運(yùn)行,真是莫大的幸福和欣慰。我相信其中的酸甜苦辣最終都會(huì)化為甜美的甘泉。 但在這次實(shí)訓(xùn)中同時(shí)使我對(duì)C語言有了更深的認(rèn)識(shí)。當(dāng)我第一次接觸C語言就感覺很難,特別是今次實(shí)訓(xùn)要用到C語言,盡管困難重重,可我們還是克服了。這次的實(shí)訓(xùn)使培養(yǎng)了我們嚴(yán)肅認(rèn)真的做事作風(fēng),增強(qiáng)了我們之間的團(tuán)隊(duì)合作能力,使我們認(rèn)識(shí)到了團(tuán)隊(duì)合作精神的重要性。 這次實(shí)訓(xùn)的經(jīng)歷也會(huì)使我終身受益,我感受到這次實(shí)訓(xùn)是要真真正正用心去做的一件事情,是真正的自己學(xué)習(xí)的過程和研究的過程,沒有學(xué)習(xí)就不可能有研究的能力,沒有自己的研究,就不會(huì)有所突破。希望這次的經(jīng)歷能讓我在以后學(xué)習(xí)中激勵(lì)我繼續(xù)進(jìn)步。 單片機(jī)原理及應(yīng)用 實(shí)訓(xùn)報(bào)告 班級(jí): 學(xué)號(hào): 姓名: 指導(dǎo)教師: 實(shí)訓(xùn)總成績: 一、節(jié)日彩燈設(shè)計(jì) 題目:8位邏輯電平模塊上的LED小燈從左向右呈現(xiàn)“鞭甩”的實(shí)驗(yàn)現(xiàn)象,狀態(tài)間隔為0.25秒;按鍵1開始,按鍵2結(jié)束。 原理圖 程序代碼: #include 單片機(jī)原理及應(yīng)用實(shí)訓(xùn)報(bào)告 管及驅(qū)動(dòng)電路的連接,從而構(gòu)成一個(gè)完整的硬件電路。然后通過對(duì)單片機(jī)的ROM進(jìn)行編程,實(shí)現(xiàn)對(duì)彩燈閃爍的控制。 二、定時(shí)器實(shí)現(xiàn)流水燈 題目:利用定時(shí)器/計(jì)數(shù)器T0產(chǎn)生2秒鐘的定時(shí),每當(dāng)2秒定時(shí)到來時(shí),更換指示燈點(diǎn)亮,依次循環(huán)點(diǎn)亮。 原理圖 程序代碼 #include 50000)% 256;TH0 =(65536 單片機(jī)原理及應(yīng)用實(shí)訓(xùn)報(bào)告 程序代碼 #include 單片機(jī)原理及應(yīng)用實(shí)訓(xùn)報(bào)告 實(shí)訓(xùn)總結(jié) 通過本次單片機(jī)實(shí)訓(xùn)使得我更深層次的學(xué)習(xí)單片機(jī)原理與應(yīng)用技術(shù)這門專業(yè)課程,同時(shí)對(duì)KEIL軟件進(jìn)行復(fù)習(xí)。這次實(shí)訓(xùn)是我看到了我最薄弱的一點(diǎn)那就是編程,對(duì)于編程有很大的困難。對(duì)以往學(xué)習(xí)過的編程知識(shí)沒有好好掌握,特別是編程這方便的知識(shí)很薄弱。學(xué)習(xí)過的知識(shí)在實(shí)際應(yīng)用中仿佛是冰山一角,完全不夠用,需要通過查閱很多資料才能解決到碰到的相關(guān)問題。而且實(shí)訓(xùn)中出現(xiàn)的問題都是實(shí)際應(yīng)用出比較典型的問題。這次實(shí)訓(xùn)還讓我深刻的體會(huì)了結(jié)構(gòu)化程序設(shè)計(jì)的優(yōu)勢(shì),讓我懂得當(dāng)我們要進(jìn)行一個(gè)復(fù)雜的程序設(shè)計(jì)時(shí)應(yīng)該先將其分解為多個(gè)不同的功能模塊再分別編程實(shí)現(xiàn),這樣做不僅降低了編程的難度,也容易讓編程者思路更加清晰,避免出現(xiàn)不必要的錯(cuò)誤。在做仿真時(shí),仿真圖正確也不一定就是說明一定正確。 目錄 一 方案設(shè)計(jì)說明:............................................................................................2 二 硬件設(shè)計(jì)說明:............................................................................................4 (一)電路圖:..........................................................................................4(二)單片機(jī)AT89S51的I/O口分配使用情況........................................4 (三)元器件的參數(shù)及規(guī)格:....................................................................5 三 軟件設(shè)計(jì)說明:............................................................................................6 (一)軟件設(shè)計(jì)思路及流程圖:................................................................6 (二)程序的總體框架結(jié)構(gòu)說明:............................................................8 (三)重要程序段的功能,作用及思路簡介:........................................8 四 制作調(diào)試說明:..........................................................................................13 (一)程序調(diào)試過程:..............................................................................13 (二)硬件調(diào)試:......................................................................................13 五 電路實(shí)拍:.....................................................................................................14 六 總結(jié)心得體會(huì):..........................................................................................15 七 參考文獻(xiàn):.....................................................................................................16 一 方案設(shè)計(jì)說明: 設(shè)計(jì)方案之前,得先分解設(shè)計(jì)任務(wù)。本次的設(shè)計(jì)任務(wù)是籃球記分牌,據(jù)常識(shí),籃球記分牌應(yīng)有分別給兩隊(duì)加分,減分,能交換顯示分?jǐn)?shù)。在進(jìn)行設(shè)計(jì)之前,應(yīng)自己提出幾個(gè)問題,待問題回答之后。基本功、的設(shè)計(jì)方案就出來了。在設(shè)計(jì)之前我提出了一下幾個(gè)問題: a:硬件部分如何控制給A對(duì)B對(duì)加分,場(chǎng)地交換的時(shí)候又是如何實(shí)現(xiàn)分?jǐn)?shù)顯示交換的?應(yīng)該如何連接硬件,在硬件上設(shè)置控制端,控制端與單片機(jī)各引腳之間的連。 b:單片機(jī)只有一個(gè)CPU,如何實(shí)現(xiàn)即要掃描按鍵,又要顯示比分。數(shù)碼管工作的本質(zhì)是將要顯示的數(shù)據(jù)的字型碼送給他,如何采集到變化的分?jǐn)?shù)送給數(shù)碼管。用查表嗎? c:加分與倒計(jì)時(shí)在程序中最本質(zhì)的東西是什么,如何用程序來說明這樣的事件,各事件之間又是如何聯(lián)系的。 雖然這些問題看似很普通,似乎在設(shè)計(jì)過程中都要面對(duì)這樣的問題,何不事先就解決這些問題呢,在逐一回答這些問題的同時(shí),該任務(wù)的設(shè)計(jì)方案已見雛形。以下就是該方案的詳細(xì)內(nèi)容以及我問題的答案。 系統(tǒng)原理圖如下圖一所示: LED數(shù)碼顯示管外部按鍵AT89S51驅(qū)動(dòng)電路 3 二 硬件設(shè)計(jì)說明: (一)電路圖: (二)單片機(jī)AT89S51的I/O口分配使用情況 圖中P3.0,P3.1,P3.2,P3.3分別是加一分、加兩分、加三分、減一分。P3.4與P3.5口是外部中斷,其中斷服務(wù)程序的功能是實(shí)現(xiàn)比分交換的切換顯示和加分減分切換。電路中選擇共陽極的數(shù)碼管,可以省去輸入端的驅(qū)動(dòng)電路,使電路更簡潔。P0口作為字形碼的輸出口,與數(shù)碼管的八只管教相連。 (三)元器件的參數(shù)及規(guī)格: 主要元器件有單片機(jī)芯片AT89S51,共陽極數(shù)碼管,9012PNP三極管。其中單片機(jī)承載程序,實(shí)現(xiàn)電路功能,三極管起開關(guān)及驅(qū)動(dòng)數(shù)碼管顯示作用。數(shù)碼管顯示比分。 三 軟件設(shè)計(jì)說明: 程序的總體思路是主程序一直在掃描按鍵,比分顯示,比分交換,加減分隊(duì)伍切換都在中斷服務(wù)程序中完成。其具體內(nèi)容如下所示。 (一)軟件設(shè)計(jì)思路及流程圖: 中斷程序流程圖(如:圖一) 程序初始化,給存儲(chǔ)器賦初值按鍵掃描程序,掃描到由按鍵控制的中斷就執(zhí)行其對(duì)應(yīng)程序外部中斷1,加減外部中斷0,A、B分隊(duì)伍切換中斷程序兩隊(duì)比分切換圖一 按鍵掃描程序流程圖(如:圖二)按鍵掃描入口,檢測(cè)軟件標(biāo)志位F0,為1調(diào)用分?jǐn)?shù)顯示程序程序,為0調(diào)用加減分切換程序,同時(shí)掃描按鍵是掃描P3.0,并去抖,是否有鍵按下加一分否是掃描P3.1,并去抖,是否有鍵按下加兩分否是掃描P3.2,并去抖,是否有鍵按下加三分否是掃描P3.3,并去抖,是否有按鍵按下減一分否按鍵掃描程序結(jié)束圖二 分?jǐn)?shù)顯示程序流程圖(如:圖三) 將A對(duì)B對(duì)的分?jǐn)?shù)首先進(jìn)行BCD碼轉(zhuǎn)換,再保存到相對(duì)應(yīng)的寄存器中把各分?jǐn)?shù)分別賦給寄存器A,查表送往要顯示的數(shù)碼管由P2口的位狀態(tài)控制子程序調(diào)用結(jié)束,返回主程序,RET 圖三 其中時(shí)間顯示的子程序流程圖與分?jǐn)?shù)的大同小異,此處就不再一一列出。 (二)程序的總體框架結(jié)構(gòu)說明: 程序包含按鍵掃描程序,不斷地掃描按鍵,一旦有控制中斷的按鍵按下,就執(zhí)行中斷程序,交換比分。中斷服務(wù)程序,INT_0交換A對(duì)與B對(duì)的總分,INT_1改變軟件標(biāo)志位就可以切換加減分隊(duì)伍,同時(shí)掃描按鍵。 (三)重要程序段的功能,作用及思路簡介: 按鍵掃描程序是本程序中最重要的程序段,其連接了所有的子程序,子程序的調(diào)用都是在其中完成。下面就對(duì)該程序段的功能,作用及編寫思路做詳細(xì)說明。各部分關(guān)鍵程序 按鍵控制程序 org 0060h ajcx: jnb p3.0,s0 jnb p3.1,s1 jnb p3.2,s2 jnb p3.3,s3 jnb p3.4,s4 jnb p3.5,sz5 ljmp ajcx sz5: ljmp s5 s0: lcall del jb p3.0,s01 ljmp ajcx s01: jnb p1.0,s02 mov a,30h inc a mov 30h,a ljmp tzcx s02: mov a,31h inc a mov 31h,a ljmp tzcx s1: lcall del jb p3.1,s11 ljmp ajcx s11: jnb p1.0,s12 mov a,30h add a,#02h mov 30h,a ljmp tzcx s12: mov a,31h add a,#02h mov 31h,a ljmp tzcx s2: lcall del jb p3.2,s21 ljmp ajcx s21: jnb p1.0,s22 mov a,30h add a,#03h mov 30h,a ljmp tzcx s22: mov a,31h add a,#03h mov 31h,a ljmp tzcx s3: lcall del jb p3.3,s31 ljmp ajcx s31: jnb p1.0,s32 mov a,30h dec a mov 30h,a ljmp tzcx s32: mov a,31h dec a mov 31h,a ljmp tzcx s4: lcall del jb p3.4,s41 ljmp ajcx s41: push 30h push 31h pop 30h pop 31h lcall jscx ljmp ajcx s5: lcall del jb p3.5,s51 ljmp ajcx s51: cpl p1.0 cpl p1.1 ljmp ajcx 加分程序: org 0120h tzcx: lcall jscx ljmp ajcx org 0130h del: mov tl1,#00h mov th1,#0bh setb tr1 jnb tf1,$ mov tl1,#00h mov th1,#0bh clr tf1 ret 加減分隊(duì)伍切換程序: org 0150h dscx: mov th0,#0fch mov tl0,#18h mov a,r2 rl a mov r2,a cjne r2,#11h,d1 mov r1,#32h lcall jscx reti d1: cjne r2,#22h,d2 mov r1,#33h lcall jscx reti d2: cjne r2,#44h,d3 mov r1,#34h lcall jscx reti d3: mov r1,#35h lcall jscx reti 比分切換程序: org 0190h jscx: mov a,30h mov b,#0ah div ab mov 33h,b mov 32h,a mov a,31h mov b,#0ah div ab mov 35h,b mov 34h,a mov p2,r2 mov dptr,#tab mov a,@r1 movc a,@a+dptr mov p0,a ret org 0220h tab: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h db 80h,90h end 12 四 制作調(diào)試說明: (一)程序調(diào)試過程: 程序調(diào)試我花了兩天的時(shí)間,此程序雖然不復(fù)雜,由于我平時(shí)學(xué)習(xí)的不夠深入,也沒用心學(xué)。對(duì)于我這樣的基礎(chǔ)來說調(diào)試過程真的很痛苦。剛開始調(diào)試時(shí)程序有兩處讓我感覺很亂,按鍵掃描程序中的中斷程序如何調(diào)用。當(dāng)寄存A對(duì)或B對(duì)的分?jǐn)?shù)累加到99的時(shí)候,就清零,但還沒有累加到99的時(shí)候,程序應(yīng)該跳往何處執(zhí)行,我最初的是跳了繼續(xù)累加。在仿真中的現(xiàn)象就是分?jǐn)?shù)一直顯示99,加不了。我真的是太大意了,調(diào)試的時(shí)候不踏實(shí)。 (二)硬件調(diào)試: 此次的硬件焊接很成功,電路布局很清晰,雖然在調(diào)試時(shí)也發(fā)現(xiàn)錯(cuò)誤,但用萬用表很容易就檢測(cè)出來了,其中有幾根線的皮包線熔了,肉眼看不到。重新整理電路后,功能明顯成功。至此,本次的單片機(jī)課程設(shè)計(jì)圓滿結(jié)束。 五 電路實(shí)拍: 電路板正面: 電路板背面: 六 總結(jié)心得體會(huì): 通過這一次的單片機(jī)實(shí)訓(xùn),讓我對(duì)單片機(jī)這一門知識(shí)有了更深的認(rèn)識(shí),更鍛煉了我獨(dú)立解決問題獨(dú)立思考的能力,在電路設(shè)計(jì)和程序設(shè)計(jì)的過程中我們遇到了很多問題和困難,但通過大家的討論和老師的指點(diǎn)之后,一切的問題都一一被解決,但單片機(jī)的學(xué)習(xí)并不是那么的簡單,在最后也是最關(guān)鍵的程序調(diào)試的過程中,我們又遇到了很多更難的更棘手的問題,電路焊接完好也會(huì)出現(xiàn)諸多類似于不實(shí)現(xiàn)功能或是出現(xiàn)混亂顯示的情況,真的很讓人頭疼,但,大家都還是咬牙堅(jiān)持了下來,最后很多電路雖然依舊還是沒能實(shí)現(xiàn)功能,但我們努力頑強(qiáng)克服重重困難的精神,是大家有目共睹的,就算是失敗了,也依舊是很值得的一次經(jīng)歷.,與此同時(shí),也有很多同學(xué)試驗(yàn)成功,看著大家臉上洋溢的笑容,大家無論失敗成功都從這次的實(shí)訓(xùn)中學(xué)到了很多很多的東西 七 參考文獻(xiàn): 胡健 主編 《單片機(jī)原理及接口技術(shù)》 張大明 主編 《單片機(jī)控制實(shí)訓(xùn)指導(dǎo)及綜合應(yīng)用實(shí)例》李勛、林廣艷《單片機(jī)微型計(jì)算機(jī)大學(xué)讀本》 機(jī)械工程出版社 機(jī)械工業(yè)出版社 北京航空航天大學(xué)出版社16第四篇:單片機(jī)實(shí)訓(xùn)報(bào)告
第五篇:單片機(jī)實(shí)訓(xùn)報(bào)告