《单片机原理与嵌入式设计》实验讲义.docx

上传人:b****5 文档编号:5933403 上传时间:2023-01-02 格式:DOCX 页数:41 大小:138.33KB
下载 相关 举报
《单片机原理与嵌入式设计》实验讲义.docx_第1页
第1页 / 共41页
《单片机原理与嵌入式设计》实验讲义.docx_第2页
第2页 / 共41页
《单片机原理与嵌入式设计》实验讲义.docx_第3页
第3页 / 共41页
《单片机原理与嵌入式设计》实验讲义.docx_第4页
第4页 / 共41页
《单片机原理与嵌入式设计》实验讲义.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

《单片机原理与嵌入式设计》实验讲义.docx

《《单片机原理与嵌入式设计》实验讲义.docx》由会员分享,可在线阅读,更多相关《《单片机原理与嵌入式设计》实验讲义.docx(41页珍藏版)》请在冰豆网上搜索。

《单片机原理与嵌入式设计》实验讲义.docx

《单片机原理与嵌入式设计》实验讲义

 

单片机实验讲义

 

实验一、数据传送类指令

实验目的:

熟悉与认识本学期实验中使用的单片机实验板及单片机仿真器。

实验仪器与设备:

1。

炜煌单片机实验板、连线。

2.伟福单片机仿真器、仿真头。

3电源插排座

实验步骤:

1由指导教师介绍两种仪器的基本情况及使用

2熟悉实验室及实验台的电源及电源线走向。

3检查计算机接线,正常后,开启计算机。

4在c:

\wave\bin\wave下进入伟福软件仿真器界面;

5新建文件

6编辑单片机MCS-51的汇编原程序;

7以扩展名为ASM来保存原程序;

8编译原程序形成目标程序;

9调入目标程序;

10单步执行目标程序

11在内部数据窗口(DATA)、外部数据窗口(XDATA)CPU窗口查看

相应的结果。

12整理实验记录数据。

13请教师检查仪器设备,完好后可关机。

实验电路:

按微型计算机正常使用连接电源线及信号线

只使用伟福软件仿真软件时,可先不接伟福仿真器和炜煌实验板,仅使用微机即可。

1)源程序

ORG2000H

MOVR0,#60H

MOVR1,#61H

MOVA,@R0

MOV70H,A

MOV71H,70H

MOVA,#70H

MOV@R0,A

MOVA,70H

MOVR1,A

MOVA,@R0

MOVR5,A

MOVDPTR,#5000H

MOV40H,R5

MOV50H,@R0

MOV55H,#88H

MOV@R0,40H

MOV@R1,#38H

END

2)源程序

ORG00H

START:

MOVDPTR,#0000H

MOVSP,#80H

MOVR0,#30H

MOVR7,#10H

LOOP:

MOVXA,@DPTR

MOV@R0,A

INCR0

INCDPTR

DJNZR7,LOOP

HERE:

SJMPHERE

END

实训步骤

(1)按照所给存储地址,将机器语言程序存入单片机开发系统。

(2)检查存入的程序是否正确。

(3)分析每条指令的结果。

(4)用单步执行键执行每条指令,并与分析结果相比较,二者一致后,将最后结果填入表中,并注明指令中源操作数的寻址方式。

(5)注意:

以.ASM为扩展名保存文件。

在单步运行前一定要在外部寄存器既DATA、XDATA、CPU的相应的单元地址内预先键入数据。

提示:

上机前,应熟悉指令的格式,要求看到指令助记符就能说出指令的功能。

1)弄清汇编语言指令与机器语言指令的关系。

2)牢固掌握MCS-51单片机内部寄存器和存储器结构。

实验二、加法及十进制调整、乘法和除法指令

1)源程序

ORG2000H

MOV20H,#11H

MOVR0,#0ABH

MOVR0,A

ADDA,R0

ADDA,20H

ADDA,#0CDH

ADDCA,R0

ADDCA,20H

INCR0

INCR0

INCA

ADDCA,@R0

INC20H

INC@R0

ADDCA,#0B2H

ADDA,@R0

MOVDPTR,#4000H

INCDPTR

MOVX@DPTR,A

END

2)源程序

ORG2000H

MOVA,#75H

ADDA,#99H

DAA

MOVR0,#70H

ADDCA,R0

DAA

ADDA,#99H

DAA

END

(1)检查存入的程序是否正确。

(2)分析每条指令的结果。

思考与讨论

  如何实现BCD码减2或减3的操作?

写出指令段并上机调试。

实验三、逻辑操作、位操作指令

1)、逻辑操作

ORG2000H

MOVA,#98H

MOVR0,#60H

MOVR1,#20H

MOV20H,#0AAH

MOV50H,#19H

ANLA,R1

ORLA,R1

CPLA

ANLA,#66H

ORLA,50H

XRL50H,A

RLA

ANL50H,#99H

ANLA,@R1

MOV@R0,A

INCR0

ORLA,@R1

MOV@R0,A

INCR0

XRLA,@R1

MOV@R0,A

END

思考与讨论

使用逻辑操作指令实现图组合逻辑电路的功能,并上机调试。

图组合逻辑电路

 

逻辑操作指令实际上是按位操作指令,只对相应位操作,对其它位不影响。

弄清二进制加法运算和逻辑“或”运算的区别。

要实现某一种逻辑操作,是在对应位之间实现的。

要掌握逻辑指令的功能,首先应掌握各种逻辑运算规则。

2)、位操作指令

源程序

ORG3000H

MOVP1,#5BH

MOV40H,#29H

CLRA

MOV60H,A

MOVA,#55H

A1:

INC40H

CLRC

ADDCA,#26H

JNCA1

CPLC

ORLC,/ACC.4

XRLP1,#0FFH

JBCP1.7,A2

A3:

INC60H

A2:

ANLC,/ACC.3

ADDA,#58H

CPLP1.6

JNBACC.6,A3

SETBC

END

实验四、顺序程序设计

1)多字节加法实训程序

ORG2000H

MOVA,30H

ADDA,40H

MOV50H,A

MOVA,31H

ADDCA,41H

MOV51H,A

MOVA,32H

ADDCA,42H

MOV52H,A

MOVA,33H

ADDCA,43H

MOV53H,A

MOV00H,C

ANL20H,#01H

MOV54H,20H

END

2)双字节乘法实验程序

ORG2000H

MOVA,R3

MOVB,R7

MULAB

MOVR4,B

MOVR5,A

MOVA,R3

MOVB,R6

MULAB

ADDA,R4

MOVR4,A

CLRA

ADDCA,B

MOVR3,A

MOVA,R2

MOVB,R7

MULAB

ADDA,R4

MOVR4,A

MOVA,R3

ADDCA,B

MOVR3,A

CLRA

RLCA

XCHA,R2

MOVB,R6

MULAB

ADDA,R3

MOVR3,A

MOVA,R2

ADDCA,B

MOVR2,A

END

实验步骤:

(1)阅读并理解程序,并画出两个程序的流程图。

(2)将机器码送入单片机系统中,并检查是否正确。

(3)对于多字节加法实训程序,运行程序前,将两个四字节数据分别送入30H和40H开始的单元中。

(4)单步执行程序,并将运行结果记录在表3-3中。

12345678H+23456789H=?

ABCDEF01H+94398271H=?

2A3B4C5DH+3F4E5D6CH=?

(5)对于双字节乘法实训程序,运行程序前,将被乘数和乘数分别送入工作寄存器R2、R3和R6、R7中,执行程序,并记录结果。

程序运行结果表格请读者自行设计。

实验五、循环程序设计

1.编制将片内RAM从30H开始的五十个单元置数据88H的程序。

2.编制数组排序程序:

将片内RAM50H单元开始的十个单元内数据从小到大排序。

源程序:

1.将片内RAM30H开始的五十个单元置数据88H程序

ORG2000H

MOVR7,#50

MOVR0,#30H

MOVA,#88H

A1:

MOV@R0,A

INCR0

DJNZR7,A1

END

2.将片内RAM50H单元开始的十个单元内数据从小到大排序。

ORG3000H

STA:

CLRF0

MOVR3,#9

MOVR0,#50H

MOVA,@R0

A1:

INCR0

MOVR1,A

SUBBA,@R0

MOVA,R1

JCA2

SETBF0

XCHA,@R0

DECR0

XCHA,@R0

INCR0

A2:

MOVA,@R0

DJNZR3,A1

JBF0,STA

AJMP$

END

实验六、闪烁灯控制

1、实验目的:

1)熟悉炜煌单片机实验板的结构和用法

2)利用P1口输出控制LED灯亮

3)熟悉伟福和炜煌实验设备的连接使用。

2、实验设备:

装有伟福仿真软件的计算机、伟福、炜煌实验设备各一台。

插座排一个。

3、实验步骤:

1)不通电,检查设备的完好性

2)无误,用专用导线将炜煌实验板上的S1—S8与L1—L8连接

3)连接计算机与伟福、伟福与炜煌实验设备

4)接通实验板电源,打开炜黄煌的电源开关。

5)分别拨动S1-S8开关,观察L1—L8的亮灭情况

6)断开炜煌电源,将S1—S8接线拔下,换接在P1.0—P1.7脚。

7)重新打开炜煌电源,在伟福软件环境中调试程序,观察程序运行情况,各状态正常后,再进行硬件仿真。

8)打开计算机进入伟福硬件仿真环境,选择CPU型号8031、仿真头型号选E51/L,并去掉软件仿真复选框中的“对号”,进入硬件仿真工作状态。

实验参考程序

ORG00H

AJMPSTART

ORG30H

START:

MOVSP,#60H

MOVA,#0FEH

LOOP:

MOVP1,A

ACALLDELAY

RLA

LJMPLOOP

DELAY:

MOVR1,#10

DEL1:

MOVR2,#200

DEL2:

MOVR3,#248

DEL3:

DJNZR3,DEL3

DJNZR2,DEL2

DJNZR1,DEL1

RET

END

注意:

该程序内用到延时程序,左移,循环,P1口控制。

不能带电拔插接线。

通电状态不要用手摸芯片,以防静电击穿,损坏设备。

注意保证正确接线方式。

实验七、闪烁灯控制

8个发光二极管LED0~LED1经限流电阻R0~R7分别接至P1口8个引脚,阴极共同接地。

编程实现发光二极管按走马灯点亮,即按照LED0→LED1…→LED7的顺序,每次点亮一个发光二极管,一段时间后熄灭该发光二极管,然后点亮下一个发光二级管,重复循环。

/*

#include“reg51.h”//头文件

#defineLedportP1//宏定义P1口为Ledport

voiddelay(unsignedinti)//延时函数

{

while(i--);

}

main()//主函数

{

unsignedcharPortData=0x01;//初始化寄存器数值

while

(1)

{

Ledport=PortData;//将数据送到P1口,点亮二极管

delay(60000);//调延时

PortData=PortData<<1;//左移一位

if(PortData==0x00)

{PortData=0x01;}

}

}

实验八、用中断控制P1口使LED循环亮程序

一.实验目的:

1.进一步熟悉MCS—51单片机软硬件仿真调试方法。

2.了解中断控制过程。

3.进一步掌握P1口输出控制方法。

二.实验设备:

装有伟福仿真软件的计算机、仿真仿真器、炜煌实验板各一个。

插座排一个,导线若干。

三、实验要求

自编程序,使用单脉冲做中断源,每按一次按钮,点亮的发光二极管向右移动一位。

实验电路:

L1L

P1.0

INT1

L8L

P1.7

三.试验步骤:

1.在不通电时检查设备完好性。

2.用导线将S1—S8和L1—L8一一对应连接。

3.接通炜煌实验板的电源,并打开电源开关。

4.分别拨动S1—S8开关,观察LED1—LED8的亮灭情况。

5.关掉上述电源开关。

将S1—S8接线拿下来,接在P0.0—P0.7上。

L1—L8端不动。

6.在用一根导线将S1引脚与P3.3(INT1)引脚连接。

7.连接计算机与仿真器,仿真器与实验板。

8.接通电源,进入伟福软件仿真环境。

编辑录入实验程序,进行软件仿真,并观察记录现象。

(此时,实验板电源不要打开)

9.接通实验板电源,进入伟福硬件仿真环境。

运行编译好的目标程序并观察记录实验结果和现象。

四.试验程序

ORG00H

AJMPSTART

ORG13H

AJMPINTP

START:

MOVSP,#60H

MOVA,#0FEH

SETBIT1

MOVIE,#84H

MOVP1,#0FEH

HERE:

NOP

SJMPHERE

INTP:

MOVP1,A

RLA

CLRIE

RETI

END

五.试验注意:

1.不能带电拔插。

2.不能在通电时用手摸芯片。

3.保证正确接线。

4.一.ASM存源程序。

编译后调入,连续执行。

实验九、用中断控制P1口使LED循环亮程序

若规定外部中断1为边沿触发方式,低优先级,在中断服务程序中将寄存器B的内容左循环移一位,B的初值设为01H。

试编写主程序与中断服务程序。

*/

#include“reg51.h”//51寄存器头文件

#include“intrins.h”//内部函数,包括循环函数和_nop_()函数和_testbit_()

unsignedcharB;//B寄存器

voidInt1_Function()intterrupt2//外部中断1服务子程序

{

_crol_(B,1);//循环左移1位。

}

voidmain()//主程序

{

EA=1;//开中断

EX1=1;//允许外中断1中断

PX1=0;//设为低优先级

IT1=1;//边沿触发

B=0x01;//设B的初值

while

(1);//循环等待中断

}

实验十、用定时器控制LED灯亮灭实验

一.试验目的:

1.了解掌握定时器的编程及应用方法,理解根据需要开放定时器中断。

2.调试用定时器控制LED灯亮灭程序。

3.进一步了解软、硬件仿真调试方法。

二.实验设备

1.装有伟福仿真软件的计算机、伟福仿真器、炜煌实验板各一台。

2.插座排版一个。

导线若干。

三.实验项目内容

利用MCS—51单片机内可编程的定时器/计数器工作于定时方式,利用P1口输出给LED发光二极管,一个发光二级管的点亮时间表示一次定时时间,当完成一次定时后,P1口点亮的发光二极管由左向右依次发亮。

循环不止。

要求:

使用定时器1,按方式1工作,本试验的时钟频率为12MHz,延时1秒.

提示:

可采用定时器定时0.05秒,cpu响应中断后R0中计数值减一,令(R0)=14H,即可实现1秒的延时.请自编程序。

四、实验步骤

1.将P1.0—P1.7与L1—L8依次相联。

2.先用软件仿真调试程序,检查各语句执行情况。

3.在用硬件仿真运行并观察灯的亮灭状态。

并记录现象。

五、思考题

1.欲将发光顺序改为由右向左依次发亮应采用何种办法?

2.将发光顺序改为两个一组一次发亮又如何改动?

3.与改动灯的发光时间应改动程序何处?

4.欲改循环发光的速度又应如何做?

六、实验程序

ORG00H

AJMPSTART

ORG1BH

AJMPTI

ORG30H

START:

MOVIE,#00H

MOVSP,#60H

MOVP0,#0FFH

MOVR0,#0FEH

MOVR1,#14H

ANLTMOD,#0FH

ORLTMOD,#10H

MOVTH1,#3CH

MOVTL1,#0B0H

ORLIE,#88H

SETBTR1

LOOP:

CJNER1,#00,DISP

MOVR1,#14H

MOVA,R0

RLCA

MOVR0,A

DISP:

MOVP1,R0

AJMPLOOP

TI:

CLRTR1

DECR1

MOVTH1,3CH

MOVTL1,0B0H

SETBTR1

RETI

END

实验十一、用定时器控制LED灯亮灭实验

1)、已知晶振12MHz,要求利用定时器T0使图中发光二极管LED进行秒闪烁.采用查询方式编程*/

#include“reg51.h”//51寄存器头文件

sbitOutPort=P1^7;//设定波形输出口

unsignedcharTimerTime=0;//开辟RAM空间

voidTimer1_function()interrupt1//T0中断服务子程序

{

TimerTime++;

if(TimerTime==10)//中断10次否?

中断已经10次,即延时500ms

{

OutPort=!

OutPort;//取反输出波形

TimerTime=0;

}

}

voidmain()

{

TMOD=0x01;//设工作方式,T0方式1定时

TL0=0xB0;//置定时初值

TH0=0x3C;

TR0=1;//启动T0

for(;;)

{

if(TF0)

{

TF0=0;

OutPort=!

OutPort;//取反输出波形

}

}

2)、已知晶振12MHz,要求利用定时器T1实现50ms延时的流水灯方案.采用查询方式编程*/

#include”reg51.h”//51寄存器头文件

voidmain()

{

P1=0x01;

TMOD=0x10;//设工作方式,T1方式1定时

TR1=1;//启动T1

for(;;)

{TL1=0xB0;//置定时初值

TH1=0x3C;

do{}while(!

TF1);//查询等待TF1置位

P1<<=1;//定时时间到,下一只LED点亮

TF1=0;//软件清TF1

}

}

实验十二、运算器电路

1、要求

借助P1口上连接的发光二极管显示8032内部运算器的运算过程,以便完成两个8位二进制数各种运算,并将参加运算的操作数、运算结果和标志位的状态在发光二极管上以二进数的形式显示出来。

2、硬件电路原理图

 

 

3、程序设计思路

实现两个8位二进制数运算,例如做加法,可设置四个时间段,间隔30秒。

第一个时间段显示被加数,以二进制数形式在发光二极管上显示出来;第二时间段显示加数;第三时间段显示二者之和;最后显示标志寄存器PSW的值。

之后,8个发光二极管同时闪动2次后从头开始

4、源程序:

ORG2000H

ST:

MOVA,70H

CPLA

MOVP1,A

LCALLDELY

MOVA,71H

CPLA

MOVP1,A

LCALLDELY

MOVA,70H

ADDA,71H

CPLA

MOVP1,A

LCALLDELY

MOVA,PSW

CPLA

MOVP1,A

LCALLDELY

LCALLSA

LJMPST

ORG2050H

DELY:

MOV22H,#8

L3:

MOV21H,#250

L2:

MOV20H,#100

L1:

NOP

NOP

NOP

DJNZ20H,L1

DJNZ21H,L2

DJNZ22H,L3

RET

ORG20A0H

SA:

MOVP1,#00H

LCALLDEL1

MOVP1,#0FFH

LCALLDEL1

LJMPST

DEL1:

MOV32H,#2

L33:

MOV31H,#60

L22:

MOV30H,#100

L11:

NOP

NOP

NOP

DJNZ30H,L11

DJNZ31H,L22

DJNZ32H,L33

RET

END

5、步骤

(1)按实训硬件电路图连接电路。

发光二极管接成共阳极型,连接到P1口。

(2)仔细阅读并理解程序,画出程序流程图,并为每条指令加注释。

(3)将程序机器码输入单片机中,并检查程序是否正确。

(4)将参加运算的被加数和加数分别送入片内RAM70H和71H单元。

(5)输入程序首地址2000H,用连续执行命令执行程序。

观察发光二极管的亮灭变化,是否符合二进制转换要求。

(6)明确程序状态寄存器PSW的各位含义及各标志位的位置,观察是否与发光二极管显示相一致。

6、思考与讨论

如何将程序修改成减法运算、乘除法运算或逻辑运算?

编程并上机调试。

提示:

要顺利完成运算电路实训,必须对二~十进制数制转换非常熟悉,一看便知。

对标志寄存器PSW各标志位非常清楚,且各标志位在PSW中位置记忆准确。

对各种运算要先计算后验证。

实验十三、8255流水灯

要求8255的A口、B口均为输出口,各接8个LED,查询PC7为1则控制A口LED做走马灯,查询PC6为1则控制B口LED做流水灯。

*/

#include"reg51.h"

#include"absacc.h"

voiddelay()

{

unsignedintj=5000;

while(j--);

}

voidZoumadeng()

{

unsignedchari;

unsignedchark=0x01;

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

{

XBYTE[0x7C00]=k;

k=k<<1;

delay();

}

}

voidLiushuideng()

{

unsignedchari;

unsignedchark=0x01;

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

{

XBYTE[0x7D00]=k;

k=k<<1+1;

delay();

}

}

main()

{

unsignedchard

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 畜牧兽医

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1