单片机原理实验讲义
郭海燕 周小方编
漳州师范学院物理与电子信息工程系
2010年11月
单片机原理实验
前 言
随着微电子技术的发展,当前各种电子设备中几乎都能见到微控制器的身影,《单片机原理》课程是电子信息科学与技术、电子信息工程、电气工程及其自动化等本科专业学生的重要专业课,是这些专业学生首次学习与微控制器有关的课程,学好本课程内容,掌握单片机应用系统程序设计方法,养成良好的设计规范,对学生进一步学习其它功能更强、复杂性更高的微控制器(或微处理器)有重要意义。
课程主要讲述51系列单片机的内部结构、指令系统和编程设计方法,是一门实践性很强的课程。本实验讲义共安排六个实验,分别为:
实验一、单片机集成开发环境入门;
实验二、I/O口输入输出实验――循环灯程序设计;
实验三、I/O口输入输出实验――LED数码管动态显示与按键去抖程序设计; 实验四、定时器应用实验――LED数码动态显示与矩阵键盘赋值程序设计; 实验五、计数器应用实验――基于热敏电阻和555电路的简易温度报警系统设计; 实验六、中断实验――简易温度控制器设计。
其中实验一是入门实验,为基础性实验,另五个实验为设计性、综合性实验。
围绕“简易温度控制器”这个实际应用系统的设计的各个环节展开,每个实验完成最终系统的一个或二个子模块的设计,最终将各模块集成为一个完整系统。本实验采用自制实验板,三名学生领用1套实验板和1条下载线,组成讨论小组,以个人电脑为设计平台,利用课外时间完成设计、仿真和调试等前期工作,在利用课内2课时时间集中进行点评和设计总结。五个设计性、综合性实验均采用“WAVE 3.2”集成开发环境完成程序设计、仿真,并最终下载到自制的系统板中运行,其设计、仿真、调试过程与真实的工程设计无异,全方位实践CDIO工程教育理念,突出“构思(Conceive)、设计(design)、实现(implement)”三个重要环节,对提高学生工程创新能力、综合应用所学知识解决实际工程问题的能力有重要作用。
在单片机应用系统设计中,最核心的问题如何构建系统监控程序,最重要的程序设计方法是模块化程序设计法,最重要的系统分析方法是状态及转移分析法。本讲义的五个设计性实验的设计内容着重突出状态及转移分析法和模块化程序设计法,力图让学生初步建立单片机应用系统程序的宏观结构框架,而不过分纠缠各种算法子程序的微观结构及编程技巧。就前者而言,未能应用系统程序的宏观结构框架,意味着课程教学目标未能达到;就后者而言,建立后者需经长期专业工作的积累,对初学者不能要求过高,且有各种资料可供参考。
i
单片机原理实验
目 录
前言
实验一、单片机集成开发环境入门
实验二、I/O口输入输出实验――循环灯程序设计
实验三、I/O口输入输出实验――LED数码管动态显示与按键去抖程序设计 实验四、定时器应用实验――LED数码动态显示与矩阵键盘赋值程序设计
实验五、计数器应用实验――基于热敏电阻和555电路的简易温度报警系统设计 实验六、中断实验――简易温度控制器设计
附录一、WAVE 3.2集成开发环境菜单及其功能说明 附录二、AT89S52实验板硬件原理图
附录三、单片机ISP下载编程软件及USB下载器简介 附录四、“简易温度控制器”设计项目程序汇总
ii
单片机原理实验
实验一、单片机集成开发环境入门
一、
实验目地
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 (30H)=50H ? Y返回 图1.3:50mS延时子程
2
开始 初始化 P1.0求反 调用500mS延时子程序 图1.2:产生方波流程循环变量(30H)=0 调用10mS延时子程序 MAIN:
MAIN1: XRL P1,#01H ;P1.0求反
NDELAY: MOV 30H,#0 ;500mS延时子程序 DELAY1: ACALL D10MS ;调用10mS延时子程序
MOV A,30H