久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

單片機實驗五 按鍵及七段數(shù)碼管實驗

時間:2019-05-14 17:36:53下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《單片機實驗五 按鍵及七段數(shù)碼管實驗》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《單片機實驗五 按鍵及七段數(shù)碼管實驗》。

第一篇:單片機實驗五 按鍵及七段數(shù)碼管實驗

實驗五 按鍵及七段數(shù)碼管實驗

一、實驗?zāi)康?、熟悉keil軟件;

2、掌握矩陣式按鍵的原理;

3、掌握七段數(shù)碼管顯示的原理;

4、掌握STC單片機的按鍵及數(shù)碼管程序編寫及下載;

二、實驗要求

1、編寫矩陣式按鍵的讀取程序、七段數(shù)碼管的動態(tài)顯示程序,并將程序結(jié)合在一起,產(chǎn)生某一按鍵按下,顯示對應(yīng)鍵值的程序。

2、編寫串行通信的發(fā)送及接收程序,實現(xiàn)串行口跟PC及的通信,并在PC機上用串口調(diào)試工具觀察實驗結(jié)果;

3、利用keil軟件調(diào)試程序,并產(chǎn)生.hex文件;

4、將.hex文件利用STC單片機下載工具下載到單片機最小系統(tǒng)中,并觀察LED燈的顯示狀態(tài);

5、提交實驗報告,報告包含程序及LED的顯示結(jié)果。

三、實驗內(nèi)容

1、打開keil軟件,熟悉軟件的菜單、工作界面及工具。然后按照keil的編程步驟編寫程序(創(chuàng)建工程----選擇單片機AT89C51----新建源文件----保存為C程序----編寫完整的C51程序----將文件添加到工程----編譯并修改錯誤----連接產(chǎn)生.hex文件)。

2、打開STC下載軟件,將keil生成的.hex文件打開,下載到最小系統(tǒng)板,測試程序并觀察實驗結(jié)果。

3、按鍵及七段LED的程序,實現(xiàn)更多的LED與按鍵結(jié)合的效果。

四、實驗說明

1、程序中使用的按鍵及LED燈的IO端口要與自己的單片機最小系統(tǒng)板對應(yīng);

2、按鍵程序注意抗消抖;

3、思考計算器程序如何實現(xiàn);

第二篇:單片機數(shù)碼管顯示實驗

實驗一

數(shù)碼管實驗

一、實驗?zāi)康?/p>

1.了解數(shù)碼管的顯示原理;2.掌握J(rèn)XARM9-2440 中數(shù)碼管顯示編程方法

二、實驗儀器

JXARM9-2440教學(xué)實驗箱、ADT1000仿真器和ADT IDE集成開發(fā)環(huán)境、串口連接線、PC機。

三、實驗原理

7段LED由7個發(fā)光二極管按“日”字形排列,所有發(fā)光二極管的陽極連在一起稱共陽極接法,陰極連在一起稱為共陰極接法。

LED顯示器的接口一般有靜態(tài)顯示與動態(tài)顯示接口兩種方式。

本實驗中采用的是動態(tài)顯示接口,其中數(shù)碼管掃描控制地址為0x20007000,位0-位5每位分別對應(yīng)一個數(shù)碼管,將其中某位清0 來選擇相應(yīng)的數(shù)碼管,地址0x20006000 為數(shù)碼管的數(shù)據(jù)寄存器。數(shù)碼管采用共陽方式,向該地址寫一個數(shù)據(jù)就可以控制LED 的顯示,數(shù)據(jù)中的1對應(yīng)的不亮,0對應(yīng)的亮,數(shù)碼管各位從高到低排列為dp-g-f-e-d-c-b-a,例如當(dāng)數(shù)據(jù)寄存器是11111111時則不亮,當(dāng)是01111111時則顯示8,其原理圖如圖所示。

四、實驗內(nèi)容

1、編程實現(xiàn):六個數(shù)碼管同時正向顯示0-F,然后反向顯示F-0。

2、編程實現(xiàn):在六個數(shù)碼管上依次顯示與自己姓名有關(guān)的內(nèi)容,可分辨出輪流顯示。

3、編程實現(xiàn):在六個數(shù)碼管上依次顯示與自己姓名有關(guān)的內(nèi)容,分辨不出輪流顯示。

4*、編程實現(xiàn):在每個數(shù)碼管上遞增顯示0—9。5*、自行開發(fā)。

五、實驗程序

1, /****************************************************************************/ /*文件名稱: LEDSEG7.C

*/ /*實驗現(xiàn)象: 數(shù)碼管依次顯示出0、1,2、??

9、a、b、C、d、E、F

*/ /****************************************************************************/ #define U8 unsigned char unsigned char seg7table[16] = {

/* 0

7*/

0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,/* 8

A

B

C

D

E

F*/

0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e, };void Delay(int time);/****************************************************************************/ /* 函數(shù)說明: JXARM9-2410 7段構(gòu)共陽數(shù)碼管測試

*/ /* 功能描述: 依次在7段數(shù)碼管上顯示0123456789ABCDEF

*/ /* 返回代碼: 無

*/ /* 參數(shù)說明: 無

*/ /****************************************************************************/ void Test_Seg7(void){

int i;

*((U8*)0x20007000)=0x00;/*6個數(shù)碼管都亮*/ for(;;){

/*數(shù)碼管從0到F依次將字符顯示出來*/

for(i=0;i<0x10;i++)

{

*((U8*)0x20006000)=seg7table[i];

Delay(10000);

}

/*數(shù)碼管從F到0依次將字符顯示出來*/

for(i=0x0f;i>0x00;i--)

{

*((U8*)0x20006000)=seg7table[i];

Delay(10000);

} }

// TODO } /****************************************************************************/

/* Function name : 循環(huán)延時子程序

*/ /* Description : 循環(huán) 'time' 次

*/ /* Return type :void

*/ /* Argument

: 循環(huán)延時計數(shù)器

*/ /****************************************************************************/ void Delay(int time){

int i;int delayLoopCount=10000;

for(;time>0;time--);

for(i=0;i

2, /****************************************************************************/ /*文件名稱: LEDSEG7.C

*/ /*實驗現(xiàn)象: 數(shù)碼管依次顯示ZHAngg,并能看出輪流顯示

*/ /****************************************************************************/ #define U8 unsigned char unsigned char seg7table[16] = {

/* Z

H

A

n

g

g

7*/

0xa4,0x89,0x88,0xc8,0x90,0x90,0x82,0xf8,/* 8

A

B

C

D

E

F*/

0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,/* H

I

N*/

0x89,0xcf,0x48 };void Delay(int time);/****************************************************************************/ /* 函數(shù)說明: JXARM9-2410 7段構(gòu)共陽數(shù)碼管測試

*/ /* 功能描述: 在六個數(shù)碼管上分別顯示字母,與姓名有關(guān)

*/ /* 返回代碼: 無

*/ /* 參數(shù)說明: 無

*/ /****************************************************************************/ void Test_Seg7(void){

int i;

*((U8*)0x20007000)=0x00;

for(;;)

{

*((U8*)0x20007000)=0x1f;

*((U8*)0x20006000)=seg7table[0];

Delay(10000);

*((U8*)0x20007000)=0x2f;

*((U8*)0x20006000)=seg7table[1];

Delay(10000);

*((U8*)0x20007000)=0x37;

*((U8*)0x20006000)=seg7table[2];

Delay(10000);

*((U8*)0x20007000)=0x3b;

*((U8*)0x20006000)=seg7table[3];

Delay(10000);

*((U8*)0x20007000)=0x3d;

*((U8*)0x20006000)=seg7table[4];

Delay(10000);

*((U8*)0x20007000)=0x3e;

*((U8*)0x20006000)=seg7table[5];

Delay(10000);} // TODO } /***************************************************************************/ /* Function name : 循環(huán)延時子程序

*/ /* Description : 循環(huán) 'time' 次

*/ /* Return type :void

*/ /* Argument

: 循環(huán)延時計數(shù)器

*/ /****************************************************************************/ void Delay(int time){

int i;int delayLoopCount=10000;

for(;time>0;time--);

for(i=0;i

3, /****************************************************************************/ /*文件名稱: LEDSEG7.C

*/ /*實驗現(xiàn)象: 數(shù)碼管依次顯示出ZHAngg,并看不出輪流顯示

*/ /****************************************************************************/ #define U8 unsigned char unsigned char seg7table[16] = {

/* Z

H

A

n

g

g

7*/

0xa4,0x89,0x88,0xc8,0x90,0x90,0x82,0xf8,/* 8

A

B

C

D

E

F*/

0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,/* H

I

N*/

0x89,0xcf,0x48 };void Delay(int time);/****************************************************************************/ /* 函數(shù)說明: JXARM9-2410 7段構(gòu)共陽數(shù)碼管測試

*/ /* 功能描述: 在六個數(shù)碼管上分別顯示字母,與姓名有關(guān)

*/ /* 返回代碼: 無

*/ /* 參數(shù)說明: 無

*/ /****************************************************************************/ void Test_Seg7(void){

int i;

*((U8*)0x20007000)=0x00;

for(;;)

{

*((U8*)0x20007000)=0x1f;

*((U8*)0x20006000)=seg7table[0];

Delay(10000);

*((U8*)0x20007000)=0x2f;

*((U8*)0x20006000)=seg7table[1];

Delay(10000);

*((U8*)0x20007000)=0x37;

*((U8*)0x20006000)=seg7table[2];

Delay(10000);

*((U8*)0x20007000)=0x3b;

*((U8*)0x20006000)=seg7table[3];

Delay(10000);

*((U8*)0x20007000)=0x3d;

*((U8*)0x20006000)=seg7table[4];

Delay(10000);

*((U8*)0x20007000)=0x3e;

*((U8*)0x20006000)=seg7table[5];

Delay(1);} // TODO } /***************************************************************************/ /* Function name : 循環(huán)延時子程序

*/

/* Description : 循環(huán) 'time' 次

*/ /* Return type :void

*/ /* Argument

: 循環(huán)延時計數(shù)器

*/ /****************************************************************************/ void Delay(int time){

int i;int delayLoopCount=10000;

for(;time>0;time--);

for(i=0;i

4, /****************************************************************************/ /*文件名稱: LEDSEG7.C

*/ /*實驗現(xiàn)象: 數(shù)碼管依次顯示出0、1,2、??

9、a、b、C、d、E、F

*/ /****************************************************************************/ #define U8 unsigned char unsigned char seg7table[16] = {

/* 0

7*/

0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,/* 8

A

B

C

D

E

F*/

0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e, };void Delay(int time);/****************************************************************************/ /* 函數(shù)說明: JXARM9-2410 7段構(gòu)共陽數(shù)碼管測試

*/ /* 功能描述: 依次在7段數(shù)碼管各自遞增顯示0—9

*/ /* 返回代碼: 無

*/ /* 參數(shù)說明: 無

*/ /****************************************************************************/ void Test_Seg7(void){

int i;for(;;){

for(i=0;i<=0x09;i++)

{

*((U8*)0x20007000)=0x1f;

*((U8*)0x20006000)=seg7table[i];

Delay(10000);

}

for(i=0;i<=0x09;i++)

{

*((U8*)0x20007000)=0x2f;

*((U8*)0x20006000)=seg7table[i];

Delay(10000);

}

for(i=0;i<=0x09;i++)

{

*((U8*)0x20007000)=0x37;

*((U8*)0x20006000)=seg7table[i];

Delay(10000);

}

for(i=0;i<=0x09;i++)

{

*((U8*)0x20007000)=0x3b;

*((U8*)0x20006000)=seg7table[i];

Delay(10000);

}

for(i=0;i<=0x09;i++)

{

*((U8*)0x20007000)=0x3d;

*((U8*)0x20006000)=seg7table[i];

Delay(10000);

}

} // TODO } /****************************************************************************/ /* Function name : 循環(huán)延時子程序

*/ /* Description : 循環(huán) 'time' 次

*/ /* Return type :void

*/ /* Argument

: 循環(huán)延時計數(shù)器

*/ /****************************************************************************/ void Delay(int time){

int i;int delayLoopCount=10000;

for(;time>0;time--);

for(i=0;i

六、實驗結(jié)果與分析

實驗一結(jié)果:六個數(shù)碼管同時顯示相同的符號,從0-F再由F-0之間的循環(huán)變換。

分析:在數(shù)碼管掃描控制地址處選中六個數(shù)碼管,使其同時亮,在給其數(shù)碼管的數(shù)據(jù)寄存器存入不同符號對應(yīng)的數(shù)值,加上相應(yīng)的延遲,就

可以是輪流變換的循環(huán)的符號變換。

實驗二結(jié)果:第一個數(shù)碼管顯示Z后,第二個顯示H,接著第三個顯示A,接著第四個顯示n,接著第五個顯示g,接著第六個顯示g,接著第一個再顯示Z…..如此循環(huán)。

分析:設(shè)置控制地址使其單獨并且循環(huán)顯示,每個數(shù)碼管的數(shù)據(jù)寄存器送入不同的符號的數(shù)值,并設(shè)置較大的延遲時間即可產(chǎn)生該現(xiàn)象。

實驗三結(jié)果:六個數(shù)碼管一起顯示“ZHAngg”。

分析:原理同實驗二,只是將延遲時間改小到人眼無法分辨的地步即使一起顯示。

實驗四結(jié)果:第一個數(shù)碼管顯示0—9之后,第二個接著顯示0—9,接著第三個,第四個….分析:設(shè)置循環(huán)使六個數(shù)碼管循環(huán)單獨顯示,在每個數(shù)碼管顯示中再加入循環(huán),使其遞增顯示0—9,設(shè)置較大的延遲,是我們可以看清實驗現(xiàn)象。

七、實驗總結(jié)與心得體會

本次試驗需要了解數(shù)碼管的基本工作原理,基于C語言設(shè)計編程完成實驗,實驗的關(guān)鍵在于把握實現(xiàn)各種現(xiàn)象的本質(zhì)上的差異,在程序上作出修改。通過本次試驗對于實驗的嚴(yán)謹(jǐn)性有了進一步的體驗,稍有不小心實驗結(jié)果就適得其反,以后要更加用心,更加認(rèn)真的做實驗。

第三篇:實驗五___七段數(shù)碼管動態(tài)顯示實驗_xs

實驗五 七段數(shù)碼管動態(tài)顯示實驗

一、實驗?zāi)康?/p>

掌握數(shù)碼管動態(tài)顯示數(shù)字的原理

二、實驗內(nèi)容

動態(tài)顯示:按圖5-2連接好電路,七段數(shù)碼管段碼連接不變,位碼驅(qū)動輸入端S1,S0接8255 C口的PC1,PC0。編程在十位和個位兩個數(shù)碼管上顯示“56”。

三、編程提示

實驗臺上的七段數(shù)碼管為共陰型,段碼采用同相驅(qū)動,輸入端加高電平,選中的數(shù)碼管亮,位碼加反相驅(qū)動器,位碼輸入端高電平選中。

. 看清實驗?zāi)康暮鸵?2. 注意實驗步驟

3. 連接實驗線路時請注意開關(guān)的位置

4. 根據(jù)原理框圖編寫程序,保存為學(xué)號名+SY2 例:1928101sy5 5. 記錄下實驗中遇到的問題,實驗的實際意義

6. 準(zhǔn)備實驗報告的數(shù)據(jù)

如何解決的,搞懂

實驗六 競賽搶答器

一、實驗?zāi)康?/p>

1、了解微機化競賽搶答器的基本原理。

2、進一步學(xué)習(xí)使用并行接口。

二、實驗內(nèi)容

圖7-1為競賽搶答器(模擬)的原理圖,邏輯開關(guān)K0~K7代表競賽搶答按鈕0~7號,當(dāng)某個邏輯電平開關(guān)置“1”時,相當(dāng)某組搶答按鈕按下。在七段數(shù)碼管上將其組號(0~7)顯示出來,并使微機揚聲器響一下。

三、編程提示

設(shè)置8255為C口輸入、A口輸出,讀取C口數(shù)據(jù),若為0表示無人搶答,若不為0則有人搶答。根據(jù)讀取數(shù)據(jù)可判斷其組號。從鍵盤上按空格鍵開始下一輪搶答,按其它鍵程序退出。

附加試驗: 可編程定時器/計數(shù)器(8253)

一、實驗?zāi)康模?掌握8253的基本工作原理和編程方法。

二、實驗內(nèi)容

按圖3-2連接電路,將計數(shù)器0、計數(shù)器1分別設(shè)置為方式3,計數(shù)初值設(shè)為1000,用邏輯筆觀察OUT1輸出電平的變化(頻率1HZ)。用示波器觀察OUT0,OUT1輸出電平的變化和波形。同時用七段數(shù)碼管段碼顯示出來

三、編程提示 8253控制寄存器地址283H 計數(shù)器0地址280H 計數(shù)器1地址281H CLK0連接時鐘 1MHZ

請各位同學(xué)在上機實驗前編好程序,要檢查!

實驗時間

周四

計科83班:8:00-9:30 網(wǎng)工 82:9:40-11:10 網(wǎng)工 81:12:30-14:00 計科81班:14:00-15:30 計科82班:15:30-17:00 實驗地點:教學(xué)樓B610 1.到5樓計算中心值班室請值班老師開門 2.這周日上午為自由實驗時間,愿意去的同學(xué)請先向各班長或課代表報名

第四篇:實驗四 單片機鍵盤輸入以及數(shù)碼管顯示編程

仲愷農(nóng)業(yè)工程學(xué)院實驗報告紙

信息學(xué)院(院、系)專業(yè)班組單片機原理及接口技術(shù)課實驗四單片機鍵盤輸入以及數(shù)碼管顯示編程

一、實驗?zāi)康?、掌握單片機鍵盤以及數(shù)碼管顯示的工作原理;

2、掌握單片機鍵盤以及數(shù)碼管顯示的編程方法。

二、實驗內(nèi)容

1、學(xué)習(xí)單片機鍵盤檢測、消抖以及譯碼等;

2、學(xué)習(xí)單片機數(shù)碼管靜態(tài)以及動態(tài)的顯示方式;

3、利用單片機鍵盤以及數(shù)碼管編寫程序驅(qū)動開發(fā)板上的蜂鳴器以及數(shù)碼管按一定規(guī)律工作。

三、實驗設(shè)備

1、STC單片機開發(fā)板;

2、PC機以及串口線。

四、實驗步驟

參考實驗指導(dǎo)書。

五、實驗總結(jié)

第五篇:單片機實驗

實驗

一、MCS51單片機基本開發(fā)環(huán)境

1. 實驗?zāi)康模?/p>

1)熟悉軟件的集成開發(fā)環(huán)境 2)掌握單片機軟件設(shè)計流程

3)掌握單片機存貯器結(jié)構(gòu)及各窗口之間的聯(lián)系 2. 實驗內(nèi)容:

1)用三種方法實現(xiàn)將累加器A內(nèi)容改為20H

方法1--MOV A,#20H 方法2—MOV R0,#20H MOV A,R0 方法3—MOV R0,#20H XCH A,R0 心得:越往下做實驗時就越感覺這題根本不能說是題目,但不得不說在沒接觸過編程軟件,剛開始學(xué)的匯編,第一次做的實驗就光這道題都覺得不知道做什么.所以凡是總有開始,不了解情況的多簡單的都會覺得難.2)將58H位單元置為1,觀察內(nèi)部RAM中2BH內(nèi)容的變化 代碼:

SETB 2BH.0 JMP $ END 心得:這是關(guān)于內(nèi)部存儲中對單元和字節(jié)了解,不理解很容易做錯.比如開始寫的指令為

MOV R0,#58H;MOV @R0,#1

這是錯誤的指令。這就需要認(rèn)真去了解單片機中的字節(jié)地址與位地址的關(guān)系。80C51中有位尋址區(qū)和字節(jié)尋址區(qū)。題目中58H為位地址,2BH為字節(jié)地址,且58H為2B字節(jié)的最低位。由于58H屬于位尋址區(qū),可用位操作指令 SETB 進行置位,SETB 2BH.0 執(zhí)行后,2BH中內(nèi)容變?yōu)椋埃?/p>

3)如果當(dāng)前狀態(tài)為有進位、工作寄存器使用區(qū)2,請用3種方法設(shè)置這種狀態(tài)

代碼:

ANL PSW,#01H MOV A,PSW

CJNE A,#01,LAB2 LAB1:JMP LAB1

LAB2: SETB PSW.4 MOV P0,#01H MOV R0,#18H CLR PSW.3 MOV C,P0.0 MOV PSW,R0 MOV PSW.4,C CPL C MOV PSW.3,C END

心得:以上LAB2寫了三段代碼,可分別完成題目要求。不過實驗時只是對代碼進行了錯誤調(diào)試,沒有對結(jié)果進行檢驗。其中值得注意的是對于布爾(位)操作指令的用法,比如傳送指令必須經(jīng)累加器C,如第二段中MOV P0,#01H;MOV C,P0.0,以及對于位尋址的方式(如需用到“.”隔開)的應(yīng)用。4)編一個小程序?qū)?nèi)部RAM中的20H單元的內(nèi)容送到21H單元并調(diào)試

代碼:

MOV R0,#20H MOV @R0,#10H MOV R1,#21H MOV @R1,20H JMP $ END

5)用程序?qū)⒍褩V羔樦赶?0H,然后在堆棧中依次壓入01,02,03,04,05五個數(shù),觀察哪些單元內(nèi)容發(fā)生了變化,各變?yōu)槎嗌伲繌哪男┐翱诳梢园l(fā)現(xiàn)這些變化?順序?qū)⒍褩V械奈鍌€數(shù)放入30H~34H五個單元中,編程實現(xiàn)之。

代碼:

MOV R1,#60H MOV SP,R1 MOV DPL,#1H LAB1:PUSH DPL INC DPL MOV A,DPL CJNE A,#6,LAB1 POP 34H POP 33H POP 32H POP 31H POP 30H JMP $ END

6)將外部數(shù)據(jù)存貯器1000H~100FH 16個單元中存放00H~0FH 代碼:

MOV DPTR,#1000H MOV R1,#10H LOOP:MOVX @DPTR,#1234H MOVX A,@DPTR MOV @R1,A INC DPTR INC R1 CJNE R1,#40H,LOOP JMP $ END

心得:此處需要訪問片外存儲空間,需要借助寄存器DPTR,需注意其為16位的寄存器,在使用時若與八位寄存器進行數(shù)據(jù)交換時需分為高八位DPH與低八位DPL來用。7)若要求程序從0010H單元開始運行,可用兩種方法實現(xiàn)?

方法一 ORG 0010H 方法二 AJMP 0010H

3. 選做實驗內(nèi)容:數(shù)據(jù)傳送 目的:

1)掌握8051單片機內(nèi)部數(shù)據(jù)存貯器、外部數(shù)據(jù)存貯器的數(shù)據(jù)傳送特點和應(yīng)用 2)掌握MOV,MOVX和MOVC類指令的用法及區(qū)別 內(nèi)容:

1)將片內(nèi)RAM數(shù)據(jù)區(qū)20H為首地址的十六個字節(jié)傳送到30H為首地址的數(shù)據(jù)區(qū),即:20H~2FH送30H~3FH

代碼: ORG 0000H JMP MAIN ORG 0030H MAIN:MOV R0,#20H MOV R1,#30H LOOP:MOV @R0,#1234H MOVA,@R0 MOV @R1,A INC R0 INC R1 CJNE R1,#30H,LOOP JMP $ END

2)將外部數(shù)據(jù)存儲器2000H~200FH單元的十六個數(shù)傳送至內(nèi)部數(shù)據(jù)存儲器的30H~3FH 代碼: ORG 0000H JMP MAIN ORG 0030H MAIN: MOV DPTR,#2000H MOV R1,#30H LOOP:MOVX @DPTR,#12H MOVX A,@DPTR MOV @R1,A INC DPTR INC R1 CJNE R1,#40H,LOOP JMP $ END

總體心得體會:

第一次做實驗主要是熟悉了解了下單片機編程軟件的使用,開始接觸時在對其軟件不是太了解的情況下實驗編程做的確實很亂,不清楚該怎樣進行,比如不知如何進行對指令的調(diào)試,也不清楚該如何觀察結(jié)果,沒有一個整體的概念,所以在了解其開發(fā)環(huán)境上花了不少時間。經(jīng)過一段時間的摸索后也終于了解了其具體的使用,也能夠順利的對指令的編程運用。運行指令時遇到的一些問題需要注意的也在上面各題中做了說明。還有需要注意的是:進入軟件仿真時需要對存儲空間進行查看的方法是在Address窗口中輸入:d:00h 顯示內(nèi)部數(shù)據(jù)存儲器從00h開始的單元; x:1000h 顯示外部數(shù)據(jù)存儲器從1000h開始的單元; c:0000H 顯示程序存儲器內(nèi)容。還有由于偽指令 END 定義的原因,在程序末需加一條死循環(huán)調(diào)轉(zhuǎn)指令(如 JMP $)使程序不會進入其他未知空間執(zhí)行其他指令。實驗

二、加、減法實驗

1. 實驗?zāi)康?/p>

1)正確使用單片機的加減運算指令

2)掌握不同指令對于程序狀態(tài)字的影響及程序狀態(tài)字的意義、用處 3)掌握ADD,ADDC,SUBB和DA A等指令的用法 4)學(xué)習(xí)模塊化程序設(shè)計方法 2. 實驗內(nèi)容

1)編寫3字節(jié)二進制加法子程序,并用主程序調(diào)用不同的加數(shù)和被加數(shù)來檢測該子程序的正確性。需考慮有進位和無進位情況。程序入口為: 加數(shù):22H,21H,20H三字節(jié),22H為最高位

被加數(shù):32H,31H,30H三字節(jié),32H為最高位

程序出口為: 23H,22H,21H,20H四字節(jié),23H為最高位 例如:地址:23 22 21 20 32 31 30 執(zhí)行前數(shù)據(jù): 01 23 45 FF 01 01 執(zhí)行后數(shù)據(jù):01 00 24 46

代碼:

ORG 0000H AJMP MAIN ORG 30H MAIN: MOV 22H,#01H MOV 21H,#23H MOV 20H,#45H MOV 32H,#0FFH MOV 1H,#01H MOV 30H,#01H ACALL ADDI HERE:JMP HERE ORG 100H ADDI: PUSH PSW MOV R0, #20H;加數(shù)1地址、和的地址 MOV R1, #30H;加數(shù)2地址 CLR C MOV R2, #3;循環(huán)3次 LOOP: MOV A, @R0;取 ADDC A, @R1;加 MOV @R0, A;存 INC R0 INC R1 DJNZ R2, LOOP CLR A ADDC A, #0;得到進位 MOV 23H, A;保存 POP PSW RET END

2)編寫三字節(jié)二進制減法子程序 入口:被減數(shù): 52H,51H,50H, 50H為最低位

減數(shù): 42H,41H,40H, 40H為最低位

出口:差:外部數(shù)據(jù)存貯器2003H~2000H(2000H為最低位)用主程序調(diào)用多組數(shù)據(jù)來調(diào)試,需考慮無借位和有借位兩種情況。例如:

執(zhí)行前:地址: 52 51 50 42 41 40

數(shù)據(jù): 90 80 70 10 10 10

執(zhí)行后:地址: 2003 2002 2001 2000

數(shù)據(jù): 00 80 70 60 代碼:

ORG 0000H AJMP MAIN ORG 30H MAIN: MOV 52H,#90H MOV 51H,#80H MOV 50H,#70H MOV 42H,#10H MOV 41H,#10H MOV 40H,#10H ACALL SUB1 HERE:JMP HERE SUB1: PUSH PSW MOV R0, #50H;被減數(shù)地址 MOV R1, #40H;減數(shù)地址 MOV DPTR, #2000H;差的地址 CLR C MOV R2, #3;循環(huán)3次 LOOP: MOV A, @R0;取 SUBB A, @R1;減 MOVX @DPTR, A;存 INC R0 INC R1 INC DPTR DJNZ R2, LOOP CLR A SUBB A, #0;得到借位 MOVX @DPTR, A;存 POP PSW RET END

3)編寫10位十進制加法子程序(十進制數(shù)采用壓縮BCD碼存放)入口: 加數(shù):24H—20H,低地址放低字節(jié)

被加數(shù):29H—25H,低地址放低字節(jié)

出口 和:4005H—4000H,低地址放低字節(jié)

要求調(diào)用多組數(shù)據(jù)調(diào)試,注意觀察PSW的變化,理解DA A指令的含義。例如:

執(zhí)行前地址:24 23 22 21 20 29 28 27 26 25

數(shù)據(jù):12 34 56 78 90 88 99 33 12 74

執(zhí)行后地址:4005 4004 4003 4002 4001 4000

數(shù)據(jù): 01 01 33 89 91 64

代碼:

ORG 0000H AJMP MAIN ORG 30H MAIN: MOV 24H,#12H MOV 23H,#34H MOV 22H,#56H MOV 21H,#78H MOV 20H,#90H MOV 29H,#88H MOV 28H,#99H MOV 27H,#33H MOV 26H,#12H MOV 5H,#74H ACALL ADD2 HERE:JMP HERE ADD2: PUSH PSW MOV R0, #20H;加數(shù)1地址 MOV R1, #25H;加數(shù)2地址 MOV DPTR,#4000H CLR C MOV R2, #5;循環(huán)5次 LOOP: MOV A, @R0;取 ADDC A, @R1;加

DA A;調(diào)整為BCD碼 MOVX @DPTR, A;存 INC R0 INC R1 INC DPTR DJNZ R2, LOOP POP PSW RET END

下載單片機實驗五 按鍵及七段數(shù)碼管實驗word格式文檔
下載單片機實驗五 按鍵及七段數(shù)碼管實驗.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

相關(guān)范文推薦

    單片機實驗

    實驗一清0、移數(shù) 將片內(nèi)20H~2FH及片外0010H~001FH單元清0; 然后將片內(nèi)30H~3FH的數(shù)據(jù)移到片外0000H~000FH中;判斷: 若(30H)≤10,則求其平方存到31H中,并將位00H置1(其它位清0) 若(30H)=1......

    七段數(shù)碼管顯示十進制數(shù)字 (15)

    實驗報告 實驗題目 設(shè)有10個開關(guān),編號分別為0,1,……,9。 設(shè)計電路實現(xiàn)某開關(guān)閉合時對應(yīng)顯示相應(yīng)的十進制數(shù)字。要求:(1)寫出設(shè)計說明,(2)用 Proteus或Multisim仿真。 實驗方案 首......

    2013單片機實驗教案

    單片機技術(shù)實驗 教 案 馮 杰 1 實驗一 順序結(jié)構(gòu)程序設(shè)計 一、實驗?zāi)康?掌握匯編語言設(shè)計和調(diào)試方法。 二、實驗內(nèi)容 把外部RAM中2000h單元的內(nèi)容拆開,高位送2001h單元,低位......

    單片機實驗 2

    單片微型計算機原理、應(yīng)用及接口技術(shù) 實驗報告 得分: 年級專業(yè): 測控1303班學(xué)生姓名/學(xué)號:崔振振/201323030325 評閱教師: 提交時間:2015—2016學(xué)年第1學(xué)期 單片機實驗1匯編語......

    單片機實驗心得體會

    單片機實驗心得體會 單片機實驗心得體會一:單片機實驗心得體會 時間過得真快,不經(jīng)意間,一個學(xué)期就到了尾聲,進入到如火如荼的期末考試階段。在學(xué)習(xí)單片機這門課程之前,就早早的......

    單片機液晶顯示實驗

    實驗八 單片機液晶顯示實驗 一、實驗?zāi)康?1、了解液晶顯示屏的控制原理及方法。 2、了解點陣漢字的顯示原理。 二、實驗說明 1、 利用實驗上的液晶顯示屏電路,編寫程序控制......

    單片機實驗小結(jié)

    單片機實驗小結(jié) 這學(xué)期的單片機實驗課程已經(jīng)結(jié)束了,雖然做的實驗是比較簡答的,但麻雀雖小五臟俱全,因此自己也通過實驗課學(xué)到了很多知識。 單片機實驗課是為了更好的學(xué)習(xí)單片機......

    單片機實驗總結(jié)

    單片機原理及接口技術(shù)實驗總結(jié) 本學(xué)期的單片機實驗轉(zhuǎn)眼已到尾聲,共做了六項實驗,分別是KEIL4、ISP下載軟件的安裝于使用、P1口輸出循環(huán)燈實驗、P1口轉(zhuǎn)彎燈實驗、P3.3口輸入......

主站蜘蛛池模板: 欧美一区二区三区激情| 国模吧双双大尺度炮交gogo| 国产精品久久国产精麻豆99网站| 蜜桃av色偷偷av老熟女| 奇米777四色影视在线看| 好吊色欧美一区二区三区视频| 日韩人妻一区二区三区蜜桃视频| 夜先锋av资源网站| 不卡无在一区二区三区四区| 午夜福利理论片高清在线| 成人片无码免费播放| 激情av无码后入| 自拍偷自拍亚洲精品被多人伦好爽| 国产精品热久久高潮av袁孑怡| 国产特级毛片aaaaaa高清| 久久99亚洲精品久久久久| 亚洲制服有码在线丝袜| 2018年亚洲欧美在线v| 国产sm调教折磨视频| 免费a级毛片无码无遮挡| 婷婷五月日韩av永久免费| 久久久久久人妻精品一区二区三区| 日韩精品无码人妻一区二区三区| 亚洲国产成在人网站天堂| 国产成人免费ā片在线观看老同学| 猫咪www免费人成人入口| 亚洲国产韩国欧美在线| 日本一区二区三区爆乳| 午夜少妇性影院私人影院在线| 日韩精品中文字幕无码专区| 亚洲精品久久午夜无码一区二区| 麻麻张开腿让我爽了一夜| 巨胸喷奶水www视频网站| 国产成人精品日本亚洲成熟| 国产成人精品精品日本亚洲| 亚洲av男人电影天堂热app| 国产精品无码无片在线观看3d| 狠狠88综合久久久久综合网| 免费男人下部进女人下部视频| 亚洲人成色777777精品音频| 一个人在线观看免费中文www|