文档视界 最新最全的文档下载
当前位置:文档视界 › 单片机实验指导书

单片机实验指导书

单片机实验指导书
单片机实验指导书

实验一KEIL 51软件实验

实验目的:

1、掌握KEIL集成开发环境的使用

2、掌握算术运算程序

实验设备:计算机、KEIL51软件

实验容:

编程实现把片人RAM30H单元和40H单元两个16字节数相加,结果放于30H单元开始的位置处。在KEIL51编译、连接、仿真调试。

实验步骤:

一、运行KEIL51软件,出现图1所示KEIL 51主界面。

图1 KEIL 51主界面

首先用Project菜单下的New Project命令建立项目文件,过程如下。

(1) 选择Project菜单下的New Project命令,弹出如图2所示的Create new Project对话框。

图2 Create New Project对话框

(2) 在Create New Project对话框中选择新建项目文件的位置(最好一个项目建立一个文件夹如E:

\project),输入新建项目文件的名称,例如,项目文件名为example,单击【保存】按钮将弹出如图3所示的Select Device for T arget ‘T arget1’对话框,用户可以根据使用情况选择单片机型号。Keil

uVision2 IDE几乎支持所有的51核心的单片机,并以列表的形式给出。选中芯片后,在右边的描述框中将同时显示选中的芯片的相关信息以供用户参考。

图3 Select Device for Target ‘Target 1’对话框

(3) 这里选择atmel公司的AT89c51。单击【确定】按钮,这时弹出如图4所示的Copy Standard 8051 Startup

Code to Project Folder and Add File to Project确认框,C语言开发选择【是】,汇编语言开发选择【否】。

单击后,项目文件就创建好了。项目文件创建后,在主界面的左侧的项目窗口可以看到项目文件的容。

这时只有一个框架,紧接着需向项目文件中添加程序文件容。

图4 Copy Standard 8051 Startup Code to Project

Folder and Add File to Project确认框

二、给项目添加程序文件

当项目文件建立好后,就可以给项目文件加入程序文件了,Keil uVision2支持C语言程序,也支持汇编语言程序。这些程序文件可以是已经建立好了的程序文件,也可以是新建的程序文件,这里我们新建的汇编程序文件后再添加。

(1) 选择文件菜单上的new命令,出现新建文本窗口,如图5所示。

图5 新建文本窗口

在文本编辑窗口中输入加法程序。存盘,假设文件名为add16.asm。注意汇编程序文件扩展名为.asm,这时默认路径为工程文件夹。参考程序如下:

ORG 0000H

LJMP MAIN

ORG 1000H

MAIN:MOV R0,#30H

MOV R1,#40H

MOV R2,#16

CLR C

LOOP: MOV A,R0

ADDC A, R1

MOV R0,A

INC R0

INC R1

DJNZ R2,LOOP

SJMP $

END

(2) 添加文件到项目中。在项目管理器窗口中,展开T arget1项,可以看到Source Group1子项。右击Source

Group1,在出现菜单中选择Add Files to Group ‘S ource Group1’命令。出现添加文件的窗口,加程序add16.asm如到项目中。如图6所示。注意文件类型要选择为*.a*。

图5 添加程序文件到项目

三、编译、连接项目,形成目标文件

当把程序文件添加到项目文件中,并且程序文件已经建立好存盘后,就可以进行编译、连接,形成HEX目标文件(只在keil 51中软件仿真可以不形成目标文件)

(1)选择Project菜单下的Built T arget命令(或快捷键F7) 编译、连接当前项目,编译、连接时,如果程序有错,则编译不成功,并在下面的信息窗口给出相应的出错提示信息,以便用户进行修改,修改后再编译、连接,这个过程可能会重复多次。如果没有错误,则编译、连接成功,并且在信息窗口给出提示信息。如图6所示。

图6 编译、连接后的显示图

(2)如果要做硬件下载可硬件仿真,则要形成HEX目标文件,须先对输出选项进行相应的设置,设置后再进行编译连接。方法如下:右击项目管理器窗口的T arget1项,在右键菜单中选择下面的Options for T arget ‘T arget 1’命令,在Options for T arget ‘T arget 1’对话框选择Output选项卡,在该选项卡选中Create HEX File选项,选择生成HEX文件。如图7所示。

图7 Options for Target ‘Target 1’对话框

四、运行调试观察结果

当项目编译、连接成功后,就可以运行它来观察结果,运行调试过程如下。

先用Debug菜单下的Start/Stop Debug Session命令(快捷键Ctrl+F5)启动调试过程,启动后可用Debug菜单下Go连续运行命令、Step单步运行、Stop running停止运行命令等运行程序观察结果。本实验中进入启动调试后,先用View菜单下的memory window打开存储器窗口,在address框输入d:0x30,在存储器窗口中显示片数据存储器30h单元开始的数据。如图8所示。

Memory window

窗口

图8 启动调试过程结果图

在片数据存储器窗口中右击30h单元,在右键菜单中选择modify memory at D:0x30,从30h单元开始修改数据,在弹出的窗口中输入30h~3fh单元的数据,如图9和图10所示。

图9 修改片数据存储器的容

图10 输入30h~3fh单元的数据

用相同的方法修改40h~4fh单元的数据。修改后选择run命令运行,运行后在存储器窗口可看到该程序运行的结果。在存储器窗口的address框中还可输入c:0x地址显示程序存储器,x:0x地址显示片外数据存储器。

另外,可用View菜单下的symbols window命令查看特殊功能寄存器,用peripherals菜单下面的命令来查看并口、串口、定时/计数器和中断的相关容。

实验结论与问题:

简要介绍KEIL 51使用过程。

实验二存块移动

实验目的:

1、掌握KEIL集成开发环境的使用

2、掌握数据块移动程序

实验设备:

计算机、KEIL51软件

实验容:

编程实现将存数据块移动,在KEIL51编译、连接、仿真调试

汇编语言源程序:

ORG 00H

START: MOV R0, #30H

MOV R1, #00H ;设置源地址

MOV R2, #40H

MOV R3, #00H ;设置目标地址

MOV R7, #0 ;设置计数值

LOOP: MOV DPH, R0

MOV DPL, R1 ;将源地址(3000H)赋DPTR

MOVX A, DPTR ;取源地址中的数据

MOV DPH, R2

MOV DPL, R3 ;将目标地址(4000H)赋DPTR

MOVX DPTR, A ;将源地址中的数据送到目标地址

INC R1 ;源地址加1

INC R3 ;目标地址加1

DJNZ R7, LOOP

LJMP $

END

输入源程序,编译无误后,用单步执行的方法,观察各个相应存储单元和寄存器中容的变化。

实验三乘法运算实验

实验目的:

1、掌握KEIL集成开发环境的使用

2、掌握多字节乘法运算程序

实验设备:

计算机、KEIL51软件

实验容:

编程实现把R2R1(R2为高字节,R1为低字节)和R0中的无符号数相乘,结果放于R7R6R5(R7为最高位)。在KEIL51编译、连接、仿真调试

实验步骤:

ORG 0000H

LJMP MAIN

ORG 0030H

MAIN: MOV R1,#0FFH

MOV R2,#0FFH

MOV R0,#11H

MOV A,R1

MOV B,R0

MUL AB

MOV R6,B

MOV R5,A

CLR C

MOV A,R2

MOV B,R0

MUL AB

MOV R7,B

ADDC A,R6

MOV R6,A

MOV A,R7

ADDC A,#00H

MOV R7,A

SJMP $

END

实验结论及问题:

给R2R1和R0赋值方法有哪些?

MOV Rn,A

MOV Rn,01H 立即数寻址

MOV Rn,#01H 直接赋值。三种情况

实验四并行接口实验

实验目的:

1、掌握KEIL集成开发环境的使用

2、掌握Proteus仿真软件的使用

3、学会使用Proteus和KEIL软件进行系统仿真调试

4、掌握单片机并行接口的结构与使用

实验设备:计算机、KEIL51软件、PROTEUS软件

实验容:

在80C51单片机的P2口连接8个发光二极管指示灯,编程实现流水灯的控制,轮流点亮指示灯。在KEIL 51中编程序,形成HEX文件,在PROTEUS中设计硬件,下载程序,运行看结果。

实验步骤:

一、打开PROTEUS的ISIS软件,如图10所示。新建电路图文件,设文件保存到e:\projectio下面,文件基本名为io,扩展名默认。

选择元件

图10 ISIS窗口图

二、在component mode模式下单击选择元件按钮P,打开元件选择对话框,如图11所示。

图11 元件选择窗口

在元件选择对话框的keywords窗口中输入元件关键字可换搜索元件,找到元件后,双击元件则可选中元件,添加元件到图10的device列表栏。在这里依次添加元件单片机80c51、电阻RES、电容CAP、按键BUTTON、晶振CRYSTAL、发光二极管LED-RED。如图12所示。

图12 添加元件的device列表栏

三、选择devices元件列表中的元件放到工作窗口,注意放置在工作窗口合适的位置,在元件放置时可对元件进行移动、旋转等操作。电源与地在工具按钮的T erminals mode中选取。如图13所示。

图13 放置元件图

四、连接导线,如图14所示。连接后存盘。

图14 连接元件图

五、在keil 51中设计软件程序,形成HEX文件。保存软件项目到电路文件相同的文件夹e:\projectio。设

计软件程序如容一,过程略。参考程序如下:

ORG 0000H

LJMP MAIN

ORG 0100H

MAIN:MOV A,#01H

LOOP:MOV P2,A

LCALL DELAY

RL A

SJMP LOOP

SJMP $

DELAY:MOV R2,#10H

DELAY1:MOV R3,#0FFH

DJNZ R3,$

DJNZ R2,DELAY1

RET

END

六、在PROTEUS电路图中,单击单片机80C51芯片,选中,再次单击打开单片机80C51的属性对话框,在

属性对话框中的program file框中选择下载到80C51芯片中的程序。这里是同一个文件夹下面的io.hex 文件。如图14所示。

图14 下载程序到单片机

七、单击仿真运行按钮play,运行程序。可通过LED二极管看到相应的结果。如图15所示。

图15 仿真结果图实验结论与问题:

如果要改变LED显示的循序,该怎么办?

实验五多路开关指示

实验目的:

1、掌握KEIL集成开发环境的使用

2、掌握Proteus仿真软件的使用

3、学会使用Proteus和KEIL软件进行系统仿真调试

4、掌握单片机并行接口的结构与使用

实验设备:计算机、KEIL51软件、PROTEUS软件

实验容:

AT89C51单片机的P1.0~P1.3接4个二极管,P1.4~P1.7接4个开关,编程读取开关状态,使得对应的发光二极管反映开关状态(开关闭合,对应的灯亮)。

Porteus模型为Multi Switch.DSN如下图所示。

程序设计:

开关状态检测,对于单片机来说,是检测其I/O口的输入。可以轮流检测每个开关状态。根据每个开关的状态让相应的发光二极管指示。

汇编语言源程序:

ORG 00H

START: ;读取P1口数据

;交换A中高四位与低四位的位置

;与0F0H相或

;将开关状态送LED显示

;转移到START

END

实验六外部中断

实验目的:

1、掌握KEIL集成开发环境的使用

2、掌握Proteus仿真软件的使用

3、学会使用Proteus和KEIL软件进行系统仿真调试

4、掌握单片机的功能模块中断的设置和应用中断的结构与使用

实验设备:计算机、KEIL51软件、PROTEUS软件

实验容:

AT89C51单片机的P3.2/INT0引脚接一个开关,模拟外部中断源,编写程序,当外部中断发生时,对其作出响应(以发光二极管的亮/灭来指示)。

程序设计:

外部中断的初始化设置共有三项容:中断总允许即EA=“1”,外部中断允许即EXi=“1”,中断方式设置。中断方式设置一般有两种方式,即电平方式和脉冲方式,这里采用脉冲方式,当前一次为高电平后一次为低电平时为有效中断请求。因此高电平状态和低电平状态至少维持一个周期,中断请求信号由引脚INT0(P3.2)和INT1(P3.3)引入。

Proteus模型为External Interrupt.DSN。

汇编语言源程序:

LED BIT P1.0

LEDBUF EQU 30H

ORG 00H

LJMP START

;中断入口地址

;中断处理指令

START: CLR LEDBUF

CLR LED

;外部中断0下降沿触发

;打开外部中断允许位(EX0)及总中断允许位(EA)

LJMP $ ;等待中断

INTERRUPT:

;保护现场

CPL LEDBUF ;取反LED

MOV C,LEDBUF

MOV LED,C

POP PSW ;恢复现场

RETI

END

实验七单片机定时实验

实验目的:

1、了解定时器的结构

2、熟练掌握定时器的使用方法

3、掌握利用定时器产生方波的方法

4、掌握中断的使用

实验设备:计算机、KEIL51软件、PROTEUS软件

实验容:

T89C51单片机的实验电路如图所示,P1.0口接一个发光二极管,编写程序,控制发光二极管闪烁,时间间隔1s,要求采用AT89C51单片机的部定时器计时,用中断方式,采用工作方式2。

Porteus模型为External Interrupt.DSN如下图所示。

程序设计要求:

设置部计数器用作定时器,是对机器周期数计数。每个机器周期的长度是12个振荡器振荡周期。单片机晶振用12MHz,工作方式2,即8位自动重装方式定时器,定时100微秒中断一次,通过计算,得到定时常数=156,然后对100微秒中断次数计数10000次,就是1s。

汇编语言源程序:

ORG 00H

TICK E QU 10000 ;10000×100us=1s

T100us EQU 256-100 ;100us时间常数(12M)

C100us EQU 30H ;100us计数单元

LEDBUF EQU 40H

LED BIT P1.0

;跳至主程序

;中断服务子程序起始地址

T0INT: PUSH PSW ;状态保护

MOV A,C100us+1

JNZ GOON

DEC C100us ;秒计数值减1 GOON: DEC C100us+1

MOV A,C100us

ORL A,C100us+1

JNZ EXIT ;100us计数器不为0,返回

MOV C100us,#HIGH(TICK) ;100us计数器为0,重置计数器

MOV C100us+1,#LOW(TICK)

CPL LEDBUF ;取反LED

EXIT: POP PSW

;中断返回

START: ;方式2,定时器

;置定时器初值

;开中断

;开始定时

CLR LEDBUF

CLR LED

MOV C100us,#HIGH(TICK) ;设置10000次计数值

MOV C100us+1,#LOW(TICK)

LOOP: MOV C,LEDBUF

MOV LED,C

LJMP LOOP

END

实验八单片机计数器实验

实验目的:

1、了解计数器的结构

2、熟练掌握计数器的使用方法

3、掌握利用计数器产生方波的方法

4、掌握中断的使用

实验设备:计算机、KEIL51软件、PROTEUS软件

实验容

从AT89C51单片机的P3.4口输入外部时钟,编写程序,对外部脉冲个数进行计数,并将计数值用8位发光二极管以二进制数显示出来。

程序设计要求:

AT89C51部定时/计数器用作计数器,外部时间计数脉冲由P3.4引入定时器T0,单片机在每个机器周期采样一次T0引脚的输入波形,如果有跳变,则计数值自动加1。

Proteus模型为Counter Design.DSN,如下图所示。

汇编语言源程序:

ORG 0000H

MOV TMOD,#00000101B ;置T0计数器方式1

MOV TH0,#0 ;置T0初值

MOV TL0,#0

SETB TR0 ;T0运行

LOOP: MOV P1,TL0 ;记录P1口脉冲个数

LJMP LOOP ;返回

END

相关文档