1、51单片机实验教学教材0904修改251单片机及其应用实验教学教材编者:胡学海电子科技大学自动化学院2012-09前言 本实验指导书以编译环境的操作、程序下载,单片机自身接口应用为核心进行学习和实验,它们包含:并行接口、定时器、中断以及串行通讯,另外还对单片机外围电路做简单的扩展。其硬件包括ST51/52单片机、UEST-K1仿真实验板一块。实验指导书包含8个实验,若干例程。涵盖了8031单片机的实时仿真;端口、数据/地址总线操作;定时/计数器运用;键盘、LED显示接口;中断处理;串行通讯;C语言试验等内容。同学们通过这些实验,可对MCS-51系列单片机的一些基本应用有所掌握。 任何计算机原理
2、及程序设计语言的学习,一般都是通过:看懂并理解别人的程序开始,修改程序并验证修改效果是第二步,然后才能自己编写程序。通过实验理解软硬件工作原理,调试程序可以理解和验证程序设计的正确性,通过仿真调试可以学习产品开发的过程。显然本实验已经具备了上面所述的全部功能。 至于硬件的设计开发,同学还应当学会使用protel一类电路设计软件,设计出自己的应用系统。这部分内容本实验只提供一些经典电路作为参考。 同学们还可利用实验板提供的硬件,编制一些较为复杂的程序,例如:实时时钟+时间初值设置+闹钟设置+闹钟声响,或者编制一个“计算器”程序,编写一个电子琴程序等,作为“课程设计”。 本实验指导书所有实验程序都
3、是完整的程序,对一般教材上“断章取义”的程序,不能调试的程序,无疑是有效的补充。故本实验板和指导书是单片机初学者一个很好的入门向导。 在实验的开发过程中,许多同学利用课外活动时间对实验指导书和实验板作了验证和改进。编者在此对这些同学表示感谢。 编者 2012年9月 编者:胡学海 1电子科技大学自动化学院 12012-09 1前言 2绪论 单片机开发调试 60.1 单片机系统开发的步骤 60.2 程序的调试 70.3 程序的固化 80.4 实验一 认识实验平台 100.4.1 实验目的 100.4.2 实验内容:安装和学习 keil 开发环境 100.4.2.1 实验平台简介 100.4.2.2
4、 开发环境的软件安装 100.4.2.3 使用 100.4.3 实验步骤 130.4.4 报告要求 150.4.5 程序清单 150.4.6 教学重点及注意事项 17第一章 基 础 实 验 181.1 实验二 数字显示实验 181.1.1 实验目的 181.1.2 实验内容 181.1.3 实验原理 181.1.4 实验步骤 221.1.5 报告要求 221.2 实验三 红绿灯显示实验 231.2.1 实验目的 231.2.2 实验内容 231.2.3 实验原理 231.2.4 实验步骤 24如前。 241.2.5 报告要求 241.3 实验四 键盘扫描实验 251.3.1 实验目的 251.
5、3.2 实验内容 251.3.3 实验原理 251.3.4 实验步骤 271.3.5 报告要求 281.4 实验五 简单计算器实验 291.4.1 实验目的 291.4.2 实验内容 291.4.3 实验原理 292、 51单片机内部RAM 311.4.4 实验步骤 321.4.5 报告要求 321.5 实验六 查表及参数设置实验 331.5.1 实验目的 331.5.2 实验内容 331.5.3 实验原理 331.5.4 实验步骤 331.5.5 报告要求 331.7 实验八 移位及霓虹灯实验 341.7.1 实验目的 341.7.2 实验内容 341.7.3 实验原理 351.7.4 实验
6、步骤 371.7.5 报告要求 371.8 实验九 串行通讯实验 381.8.1 实验目的: 381.8.2 实验内容: 381.8.3 实验原理: 381.8.4 实验步骤 401.8.5 报告要求 411.9 实验十 定时器实验 421.9.1 实验目的 421.9.2 实验内容 421.9.3 实验原理 421.9.4 实验步骤 431.9.5 报告要求 431.10 实验十一 中断处理实验 441.10.0 概述 441.10.1 实验目的 441.10.2 实验内容 451.10.3 实验原理: 451.10.4 实验步骤 461.10.5 报告要求 46第二章 综合实验 472.1
7、 实验十二基于C51的键盘扫描和移位显示 472.1.1 实验目的 472.1.2 实验内容 472.1.3 实验步骤 472.1.4 实验原理 482.1.5报告要求 482.2 实验十三 计算器综合实验 492.2.1 实验目的 492.2.2 实验内容 492.2.3 实验原理 492.2.4 实验步骤 492.2.5 报告要求 492.2 实验十四 时钟综合实验 502.2.1 实验目的 502.2.2 实验内容 502.2.3 实验原理 502.2.4 实验步骤 502.2.5 报告要求 50第三章 自主实验 513.1 自主实验要求 513.2 实验板原理 513.3 自主实验项目
8、 573.3.1 测控系统的监控 573.3.1.1 实验目的 573.3.1.2 实验内容 573.3.2 测控系统的标度变换 573.3.2.1 实验目的 573.3.2.2 实验内容 573.3.3 数字滤波 583.3.3.1 实验目的 583.3.3.2 实验内容 583.3.4 PID控制 583.3.4.1 实验目的 583.3.4.2 实验内容 583.3.5 电子闹钟 593.3.5.1 实验目的 593.3.5.2 实验内容 593.3.6 电子计算器 593.3.6.1 实验目的 593.3.6.2 实验内容 59附 录 60绪论 单片机开发调试 绪论 单片机开发调试 0
9、.1 单片机系统开发的步骤1 设计电路:根据系统功能要求,计划外围接口的种类,数量,以及RAM等。并分配一定的地址。此后选择需要的芯片,设计相应的电路图。细心检查电路图,确认无误后,设计电路板。电路板设计好后就可送到工厂制作。电路及电路板设计常用PROTEL工具软件,此处不作介绍,但希望同学们能利用业余时间自学,这对你今后找工作或实际工作都有深远影响。 2 软件方案设计:根据系统功能要求,画出程序(功能模块)流程图。划定主程序相关模块、各中断服务程序模块的功能。计划模块间参数(变量)的传递及共享方法,变量名称及作用的拟订。 以上各步需作详细笔记,以便编写程序时方便查看。 3 软件设计和调试:编
10、写各功能模块程序,有条件时可直接在仿真机和电路板上进行调试。 第一步 先编写和调试显示模块,正常工作后保存。显示模块的成功,会使初学者提高对余下程序的信心,实际等于成功一半了。然后可以调试键盘模块,同时加上显示模块,增加几句临时语句使按下的键值能显示出来。这两个模块成功后保存起来。以后就可以编写和调试其他模块,一块一块地添加起来,形成一个完整的程序。 4 程序固化:调试成功的程序,会产生一个“filename.hex”的INTEL十六进制格式文件,把这个文件送到“编程器/写入器”中就可以将其固化到芯片内:EPROM、EEPROM、PROM、MCU中。写入成功后,把芯片从“编程器/写入器”上取下
11、,再插到电路板上通电运行。设计基本结束。此后的工作是考验电路板及程序在现场工作的情况,找出设计弱点进行改进。 0.2 程序的调试 本实验利用Keil vision3 作为软件开发环境。该开发环境功能强大,代码编译效率高,可支持多种器件并支持软件仿真及在线调试等功能。 双击桌面上的Keil图标,打开软件界面如下图所示:点开上端的Project下拉菜单,选中其中的New Project选项来建立一个新的工程项目。此时会弹出对话框来提示用户输入新项目的名称及保存目录。填写完毕后选择OK,软件会显示一系列的公司的产品型号供用户选择。选中本项目所使用的单片机型号:Infineon 公司的XC866单片机
12、,点击OK,新项目建立并保存到指定地点,然后自动打开一个空白的项目界面。器件的选择也可以在以后来进行修改,可通过ProjectSelect device for target来进行设置。 在空白的项目界面中,选择FileNew ,则自动生成一个空白的页面,在该页面中可以进行程序的输入。如果使用的是C语言,则需要以 .C为后缀保存该文件;如果使用汇编语言编程,文件的后缀应为.asm。编写完毕并保存过后的文件如果要被当前工程所使用,必须将其包含进来,步骤如下:在Group名上点击右键,在弹出的选项列表中选择Add Files to Group,则刚刚编辑的文件出现在Group下面。这时可以对该程序
13、进行编译、链接并生成可执行代码。 对整个编程环境的设置可以通过在Target上单击右键,选择Options for target来进行修改,在弹出的页面中包含着所有和该工程有关的设置项。为了生成可写入Flash的十六进制代码,需要在OUTPUT选项里选中Creat HEX Files选项。经过编译和链接后,项目文件夹中会出现以HEX为后缀的可执行文件。 对新编写的程序进行编译后,相关信息会显示在窗口下端的消息栏内。如果程序有误则需要返回开始步骤进行修改,直到提示没有错误为止。0.3 程序的固化 编译好的程序可以通过串口写入到单片机内部,过程如下:1 将串口线和计算机及单片机的串口连接起来。2
14、将开发板上RS232下端的两个跳线头短接,双击打开桌面上的STC-ISP.EXE软件,出现操作界面。3 选择单片机型号STC89C51RC或STC89C52RC。4 选择左端的Open File按钮 ,在选择框中找到所生成的后缀为HEX的文件,点击界面下端的Download按钮,5 打开试验板电源,观察信息反馈窗口,如果信息反馈窗口显示成功,文件被写入到Flash中。按下复位按钮,或重开试验板电源, 你的用户板就可以独立工作了。观察程序运行情况,根据显示情况对程序进行相应的修改,直到满意为止。0.4 实验一 认识实验平台0.4.1 实验目的 1 认识实验平台。 2 熟悉KEIL仿真调试软件。
15、0.4.2 实验内容:安装和学习 keil 开发环境 0.4.2.1 实验平台简介实验平台原使用EMMIT-S 51仿真器进行仿真试验,原来只能在DOS环境下运行(参看实验指导书实验一)。我校03级学生雷宇同学将这种仿真器软件重新编写,使之可以在keil c51环境下运行。胡学海,任文伟老师和09级研究生商洪亮,重新自制了试验平台。现有的试验平台,采用STC8952RC单片机,无需仿真软件、支持再线编程和下载、支持C语言编程,使熟悉C语言的学生可以更好地发挥其特长,此外试验平台支持WINDOWS操作系统,支持keil c51编译环境,使用更加方便。 0.4.2.2 开发环境的软件安装 2.1
16、安装Keil C51 V7.0软件。(请自行安装!) 2.2 安装STC-ISP-V394文件夹下的“STC-ISP.EXE”0.4.2.3 使用 使用keilc,开始时,先应当建立“project”工程,方法如下: 1、点击主菜单中的“project”,在下拉菜单中选择“New”,先选择工作目录,再取一个工程名称,点击“保存”。如下图: 2、保存“工程”后,就需要选择MCU型号。自动弹出下面窗口按照你使用的MCU进行选择。通常可以选择Atmel或者Intel公司的89C51/8751,如果作了数据线扩展,应当选择31系列MCU。 3、点击“确定”后,就会回到调试环境,下面需要添加你的程序。
17、左侧框内出现“Target 1”和“Source Group 1”,用鼠标右键点击,在下拉菜单中选择“Add files to Group Source Group 1”,然后选择你已经编好的程序。(包括存放的文件夹和文件名) 4、编辑和修改你的程序 展开“Source Group 1”,在下一行可以看见你的程序名,双击文件名,右边就会看到你的源程序。可以直接进行修改,保存。 5、编译你的程序 先点击的左边1个,屏幕下方会显示有没有错误。 双击此框中有错误的行,光标会自动跳到源文件的对应行,修改之。保存,再编译。如果没有错误了,点击第2个和3个按钮进行“lingk”。(注意:新生成的HEX,O
18、BJ,LST等文件是以“工程名”命名的) 6、运行你的程序 编译好的程序可以通过串口写入到单片机内部,过程如下:将串口线和计算机及单片机的串口连接起来。将开发板上RS232下端的两个跳线头短接,双击打开桌面上的STC-ISP.EXE软件,出现操作界面。选择单片机型号STC89C51RC或STC89C52RC。选择左端的Open File按钮 ,在选择框中找到所生成的后缀为HEX的文件,点击界面下端的Download按钮,打开试验板电源,观察信息反馈窗口,如果信息反馈窗口显示成功,文件被写入到Flash中。按下复位按钮,或重开试验板电源, 你的用户板就可以独立工作了。观察程序运行情况,根据显示情
19、况对程序进行相应的修改,直到满意为止。0.4.3 实验步骤 1、 实验平台 连接1: EMMIT-S通过DB25孔与计算机串口通讯接口相连; 连接2: 将电源线的插头端插入实验平台,另一断接试验电源,红色端子接电源+5V,黑色(白色)端子接电源地。通电前一定要确认没有接错。 注意:任何情况下都不能将电源的极性接反或接错电压,否则将可能损坏实验平台。 以上连接完成后,打开电源,此时电源指示灯应变亮,若指示灯未显示,请立即切断电源重新检查。注意:实验2不能在试验板上表现结果,只能观察单片机内存变化。 1. 进入Keil 仿真环境,打开或者输入程序1。 2. 编译并下载程序1,
20、观察显示状态。 3. 进入Keil 仿真环境,打开或者输入程序2。(*) 4. 点击“View”,在下拉菜单中选择“Memory window”,右下角出现存储器观察窗口,在“Address”的方框中输入:“I:0x00”后回车,你将看到片内RAM内容,单步执行程序,观察地址20H,21H和22H内容变化。 (*) 5. 展开PSW,观察CY的变化。(*) 6. 自己改变程序,采用多种运行方式,体会它的不同之处,观察运行效果。(例如定义:BIT4和BIT5的地址,不大于7FH,观察20H2FH中那个地址与它相关) (*) 7. 编译并下载程序2,观察显示状态(*) 0.4.4 报告要求 1、
21、描述“全速运行”、“单步”“跟踪”、“断点设置”的方法、运行效果和作用。 2、 观察单步运行时,指令产生的效果,补充注释程序中没有注释的语句。(*) 3、 程序2中,能不能删除“AJMP LOOP”语句?为什么? (*) 4、 解释地址20H和BIT4,BIT1之间的关系。观察BIT5变化时,RAM中那个地址内容变了?解释20H2FH与位地址007FH的关系。写出BIT5在那个RAM中,第几位。 (*) 5、 伪指令EQU和BIT在本程序中效果如何?有何不同? (*)0.4.5 程序清单 程序1 在实验板上显示的第1位,显示A的内容的后4位ORG 0000HMOV A,#15HMOV DPTR
22、,#4000HANL A,#1FHMOVX DPTR,A程序2此程序必须用仿真器在keil中相应窗口中观察! DATA1 EQU 21H DATA2 EQU 22H BIT0 BIT 00 BIT1 BIT 01 BIT2 BIT 02 BIT3 BIT 03 BIT4 EQU 07H BIT5 EQU 37H ORG 0000H ;程序起始地址 AJMP MAIN ;跳转到主程序入口 ORG 0030H ;主程序入口 MAIN: MOV SP,#40H ;定义堆栈栈底 MOV DATA1,#11H ;将立即数11H赋给变量DATA1 MOV DATA2,#0H ;将立即数0H赋给变量DATA
23、2 SETB BIT1 SETB BIT2 SETB BIT3 MOV 20H,#0FFH LOOP: CPL BIT2 ;位变量BIT2取反 MOV C,BIT1 CPL BIT2 ; 位变量BIT2取反ANL C,BIT2 ;与MOV BIT5,C ;注意观察20H内容变化 ORL C,BIT3 MOV BIT4,A ;注意观察20H内容变化 SETB BIT0 NOP CLR BIT0 MOV DATA1,#DATA1 ;将DATA1作为立即数赋给变量DATA1 INC DATA2 ;DATA2记录了循环次数 MOV A,DATA2 CPL A MOV DATA1,A AJMP LOOP
24、 END 0.4.6 教学重点及注意事项 1、仿真调试软件Keil 的使用。 2、学会“位寻址”的一般操作,理解20H2FH中的“位寻址”,伪指令BIT和EQU的作用。 (*)3、老师讲解,学生参看实验指导书附录中的图纸,理解试验电路板各部分功能和电路原理。 (*)第一章 基 础 实 验1.1 实验二 数字显示实验 1.1.1 实验目的 1、 掌握单片机传输指令。 2、 掌握7段LED的原理、使用和字符编码。 3、 掌握3总线原理和扩展方法 4、 了解二十进制7段译码驱动器74LS47的运用。 5、 了解“动态显示”的含义。 1.1.2 实验内容 1、 在显示器上显示1,2,3,4,5,6,7
25、,8 2、 单步执行例程,观察数码管的变化,理解动态显示含义。想一想,本例的电路可以作静态显示吗?为什么? 2、 修改程序,将显示的数据顺序变反,显示8,7,6,5,4,3,2,1,体会“位置码”和“数据”的关系。 3、 选作:修改显示程序为“定时中断显示程序”(参看附录42)(*) 1.1.3 实验原理 由图4-1可以看出,当地址A14(P2.6)为1时,选中U18的74LS273,此时就可以从P0口送出显示数据。 数据格式为:高四位表明显示位置(由74LS138译码,经三极管驱动,连到不同的数码管)低四位为要显示的BCD数(经7447译码为7段显示代码并送到各数码管的相应笔画引脚)。 编程
26、时,需按硬件规定的地址(P2=40H)送出显示数据,数据=位置+BCD数。 1、 7段LED(Light Emitting Diode)数码管 我们常常把8位锁存器的输出直接连接到LED数码管上,此时需用软件译码把数字变为“段码”,然后送到锁存器,相应的字型就可以显示出来。注意:一般连线D0对应笔画a,D1对应笔画b,D7对应小数点。软件译码方法可用“查表”法,教材上有介绍。 7段LED显示块是由发光二极管显示字段组成的显示器,分为“共阴”和“共阳”两种(“共阴”“共阳”原理见实验二)。表4-1为7段LED常用字型码。 下面我们来看看表4-1中的字符码是如何产生的。以共阴接法7段LED的“0”
27、“9”字符为例,如表4-2所示。 表3-2无译码的“共阴”显示“段码表” 2、二十进制7段译码驱动器74247(74LS47) 74247为硬件译码器,输入端只需直接输入十进制BCD数09,输出端就可输出字符的“段码”。且自带驱动,可直接连接数码管。其字型见图4-2。 与74247类似功能的集成电路很多,例如74LS46、74LS47、74LS48、74LS49等。3. 相关汇编指令Nop 1 1 空指令,延时1个指令周期1.1.4 实验步骤1. 进入keil环境,建立工程,输入程序,注意文件扩展名为“ASM”并保存到 D:你的文件夹中。2. 下载程序3. 运行程序,观察显示的变化1.1.5
28、报告要求1 为什么动态显示要不断地进行显示循环?2 画出显示程序的原理框图1.2 实验三 红绿灯显示实验 1.2.1 实验目的 1、 掌握程序控制指令。 2、 掌握分支程序、子程序、循环程序的编写方法。 3、 掌握软件延时的方法、了解机器周期和指令周期的概念 3、 了解“静态显示”的含义。 1.2.2 实验内容 1、 在显示实验2的基础上,如果将第7位,第3位,第1位分别看成红灯、黄灯和绿灯,红灯10秒(对应位显示0)后,显示黄灯2秒(对应位显示0),再显示绿灯5秒,循环显示,编写对应程序, 程序要求,延时使用子程序,最好使用标志位。其它内容见显示实验。 2、 单步执行例程,观察数码管的变化,
29、理解动态显示含义。想一想,本例的电路可以作静态显示吗?为什么? 3、 选作:如果会运算指令,请在相应置显示剩余秒数(*) 1.2.3 实验原理 1 显示原理 如实验2所示2 相关汇编指令伪指令ORG 0000H 程序从0000H开始编译END 程序编译结束1.2.4 实验步骤如前。1.2.5 报告要求1、 什么是静态显示和动态显示?2、 为什么动态显示中,每显示一个数要延时若干时间?试修改延时程序的立即数观察运行效果,并作记录。分析延时长好还是延时短好,说明延时量对人眼的视觉影响。(如果没有将程序结构,可以直接使用多个nop语句延时) 1.3 实验四 键盘扫描实验 1.3.1 实验目的 1、
30、掌握MCS-51单片机P1口的查询工作方式(I/O口输入/输出)。 2、 学会单片机键盘的扩展方法和软件处理。 3、 理解“键抖”的含义并掌握其解决方法。 4、 学会流程图的绘制。 1.3.2 实验内容 编写程序实现:每按一次键,LED数码管上显示相应的按键值。观察LED数码管显示情况,体会键盘扫描原理。 1.3.3 实验原理 1、 P1口的结构原理 I/O口的每位锁存器均由D触发器组成。下面以P1口为例介绍一下它们的原理。在CPU的“写锁存器”信号驱动下,将内部总线上的数据写入锁存器中。锁存器的输出端反馈到内部总线上,以响应来自CPU的读锁存器信号,把锁存器的内容读入内部总线上,送CPU处理.而欲使CPU响应读引脚信号时,先由CPU向要读的引脚(如P1.X)的D触发器送一个高电平。如图4-1所示.此时锁存器D端为高电平,则/Q输出为低电平,T1截止,引脚对外为高阻,其状态由外电路决定。CPU可通过读引脚端将P1.X引脚上的数据读入。 2、 矩阵式键盘接口 矩阵式键盘由行线和列线组成,如图3-2所示。本实验中,行线和列线都连接到P1口。按键安装在行、列的交叉点上。键值定义也如图所示。P1口自带上拉电阻,因此没有外接。 按键的识别方法有扫描法和线反转
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1