单片机实验指导书.docx

上传人:b****9 文档编号:26006352 上传时间:2023-06-17 格式:DOCX 页数:27 大小:406.09KB
下载 相关 举报
单片机实验指导书.docx_第1页
第1页 / 共27页
单片机实验指导书.docx_第2页
第2页 / 共27页
单片机实验指导书.docx_第3页
第3页 / 共27页
单片机实验指导书.docx_第4页
第4页 / 共27页
单片机实验指导书.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

单片机实验指导书.docx

《单片机实验指导书.docx》由会员分享,可在线阅读,更多相关《单片机实验指导书.docx(27页珍藏版)》请在冰豆网上搜索。

单片机实验指导书.docx

单片机实验指导书

实验一KEIL51软件实验

实验目的:

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

2、掌握算术运算程序

实验设备:

计算机、KEIL51软件

实验内容:

编程实现把片人RAM30H单元和40H单元两个16字节数相加,结果放于30H单元开始的位置处。

在KEIL51编译、连接、仿真调试。

实验步骤:

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

图1KEIL51主界面

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

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

图2CreateNewProject对话框

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

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

KeiluVision2IDE几乎支持所有的51核心的单片机,并以列表的形式给出。

选中芯片后,在右边的描述框中将同时显示选中的芯片的相关信息以供用户参考。

图3SelectDeviceforTarget‘Target1’对话框

(3)这里选择atmel公司的AT89c51。

单击【确定】按钮,这时弹出如图4所示的CopyStandard8051StartupCodetoProjectFolderandAddFiletoProject确认框,C语言开发选择【是】,汇编语言开发选择【否】。

单击后,项目文件就创建好了。

项目文件创建后,在主界面的左侧的项目窗口可以看到项目文件的内容。

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

图4CopyStandard8051StartupCodetoProject

FolderandAddFiletoProject确认框

二、给项目添加程序文件

当项目文件建立好后,就可以给项目文件加入程序文件了,KeiluVision2支持C语言程序,也支持汇编语言程序。

这些程序文件可以是已经建立好了的程序文件,也可以是新建的程序文件,这里我们新建的汇编程序文件后再添加。

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

图5新建文本窗口

在文本编辑窗口中输入加法程序。

存盘,假设文件名为add16.asm。

注意汇编程序文件扩展名为.asm,这时默认路径为工程文件夹。

参考程序如下:

ORG0000H

LJMPMAIN

ORG1000H

MAIN:

MOVR0,#30H

MOVR1,#40H

MOVR2,#16

CLRC

LOOP:

MOVA,@R0

ADDCA,@R1

MOV@R0,A

INCR0

INCR1

DJNZR2,LOOP

SJMP$

END

(2)添加文件到项目中。

在项目管理器窗口中,展开Target1项,可以看到SourceGroup1子项。

右击SourceGroup1,在出现菜单中选择AddFilestoGroup‘SourceGroup1’命令。

出现添加文件的窗口,加程序add16.asm如到项目中。

如图6所示。

注意文件类型要选择为*.a*。

图5添加程序文件到项目

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

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

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

如果没有错误,则编译、连接成功,并且在信息窗口给出提示信息。

如图6所示。

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

(2)如果要做硬件下载可硬件仿真,则要形成HEX目标文件,须先对输出选项进行相应的设置,设置后再进行编译连接。

方法如下:

右击项目管理器窗口的Target1项,在右键菜单中选择下面的OptionsforTarget‘Target1’命令,在OptionsforTarget‘Target1’对话框选择Output选项卡,在该选项卡选中CreateHEXFile选项,选择生成HEX文件。

如图7所示。

图7OptionsforTarget‘Target1’对话框

四、运行调试观察结果

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

先用Debug菜单下的Start/StopDebugSession命令(快捷键Ctrl+F5)启动调试过程,启动后可用Debug菜单下Go连续运行命令、Step单步运行、Stoprunning停止运行命令等运行程序观察结果。

本实验中进入启动调试后,先用View菜单下的memorywindow打开存储器窗口,在address框输入d:

0x30,在存储器窗口中显示片内数据存储器30h单元开始的数据。

如图8所示。

图8启动调试过程结果图

在片内数据存储器窗口中右击30h单元,在右键菜单中选择modifymemoryatD:

0x30,从30h单元开始修改数据,在弹出的窗口中输入30h~3fh单元的数据,如图9和图10所示。

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

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

用相同的方法修改40h~4fh单元的数据。

修改后选择run命令运行,运行后在存储器窗口可看到该程序运行的结果。

在存储器窗口的address框中还可输入c:

0x地址显示程序存储器,x:

0x地址显示片外数据存储器。

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

实验结论与问题:

简要介绍KEIL51使用过程。

实验二内存块移动

实验目的:

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

2、掌握数据块移动程序

实验设备:

计算机、KEIL51软件

实验内容:

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

汇编语言源程序:

ORG00H

START:

MOVR0,#30H

MOVR1,#00H;设置源地址

MOVR2,#40H

MOVR3,#00H;设置目标地址

MOVR7,#0;设置计数值

LOOP:

MOVDPH,R0

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

MOVXA,@DPTR;取源地址中的数据

MOVDPH,R2

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

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

INCR1;源地址加1

INCR3;目标地址加1

DJNZR7,LOOP

LJMP$

END

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

实验三乘法运算实验

实验目的:

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

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

实验设备:

计算机、KEIL51软件

实验内容:

编程实现把R2R1(R2为高字节,R1为低字节)和R0中的无符号数相乘,结果放于R7R6R5(R7为最高位)。

在KEIL51编译、连接、仿真调试

实验步骤:

ORG0000H

LJMPMAIN

ORG0030H

MAIN:

MOVR1,#0FFH

MOVR2,#0FFH

MOVR0,#11H

MOVA,R1

MOVB,R0

MULAB

MOVR6,B

MOVR5,A

CLRC

MOVA,R2

MOVB,R0

MULAB

MOVR7,B

ADDCA,R6

MOVR6,A

MOVA,R7

ADDCA,#00H

MOVR7,A

SJMP$

END

实验结论及问题:

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

MOVRn,A

MOVRn,01H立即数寻址

MOVRn,#01H直接赋值。

三种情况

实验四并行接口实验

实验目的:

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

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

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

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

实验设备:

计算机、KEIL51软件、PROTEUS软件

实验内容:

在80C51单片机的P2口连接8个发光二极管指示灯,编程实现流水灯的控制,轮流点亮指示灯。

在KEIL51中编程序,形成HEX文件,在PROTEUS中设计硬件,下载程序,运行看结果。

实验步骤:

一、打开PROTEUS的ISIS软件,如图10所示。

新建电路图文件,设文件保存到e:

\projectio下面,文件基本名为io,扩展名默认。

选择元件

图10ISIS窗口图

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

图11元件选择窗口

在元件选择对话框的keywords窗口中输入元件关键字可换搜索元件,找到元件后,双击元件则可选中元件,添加元件到图10的device列表栏。

在这里依次添加元件单片机80c51、电阻RES、电容CAP、按键BUTTON、晶振CRYSTAL、发光二极管LED-RED。

如图12所示。

图12添加元件的device列表栏

三、选择devices元件列表中的元件放到工作窗口,注意放置在工作窗口合适的位置,在元件放置时可对元件进行移动、旋转等操作。

电源与地在工具按钮的Terminalsmode中选取。

如图13所示。

图13放置元件图

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

连接后存盘。

图14连接元件图

五、在keil51中设计软件程序,形成HEX文件。

保存软件项目到电路文件相同的文件夹e:

\projectio。

设计软件程序如内容一,过程略。

参考程序如下:

ORG0000H

LJMPMAIN

ORG0100H

MAIN:

MOVA,#01H

LOOP:

MOVP2,A

LCALLDELAY

RLA

SJMPLOOP

SJMP$

DELAY:

MOVR2,#10H

DELAY1:

MOVR3,#0FFH

DJNZR3,$

DJNZR2,DELAY1

RET

END

六、在PROTEUS电路图中,单击单片机80C51芯片,选中,再次单击打开单片机80C51的属性对话框,在属性对话框中的programfile框中选择下载到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模型为MultiSwitch.DSN如下图所示。

程序设计:

开关状态检测,对于单片机来说,是检测其I/O口的输入。

可以轮流检测每个开关状态。

根据每个开关的状态让相应的发光二极管指示。

汇编语言源程序:

ORG00H

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模型为ExternalInterrupt.DSN。

汇编语言源程序:

LEDBITP1.0

LEDBUFEQU30H

ORG00H

LJMPSTART

;中断入口地址

;中断处理指令

START:

CLRLEDBUF

CLRLED

;外部中断0下降沿触发

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

LJMP$;等待中断

INTERRUPT:

;保护现场

CPLLEDBUF;取反LED

MOVC,LEDBUF

MOVLED,C

POPPSW;恢复现场

RETI

END

实验七单片机定时实验

实验目的:

1、了解定时器的结构

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

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

4、掌握中断的使用

实验设备:

计算机、KEIL51软件、PROTEUS软件

实验内容:

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

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

程序设计要求:

设置内部计数器用作定时器,是对机器周期数计数。

每个机器周期的长度是12个振荡器振荡周期。

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

汇编语言源程序:

ORG00H

TICKEQU10000;10000×100us=1s

T100usEQU256-100;100us时间常数(12M)

C100usEQU30H;100us计数单元

LEDBUFEQU40H

LEDBITP1.0

;跳至主程序

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

T0INT:

PUSHPSW;状态保护

MOVA,C100us+1

JNZGOON

DECC100us;秒计数值减1

GOON:

DECC100us+1

MOVA,C100us

ORLA,C100us+1

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

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

MOVC100us+1,#LOW(TICK)

CPLLEDBUF;取反LED

EXIT:

POPPSW

;中断返回

START:

;方式2,定时器

;置定时器初值

;开中断

;开始定时

CLRLEDBUF

CLRLED

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

MOVC100us+1,#LOW(TICK)

LOOP:

MOVC,LEDBUF

MOVLED,C

LJMPLOOP

END

实验八单片机计数器实验

实验目的:

1、了解计数器的结构

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

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

4、掌握中断的使用

实验设备:

计算机、KEIL51软件、PROTEUS软件

实验内容

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

程序设计要求:

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

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

汇编语言源程序:

ORG0000H

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

MOVTH0,#0;置T0初值

MOVTL0,#0

SETBTR0;T0运行

LOOP:

MOVP1,TL0;记录P1口脉冲个数

LJMPLOOP;返回

END

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

当前位置:首页 > 成人教育 > 远程网络教育

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

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