单片机技术实验指导书精.docx

上传人:b****5 文档编号:11756905 上传时间:2023-03-31 格式:DOCX 页数:53 大小:1.36MB
下载 相关 举报
单片机技术实验指导书精.docx_第1页
第1页 / 共53页
单片机技术实验指导书精.docx_第2页
第2页 / 共53页
单片机技术实验指导书精.docx_第3页
第3页 / 共53页
单片机技术实验指导书精.docx_第4页
第4页 / 共53页
单片机技术实验指导书精.docx_第5页
第5页 / 共53页
点击查看更多>>
下载资源
资源描述

单片机技术实验指导书精.docx

《单片机技术实验指导书精.docx》由会员分享,可在线阅读,更多相关《单片机技术实验指导书精.docx(53页珍藏版)》请在冰豆网上搜索。

单片机技术实验指导书精.docx

单片机技术实验指导书精

《单片机技术》

实验指导书

刘宝成

内蒙古民族大学物理与电子信息学院

2011年3月

前言

单片机技术课程是一门实践性很强的理论与实践相结合的课程,实践教学环节是单片机课程不可缺少的重要环节。

单片机技术课程安排的实验旨在培养学生的实际动手能力,锻炼学生的软件编程、调试能力,提高学生对单片机的软、硬件综合开发能力。

单片机技术实践教学环节安排30学时,包括10个实验项目。

项目1P1口输入/输出实验、项目2简单I/O口扩展实验、项目3LED数码管动态显示实验、项目4LCM液晶模块显示实验、项目5外部中断实验、项目6定时器/计数器应用实验、项目7八位并行A/D转换器实验、项目8八位并行D/A转换器实验、项目912位串行A/D转换器实验、项目1012位串行D/A转换器实验。

实验设备采用安装有KeilμVision4C51集成开发环境的计算机和配有E-lab-KeilC51CPU板的EL-MUT-III单片机实验挂箱。

实验要求学生在EL-MUT-III单片机实验挂箱及相应的扩展模块上设计与连接电路,利用KeilμVision4C51集成开发环境采用汇编语言或C语言编写程序,实现单片机系统方案设计、硬件电路连接、软件程序编写、在线仿真调试以及程序下载运行等单片机系统开发的全部过程,让学生从实验中体会具体硬件接口的应用技巧,进一步理解单片机外围接口芯片使用方法,逐步掌握单片机系统的开发和应用方法。

书后附有KeilμVision4C51集成开发环境的简单使用说明。

通过单片机技术实验的学习,学生可以掌握80C51系列单片机的输入/输出接口、定时器/计数器、中断系统等内部模块的应用方法,熟悉各种类型的外围接口芯片的使用,提高使用汇编语言或C语言编写单片机程序的能力,锻炼发现问题、分析问题、解决问题的能力,初步具备能够独立进行单片机控制系统开发的工作能力。

本书中的参考程序都经过调试和使用,所以正确性是有保证的,但是不是唯一的,也不一定是最优的。

项目1P1口输入/输出实验

一、实验目的

1、学习P1口的使用方法

2、学习汇编语言延时程序的编写和使用

二、实验内容

1、P1口做输出口使用。

P1口的8个引脚分别接8只LED发光二极管。

编写程序,使LED

发光二极管间隔时间约1秒钟逐个点亮,并周而复始进行循环。

2、P1口做输入/输出口使用。

P1口的高4位,即P1.4、P1.5、P1.6、P1.7分别接4只LED

发光二极管;P1口的低4位,即P1.0、P1.1、P1.2、P1.3分别接4只拨动开关。

编写程序,使4只LED发光二极管的亮、灭与4只拨动开关的高、低电平的状态相对应(开关拨向下方是高电平。

三、实验原理

1、使用P1的注意事项

P1口为准双向口,P1口的每一位都能独立地定义为输入位或输出位。

作为输入位时,必须向锁存器相应位写入“1”,该位才能作为输入。

AT89S52单片机上电复位时,所有口锁存器均置为“1”,但在单片机运行过程中有的口锁存器可能被写过“0”,如果该口作为输入口使用,在使用前就必须写入一个“1”,使它成为一个输入口。

为可靠起见,当一个口被定义为输入口时,总是在读该口输入状态之前,先向该口写入一个“1”。

2、延时程序的编写

再来看一下延时程序的实现。

现常用的有两种方法,一是用定时器中断来实现,一是用指令循环来实现。

在系统时间允许的情况下可以采用后一种方法。

本实验系统晶振为6MHz,则一个机器周期为

1

122

6

s

MHz

μ

⨯=。

要写一个延时1s的

程序,需要使用如下形式一个三层循环结构的延时程序。

DELAY:

MOVR5,#x(1

DEL1:

MOVR6,#y(2

DEL2:

MOVR7,#z(3

DEL3:

DJNZR7,DEL3(4

DJNZR6,DEL2(5

DJNZR5,DEL1(6

RET(7

上面MOVRn,#data是1个机器周期指令、DJNZRn,rel是2个机器周期指令、RET

是2个机器周期指令,所以每执行一条MOVRn,#data指令需要2sμ,每执行一条DJNZRn,rel指令需要4sμ,执行RET指令需要4sμ。

整段程序的执行时间可由下述公式计算:

延时时间(2(2(24444zyx=+++⨯+⨯+⨯+

由于有三个未知量,没有办法直接解出,可先确定两个内层循环的初始值,再计算最外层循环的初始值,根据计算结果再反复修正。

但是实际上这种试解的过程,非常麻烦,工作量也很大。

可以使用计算机编写程序进行试解计算。

如下(该软件可通过软件界面下方的Email地址免费索取。

将软件计算出来的第1组参数,带入上述公式验证一下。

即0H251zFB==,42H66y==,0H15xF==。

延时时间(2(2(242514664154999996sμ=+++⨯+⨯+⨯+=,由于该计算结果已经考虑了LCALL或ACALL调用子程序的执行时间4sμ(这两条指令均为2机器周期指令。

所以,用第1组参数的延时程序执行一次的延时时间正好是1秒钟。

3、实验原理图

实验原理图如下,图1为P1口输出实验原理图,图2为P1口输入/输出实验原理图。

图1P1口输出实验原理图

图2P1口输入/输出实验原理图

四、实验步骤

在计算机的D盘上以自己的学号命名的文件夹。

打开该文件夹,首先在该文件夹下新建一个以自己的名字命名的TXT格式的空文档,然后,依次新建SY1、SY2、…、SY10共10个文件夹。

后面的所有实验的程序及其相关文档均存放在相应的文件夹下。

1、P1口做输出口使用

①将CPU板上的P10~P17用连接导线分别接到发光二极管L1~L8上。

注意:

先不要接通电源。

②在计算机上打开KeilμVision4C51软件。

按实验内容及硬件电路连接情况编辑实验程序,注意源程序中要尽量多加注释,以便于检查。

然后进行编译、修改,直到没有任何错误。

KeilμVision4C51软件的使用请参考附录。

③检查实验挂箱的CPU板与计算机的串口连接电缆是否接好,再次检查实验连线是否正确,检查KeilμVision4C51软件的相关设置是否正确。

确认无误后,接通实验挂箱的电源,进行在线仿真。

④观察发光二极管的状态是否与实验要求一致,如果不一致,请重新修改源程序,再进行编译及仿真调试,直至符合实验要求。

2、P1口做输入/输出口使用

①关掉实验挂箱的电源,将CPU板上的P10~P13用连接导线分别接到平推开关K1~K4上,P14~P17用连接导线分别接到发光二极管L5~L8上。

②按实验内容及硬件电路连接情况编辑实验程序,注意源程序中要尽量多加注释,以便于检查。

然后进行编译、修改,直到没有任何错误。

③同P1口做输出口使用的步骤③。

④同P1口做输出口使用的步骤④。

五、程序流程图

图3P1口输出程序流程图图4P1口输入/输出程序流程图

六、参考程序

1、P1口做输出口使用

①汇编源程序

②C51源程序

2、P1口做输入/输出口使用。

①汇编源程序

②C51源程序

七、思考题

1、在P1口输出实验中,为什么和单片机的P1口相连的是发光二极管的阴极而不是阳极?

2、在P1口输入/输出实验中,为什么要把P1口的低4位事先置1?

如果不把P1口的低4位事先置1会怎样?

3、在这两个实验中,把P1口换成P0口可以吗?

为什么?

换成P2口或P3口哪?

项目2简单I/O口扩展实验

一、实验目的

1、学习在单片机系统中扩展简单I/O接口的方法。

2、学习模拟交通灯控制的实现方法。

3、学习数据输入/输出程序的设计方法。

二、实验内容

1、扩展实验挂箱上的74LS273做为输出口,控制六个发光二极管亮、灭,实现模拟交通灯

控制。

2、利用74LS244做为扩展输入口,读取开关状态,扩展实验挂箱上的74LS273做为输出口,

控制八个发光二极管,将读取的开关状态通过发光二极管显示出来,开关拨到下方(高电平时对应的发光二极管亮(低电平。

三、实验原理

1、模拟交通灯控制原理

假设交通灯的亮灭规律为:

初始状态是两个路口的红灯全亮,3秒钟之后,东西路口的绿灯亮,同时南北路口的红灯亮,东西方向通车,延时30秒钟后,东西路口绿灯灭,黄灯开始闪烁(亮0.3秒、灭0.3秒,闪烁5次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时30秒钟后,南北路口的绿灯灭,黄灯开始闪烁(亮0.3秒、灭0.3秒,闪烁5次后,再切换到东西路口方向,重复上述过程。

本实验需要用到实验箱上八个发光二极管中的六个,即红、黄、绿各两个。

不妨将L1(红、L2(绿、L3(黄做为东西方向的指示灯,将L5(红、L6(绿、L7(黄做为南北方向的指示灯。

各发光二极管的阳极通过保护电阻接到+5V的电源上,阴极接到输入端上,因此使其点亮应使相应输入端为低电平。

2、简单I/O口扩展原理

AT89S52单片机带有4并行口,共32根口线。

但是在有些情况下,这些端口仍然不够用,这时就需要进行端口的扩展。

做并行口扩展时,P0口为数据总线和地址总线的低8位,P2口为地址总线的高8位,读、写信号分别由P3.7(RD和P3.6(WR提供。

MCS-51(AT89S52与MCS-51是兼容的外部扩展空间很大,但数据总线口和控制信号线的负载能力是有限的。

若需要扩展的芯片较多,则MCS-51总线口的负载过重,这时就需要用到总线驱动器。

74LS244是3态8位单向缓冲驱动器,它主要用于三态输出,作为地址驱动器,时钟驱动器和总线驱动器,定向发送器等。

在本实验中用作扩展输入口,可以减轻总线口的负担。

74LS244的最大低电平输出电流可以达到24mA,高电平输出电流可达-15mA。

74LS244的管脚排列及逻辑真值表见图2-1和图2-2。

图2-174LS244管脚及内部结构图

图2-274LS244逻辑真值表

74LS273是一种带清除功能的8D触发器,1D~8D为数据输入端,1Q~8Q为数据输出端,正脉冲触发,低电平清除,常用作8位地址锁存器。

只有在清除端保持高电平时,才具有锁存功能,锁存控制端为11脚CLK,采用上升沿锁存。

CPU的ALE信号必须经过反相器反相之后才能与74LS273的控制端CLK端相连。

图2-3和图2-4分别是74LS273的管脚图和真值表。

74LS273在本实验中作为输出口扩展,最大工作频率为30MHz,该芯片的最大低电平输出电流可以达到16mA,高电平输出电流可达-0.8mA。

3、实验原理图

实验原理图如下,图2-5为模拟交通灯控制实验原理图,图2-6为用发光二极管显示开

关状态实验原理图。

2-5模拟交通灯控制实验原理图

图2-374LS273管脚图

图2-474LS273真值表

图2-6用发光二极管显示开关状态实验原理图

四、实验步骤

1、模拟交通灯控制

①将实验挂箱上74LS273的输出00~02用连接导线分别接到发光二极管L1~L3上,03~05用连接导线分别接到发光二极管L5~L7上。

74LS273的片选CS273接CS2,此时74LS273的地址是0CFB0H。

注意:

先不要接通电源。

②在计算机上打开KeilμVision4C51软件。

按实验要求及实际硬件电路连接情况编辑实验程序,注意源程序中要尽量多加注释,以便于检查。

然后进行编译、修改,直到没有任何错误。

KeilμVision4C51软件的使用请参考附录。

③检查实验挂箱的CPU板与计算机的串口连接电缆是否接好,再次检查实验连线是否正确,检查KeilμVision4C51软件的相关设置是否正确。

确认无误后,接通实验挂箱的电源,进行在线仿真。

④观察发光二极管的状态是否与实验要求一致,如果不一致,请重新修改源程序,再进行编译及仿真调试,直至符合实验要求。

2、用发光二极管显示开关状态

①关掉实验挂箱的电源。

②将实验挂箱上74LS244的IN0~IN7用连接导线分别接到平推开关K1~K8上,片选信号CS244接CS1,此时74LS244的地址是0CFA8H。

③将实验挂箱上74LS273的00~07用连接导线分别接到发光二极管L1~L8上,片选信号CS273接CS2,此时74LS273的地址是0CFB0H。

④编写程序,在线仿真,全速运行。

⑤拨动开关K1~K8,观察发光二极管状态的变化。

五、

程序流程图

六、参考程序

1、模拟交通灯控制

①汇编源程序

图2-8读开关状态显示流程图

图2-7模拟交通灯控制流程图

②C51源程序

在C51中嵌入了汇编延时子程序。

ⅠC51源文件SY2_1_C51.C

ⅡC51源文件SY2_1_C51.C中嵌入的汇编延时程序源文件delay.A51

2、读取开关状态并显示

①汇编源程序

②C51源程序

项目3数码管动态显示实验

一、实验目的

1、巩固简单I/O扩展的方法

2、了解数码管显示原理

3、了解和掌握数码管动态显示原理

4、学习简单数字时钟的设计方法

二、实验内容

用实验挂箱上的74LS273扩展8个输出口,作为LED数码管的段选信号。

LED数码管的位选信号直接由P1口的6根口线驱动。

编写程序,实现在6个数码管上显示简单数字时钟。

时钟的显示格式为:

HHMMSS,即最高两位显示小时、中间两位显示分钟、后两位显示秒钟。

三、实验原理

LED数码管如图3-1所示,有一位的也有多位一体的,根据数码管的内部电路连接,可分共阴极和共阳极两种,将多只LED发光二极管的阴极连在一起即为共阴极数码管,而将多只LED发光二极管的阳极连在一起即为共阳极数码管,图3-2是数码管的内部电路结构原理

图。

(a(b图3-1一位至四位数码管实物图

(d(c图3-2数码管内部电路结构

其显示原理是LED数码管内部的不同的LED发光二极管发光,就会显示出不同的字符或数字。

这些不同的LED发光二极管,叫做段。

以共阴极数码管为例,公共端接地,b段和c段接高电平,其他段接地或悬空,就会显示出数字“1”,a段、b段、g段、e段和d段接高电平,其他段接地或悬空,就会显示数字“2”。

一般LED发光二极管流过5~10mA的电流,就可正常发光,故在使用中,一般会在每一段上串联限流电阻。

LED数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的字符或数字,根据LED数码管的驱动方式的不同,可以分为静态式和动态式两类。

静态驱动也称直流驱动,是指需要发光的LED数码管的所有段都同时点亮。

这就要求所有LED数码管都是单个的,每个数码管的每一个段都由一个单片机的I/O口线进行驱动,或者使用如BCD码二-十进位译码器进行驱动。

静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O口线多,如驱动5个数码管静态显示则需要5×8=40根I/O口线来驱动,要知道一个AT89S52单片机可用的I/O口线才32个。

故实际应用时必须增加译码驱动器进行驱动,增加了硬体电路的复杂性。

数码管动态显示是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a、b、c、d、e、f、g、h"的同名端连在一起,每个数码管的公共极COM由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对数码管公共极COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位数码管就显示出字形,没有选通的数码管就不会亮。

动态显示中,把每个数码管的公共极叫做字选,所有数码管的公共极驱动信号叫字选信号,也叫位码。

通过分时轮流控制各个LED数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。

在轮流显示过程中,每位LED数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示资料,不会有闪烁感,动态显示一般比静态显示亮度低一些,但是,动态显示驱动能够节省大量的I/O口,而且功耗也低。

数字时钟的工作原理以24小时制的数字时钟为例,假定其初始状态是0时0分0秒,则每过一秒钟,秒计数器加1,当秒计数器加到59时,再过一秒钟,秒计数器清零,而分计数器加1;当秒计数器为59、分计数器位59时,再过1秒钟,则秒计数器清零、分计数器清零而小时计数器加1;当秒计数器为59、分计数器为59、时计数器为23时,再过1秒钟,则秒计数器清零、分计数器清零、小时计数器清零,回到初始状态。

周而复始的进行这

个过程,并把时、分、秒计数器的内容实时的显示出来,就构成了一个简单的数字时钟。

显然,设计数字时钟的关键是要找到能够精确计时1秒钟的方法。

不使用实时时钟芯片,就单片机本身而言,实现1秒钟的计时,有两种方法:

一是软件指令延时的方法;一是定时中断的方法。

使用定时中断的方法精度比较高,但由于课程进度的原因,这里采用软件指令延时的方法来实现。

所示。

实验原理如图3-3

四、实验步骤

1、将实验挂箱上74LS273的输出O0~O7用连接导线分别接到LED数码管LED-A、

LED-B、LED-C、LED-D、LED-E、LED-F、LED-G、LED-DP上,74LS273的片选

CS273接CS0,此时74LS273的地址是0CFA0H。

2、将CPU板上的P10~P15分别接到LED1、LED2、LED

3、LED

4、LED

5、LED6上。

3、编写程序,实现在数码管的前两位显示小时,中间两位显示分钟,后两位显示秒,

且上电程序运行后,时钟的初始状态是080000。

4、编译、调试、在线仿真运行,观察LED数码管的显示,与手表比对快慢。

五、程序流程图

六、

参考程序

图3-4主程序流程图

图3-5显示、延时、计时主程序流程图

七、思考题

与实际钟表对比计时,分析误差产生的原因,怎样提高计时精度?

项目4LCM液晶模块显示实验

一、实验目的

1、了解液晶显示模块的工作原理

2、掌握液晶显示模块与单片机的接口方法

3、学会液晶显示模块的编程方法

二、实验内容

编程实现在液晶显示模块上显示两屏文字,第一屏文字为“内蒙古民族大学物理与电子信息学院”,第二屏文字为“2008级单片机技术实验实验人XXX”。

每屏文字显示5秒钟,循环显示。

三、实验原理

实验所用液晶模块是金鹏实业有限公司生产的带中文字库、每屏显示两行、每行8个16X16点阵汉字的OCMJ2X8A液晶模块。

该模块具有上/下/左/右整屏移动显示屏幕及整屏清除屏幕、光标显示、反白等操作命令。

模块本身自带上电低电平复位的阻容复位回路,上电复位后可自动进行初始化设置,同时在接口提供一复位引脚,可提供用户进行软件复位控制或硬件复位控制。

简单的13个用户接口命令代码,非常容易记忆。

标准用户硬件接口采用REQ/BUSY握手通讯协议,简单可靠。

OCMJ2X8A液晶模块与8051系列单片机的接口电路如图4-1所示。

图4-1OCMJ系列液晶模块与单片机接口电路

OCMJ2X8A的引脚说明见表4-1。

表4-1OCMJ2X8A(128X32点阵引脚说明

引脚名称方向说明引脚名称方向说明

1LED+I背光源正极LED+5V10DB3I数据位3

2LED-I背光源正极LED-0V11DB4I数据位4

3VSSIGND12DB5I数据位5

4VDDI+5V13DB6I数据位6

5REQI请求信号,高电平有效14DB7I数据位7

6BUSYO应答信号。

1已收到数据并

正在处理中,0模块空闲,

可接收数据

15RESI复位信号,低电平有效

7DB0I数据位016NC空脚

8DB1I数据位117RT1LCD灰度调整,外接电阻端

9DB2I数据位218RT2LCD灰度调整,外接电阻端

OCMJ2X8A的接口协议为请求/应答(REQ/BUSY握手方式。

应答BUSY高电平(BUSY=1表示OCMJ忙于内部处理,不能接收用户命令;BUSY低电平(BUSY=0表示OCMJ空闲,等待接收用户命令。

发送命令到OCMJ可在BUSY=0后的任意时刻开始,先把用户命令的当前字节放到数据线上,接着发高电平REQ信号(REQ=1通知OCMJ请求处理当前数据线上的命令或数据。

OCMJ模块在收到外部的REQ高电平信号后立即读取数据线上的命令或数据,同时将应答线BUSY变为高电平,表明模块已收到数据并正在忙于对此数据的内部处理,此时,用户对模块的写操作已经完成,用户可以撤消数据线上的信号并可作模块显示以外的其他工作,也可不断地查询应答线BUSY是否为低(BUSY=0?

如果BUSY=0,表明模块对用户的写操作已经执行完毕。

可以再送下一个数据。

如向模块发出一个完整的显示汉字的命令,包括坐标及汉字代码在内共需5个字节,模块在接收到最后一个字节后才开始执行整个命令的内部操作,因此,最后一个字节的应答BUSY高电平(BUSY=1持续时间较长。

用户通过命令调用OCMJ系列液晶显示器的各种功能。

命令分为操作码及操作数两部分,操作数为十六进制。

共分为3类13条。

分别是:

一、字符显示命令:

1、显示国标汉字;2、显示8X8ASCII字符;3、显示8X16ASCII字符;

二、图形显示命令:

4、显示位点阵;5、显示字节点阵;

三、屏幕控制命令:

6、清屏;7、上移;8、下移;9、左移;10、右移;11、反

白12、光标显示13、移动速度调整

(注意:

以下所示取值范围分别为:

2X8、4X8、4X12、5X10、8X10、8X15的取值范围1、显示国标汉字

命令格式:

F0XXYYQQWW

该命令为5字节命令(最大执行时间为1.2毫秒,Ts2=1.2mS,其中

XX:

为以汉字为单位的屏幕行坐标值,取值范围00H到07H、02H到09H、00H到0BH、00H到09H、00H到09H、00H到0EH

YY:

为以汉字为单位的屏幕列坐标值,取值范围00H到01H、00H到03H、00H到03H、00到04H、00H到07H、00H到07H

QQWW:

坐标位置上要显示的GB2312汉字区码、位码

2、显示8X8ASCII字符

命令格式:

F1XXYYAS

该命令为4字节命令(最大执行时间为0.8毫秒,Ts2=0.8mS,其中

XX:

为以ASCII码为单位的屏幕行坐标值,取值范围00H到0FH、04H到13H、00H到17H、00H到13H、00H到13H、00H到1DH

YY:

为以ASCII码为单位的屏幕列坐标值,取值范围00H到1FH、00H到3FH、00H到3FH、00H到4FH、00H到7FH、00H到7FH

AS:

坐标位置上要显示的ASCII字符码

3、显示8X16ASCII字符

命令格式:

F9XXYYAS

该命令为4字节命令(最大执行时间为1.0毫秒,Ts2=1.0mS,其中

XX:

为以ASCII码为单位的屏幕行坐标值,取值范

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 中医中药

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1