单片机原理实验
目录
实验一、单片机集成开发环境入门
实验二、I/O口输入输出实验――循环灯程序设计
实验三、I/O口输入输出实验――LED数码管动态显示与按键去抖程序设计 实验四、定时器应用实验――LED数码动态显示与矩阵键盘赋值程序设计 实验五、计数器应用实验――基于热敏电阻和555时基电路的简易温度计设计
i
单片机原理实验
实验一、单片机集成开发环境入门
一、
实验目地
1. 掌握单片机集成开发软件“WAVE 3.2”的开发环境配置。
2. 掌握单片机集成开发软件“WAVE 3.2”的基本功能,了解MCS-51系列单片机应用系统的软件开发过程。
? 掌握创建工程项目和管理工程项目的方法。 ? ?
掌握MCS-51系列单片机汇编程序的编辑、编译方法。
掌握MCS-51系列单片机汇编程序的仿真调试方法和观察窗口的使用。
二、 实验设备
PC 兼容机一台,操作系统为WindowsXP,安装有单片机集成开发软件“WAVE 3.2”。
三、 实验原理
1. 单片机集成开发软件“WAVE 3.2”简介
单片机应用程序的设计步骤通常可分为以下几步:(1)根据单片机应用系统的功能进行算法构思和设计,画出程序流程图;(2)用单片机汇编语言、C语言或PLM语言(初学者一般应采用汇编语言)编写源程序;(3)将源程序翻译成单片机可执行的机器码程序,即所谓的目标程序,该过程称为汇编或编译;(4)程序调试,将目标程序下载到目标单片机(即应用系统板中的单片机),运行目标程序,对运行结果进行监控。若运行结果与预期结果相符,程序正确,调试结束;否则由结果的差异分析算法或程序的可能错误,重复步骤2至4,修改源程序、重新汇编、再调试,直至程序正确。以上步骤2至4可应用单片机集成开发软件在个人计算机上完成。
“WAVE 3.2”是一款功能强大的单片机集成开发软件,可开发多个系列的单片机应用系统。该软件主要功能有:(1)集成了文本编辑器,可对源程序进行编辑、修改;(2)集成了汇编器,可对源程序进行汇编,自动查找源程序中的语法错误,并将无语法错误的源程序翻译成目标程序;(3)集成了仿真调试器,可对目标系统进行在线仿真调试,也可在个人计算机上对目标程序进行模拟仿真调试。
在线仿真调试,必需借助硬件仿真器,PC机通过硬件仿真器与目标系统相连,可用PC机监控目标程序的运行,目标单片机内部RAM和特殊功能寄存器的值可实时反馈回PC机。程序员通过分析目标单片机内部RAM和特殊功能寄存器的值、观测目标程序与单片机应用系统的配合情况,判断系统的软硬件是否正确。
模拟仿真调试是一种纯软件模拟,它直接利用PC机的资源,在PC机上模拟目标程序的运行,并显示虚拟单片机内部RAM和特殊功能寄存器的值,程序员通过分析虚拟单片机内部RAM和特殊功能寄存器的值仅能判断与硬件无关的那部分软件的正确与否,无法判断单片机应用系统的硬件是否正确,目标程序与系统硬件是否匹配。 由于在线仿真调试需要硬件仿真器,设备成本较高,使用较复杂,不利于普及。因此,本课程的实验将采用模拟仿真调试与硬件无关的部分软件(这部分软件所占比例很大),采用将目标程序下载到目标系统中实际运行,进行软硬件综合调试。
2. 集成开发软件“WAVE 3.2”的界面
1
单片机原理实验
启动“WAVE 3.2”后,集成开发软件的界面如图1.1所示,菜单功能见附录一。
主菜单
工具栏
观察窗口项目窗口
图1.1:WAVE集成开发环境界面
编辑窗口
3. 单片机应用程序设计及调试方法
以下举例说明51系列单片机应用程序设计及调试的主要方法,主要步骤如下:①创建工程项目,编辑源程序;②汇编或编译;③使用软件模拟器及观察窗口调试程序。
以实现“从P1.0口输出1Hz方波”程序为例。先进行算法设计,若每隔500mS将P1.0求反,则P1.0口将输出频率为1Hz的方波,程序流图如图1.2和图1.3所示。为了能在本例中能尽可能多地实践程序调试方法,我们故意将500mS延时子程序复杂化,采用二级子程序嵌套,并引入十进制加法运算。该程序的汇编源程序清单如下
ORG 0000H LJMP MAIN ORG 0030H
MOV SP,#60H ;初始化
ACALL DELAY ;调用500mS延时子程序 SJMP MAIN1
(30H)十进制加1 N图1.2:产生方波流程循环变量(30H)=0 调用10mS延时子程序 调用500mS延时子程序 P1.0求反 初始化 开始 MAIN:
MAIN1: XRL P1,#01H ;P1.0求反
(30H)=50H ? Y返回 DELAY: MOV 30H,#0 ;500mS延时子程序 DELAY1: ACALL D10MS ;调用10mS延时子程序 MOV A,30H
2
图1.3:50mS延时子程
单片机原理实验
ADD A,#01H DA A
MOV 30H,A
CJNE A,#50H,DELAY1 RET
D10MS: MOV R6,#20 ;延时(2*R7+4)*R6+5=10005机器周 D10MS1: MOV R7,#248
NOP DJNZ R7,$ DJNZ R6,D10MS1 RET
END
3.1 创建工程项目
①建立一个工作文件夹(不妨取为E:\\学号\\实验一)用于保存与本例的工程项目有关的各种文件。
②启动WAVE软件,系统将自动打开最近使用过的工程项目,将所有窗口全部关闭。 ③编辑源程序,选择菜单[文件|新建文件]功能,出现一个文件名为NONAME1 的源程序编辑窗口,在此窗口中输入上述程序,选择菜单[文件|保存文件]或[文件|另存为]功能,将文件保存到工作目录中,文件名自定义,如取为eg1.asm,文件保存后,程序窗口上文件名变成了:E:\\学号\\实验一\\eg1.asm。
④建立新的项目,选择菜单[文件|新建项目]功能,自动打开项目名为UNTITLED的项目窗口,并弹出加入模块文件对话框,选择eg1.asm源程序文件,点击打开。紧接着弹出加入包含文件对话框,因没有需要添加的其它文件,点击取消钮。再接着弹出保存项目对话框,键入工程项目的名称project,点击保存钮,项目窗口中的项目名称显示为project.prj。注意:工程项目文件、源程序文件等要保存在同一文件夹中。
⑤设置项目,选择菜单[设置|仿真器设置]功能或按“仿真器设置”快捷图标或双击项目窗口的第一行来打开“仿真器设置”对话框。
由于本课程实验没有使用硬件仿真器,自制实验板的CPU型号为AT89S52,因此在“仿真器”栏中应如下设置仿真器:在仿真器标签中任意选取仿真器和仿真头,只要所选仿真器和仿真头可仿真的CPU列表中有8032或8732即可,并选择其中一款CPU,然后选中“使用伟福软件模拟器,并设置晶体频率1200000Hz。
在“语言”栏中,由于本课程实验均采用汇编语言编写程序,因此“编译器选择”选择“伟福汇编器”。当仿真器设置好后,再次保存项目,完成项目创建。
3.2 汇编(或编译)程序
选择菜单[项目|编译]功能或按编译快捷图标,编译你的项目。在编译过程中,如果源程序有语法错误,将自动弹出信息窗口,显示错误所在行号及错误编号等信息,双击错误信息,可以在源程序中定位所在行。纠正错误后,再次编译直到没有错误。
3
单片机原理实验
在编译之前,软件会自动将项目和程序存盘。在编译没有错误后,打开工作文件夹,可以看到文件夹中产生eg1.lst、project.bin、project.hex三个文件,第1个是源程序eg1.asm的汇编列表文件,可用记事本编辑器打开该文件,解读该文件提供的信息;第2和3个文件是该工程项目的二种格式的目标程序(.bin和.hex格式)。
3.3 汇编程序的仿真调试方法和观察窗口的使用 如前所述,模拟仿真调试的方法是在PC机上模拟目标程序的运行,并显示虚拟单片机内部RAM和特殊功能寄存器的值,程序员通过分析虚拟单片机内部RAM和特殊功能寄存器的值仅能判断与硬件无关的那部分软件的正确与否。常用先打开合适的观察窗口,用跟踪、单步、执行到光标处等方式来调试程序。比如
① 打开CPU窗口、数据窗口(DATA窗口)、外设端口,适当调整各窗口位置和大小,如图1.4所示。
图1.4:WAVE软件工作环境
在主窗口下方的状态栏中显示CPU的当前状态,包括PC、DPTR、ACC、PSW、SP的值及上次程序执行(跟踪、单步、或执行到光标处)的时间。
在CUP窗口中,第一栏显示每条指令的地址、机器码、反汇编结果、对应的源程序行,若该栏未显示正确指令,可重新编译;第二栏显示SFR及其值,第三栏显示被选中的SFR名位的值,被选中的SFR的名称和值的显示格为立体框样式。
点击跟踪快捷图标,程序转移到“MAIN”标号行,此时在源程序窗口最左边出现“o”和“=>”符号,其中“o”代表此行为有效程序,此行产生了可以执行的机器码,伪指令不产生机器码;“=>”所指的行(被点亮的行)就是下次将要执行的程序指令行。
数据窗口逐行显示内部RAM的内容,每行16字节。
端口显示P0、P1、P2、P3的状态,“√”表示高电平(即逻辑1)。
②由于待调试程序仅涉及SFR中的ACC、PSW、SP和RAM中R6、R7、30H单元、堆
4