单片机原理与接口技术实验指导书(2018修订)

《单片机原理与接口技术实验》
实验指导书 适用专业:
电信工程 通信工程 信息工程 自动化 信息与通信工程学院 前 言 一、课程性质 本课程是电子信息工程、通信工程、信息工程和自动化专业必修的专业实验课程。

通过本课程的教学,使学生深刻体会到单片机原理与接口技术的应用,掌握汇编和C51语言的语法和技巧,熟悉电子系统的设计和调试过程,使其具备研究和开发以单片机为核心的电子系统的能力。

二、项目设置 本课程总学时为16,开设的具体实验项目如下:
l 实验1 跑马灯控制(2学时,必修)
l 实验2 模拟交通灯控制系统设计(2学时,选修)
l 实验3 串行口通信实验(3学时,必修)
l 实验4 动态显示与矩阵式键盘实验(3学时,必修)
l 实验5 I2C的DA/ADC转换实验(3学时,选修)
三、本书特点 本指导书的特点是引入工程项目机制来管理实验项目,着重培养学生的方案设计、算法分析和现场调试能力,为将来成为卓越工程师打下坚实的基础。

目 录 目 录 1 第一章 开发平台使用入门 1 1.1 keil C51使用入门 1 1.1.1 Keil C51简介 1 1.1.2 uVision4操作步骤 1 1.2 Proteus使用入门 10 1.2.1 Proteus简介 10 1.2.2 Proteus设计与仿真开发过程 10 1.3 PZ-ISP使用介绍 18 1.3.1 USB驱动程序安装 18 1.3.2 PZ-ISP烧录软件使用 19 第二章 HNIST-2型单片机实验装置原理 24 2.1 HNIST-2型单片机实验装置原理图 24 2.2 单片机主机及外围电路 24 2.2.1 LED与简单按键电路 25 2.2.2 动态显示与矩阵式键盘电路 26 2.2.3 AD与DA电路 28 2.2.4 E2PROM电路 29 第三章 实验项目 31 实验报告要求 31 实验报告封面 31 实验一 跑马灯实验 33 实验二 交通灯实验 36 实验三 串行口通信实验 40 实验四 动态显示与矩阵式键盘实验 42 实验五 I2C的DA/ADC转换实验 45 第一章 开发平台使用入门 1.1 keil C51使用入门 1.1.1 Keil C51简介 Keil C51是德国Keil Software公司出品的51系列兼容单片机开发工具。

它集编辑、编译、仿真与调试于一体,支持C语言与汇编语言开发。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,生成的目标代码效率非常高。

C51工具包目前的集成开发环境uVision将项目管理,源代码编辑和程序调试等组合在一个功能强大的环境中。目前,集成开发环境使用较多的版本为uVision4,因此,下面主要介绍uVision4的基本应用。

1.1.2 uVision4操作步骤 1、启动uVision4。

当正确安装keil软件后,会在桌面上自动建立一个名为“keil uVision4”的快捷图标,双击该图标启动软件,第一次进入uVision4的启动界面,如图1.1所示。

图1.1 uVision4启动界面 2、建立工程。

单击Project菜单,在下拉菜单中选中New Project选项。

图1.2 建立工程菜单 3、命名工程,进行保存。

选择你要保存的路径,输入工程文件的名字,如保存到exam1文件夹里,工程名命名为exam1,如下图1.4所示,然后点击保存。(注:因为一个工程中会包含多个文件,将工程放在文件夹中方便管理,一般给新建的工程建立一个文件夹,文件夹名和工程名一致,如图1.3所示)
图1.3 给新建的工程建立一个文件夹 图1.4 保存新建的工程 4、选择器件。

这时会弹出一个对话框,如图1.5所示,要求你选择单片机的型号,你可以根据所选用的单片机来选择,keil C51几乎支持所有的51核的单片机,这里以使用较多的Atmel 公司的AT89S52来说明,如图1.6所示,先选择Atmel并双击展开,然后选择AT89S52,点击“OK”。

图1.5 器件选择对话框 图1.6 选择MCU型号 5、完成上一步骤后,出现提示是否加载标准8051 Startup文件,单击“是(Y)”,如下图1.7所示。

图1.7 是否加载8051 STARTUP文件 6、源程序编辑。

在下图1.8中,单击“File”菜单,再在下拉菜单中单击“New”选项,或直接单击快捷按钮。

图1.8  新建源程序 新建文件后界面如下图1.9所示。

编辑窗口 图1.9 源程序编辑界面 此时光标在编辑窗口里闪烁,这时可以键入用户的应用程序了,建议首先保存该空白的文件,单击菜单上的“File”,在下拉菜单中单击“Save As”选项,或单击保存快捷按钮,如下图1.10所示,在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时,必须键入正确的扩展名。注意,如果用C语言编写程序,则扩展名为(.c);
如果用汇编语言编写程序,则扩展名必须为(.asm)。此处我们保存为“exam1.asm”,然后,单击“保存”按钮。

图1.10 源程序保存 7、添加源程序到工程。

在编辑界面,单击Target 1前“+”号,在Source Group 1上单击右键,如图1.11所示。

图1.11 添加源程序到工程 然后单击“Add File to Group ‘Source Group 1’” 弹出对话框如下图1.12所示。

图1.12 添加源文件窗口 添加文件对话框默认文件类型为C source file ,是以C为扩展名的文件,由于这次我们编写的是汇编程序,是以asm为扩展名,所以我们要在文件类型的下拉列表中找到并选中Asm Source file,如图1.13所示。

图1.13 选择源文件的类型 选择好源文件类型后,会出现如图1.14所示窗口,双击exam1.asm,将文件加入项目。(注意,文件加载后,该对话框并不会消失,往往会误以为加载失败而再次双击加载,这时会出现图1.15所示对话框,提示文件已在列表中)
图1.14 添加汇编语言源文件 图1.15 提示文件已在工程中 返回到主界面后,我们注意到“Source Group 1”文件夹中多了一个子项“exam1.asm”。子项的多少与添加到工程中的源程序的多少相同。如图1.16所示。

图1.16 添加源程序后的主界面 8、程序编辑。

输入程序后的主界面如图1.17所示。

输入程序 图1.17 输入程序后的主界面 9、设置目标文件属性。

单击Project菜单,如图1.18所示。

图1.18 打开设置对话框 在下拉菜单中单击“Options for Target ‘Target 1’”,弹出如图1.19所示对话框,单击Output标签,勾选Create HEX File选项,使程序编译后产生HEX代码,如图1.20所示。

图1.19 output页面设置对话框 图1.20 选中Create HEX File选项 10、编译工程。

点击“Project”菜单,在下拉菜单中单击“Built Target”选项(或者使用快捷键F7,或直接单击图标或图标),如源程序中有语法错误,会有错误提示给出,应重新修改源程序,直至通过编译。

1.2 Proteus使用入门 1.2.1 Proteus简介 Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。

这里我们主要介绍51单片机系统的Proteus设计与仿真应用。

1.2.2 Proteus设计与仿真开发过程 51单片机系统的Proteus设计与仿真的开发过程如下:
1、电路设计。

在ISIS平台上进行单片机系统电路设计、选择元器件、接插件、连接电路和电气检测等。

2、程序设计。

在µVision_4平台上进行单片机系统程序设计、编辑、汇编编译、代码级调试,最后生成目标代码文件(*.hex)。

3、仿真调试。

在ISIS平台上将目标代码文件加载到单片机系统中,并实现单片机系统的实时交互、协同仿真。它在相当程度上反映了实际单片机系统的运行情况。

具体操作步骤如下:
一 、Proteus仿真电路设计 1、启动proteus。

双击桌面上的ISIS Professional图标或者单击屏幕左下方的“开始”→“程序”→“Proteus 7 Professional” →“ISIS 7 Professional”,进入Proteus ISIS集成环境。如图1.21所示。

图1.21 Proteus ISIS启动界面 2、新建设计文件。

启动Proteus 进入ISIS系统后,自动出现一个空白设计,模板默认为“DEFAULT”,文件名在窗口顶端的标题栏为未命名“Untitled”。单击按钮 ,对新建设计文件命名,其后缀自动为.DSN。

也可单击菜单中的“file→New Design”,出现选择模板窗口,如图1.22所示,选中模板“DEFAULT”,点击“确定”。单击按钮 ,完成新建设计文件操作。

图1.22 模板选择窗口 3、选取元器件并添加到对象选择器中。

单击绘图工具栏中元器件按钮 ,进入元器件放置模式。单击如图1.23 所示“P”按钮,弹出 “Pick Devices”的选取元器件对话框,如图1.24所示,在其左上角关键字一栏中输入元器件名称,则出现与关键字匹配的元器件列表。选中元件,再单击“OK”按钮,便将该器件加入到ISIS对象选择器中,如图1.25所示。

选取元器件 元器件按钮 图1.23 选取元器件 图1.24 选取元器件对话框 对象选择器窗口 图1.25 所选元器件在对象选择器中显示 注意:单片机电路可以略去单片机振荡电路,复位电路,电源和接地。

4、放置、移动、旋转元器件。

放置元器件:单击ISIS对象选择器中的元器件名,蓝色条出现在该元器件名上,预览窗口出现该元件符号,如图1.26所示。把鼠标移到编辑窗口后,单击左键就出现该元件,拖动鼠标到某位置,单击鼠标放置元器件于该位置。

编辑窗口 单击器件名 预览窗口出现所选器件符号 图1.26 器件放置 移动元器件:先将鼠标指在元器件上左击选中,使元器件处于选中状态(即高亮度状态),再按住鼠标左键拖动,元器件就跟随指针移动到达目的地后,松开鼠标即可。

若要改变元器件放置方向,转90°,对元器件右击选中,再根据弹出的菜单单击按钮 或 进行旋转,单击按钮 或 进行镜像操作,等等。

5、放置电源、地(终端) 。

单击绘图工具栏中终端按钮 ,在ISIS对象选择器中出现如图1.27所示终端,选择POWER、GROUND等,象放置元器件一样放置。

终端按钮 DEFAULT 缺省 INPUT 输入 OUTPUT 输出 BIDIR 双向 POWER 电源 GRONND 地 BUS 总线 图1.27 选择终端 6、连线。

直线:系统默认自动捕捉,在自动捕捉有效的情况下,当光标靠近引脚末端或线时该处会自动感应出现一个“□”,单击左键连线与该引脚连接,拖动鼠标连线跟着光标走,当光标靠近另外一个引脚末端或线出现“□”时,单击鼠标,则连线这两点间。

折线:若要画折线,只要在转折点单击左键;
若在中途想取消,可右双击或按“Esc”键。

若两点之间较远或不方便连线:可以将连线在空白处时左双击即可结束画线,这时终端出现一个黑点。右击该连线,在弹出菜单中选择网络标号对该线给出一个网络标号,同样在连线的另外一端给出相同网络标号,则这两点连接了。

7、设计的简单电路。

如图1.28所示:
图1.28电路设计 二、 仿真调试 1、加载目标代码文件。

鼠标在ISIS编辑区中单片机AT89C51单击左键选中,再单击左键打开其属性窗口,如图1.29所示,在其中的“Program File”右侧框中输入Keil uVision4产生目标代码文件(*.hex)。在Clock Frequency栏中设置仿真时钟频率。

设置仿真时钟频率 选择目标代码文件 图1.29 加载目标代码文件 2、仿真。

单击仿真按钮中的按钮,则会全速仿真,如图1.30所示仿真效果。

单击停止仿真按钮,则终止仿真。

图1.30 仿真效果图 3、虚拟仪器加入。

仿真时,可加入虚拟仪器。单击工具栏的虚拟仪器按钮,出现如图1.31所示对话框,在对象选择器列表中选择所需要的仪器,然后象放置元器件一样放置。

虚拟仪器按钮 OSCILLOSCOPE 示波器 LOGIC ANALYSER 逻辑分析仪 COUNTER TIME 时间计数器 VIRTUAL TERMINAL 虚拟终端 SPI DEBUGGER SPI调试器 I2C DEBUGGER I2C调试器 SIGNAL GENERATOR 信号发生器 PATTERN GENERATOR 图形产生 DC VOLTMETER 直流电压表 DC AMMETER 直流电流表 AC VOLTMETER 交流电压表 AC AMMETER 交流电流表 图1.31 虚拟仪器选择 如图1.32所示实例,利用示波器观测仿真波形。仿真时,右击示波器,在弹出的对话框中选择digital oscilloscope选项,观察从P1.0引脚产生的波形。

图1.32 仿真波形 1.3 PZ-ISP使用介绍 1.3.1 USB驱动程序安装 接上USB下载线,电脑会出现如图1.33显示,安装好USB驱动程序后,右击“我的电脑”à“属性”à“硬件”à“设备管理器”,查看设备管理器,如图1.34所示,表示安装成功。

图1.33 提示安装USB驱动程序 图1.34 安装成功 1.3.2 PZ-ISP烧录软件使用 1、PZ-ISP软件无需安装,双击打开即可运行。启动PZ-ISP,出现如图1.35所示启动界面 图1.35 启动界面 2、选择合适的芯片类型。如图1.36所示。

图1.36 选择合适芯片类型 3、选择合适的串口号。

如图1.37所示,串口号可自动获得,也可在辅助功能的“打开设备管理器”选项中查看获得。

图1.37 选择合适串口号 4、加载HEX文件。

单击“打开文件”选项,打开对应程序目录,选定需要烧写的HEX文件,点击“打开”,如图1.38所示。

图1.38 加载HEX文件 5、下载程序。

选择低速下载,先将实验板断电,点击下载程序,如图1.39所示,稍等片刻后打开电源,等待下载完成,如图1.40所示。

图1.39 试验板先断电,单击下载程序 图1.40打开电源,下载完成 以上介绍了利用PZ-ISP烧录软件烧录程序的步骤,共分为4步,如下图1.41所示。

2 1 3 4 图1.41 程序烧录步骤 如在烧录过程中提示下载失败,可能以下原因造成:
1、 第四步下载程序时,实验板电源开关顺序不正确;

2、 芯片类型选择不正确;

3、 串口号选择不正确;

4、 USB下载线没有连接好;

5、 下载速度没有调整好;

6、 芯片是否放置正确(没有放偏)。

第二章 HNIST-2型单片机实验装置原理 2.1 HNIST-2型单片机实验装置原理图 湖南理工学院信息与通信工程学院电子信息教研室为了配合单片机教学,专门设计HNIST-2型实验装置,如图2.1所示。

图2.1 HNIST-2型单片机实验装置原理图 2.2 单片机主机及外围电路 STC89C52单片机及其外围电路如图2、3,其中P0、P1、P2、P3口均将引脚连接到排插,以便通过排插连接到其它器件,P0口通过排阻接入上拉电阻。

晶振电路晶振频率为12MHz,通信接口排插将TXD、RXD以及地线引出。

图2.2 STC89C52单片机主机部分电路原理图 (a) 晶振电路 (b) 通信接口 (c) 复位电路 图2.3 STC89C52单片机外围电路原理图 2.2.1 LED与简单按键电路 LED电路如图2.4,共12个LED,其阳极通过1K排电阻接电源,阴极连接到排插J10、J12,通过J10、J12可以连接到P0、P1、P2、P3口引脚连接的排插,显然低电平点亮LED。

图2.4 LED电路原理图 简单按键电路如图2.5,共有4个按键K17、K18、K19、K20,分别连接到单片机P2.0、P2.1、P2.2、P2.3引脚,按键后对应引脚为低电平,通过4个二极管D17、D18、D19、D20连接到P3.2(外部中断0),即任意按一个键能在P3.2上产生一个低电平或下降沿,作为中断触发信号。

图2.5 简单按键电路原理图 2.2.2 动态显示与矩阵式键盘电路 动态显示电路如图2.6,共8个共阴极数码管,采用两片74LS573进行驱动,74LS573与74LS373都是8D锁存器,只是573引脚排列更易于布线。其引脚功能为:D1-D8为数据输入端;
Q1-Q8为数据输出端;
LE为数据输入锁存端,LE=1数据输入D锁存器,LE=0数据不能输入D锁存器,即LE下降沿锁存当前输入数据;
地址输出允许端,=0输出锁存数据,=1输出高阻。

图2.6 动态显示电路原理图 电路中,U1输出段码a b c d e f g db,控制显示的字形与小数点,U2输出位选码,控制第几个数码管显示。单片机P1.4、P1.5分别连接到U1、U2的LE,P1.3连接U1和U2的。根据硬件电路,动态显示编程时,应:① P1.3=1,U1、U2输出高阻;
② P1.4=1,P0口输出段码,P1.4=0,U1锁存输入的段码;
③ P1.5=1,P0口输出位选码,P1.5=0,U2锁存输入的位选码;
④ P1.3=0,U1、U2同时输出段码和位选码,进行显示,经过一段时间后,再对另一个数码管做同样的操作。

矩阵式键盘电路如图2.7,电路中P2.0-P2.3作为行线,P2.4-P2.7作为列线。

图2.7 矩阵式键盘电路原理图 2.2.3 AD与DA电路 采用具有I2C接口的8位A/D与D/A转换器PCF8591构成AD与DA电路如图2.8。

图2.8 AD与DA电路原理图 PCF8591引脚及功能如下表2.1所示:
表2.1 PCF8591引脚及功能表 引脚 I/O 功能 AIN0~AIN3 I 4路模拟信号 A0~A3 I 引脚地址 SDA I/O 数据线 SCL I 时钟线 AOUT O DAC 输出端 VREF I 基准电源端 VDD、VSS I 电源、数字信号地 AGND I 模拟信号地 OSC I/O 外部时钟输入,内部时钟输出端 EXT I 内、外部时钟选择,接地内部时钟 电路中,P3.6、P3.4分别连接SCL、SDA,地址引脚A2A1A0=000,PCF8591的特征编码为1001,电路中PCF8591的地址为1001000。4路模拟输入,AIN0连接一个10K电位器的中心抽头,调节电位器可改变AIN0的模拟电压,AIN1、AIN2、AIN3通过排插可连接其他电压,如电源、地。

PCF8591的15脚AOUT是DAC输出的模拟量,电路中可以将J16的1、2脚短路,AOUT引脚通过50Ω电阻、LED与电源连接,输出模拟量越小,LED越亮。

2.2.4 E2PROM电路 E2PROM电路由具有I2C接口的24C02构成如图2.9。

图2.9 E2PROM电路原理图 24C02的引脚及功能如下表2.2所示:
表2.2 24C02的引脚及功能表 引脚 名称 I/O 功能 1~3 A0、A1、A2 I 可编程地址 4 GND I 地 5 SDA I/O 数据线 6 SCL I 时钟线 7 WP I =1写保护 8 Vcc I 电源 电路中,P3.6,P3.4分别连接SCL、SDA,地址引脚A2A1A0=000,24C02的特征编码为1010,电路中24C02的地址为1010000。

此外,HNIST-2型单片机实验系统电路中,还包括如下电路,在课程设计或其它设计中可以采用。

1、 由CH340T构成的USB转串口电路;

2、 由DS1302构成的实时时钟电路;

3、 由LM386构成的音频功放电路,需要外接扬声器;

4、 蜂鸣器(BEEP)电路;

5、 LCD12864/LCD1602液晶接口电路,需外接液晶模块;

6、 红外接收接口电路,需外接器件;

7、 温度测量接口电路,需外接器件。

第三章 实验项目 实验报告要求 实验报告要求依次给出:
1、 实验内容 2、 电路原理图;

3、 程序流程图(简单程序可无);

4、 源程序;

5、 实验结果,如果有数据则给出数据;

6、 回答思考问题;

7、 总结实验调试过程,并给出本次实验过程中的心得体会。

按照上述顺序,整理实验报告,并打印整理,加上封面装订成册。

实验报告封面 学号 序号 单片机原理与接口技术 实验报告 实验项目序号 实验项目名称 姓 名 专 业 班 级 完成时间 实验一 跑马灯实验 一、实验目的 1、 熟悉HNIST-2型单片机系统相关硬件电路,程序下载方法;

2、 掌握采用汇编语言与C语言开发单片机系统的程序结构;

3、 掌握51系列单片机通用I/O口的使用。

二、实验前准备 1、 完成作业3;

2、 根据实验内容编写好相关程序,并进行Proteus仿真。

三、实验内容 实验内容为3项,其中第1、2项必做。

1、基本的流水灯。

根据图1电路,编写一段程序,使8个发光二极管D1、D2、D3、D4、D5、D6、D7、D8顺序(正序)点亮:先点亮D1,再点亮D2、D3……D8、D1……,循环点亮。每点亮一个LED,采用软件延时一段时间。

2、简单键控的流水灯。

不按键,按正序点亮流水灯;
按下K1不松手,按倒序点亮流水灯,即先点亮D8,再顺序点亮D7、D6……D1、D8……。松手后,又按正序点亮流水灯。

3、键控的流水灯。

上电,不点亮LED,按一下K1键,按正序点亮流水灯。按一下K2键,按倒序点亮流水灯,按一下K3键,全部关闭LED。

四、实验原理图 如图3.1所示。

图3.1 跑马灯实验电路原理图 电路原理图如图3.1,AT89S52的P0.0~P0.7作为输出连接8个发光二极管,输出低电平0时对应发光二极管发光;
由于发光二极管的导通电压为1.7V,所以HNIST-2型实验装置在电源与二极管之间加一个阻值为1K限流电阻保护二极管。

AT89S52的P2.0、P2.1作为输入连接2个按键K1、K2,若检测到P2.0=0,则说明K1键按下。

五、软件设计思想 1、基本的流水灯 软件延时采用例题程序delay( j ),可调整延时时间。

2、简单键控的流水灯。

由于是按下键不松手,键值一直保留,所以判断P2.0=0即是按下K1,采用如例题所示的while(P2.0= =0)或while(P2= =0xfe)的模式。

3、键控的流水灯 由于是按一下键后马上松手,所以要设置一个变量b保留按键键值,要在延时程序中检测是否按键,当按键后立即设置b的值。

六、实验思考题 1、采用I/O口作为输出口时要考虑哪些因素?为什么实验装置中LED要串联一个电阻? 2、采用I/O口作为输入口时要注意什么?键控的流水灯时为什么要在延时程序中检测是否按键? 3、为什么延时程序要做一个函数? 实验二 交通灯实验 一、实验目的 1、 进一步熟悉HNIST-2型单片机系统相关硬件电路;

2、 掌握单片机中断的应用和中断处理程序的编写方法;

3、 掌握单片机内部定时/计数器的使用及编程方法。

二、实验前准备 1、 完成作业4;

2、 根据实验内容编写好相关程序,并进行Proteus仿真。

三、实验内容 实验内容为3项,其中第1、2项必做。

1、基本交通灯。

根据图3.2电路,用单片机的IO口控制4组红绿黄共12个发光二极管,使发光二极管按照一定规则与次序发光与闪亮以实现模拟交通灯的功能。假设初始状态为:(南北通行状态)南北绿灯、东西红灯(25s);
后转为过渡状态:南北黄灯、东西红灯(5s);
再转为东西通行状态:东西绿灯、南北红灯25(s)。再转为过渡状态:东西黄灯、南北红灯(5s),然后循环往复。

要求采用定时器实现所需要的定时时间。

2、键控交通灯。

按一下K1键,保持南北通行状态;
按一下K2键,保持东西通行状态;
按一下K3键,保持正常交通灯。

要求在中断中进行按键处理。

3、具有闪烁的交通灯。

在2的基础上增加,绿灯最后5s闪烁,即亮0.5S灭0.5S闪烁。

四、实验原理图 图3.2 交通灯实验电路原理图 图3.2共有4个按键K1、K2、K3、K4,分别连接到单片机P2.0、P2.1、P2.2、P2.3引脚,按键后对应引脚为低电平,通过4个二极管D17、D18、D19、D20连接到P3.2(外部中断0),这是二极管构成的相与电路,即任意按一个键能在P3.2上产生一个低电平或下降沿,作为中断触发信号。

五、软件设计思想 1、定时思想。

采用定时器T0或T1的方式1定时50ms,每50ms中断进行计数,计数10次即0.5s,计数20次即1s,对秒计数实现所需要的定时时间。

2、亮灯控制思想。

单片机控制灯引脚与灯对应如下,0点亮。

一共有四种状态S0、S1、S2、S3, a、南北通行S0状态:
南北绿灯、东西红灯,P0= 11111100=0xfc,P1=11110011=0xf3;

P0.3 P0.2 P0.1 P0.0 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 东G 东Y 东R 北G 北Y 北R 西G 西Y 西R 南G 南Y 南R 1 1 0 0 1 1 1 1 0 0 1 1 南北绿灯、东西红灯,P0= 11110111=0xf7,P1=10011110=0x9e;

P0.3 P0.2 P0.1 P0.0 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 北G 北Y 北R 西G 西Y 西R 南G 南Y 南R 东G 东Y 东R 0 1 1 1 1 0 0 1 1 1 1 0 b、过渡状态S1:
南北黄灯、东西红灯,P0=11111101=0xfd,P1=01110101=0x75;

P0.3 P0.2 P0.1 P0.0 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 东G 东Y 东R 北G 北Y 北R 西G 西Y 西R 南G 南Y 南R 1 1 0 1 0 1 1 1 0 1 0 1 南北黄灯、东西红灯,P0=11111011=0xfb,P1=10101110=0xae;

P0.3 P0.2 P0.1 P0.0 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 北G 北Y 北R 西G 西Y 西R 南G 南Y 南R 东G 东Y 东R 1 0 1 1 1 0 1 0 1 1 1 0 c、东西通行状态S2:
东西绿灯、南北红灯,P0=11110111=0xf7,P1=1001110=0x9e;

P0.3 P0.2 P0.1 P0.0 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 东G 东Y 东R 北G 北Y 北R 西G 西Y 西R 南G 南Y 南R 0 1 1 1 1 0 0 1 1 1 1 0 东西绿灯、南北红灯,P0=11111100=0xfc,P1=11110011=0xf3;

P0.3 P0.2 P0.1 P0.0 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 北G 北Y 北R 西G 西Y 西R 南G 南Y 南R 东G 东Y 东R 1 1 0 0 1 1 1 1 0 0 1 1 d、过渡状态S3:
东西黄灯、南北红灯,P0=11110111=0xfb,P1=10101110=0xae;

P0.3 P0.2 P0.1 P0.0 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 东G 东Y 东R 北G 北Y 北R 西G 西Y 西R 南G 南Y 南R 1 0 1 1 1 0 1 0 1 1 1 0 东西黄灯、南北红灯,P0=11111101=0xfd,P1=01110101=0x75;

P0.3 P0.2 P0.1 P0.0 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 北G 北Y 北R 西G 西Y 西R 南G 南Y 南R 东G 东Y 东R 1 1 0 1 0 1 1 1 0 1 0 1 设置一个秒计数单元SEC每秒+1,设置两个控制值变量a,b。

首先令SEC=0,a=0xfc,b=0xf3,处于S0状态;

SEC==25,a=0xfd,b=0x75,处于S1状态;

SEC==30,a=0xf7,b=0x9e,处于S2状态;

SEC==55,a=0xfb,b=0xae,处于S3状态;

SEC==60,SEC=0,a=0xfc,b=0xf3,处于S0状态;

P0=a,P1=b。

设置一个秒计数单元SEC每秒+1,设置两个控制值变量a,b。

首先令SEC=0,a=0xf7,b=0x9e,处于S0状态;

SEC==25,a=0xfb,b=0xae,处于S1状态;

SEC==30,a=0xfc,b=0xf3,处于S2状态;

SEC==55,a=0xfd,b=0x75,处于S3状态;

SEC==60,SEC=0,a=0xf7,b=0x9e,处于S0状态;

P0=a,P1=b。

3、交通灯键控 按键后即进入外部中断0,在外部中断0中断程序中判断:若是按K1键,控制南北通行状态,并将定时器T0关闭,即可保持南北通行状态;
若是按K2键,控制东西通行状态,并将定时器T0中断关闭,即可保持东西通行状态;
若是按K3键,开启定时器T0中断,恢复正常交通灯。

4、闪烁控制 在需要闪烁时,0.5s按正常显示,0.5s全灭,即是闪烁效果。实现方法是:当=0.5s的时刻,并且在南北通行的最后5s(19<sec<25)或在东西通行的最后5s(49<sec<55),灭绿灯:
P0=a|0xf9,P1==b|0x24,当=1s的时刻,按正常显示。

P0.3 P0.2 P0.1 P0.0 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 东G 东Y 东R 北G 北Y 北R 西G 西Y 西R 南G 南Y 南R 1 0 0 1 0 0 1 0 0 1 0 0 六、实验思考题 1、 为什么采用定时器T0的方式1?为什么不采用方式2? 2、 采用中断处理按键有什么优点?本实验可不可以不采用中断处理按键,不采用中断怎样实现? 实验三 串行口通信实验 一、实验目的 1、 掌握单片机串行口通信的应用和编写方法;

2、 进一步掌握单片机中断的应用和中断处理程序的编写方法;

3、 进一步掌握单片机内部定时/计数器的使用及编程方法。

二、实验前准备 1、 完成作业5;

2、 根据实验内容编写好相关程序,并进行Proteus仿真。

三、实验内容 实验内容为3项,其中第1、2项必做。

据图3.3电路,两个同学为一组分为甲方、乙方,所有实验都采用方式3,偶校验,波特率为2400bit/s,采用T1作波特率发生器,均采用中断发送和接收。

按键值a:按K1,a=0x01;
按K2,a=0x02;
按K3,a=0x04;
按K4,a=0x08。

1、单向通信 向甲方连续不断地发送变量a的值,未按键,a=0x0f,按键后根据按键确定a值;
并将a的值取反从P0口输出,控制D0、D1、D2、D3相应点亮。乙方接收到数据并偶校验正确后,将接收数据取反从P0口输出,控制D0、D1、D2、D3相应点亮。

2、双向通信 甲方连续不断地发送变量a的值,未按键,a=0x0f,按键后根据按键确定a值;
乙方未按键不发送,按键后将a*16发送;
甲乙双方都将发送数据与接收数据相或后再取反,从P0口输出控制D0—D7相应点亮。

3、间隔发送 未按键,甲方不发送数据,按键后甲方每隔50ms连续发送4个字节:0xff、a、a、a。

乙方只在收到甲方数据0xff后的3个数据并验证相同时,才将接收数据*16发送。

甲乙双方都将发送数据与接收数据相或后,从P0口输出控制D0—D7相应点亮。

四、实验原理图 实验原理图如图3.3所示:
图3.3 串行口通信实验电路原理图 在HNIST-2型实验装置中,通过通信接口排插将甲机的TXD、RXD连接到乙机的RXD、TXD,注意:下载程序时,要将RXD引脚线断开,有接收时,HNIST-2型实验装置上的D25会闪烁。

五、软件设计思想 1、 按键处理 采用中断处理按键,甲方在外部中断0服务程序中:判断按键确定发送数据,并判断是否开始发送,若未开始发送,设置TI=1。

2、 双向通信 串行口中断后要注意判断是发送中断 ( TI=1 ) 还是接收中断( RI=1 ),判断完后要清除标志。

六、实验思考题 1、 为什么串行口中断后要注意判断是发送中断 ( TI=1 ) 还是接收中断( RI=1 ),判断完后要清除标志。为什么不能象其它中断一样,中断后自动清除中断标志? 2、 在甲方发送时,乙方是否也可以发送?为什么? 3、 第3题,①为什么要3次相同;
②这是全双工通信还是半双工通信? 实验四 动态显示与矩阵式键盘实验 一、实验目的 1、 进一步理解数码管与单片机的接口原理与动态显示原理,理解单片机矩阵式键盘按键识别的原理;

2、 掌握单片机动态显示应用和编程方法;

3、 掌握单片机矩阵式键盘按键识别的方法。

二、实验前准备 1、 完成作业6;

2、 根据实验内容编写好相关程序,并进行Proteus仿真。

三、实验内容 实验内容为3项,其中第1、2项必做。

1、动态显示。

未按键不显示,按K1键,动态显示 “19491001”;
按K2键,动态显示 “20141210”。

2、动态显示与按键识别。

矩阵式键盘键值分别是0-F,未按键不显示。每按键一次,键值在最低位显示,原键值向高位移一位。

3、可控动态显示与按键识别。

矩阵式键盘键值分别是0-9,最下面一排键位功能键,左右两个键分别为“清0键”“C”,和”“回车键”“8 ”,其它键无效。未按键不显示,每按键一次,键值在最低位显示,原键值向高位移一位。按8个键后,再按键无效。按清0键全显示“0”。按“8 ”后全部熄灭,再按键重新开始。

四、实验原理图 图3.4 动态显示与矩阵式键盘实验电路原理图 动态显示共8个共阴极数码管,采用两片74LS573进行驱动,74LS573与74LS373都是8D锁存器,只是573引脚排列更易于布线。其引脚功能为:D1-D8为数据输入端;
Q1-Q8为数据输出端;
LE为数据输入锁存端,LE=1数据输入D锁存器,LE=0数据不能输入D锁存器,即LE下降沿锁存当前输入数据;
地址输出允许端,=0输出锁存数据,=1输出高阻。

电路中,U1输出段码a b c d e f g db,控制显示的字形与小数点,U2输出位选码,控制第几个数码管显示。单片机P14、P15分别连接到U1、U2的LE,连接U1、U2的。

五、软件设计思想 1、 动态显示。

(1) 仿照例题编程,设置8个数据的一维显示数组disp[],设置位选码数组sled_bit[],对应每个数码管;
设置2个一维数组,data uchar ar[8]={1,9,4,9,1,0,0,1};
data uchar br[8]={2,0,1,4,1,2,1,0};
按K1、K2键进入外部中断0,在外部中断程序中根据按键将ar[]、br[]数据送人disp[]。

(2)
T0每500us中断1次,在T0中断中点亮一个数码管。在T0中断函数中,① P1.3=1,U1、U2输出高阻;
② P1.4=1,P0口输出段码,P1.4=0,U1锁存输入的段码;
③ P1.5=1,P0口输出位选码,P1.5=0,U2锁存输入的位选码;
④ P1.3=0,U1、U2同时输出段码和位选码,进行显示。

2、 矩阵式键盘按键识别 (1)
行、列输出后要延时,才读出相应特征值;

(2)
进行键值分析前要具备如下条件:
① 要有键按下,设a是得到的键值,if(a!=0xff)才继续进行;

②要等键弹起,若输出P2=0x0f,则P2!=0x0f 要等待,while(P2!=0x0f);

③ 每次进行完键值分析后,要延时。

六、实验思考题 1、 电路中为什么要用74LS573,不用74LS573,可用什么器件代替?如果U1、U2的都直接接地,应如何编程? 2、 为什么要等键弹起,才进行键值分析? 3、 如果用简单按键与矩阵式键盘构成组合按键,组合按键如何编程得到键值? 实验五 I2C的DA/ADC转换实验 一、实验目的 1、 掌握I2C的DA/ADC芯片与单片机接口方法;

2、 掌握I2C器件编程方法;

3、 掌握DAC和ADC的使用方法。

二、实验前准备 1、 完成作业7;

2、 根据实验内容编写好相关程序,并进行Proteus仿真。

三、实验内容 实验内容为3项,其中第1、2项必做。

1、D/A转换实验。

设置一个一维数组data uchar c[4]={0x00,0xa0,0xaa,0xff};
按下K1、K2、K3、K4,分别将c[0]、c[1]、c[2]、c[3] 的值转换成模拟量输出,观察发光二极管D23的亮度。若是仿真,可以通过电压表观察模拟量的电压值。

2、单通道采样与动态显示。

对AIN0通道进行采样,将采样数据在1、2两位动态显示,调节电位器观察显示数据变化。

3、简易电压表实现。

对AIN0通道进行采样,将采样数据转换成4位电压值在1、2、3、4四位动态显示,注意只有1位整数3位小数。调节电位器观察显示数据变化。

四、实验原理图 实验原理图如图3.5所示:
图3.5 I2C的DA/ADC转换实验电路原理图 电路中,P3.6、P3.4分别连接SCL、SDA,地址引脚A2A1A0=000,PCF8591的特征编码为1001,电路中PCF8591的地址为1001000。4路模拟输入,AIN0连接一个10KΩ电位器的中心抽头,调节电位器可改变AIN0的模拟电压,AIN1连接电源,AIN2、AIN3连接地。

PCF8591的15脚AOUT是DAC输出的模拟量, AOUT引脚通过50Ω电阻、LED与电源连接,输出模拟量越小,LED越亮。注意在HNIST-2型实验装置中,将J16的1、2脚短路。

五、软件设计思想 1、 编程思路 仿照例题编写程序,采用例题的I2C的相关函数。动态显示采用实验四的方法,只将显示数据送人相应显示数组元素。

2、 简易电压表实现 注意在采样数据转换成4位电压值时,中间变量要设置长整形数据类型,并注意小数点设置。

六、实验思考题 1、 采用I2C接口的ADC有什么好处? 2、 如果通过按K1、K2、K3、K4键分别选择ADC采样0、1、2、3通道,程序如何处理? 3、 如何利用芯片的通道自动增量的功能,对AIN0、AIN1、AIN2、 AIN3通道轮流进行采样。

推荐访问: