1、单片机原理及其应用实验指导书南通大学电气工程学院自动化系2023 年 3 月前 言单片机目前已广泛应用在智能仪表、工业控制、家用电器等各个领域,成为现代电子系统的一个极其重要的组成部分,对于电类专业学生来说,掌握单片机知识,具有基本应用技能,才干符合当前社会对专业人才的规定。单片机是一门应用性极强的课程,学生在掌握基本理论知识的基础上,更要通过实验训练,提高其调试动手能力,学会解决具体问题的思绪和手段,具有初步的系统设计和调试能力。因此,为了更好地做好单片机课程的软硬件实验,特编写本实验指导书,书中叙述了各实验的目的、规定,对于设计性实验,给出了列出了接线图、程序结构框图和清单。学生按规定完毕
2、本实验指导书中的实验,可基本掌握MCS-51单片机的结构原理、接口技术以及程序设计技巧。此外:一、所有实验都是互相独立的,顺序上也没有固定的先后关系,在使用本书进行教学时,教师可根据教学规定,选择相应实验。二、对同一问题的解决方法往往不是唯一的,欢迎各位指导教师在使用本实验指导书的过程中提出更完善的实验方案,指出书中的错误和局限性,并希望大家反馈给我们,以便及时修改。目 录第一章 集成开发环境简介 1第二章 演示程序 9第三章 实验项目 15 实验一 简朴程序设计实验 15 实验二 I/O口实验 18 实验三 定期器实验 20 实验四 A/D、D/A转换实验 21 实验五 并行接口扩展实验 2
3、5第一章 集成开发环境简介Super ICES-51 80C51单片机实验仪使用当前流行的Keil C51开发软件,采用uVision2集成开发环境。1.1 Keil C51简介 Keil C51软件是德国Keil 公司开发的功能完善的C51开发软件,近年来在国内得到了迅速普及。Keil涉及以下几个部分:uVision2 IDE、C51编译器、A51汇编器、LIB库管理器、BL51连接器/定位器、uVision硬件调试器、RTX51实时多任务操作系统。Keil软件的最新版本是7.50。用户可以向Keil公司或国内代理商购买正版软件或索取Demo版本,也可以直接到Keil公司网站()下载。1.2
4、 uVision2 集成开发环境变量观测区存储器观测区输出信息窗口编辑区工程项目窗口项目名称栏工具菜单栏快捷图标图1-1 uVision2 集成开发环境uVision2集成开发环境如图1-1所示,有编辑、项目、输出等3个大窗口和File、Edit、View、Project、Debug、Periherals、Tools、SVCS、Windows、Help等下拉菜单。1.2.1 创建、保存工程文献在uVision2环境下,使用工程来管理各个文献。为了开始新的工程,选择“Project/New Projiect”选项,出现如图1-2所示界面。图1-2 创建新工程然后选择此新工程要保存的途径,键入项目
5、名称并保存,项目名称将会出现在集成环境的左上端,名称后缀为“.uv2”,如图1-3所示。图1-3 保存新工程注意项目名称最佳不要超过8个字符、尽量不采用中文,与软件编程时变量的命名习惯一致。1.2.2 MCU选择接着系统出现“Select Device for Target”界面,规定选择目的硬件系统的MCU,如图1-4所示。选择要开发的目的硬件系统的MCU,点击“拟定”即可。对于Super ICES-51实验仪,应选择Atlmel的AT89C51。图1-4 MCU选择1.2.3 添加源文献如图1-5所示,在“Target 1/Source Group 1”上点击右键,选择“/Add File
6、s to Group Source Group 1” 后,出现如图1-6所示界面,添加所要的源程序。源程序涉及“*.C”、“*.ASM”、“*.LIB”、“*.A51”等。图1-5 添加源文献图1-6 选择待添加的源文献1.2.4 目的硬件系统配置源程序添加完毕后,进行“Option for Target”的设定。在菜单栏中,选择“Project/Option for Target”,出现如图1-7所示界面。图1-7 目的硬件系统配置点击Target选项卡,输入目的硬件系统的晶振频率,本实验仪为11.0592 MHz;点击Output选项卡,选中Crest Hex File 选项,在编译时系统
7、将会自动生成目的代码文献*.HEX;点击 Debug选项卡,如图1-8所示,选择仿真模式等。图1-8 debug配置uVision2的仿真模式分为Use Simulator(软件仿真)和Use(硬件仿真)2种。其中Use Simulator选项是将uVision2调试器设立成软件模拟仿真模式,在此模式下不需要实际的目的硬件就可以模拟8051单片机的很多功能。Use Simulator中的“Load Application at Start”是装入程序的复选框,“Go till main()”是表达从应用程序的主函数开始执行的复选框。除非有特殊情况,一般都同时使用这两复选框。Use选项有高级的G
8、DI驱动(ICES仿真器)和Keil Monitor-51驱动。运用此功能可以把Keil C51 嵌入到自己的系统中去,从而实现在目的硬件上调试程序。实验仪选择“use keil Monitor-51 Driver”。选择 “load Application at start”,在启动时直接装载程序,选择“Go till main”,C51开发时,装载后直接运营到main函数。硬件仿真模式下还需配置波特率等,点击“Settings”选项,如图1-9所示。图1-9 串口等配置选择“serial interrupt”,在前面打勾,否则装载过程中,仿真器会发出“嘀”一声长声报警,仿真结果将也许不对的
9、。选择对的的串标语,波特率最高为38400;建议只选cache code。1.2.5 程序编译、连接与下载使用“Project”下拉菜单中的编译命令,“Build Target”()只编译和连接在项目窗口中的修改过的程序;“Rebuild all Target File”()编译和连接项目里所有的源程序文献。编译等无误后,使用菜单栏中的“Debug”下“/start/stop Debug Session”或使用快捷方式()进入硬件调试系统,如图1-10所示。图1-10 硬件调试系统界面“Debug”下“Step”或用快捷方式()进行单步(进子程序)调试;“Debug”下“Step Over”或
10、用快捷方式()进行单步(不进子程序)调试;“Debug”下“Run to cursor line”或用快捷方式()进行运营到当前光标处调试;“Debug”下“Go”或用快捷方式()进行全速运营,直到下一个有效断点;“Debug”下“/start/stop Debug Session”进入、退出硬件调试系统环境。此外,“Debug”下尚有“stop running”、“rst”等操作。第二章 演示程序为了更好地熟悉uVision2集成开发环境仿真开发系统的应用,本指导书提供了一个完整的程序编译、调试例子,具体说明集成环境下的各种操作。程序内容:将110十个数相加,并把其和放入内部 RAM 30H
11、 单元。这个问题有好几种算法,假如单纯从算法上来说,下面所列算法并不是最优的,由于其目的在于让你熟悉仿真系统的各种操作。算法介绍:1加数、被加数、和最终单元(SUM)一方面设立初始值,分别为1、0、0,加法次数单元(R2)设为10;2每次加法所得中间结果存放在被加数单元中(累加器ACC),同时将加数单元增1;3做完一次加法后,加法次数单元减1,并判断是否已为0(即已做完10次加法),假如不为0,继续做下次加法,若为0,则将累加器内容赋值给和最终单元;4做完后,程序原地循环。算法流程图及源程序分别如下:加数、被加数(和中间结果)、和最终结果单元、加法次数单元初始化被加数+加数,结果放在被加数(和
12、中间结果)单元结果放入和最终单元已做完10次加法?NY加数增1堆栈初始化源程序:;变量DATA_REG中的内容为加数(1-10);;ACC中的内容为被加数,同时也是每一次加法后的和中间结果存放单元;;做完10次加法后,再将ACC内容放入指定的和单元SUM中。;*DATA_REGEQU31H;定义加数单元SUMEQU30H;定义和单元;=ORG0000H;复位后PC指针LJMPMAIN;-ORG0100H;从程序存储空间 0100H 单元放程序MAIN:MOVSP, #70H;堆栈指针从复位后的 07H 调整到 70HMOVDATA_REG, #1;加数单元初始值为1MOVSUM, #00H;和
13、单元初始值为0MOVR2, #10;加法循环次数为10CLRA被加数单元初始值为0CLRC;进位初始值为0ADD_LOOP:ADDCA, DATA_REG;被加数+加数,结果放入ACCINCDATA_REG;加数增1DJNZR2, ADD_LOOP;10次加法未做完,继续做MOVSUM,A;10次加法已做完,将和放入SUM单元LJMP$;原地循环;*END2.1 打开仿真环境,新建一个工程文献按第一章介绍建立一个工程名为“test.uv2”的工程文献,选择目的硬件系统的MCU为Atlmel的AT89C51;目的硬件系统配置选择“Use Simulator”,其余配置参考第一章介绍。2.2 输入
14、源程序单击菜单“File/New”,出现源程序编辑窗口,输入源程序,以“*.asm”保存,选择“/Add Files to Group Source Group 1”,将此源程序添加到工程中,如图2-1所示。图2-1 包含源程序的工程界面2.3 源程序编译、连接单击“project/rebuild all target files”菜单或者按 按纽,仿真环境则对源文献进行编译连接,视程序对的与否,有两种编译结果:若程序无误,编译通过,出现如图2-2所示的编译信息窗口,说明编译成功。图2-2 编译成功的信息窗口图2-3 编译不成功的信息窗口若源程序有误,则出现如下的编译连接信息窗口,说明编译错误
15、。可双击错误信息,则在源文献编辑窗口中自动显示犯错信息所在行。2.4 程序调试源程序编译通过并不代表程序就一定对的,这只能说明程序已经没有语法上的错误了,至于在算法、流程上是否对的,则需要对程序进行调试,假如程序运营结果符合事先设计的算法、流程,那么这才干说编写的程序是对的的。初学者很容易犯急噪的毛病,即程序编译通过后,急着让程序连续运营,若运营通过(即结果对的),则认为程序就对的了,其实,这样做并不能说明程序完全对的,有时一个程序对于某些初始条件,可以得到对的结果,而初始条件改变后,却发现结果错误。程序调试的一般做法是:编译、连接通过后,不要急于让程序连续运营,而是先进行手动的单步调试,随时
16、观测各个变量、RAM单元、流程跳转等是否符合算法规定,排除各种非语法性错误,直至程序完全对的;对于复杂程序,必须设计成模块化结构,调试时一个一个模块单独调试,每个模块均对的后,再进行整个程序的调试。在调试过程中,充足运用断点、变量窗口、寄存器窗口、内部RAM窗口等各种工具,提高程序调试效率。编译通过后,使用菜单栏中的“Debug”下“/start/stop Debug Session”或使用快捷方式()进入硬件调试系统,如图2-4所示。图2-4 程序调试界面为了观测每一次加法过程的变化,可通过“View / Memory Window”打开存储器观测窗口,在“Address”栏中输入“D:XX
17、H”(XX为地址),观测内部RAM各单元变化情况。“Address”栏中输入“D”表达内部RAM,“X”表达外部RAM,“C”表达程序存储空间。可以用“Debug”选项下各种调试手段调试程序,如单步(进子程序)、单步(不进子程序)、运营到当前光标处、断点运营、全速运营等,以及停止、复位等等,以便进一步熟悉仿真系统的各种操作。第三章 实验项目实验一 简朴程序设计实验一、实验目的掌握 uVision2 IDE单片机集成开发软件的应用,熟悉单片机仿真开发环境,掌握基本的单片机软件调试方法,为后续实验做好准备。开 始R0=0055H送2023HDPTR+1,R0+1结 束R0=FFHHNY掌握单片机内
18、部RAM之间、内外RAM之间、外部RAM之间的数据传送操作;掌握MCS-51汇编语言程序设计方法。二、实验内容1、置数程序把2023H20FFH的内容所有置成55H。ORG 0000HLJMP MAINORG 0100HMAIN:MOV DPTR,#2023HMOV R0,#00HMOV A,#55HLOOP: MOVX DPTR,AINC DPTRINC R0CJNE R0,#0FFH,LOOPLJMP $END(1)实验程序框图(2)实验环节 用连续或单步方式运营程序,检查202320FF单元中程序执行前后的内容变化。ORG 0000HMOV DPTR,#2023HMOV R0,#00HM
19、OV A,#0FFHLOOP: MOVX DPTR,AINC DPTRINC R0CJNE R0,#0FFH,LOOPEND(3)思考假使把2023H20FFH中的内容改成FFH,如何修改程序。ORG 0000HMOV DPTR,#2023HMOV R0,#00HMOV A,#0FFHLOOP: MOVX DPTR,AINC DPTRINC R0CJNE R0,#0FFH,LOOPEND2、拆字程序把2023H的内容拆开,高位送2023H低位,低位送2023H低位,2023H、2023H高位清零,一般本程序用于把数据送显示缓冲区时用。(1)实验程序框图开 始2023H内容送A高低位互换,屏蔽高
20、位后送2023H2023H内容送A屏蔽高位后送2023H结 束ORG 0000HLJMP MAINORG 0100HMAIN:MOV DPTR,#2023HMOVX A,DPTRMOV R0,ASWAP AANL A,#0FHINC DPTRMOVX DPTR,AMOV A,R0ANL A,#0FHINC DPTRMOVX DPTR,ALJMP $END(2)实验环节用连续或单步方式运营程序,检查2023H2023H单元中内容变化情况。(3)思考 如何用断点方式调试本程序。3、内部、外部RAM数据传送程序按以下规定自行设计程序流程图,编写、调试程序。(1) 内部RAM之间数据传送;将内部RAM
21、 40H4FH单元内容传送到内部RAM 60H6FH单元中。源数据(首址存放在R2单元中);目的数据(首址存放在R4单元中);数据字节数存放在R6单元中。ORG 0000H MOV R6, #10H MOV R2, #40H MOV R4, #60HLOOP: MOV A, R2 MOV R4, A INC R2 INC R4 DJNZ R6, LOOP SJMP $ END (2) 内外RAM之间数据传送;将内部RAM 40H4FH单元内容传送到外部RAM 2040H204FH单元中。源数据(首址存放在R2单元中);目的数据(首址存放在DPTR0中);数据字节数存放在R6单元中。 ORG 0
22、000H MOV R2,#40H MOV DPTR0,#2040H MOV R6,#10HLOOP:MOV A,R2 MOVX DPTR0,A INC R2 INC DPTR0 DJNZ R6,LOOP SJMP $ END(3) 外RAM之间数据传送;将外部RAM 1000H1111H单元内容传送到外部RAM 2023H2111H单元中。源数据(首址存放在DPTR0中);目的数据(首址存放在DPTR1中);数据字节数存放在R6.R7单元中。 实验二 I/O口实验一、实验目的:(1)学习单片机I/O口的使用方法;(2)学习延时子程序的编写;(3)掌握基本的单片机硬件调试方法。二、实验预备知识:
23、(1)P1口为准双向口,每位都可独立地定义为输入或输出,在作输入使用前,必须向口锁存器相应位写入“1”,该位才干作为输入;(2)本实验中延时子程序采用循环来实现,定期时间=机器周期时间*程序总机器周期数(本实验箱晶振频率为11.0592 MHz)。三、实验内容:P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。(1)左移点亮1只发光二极管;(2)右移点亮1只发光二极管;(3)左移点亮2只相邻发光二极管;(4)右移点亮2只相邻发光二极管。 ORG 0000H LJMP MAIN ORG 0100HMAIN:MOV R0,#08H MOV A,#0FFH MOV R1,#08HLO
24、OP:RRC A MOV P1,A LCALL DELAY DJNZ R0,LOOPLOOP1:RLC A MOV P1,A LCALL DELAY DJNZ R0,LOOP1DELAY:MOV R7,#20DEL1:MOV R6,#150DEL2:MOV R5,#100DEL3:DJNZ R5,DEL3 DJNZ R6,DEL2 DJNZ R7,DEL1 RET END四、实验程序框图给出实验内容(1)参考流程图,其余内容自行设计。开 始P1口初始化点亮1位发光管延 时A左移一位五、实验硬件连线将P10-P17按顺序连接到LED1-LED8六、实验思考(1)修改延时常数,改变发光二极管闪亮时
25、间;(2)修改程序,改变发光二极管闪亮个数、方向。实验三 定期器实验一、实验目的:(1)学习单片机定期器的使用方法;(2)掌握单片机长定期方法;(3)掌握基本的单片机定期器调试方法。二、实验预备知识:本实验箱晶振频率为11.0592 MHz,定期器工作方式1下最长定期时间为65536 us,假如规定定期时间大于此值,则可采用多次定期方法来实现长定期。三、实验内容:编写程序,使定期器每500 ms对内部RAM单元40H的内容加1,然后用P1口控制的8只发光二极管显示40H单元的二进制数值。四、实验思考修改定期时间,改变数值显示速度。实验四 A/D、D/A转换实验一、实验目的1、掌握A/D、D/A
26、转换芯片与单片机接口的方法;2、了解A/D芯片ADC0809转换性能及编程方法;3、了解D/A芯片DAC0832转换性能及编程方法;4、了解如何通过A/D转换进行数据采集的基本方法;5、了解如何通过D/A转换进行数字控制的基本方法。二、实验内容运用实验系统上的电位器提供ADC0809的模拟量输入,A/D转换后数字量送入DAC0832,产生模拟量输出,用电压表测量比较电位器输出电压和D/A输出电压。三、实验预备知识1、ADC0809是带8位A/D转换器,8路开关以及微解决机兼容的控制逻辑的CMOS组件,它是逐次逼近式A/D转换器,可以和单片机直接相连。2、由于DAC0832为电流输出,为取得电压
27、输出,需在电流输出端Iout1、Iout2分别接上运算放大器LM324的B-、B+;使Rfd与LM324的BOUT连接,Rfd即为运算放大器的负反馈电阻端;由于Vref=5V,所以由运算放大器输出电压(测试点BOUT)为负电压(0到-5V)。四、实验原理图五、实验硬件连线1、ADC0809系统连线(1)将跳线器插在JP22_1上;(2)使用导线把MON51仿真器区的A0,A2,A3分别连接并行模数转换模块的DA,DB,DC;(3)RD和WR分别接51MONI模块的RD和WR ;(4)使用导线连接A15和并行模数转换模块的CS;(2)用导线连接MON51模块的AD0-AD7与并行数模转换模块的D
28、0-D7;(6)使用导线连接INT0和并行模数转换模块的/EOC;(7)并行模数转换模块的REF+,REF分别连接VCC和GND ; (8)使用导线连接并行模数转换模块的IN0与电位器模块的中间脚VW,VH连接VCC,VL连接GND;(9)实时时钟模块的1/64分频与并行模数转换模块的CLK相连。实时时钟加2M的晶振,用导线连接CLK-IN与2MHZ;2、DAC0832系统连线(1)将跳线器插在JP71;(2)用导线连接MON51模块的AD0-AD7与并行模数转换模块的DI0-DI7;(3)用导线连接WR与并行模数转换模块的WR1和WR2;(4)用导线连接A14与并行模数转换模块的CS和Xfe
29、r ;(5)用导线连接ILE,Vref和+5V;(5)使用导线连接Iout1与模拟运放模块的B-;(6)使用导线连接Iout2与模拟运放模块的B+,B+同时与电源的地相连接;(7)使用导线连接Rfb与模拟运放模块的BOUT;(8)使用导线连接模拟运放模块的V+与+12V,V-与-12V;六、实验思考:修改程序,用其它通道轮流采样显示。实验五 并行接口扩展实验一、实验目的掌握可编程并行接口芯片8155的接口原理使用,熟悉对8155初始化编程和输入、输出程序的设计方法。二、实验内容学生按以下规定设计程序流程图,编写、调试程序。在8155的A、B、C口用示波器测出每个口线的波形。三、实验原理图四、实验硬件连线1、运用跳线器连接JP21;2、运用导线连接8155模块的CE与MON51模块的A10,IOM接A9,ALE接ALE,RD接RD,WR接WR;五、实验思考修改程序,用PB口作输入,PA口作输出,观测运营情况。
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100