1单片机原理与接口技术实验讲义目录第一章开发环境安装使用说明………………………3第二章基于51单片机系统资源实验………………...122实验1IO开关量输入实验…………………………………………...12实验2IO输出驱动继电器(或光电隔离器)实验………………...13实验3IO输入/输出---半导体温度传感器DS18B20实验…………14实验4外部中断----脉冲计数实验……………………………………15实验5计数器实验…………………………………………………….16实验6秒时钟发生器实验…………………………………………….17实验7PC机串口通讯实验…………………………………………...18实验8RS485通讯实验……………………………………………….19实验9PWM发生器(模拟)实验…………………………………..20实验10蜂鸣器实验…………………………………………………...21第一章开发环境安装使用说明一、KeilC51集成开发环境的安装1.KeiluVision2的安装步骤如下3将安装文件拷贝到电脑根目录下,然后双击图标,如图1-1所示:注意:去掉属性里的只读选项。图1-1启动安装环境对话框2.选择EvalVersion。然后一直next直至安装完成,如图1-2所示:二.在KeiluVision2中新建一个工程以及工程配置1.打开KeilC环境,如图1-3所示。4图1-3打开工程对话框2.新建工程或打开工程文件:在主菜单上选“Project”项,在下拉列表中选择“NewProject”新建工程,浏览保存工程文件为扩展名为“.Uv2”的文件。或在下拉列表中选择“Openproject”打开已有的工程文件。如图1-4所示:图1-4新建工程3.环境设置:新建工程文件后,在工具栏中选择如下图选项设置调试参数及运行环境,或从主菜单“Project”项中选择“OptionsforTarget‘Target1’”,打开如下图1-5设置窗口。5图1-5选择目标器件在“Device”项下选择要仿真的芯片类型,如:Atmel—AT89S51。在“Target”项下的晶振设置中修改为硬件电路所用晶振频率,如:6MHz。在“Output”项下如在CreatHEXFile选项前打钩,则在编译的同时生成可下载执行的HEX文件,用仿真芯片仿真时可以不进行此项设置。在“Debug”项下选择使用硬件仿真。如图1-6所示:6图1-6Debug窗口设置点击“Settings”按钮,进入串口选择及波特率设置窗口,如图1-7所示。图1-7端口设置7选择合适的波特率和串口号。项不可选,把前面的勾打掉,点OK保存设置。在“OptionforTarget‘Target1’”窗口中,点确定,退出环境设置。4.新建文件:在主菜单的“File”下拉列表中选“New.....”新建文件。编辑文件并保存文件。文件保存为扩展名为“.c”或“.asm”的文件,如图1-8所示。图1-8新建main.c或.asm文件5.添加文件:在左边的“ProjectWindow”窗口中,用右键选取“SourceGroup1”,在弹出的列表中选择“AddFilestoGroup‘SourceGroup1’”,弹出浏览窗口,如图1-9所示:8图1-9添加main.c或.asm文件浏览添加编辑好的C或ASM文件。添加完毕点“close”,关闭窗口。这时发现添加的文件名已经出现在“ProjectWindow”窗口中。双击刚添加的C或ASM文件。打开编辑文件窗口如图1-10所示:图1-10工程窗口三.工程的编译、调试1.译链接:在“BuildBar”工具条中,选第二项编译当前文件,第三项为编译全部。编译完成、在下方“Output”窗口中出现编译结果,如图1-11所示:9图1-11编译窗口2.仿真调试:点击调试按钮,或从主菜单选取调试“Start/StopDebugSession”(快捷键CTRL+F5),程序下载到仿真芯片中。窗口下方显示下载进度条。100%下载完成后出现如图1-12所示。10图1-12下载窗口3.序仿真:运行“DebugBar”调试工具条,进行单步、进入、跳出、运行到光标、全速运行等。11第二章基于51单片机系统资源实验实验1IO开关量输入实验目的:学习单片机读取IO引脚状态的的方法。内容:编程读取IO引脚状态。设备:EL-EMCU-I试验箱、EXP-89S51/52/53CPU板。编程:首先要把相关的引脚设置在IO的输入状态,然后写一个循环,不停地检测引脚的状态。步骤:1、将CPU板正确安放在CPU接口插座上,跳线帽JP2短接在上侧。2、连线:用导线将试验箱上的的IO1---IO8分别连接到SWITCH的8个拨码开关的K1---K8的输出端子K1---K8上,连接好仿真器。3、实验箱上电,在PC机上打开KeilC环境,打开实验程序文件夹IO_INPUT下的工程文件IO_INPUT.Uv2编译程序,上电,在程序注释处设置断点,进入调试状态,打开窗口Peripherals--IO-Port--P0,改变开关状态,运行程序到断点处,观察窗口的数值与开关的对应关系。12实验2IO输出驱动继电器(或光电隔离器)实验目的:学习IO输出控制方法。内容:通过单片机的IO引脚驱动继电器(或光电隔离器)动作。设备:EL-EMCU-I试验箱、EXP-89S51/52/53CPU板。编程:首先要把相关的引脚设置在IO的输出状态,然后写一个循环,依次输出高低电平。步骤:1、将CPU板正确安放在CPU接口插座上,跳线帽JP2短接在上侧。2、连线:用导线将MCU的IO1、IO2分别连接到RELAY的输入R_IN和PHOTO的输入P_IN上,R_OUT和P_OUT分别连接到发光二极管LAMP的输入孔L1和L2上。连接好仿真器。3、实验箱上电,在PC机上打开KeilC环境,打开实验程序文件夹IO_OUTPUT下的工程文件IO_OUTPUT.Uv2编译程序,上电,进入调试状态,打开窗口Peripherals--IO-Port--P0,单步运行程序,观察窗口的数值变化。4、全速运行程序,观察继电器的发光二极管的亮灭变化,同时确定继电器动作(或光电隔离器导通)与IO输出电平的关系。13实验3IO输入/输出---半导体温度传感器DS18B20实验目的:学习IO引脚编程实现交替输入、输出的方法。内容:通过单片机的IO引脚与半导体温度传感器实现单线通讯。设备:EL-EMCU-I试验箱、EXP-89S51/52/53CPU板。编程:根据18B20的资料(见备注),将IO引脚设置在输出状态,分别模拟出不同的命令时序,例如复位、读寄存器等;再改变IO引脚的为输入状态,接收传感器输出的数据。步骤:1、将CPU板正确安放在CPU接口插座上,跳线帽JP2短接在上侧。2、连线:用导线将MCU的IO1连接到TEMPSENSORDS18B20的DQ。3、实验箱上电,在PC机上打开KeilC环境,打开实验程序文件夹IO_INOUTPUT下的工程文件IO_INOUTPUT.Uv2编译程序,上电,进入调试状态,按照程序注释说明设置断点,全速运行程序到断点处,观察寄存器R7中的数据,用手摸住传感器DS18B20芯片,再运行到断点处,比较R7的变化。4、备注:DSl8B20数字温度计提供9位(二进制)温度读数指示,器件的温度信息经过单线接口送入DSl8B20或从DSl8B20送出,因此从主机CPU到DSl8B20仅需一条线(和地线),DSl8B20的电源可以由数据线本身提供而不需要外部电源。因为每一个DSl8B20在出厂时已经给定了唯一的序号,因此任意多个DSl8B20可以存放在同一条单线总线上,这允许在许多不同的地方放置温度敏感器件。DSl8B20的测量范围从-55到+125增量值为0.5可在ls(典型值)内把温度变换成数字。14实验4外部中断----脉冲计数实验目的:学习单片机的外部中断使用方法。内容:对外部中断计数显示。设备:EL-EMCU-I试验箱、EXP-89S51/52/53CPU板。编程:首先第一步设置单片机的IO为输入状态,第二步设置引脚的中断触发方式,一般设置为边沿触发,第三步,设置外部中断的优先级,第四步,编写中断服务程序,包括中断入口跳转等,第五步,设置中断使能,允许外部引脚触发中断。第六步,设置死循环,主程序结束,交给中断服务程序完成计数。步骤:1、将CPU板正确安放在CPU接口插座上,跳线帽JP2短接在上侧。2、连线:用导线将MCU的INT0连接到单脉冲输出孔P-,连接好仿真器。3、实验箱上电,在PC机上打开KeilC环境,打开实验程序文件夹EXT_INT1下的工程文件EXT_INT1.Uv2,编译程序,上电,进入调试状态,按照程序注释说明设置断点,全速运行程序,每按下一次单脉冲开关Paulse,程序运行到断点处一次,观察寄存器R1的变化。15实验5计数器实验目的:学习单片机的定时/计数器的计数功能使用方法。内容:对外部单脉冲信号进行计数,计数10个后产生计数中断。设备:EL-EMCU-I试验箱、EXP-89S51/52/53CPU板。编程:使用定时/计数器的计数功能,将外部时钟信号加在计数器的计数时钟输入引脚上,当计数10次后,计数器溢出,触发标志位,编程控制分频输出引脚电平翻转,产生分频后的时钟信号。步骤:1、将CPU板正确安放在CPU接口插座上,跳线帽JP2短接在上侧。2、连线:用导线将MCU的IO1和T0分别连接到发光二极管L1的输入L1上和单脉冲输出孔P-,连接好仿真器。3、实验箱上电,在PC机上打开KeilC环境,打开实验程序文件夹COUNTER下的工程文件COUNTER.Uv2,编译程序,上电,进入调试状态,单步运行程序观察每条语句执行后相关寄存器的变化。4、上电全速运行程序,按下5次单脉冲按键后发光二极管点亮,再按5次后发光二极管熄灭,如此重复。16实验6秒时钟发生器实验目的:学习单片机的定时/计数器的定时功能使用方法。内容:产生频率为0.5Hz的时钟输出。设备:EL-EMCU-I试验箱、EXP-89S51/52/53CPU板。编程:使用定时/计数器的定时功能,时钟源采用系统时钟,根据时钟源的频率配置初值寄存器,使能定时器中断,在中断服务程序中翻转一个IO引脚输出,产生0.5Hz的时钟输出。步骤:1、将CPU板正确安放在CPU接口插座上,跳线帽JP2短接在上侧。2、连线:用导线将MCU的IO1连接到发光二极管L1的输入L1上,连接好仿真器。3、实验箱上电,在PC机上打开KeilC环境,打开实验程序文件夹TIMER_SECOND下的工程文件TIMER_SECOND.Uv2,编译程序,上电,进入调试状态,单步运行程序观察每条语句执行后相关寄存器的变化。4、全速运行程序,观察发光二极管的亮灭情况。5、备注:现在的单片机系统时钟较高,难于产生1秒的定时中断,所以,可以设置定时时间为50毫秒,在中断服务程序中设置程序计数,当累加到1秒后,控制输出IO引脚电平翻转,驱动发光二极管。17实验7PC机串口通讯实验目的:学习单片机串口的使用方法。内容:与PC机实现通讯。设备:EL-EMCU-I试验箱、EXP-89S51/52/53CPU板。编程:第一步,配置串口工作在8位,波特率可变异步通讯工作方式,波特率由定时器1确定,同时使能其中断并清除其中断标志位;第二步,配置定时器1,工作在8位自动重装入模式,根据波特率计算其初值。第三步,编写串口中断服务程序,只处理接收中断,对发送中断只清除标志,不做其他处理。第四步,设置死循环,交由中断服务程序处理。步骤:1、将CPU板正确安放在CPU接口插座上,跳线帽JP2短接在上侧。2、连线:用附带的直连串口线连接试验箱的DB9和计算机的串口,接好仿真器。3、实验箱上电,在PC机上打开KeilC环境,打开实验程序文件夹RS232下的工程文件RS232.Uv2,编译程序,上电,进入调试状态,单步运行程序观察每条语句执行后相关寄存器的变化,全速运行程序,拔掉开发板上的串口线,强制