已阅读5页,还剩55页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
成都信息工程学院电子教学实验中心系列实验指导教材 第 1 页 DPDP 51MCore51MCore 实验指导书实验指导书 第第 1 章章 KEIL C51 操作入门操作入门 1 1 1 KEIL C51 简介 1 1 2 KEIL C51 的安装 1 1 3 建立第 1 个 KEIL C51 程序 1 1 4 新建 A51 汇编工程 6 第第 2 章章 在在 KEIL C51 下调试程序下调试程序 7 2 1 进入仿真状态 7 2 2 认识各个仿真窗口 7 2 3 程序的运行控制 10 2 4 外围设备访问 11 第第 3 章章 DP 51MCORE 基本操作基本操作 12 3 1 DP 51MCORE简介 12 3 2 以 ISP 下载方式运行程序 12 3 2 1 ISP电路说明 12 3 2 2 ISP驱动程序Flash Magic简介 13 3 2 3 ISP操作步骤 13 3 3 以硬件在线仿真的方式调试程序 15 3 4 内嵌在线仿真占用的系统资源 16 第第 4 章章 PROTEUS 6 PROFESSIONAL 简介简介 17 4 1 PROTEUS功能简介 17 4 2 单片机的仿真实例 19 第第 5 章章 DP 51MCORE 实验实验 24 5 1 实验 1 应用软件的熟悉与使用 24 5 2 实验 2 流水灯 LED 及动态数码管扫描 24 5 3 实验 3 按键扫描 27 5 3 1 独立式按键 27 5 3 2 行列式按键 29 5 4 实验 4 定时器实验 30 5 4 1 LED闪烁发光 30 5 4 2 555脉冲测量 31 5 5 实验 5 用 8255 扩展并行 IO 32 5 6 实验 6 UART 基本收发 33 5 7 实验 7 并行 DAC 和 ADC 37 5 7 1 DAC0832 8位并行DAC 37 5 7 2 ADC0804 8位并行ADC 37 5 8 实验 8 串行 ADC 和 DAC 38 5 8 1 TLC5615 10位串行DAC 38 5 8 2 TLC1549 10位串行ADC 40 成都信息工程学院电子教学实验中心系列实验指导教材 第 2 页 5 9 实验 9 I2C 总线的应用 41 5 9 1 PCF8563时钟 41 5 9 2 EEPROM读写 42 5 9 3 LM75数字温度传感器 43 5 10 实验 10 交流蜂鸣器发声 44 5 11 实验 11 交流蜂鸣器演奏简单乐曲 46 5 12 实验 12 系统扩展 47 5 12 1 扩展片外RAM 47 5 12 2 在RAM中执行程序代码 49 5 13 实验 13 128 64 液晶屏 51 5 13 1 显示ASCII码 51 5 13 2 显示汉字 52 5 14 实验 14 PC 键盘 52 5 15 实验 15 综合实验 53 5 15 1 红外收发 53 5 15 2 UART双机通信 54 5 15 3 RS 485双机通信 55 成都信息工程学院电子教学实验中心系列实验指导教材 第 1 页 第第 1 章章 Keil C51 操作入门操作入门 1 1 Keil C51 简介简介 Keil C51 是德国知名软件公司 Keil 现已并入 ARM 公司 开发的基于 8051 内核的微 控制器软件开发平台 是目前开发 8051 内核单片机的主流工具 在广州周立功单片机发展 有限公司网站 可以免费下载到 Keil C51 V7 09 的评估版本 1 2 Keil C51 的安装的安装 安装 Keil C51 非常简单 步骤如下 运行 Keil C51 V7 09 评估版 SETUP 目录下的 Setup exe 当出现如图 1 1 所示的对话框时 请选择 Eval Version 版本安装 图 0 1 Keil C51 评估版安装选择 在接下来的几个对话框中选择 Next 或 Yes 提示填入用户名和公司名时 照实际情况填写 安装完毕后按 Finish 结束 1 3 建立第建立第 1 个个 Keil C51 程序程序 Keil C51 是一个功能很强大的软件 但是使用起来并不复杂 现在就通过建立一个简 单的 LED 发光二极管 闪烁发光的实例来初步掌握 Keil C51 的基本用法 硬件电路参见 图 1 2 单片机 I O 输出低电平可点亮 LED D1 LED R1 2k P1 1 VCC 图 0 2 LED 闪烁发光电路 启动 Keil C51 软件 您可以通过双击电脑桌面上的 Keil uVision2 快捷方式图标 来启动 成都信息工程学院电子教学实验中心系列实验指导教材 第 2 页 新建工程 执行 Keil C51 软件的菜单 Project New Project 弹出一个名为 Create New Project 的对话框 先选择一个合适的文件夹准备来存放工程文件 比如 E Project LedFlash 其中 LedFlash 是新建的文件夹 我们建议 今后 每新建一个工程都要在适当的磁盘位置新建一个文件夹用来保存工程文件 以方便 管理 并养成良好的习惯 最后 为工程取名为 LedFlash 并保存 参见图 1 3 图 0 3 新建 Keil C51 工程 选择 CPU 紧接着 Keil C51 提示您选择 CPU 器件 8051 内核单片机最早是由鼎 鼎大名的 Intel 公司发明的 后来其他厂商如 Philips Atmel Winbond 等先后推出 其兼容产品 并在 8051 的基础上扩展了许多增强功能 在这里可以选择 Philips 的 第 1 个器件 80 87C51 该器件与 Intel 的 8051 完全兼容 参见图 1 4 成都信息工程学院电子教学实验中心系列实验指导教材 第 3 页 图 0 4 选择 CPU 接下来弹出一个如图 1 5 所示的对话框 该对话框提示您是否要把标准 8051 的启 动代码添加到工程中去 Keil C51 既支持 C 语言编程也支持汇编语言编程 如果 打算用汇编语言写程序 则应当选择 否 N 如果打算用 C 语言写程序 一般 也选择 否 N 但是 如果用到了某些增强功能需要初始化配置时 则可以选择 是 Y 在这里 我们选择 否 N 即不添加启动代码 图 0 5 选择是否要添加启动代码 至此 一个空的 Keil C51 工程建立完毕 执行菜单 File New 出现一个名为 Text n 其中 n 表示序号 的文档 接着执行菜单 File Save 弹出一个名为 Save As 的对话框 将文件名改为 main c 然后保存 参见图 1 6 注意 扩展名 c 不可省略 成都信息工程学院电子教学实验中心系列实验指导教材 第 4 页 图 0 6 保存新建的源程序文件 添加源程序文件到工程中 现在 一个空的源程序文件 main c 已经建立 但是 这个文件与刚才新建的工程之间并没有什么内在联系 我们需要把它添加到工程中 去 单击 Keil C51 软件左边项目工作窗口 Target 1 上的 将其展开 然后 右击 Source Group 1 文件夹 会弹出如图 1 7 所示的选择菜单 单击其中的 Add Files to Group Source Group 1 项 将弹出如图 1 8 所示的对话框 先选择文件类型为 C Source file c 这时 对话框内将出现刚才保存过的 main c 单击文件 main c 再按一次 Add 按钮 请不要多次点击 Add 按钮 最后按 Close 按钮 这时 源程序文件 main c 已经出现在项目工作 窗口的 Source Group 1 文件夹内 可以单击左边的 展开后查看 成都信息工程学院电子教学实验中心系列实验指导教材 第 5 页 图 0 7 准备添加源程序文件到工程中 图 0 8 向工程中添加源程序文件 现在开始输入源程序 先最大化 main c 源程序窗口 然后请按程序清单 1 1 输 入程序代码 成都信息工程学院电子教学实验中心系列实验指导教材 第 6 页 程序清单 1 1 LED 闪烁发光程序 main c 程序名称 LED 闪烁发光 硬件接法 P1 1 控制 LED 低电平点亮 运行效果 LED 亮 200ms 灭 800ms 反复循环 include 包含 8051 的 SFR 寄存器定义头文件 sbit LED P1 1 定义 I O 接口 函数 Delay 功能 延时 0 01s 2 56s 参数 t 0 时 延时 t 0 01 s t 0 时 延时 2 56s 说明 定时 10ms 的定时器初值 65536 0 01 1 f 12 其中 f 为晶振频率 void Delay unsigned char t do TH0 0 xDC 设置定时器初值 定时 10ms TL0 0 x00 TR0 1 启动定时器 while TF0 等待定时器溢出 TR0 0 停止定时器 TF0 0 清除溢出标志 while t 0 循环 t 次 主函数 void main TMOD T0 设置在方式 1 即 16 位定时器 不影响 T1 的模式 TMOD 0 x01 for LED 0 点亮 LED Delay 20 延时 200ms LED 1 熄灭 LED Delay 80 延时 800ms 成都信息工程学院电子教学实验中心系列实验指导教材 第 7 页 单击 Keil C51 工具栏的 图标 弹出名为 Options for Target Target 1 的 对话框 单击 Output 标签页 选中 Create HEX File 项 然后 确定 参见 图 1 9 图 0 9 编译环境设置 单击工具栏的按钮 编译当前源程序 编译结果会显示在输出窗口内 如果 是 0 Error s 0 Warning s 就表示程序没有问题了 至少是在语法上不存在问题 了 如果存在错误或警告 请仔细检查您的程序是否与程序清单 1 1 一致 修改 后 再编译 直到通过为止 编译后的结果会生成 Intel HEX 格式的程序文件 LedFlash hex 该文件可以被一 类叫做 ISP In System Programming 的下载方法烧录到芯片内 下载后就可以 运行了 ISP 采用的是串行在线方式下载 因此芯片不必从电路板上取下 DP 51MCore 多核单片机实验仪上的四台 P89V51RB2 芯片都能很好的支持 ISP 下载操 作 1 4 新建新建 A51 汇编工程汇编工程 Keil C51 软件也支持 A51 汇编编程 建立 A51 工程的操作步骤与建立 C51 工程基本相 同 但有几个要点请注意 新建的源程序文件名要以 A51 或 ASM 作为后缀 A51 源程序添加到工程中时 文件类型要选择 Asm Source file s src a 其它操作步骤都跟建立 C51 工程相同 成都信息工程学院电子教学实验中心系列实验指导教材 第 8 页 第第 2 章章 在在 Keil C51 下调试程序下调试程序 Keil C51 的调试功能非常强大 本章我们先做一个初步了解 等以后再慢慢体会 现 在仍然以 LED 闪烁发光程序为例 来具体了解如何进行仿真操作 2 1 进入仿真状态进入仿真状态 如果程序编译通过 就可以仿真了 在仿真之前 有一项参数最好配置一下 仍然按 图标进入编译环境设置 找到 Xtal MHz 项 填入 11 0592 最后点击 确定 进入仿真状态很简单 直接点击工具栏红色的 图标 2 2 认识各个仿真窗口认识各个仿真窗口 图 0 1 Keil C51 源程序窗口 成都信息工程学院电子教学实验中心系列实验指导教材 第 9 页 1 源程序窗口源程序窗口 Keil C51 调试界面的中间是源程序窗口 参见图 0 1 黄色箭头 所指为当前即 将执行但还没有执行的代码 以深灰色标记的程序行是可以执行的代码 当然 在调试过 程中未必一定要去执行 以浅灰色标记的程序行不可作为代码来执行 它们是注释 空行 标号或 ROM 数据表 以绿色标记的程序行表示曾经执行过的代码 2 寄存器窗口寄存器窗口 图 0 2 Keil C51 寄存器窗口 Keil C51 调试界面的左边是寄存器窗口 参见图 0 2 8051 的工作寄存器 R0 R7 和系统寄存器 a b sp dptr PC psw 都列出来了 Value 栏显示的是寄存器的当前 数值 如果在调试过程中某个寄存器的值有变化 则会用蓝色的背景标记 单击 psw 寄存 器左边的 展开后还可以看到其每一位的情况 3 汇编窗口汇编窗口 单击工具栏的 图标 源程序窗口会自动切换成汇编窗口 参见图 2 3 在汇编 窗口里 我们可以看到每条指令的存储地址和编码等信息 再次单击 回到源程序 窗口 4 存储器窗口存储器窗口 单击工具栏的 图标 将显示出存储器窗口 参见图 2 4 8051 单片机的存储器 分为多个不同的逻辑空间 如果要观察代码存储器的内容 就在地址栏 Address 内输 入 C 地址 例如 C 0080H 同理 观察内部数据存储器输入 I 地址 观察外部数据 存储器输入 X 地址 拖动存储器窗口右边的滚动条可观察其它存储单元 存储器窗口有 Memory 1 Memory 4 共 4 个观察子窗 可以用来分别观察代码存储器 内部数据存 储器和外部数据存储器 存储器的内容是可以修改的 用鼠标右击打算要修改的存储单元 成都信息工程学院电子教学实验中心系列实验指导教材 第 10 页 选择 Modify Memory at 项 弹出修改对话框 可以随意修改存储单元的内容 图 0 3 Keil C51 汇编窗口 图 0 4 Keil C51 存储器窗口 图 0 5 Keil C51 变量观察和堆栈窗口 成都信息工程学院电子教学实验中心系列实验指导教材 第 11 页 5 变量观察和堆栈窗口变量观察和堆栈窗口 单击工具栏的 图标 将显示变量观察和堆栈窗口 Watch 数据送到 P0 端口 SETBP1 4 拉高 LE 使数据送到 74HC573 的输出 NOP 延时 CLRP1 4 拉低 LE 锁定 74HC573 输出端的数据 ENDM 2 数码管原理及电路 数码管原理及电路 七段式 LED 数码管是常见的电子设备显示器件 能够显示数字 0 9 以及部分字母和 符号 实际上的数码管常常会附加一个小数点 作为第八段 数码管分为静态和动态两大类 每一类又有共阳和共阴之分 静态数码管的特点是驱 动方法简单 亮度高 但是连线比较多 动态数码管常常以多位联体的形式提供 连线较 少 但是要用动态扫描的方法驱动 为了获得足够的亮度 限流电阻取值常常比较小 1 位的数码管可以看成是由 abcdefg 和 dp 共 8 段的单个 LED 组成的 如图 5 2 2 所示 成都信息工程学院电子教学实验中心系列实验指导教材 第 27 页 abcdefgdp com abcdefgdp com a bf c g d e 10 9 8 5 4 2 3 a b c d e f g 7 dp dp 1 com 6 com LN3161AS a bf c g d e 10 9 8 5 4 2 3 a b c d e f g 7 dp dp 1 com 6 comLN3161BS 图 5 2 2 1 位共阴和共阳数码管及内部结构示意图 多位联体的动态数码管段选信号 abcdefg 和 dp 是共用的 而位选信号 com 是分开的 扫描方法并不难 先把第 1 个数码管的显示数据 段码 送到 abcdefg 和 dp 同时选通 com1 而其它数码管的 com 信号禁止 延时一段时间 通常不超过 1ms 再把第 2 个数 码管的显示数据送到 abcdefg 和 dp 同时选通 com2 而其它数码管的 com 信号禁止 延 时一段时间 再显示下一个 如此反复循环 注意 整个数码管扫描一遍的时间最慢也应 当保证在 20ms 以内 频率 50Hz 否则会看到明显的闪烁 如所示 MCU BANK3 部分的动态数码管接法与其它三台 MCU 大体相同 原理一致 但在具体细节上有一些区别 MCU BANK3 用了 2 只四位联体的共阳动态数码管 比其它 三台 MCU 要多 1 只 因此 为了平衡亮度限流电阻取值也较小 采用 I O 直接控制 74HC573 驱动芯片 LE 信号 硬件简单了 但在软件上需要由数条指令组成的序列才能访 问 成都信息工程学院电子教学实验中心系列实验指导教材 第 28 页 OE 1 1D 2 2D 3 3D 4 4D 5 5D 6 6D 7 7D 8 8D 9 GND 10 LE 11 8Q 12 7Q 13 6Q 14 5Q 15 4Q 16 3Q 17 2Q 18 1Q 19 Vcc 20 U11 74HC573 VCC 3 a bf c g d e 11 7 4 2 1 10 5 a b c d e f g 3 dp dp 8 com1 12 9 6 com2 com3 com4 a bf c g d e dp a bf c g d e dp a bf c g d e dp DS3 LN3461BS D0 3 D1 3 D2 3 D3 3 D4 3 D5 3 D6 3 D7 3 OE 1 1D 2 2D 3 3D 4 4D 5 5D 6 6D 7 7D 8 8D 9 GND 10 LE 11 8Q 12 7Q 13 6Q 14 5Q 15 4Q 16 3Q 17 2Q 18 1Q 19 Vcc 20 U10 74HC573 VCC 3 a bf c g d e 11 7 4 2 1 10 5 a b c d e f g 3 dp dp 8 com1 12 9 6 com2 com3 com4 a bf c g d e dp a bf c g d e dp a bf c g d e dp DS4 LN3461BS D0 3 D1 3 D2 3 D3 3 D4 3 D5 3 D6 3 D7 3 P12 3 P13 3 C47 100nF C48 100nF RP20330 RP23330 图 5 2 3 MCU BANK3 实验 动态数码管扫描 3 实验步骤实验步骤 自己动手建立 Keil C51 工程 编辑源程序 编译生成 HEX 文件 利用 Flash Magic 软件将例程的 HEX 文件下载到 MCU BANK3 运行程序 8 只 LED 依次亮灭 循环 动态数码管依次显示出如下字符 0123456789AbCdEF 5 3 实验实验 3 按键扫描 按键扫描 5 3 1 独立式按键独立式按键 1 实验目的实验目的 掌握独立式按键扫描的一般处理方法 2 实验原理实验原理 机械按键在按下和弹起时 都会产生 抖动 这是一列短暂而不规则的脉冲 参见 图 5 4 在程序上 如果不做任何消抖动的处理 则会出现类似 按一次键 显示数据跳好 几次 的现象 图 5 3 1 按键抖动现象示意图 成都信息工程学院电子教学实验中心系列实验指导教材 第 29 页 本实验的电路图参见图 5 3 2 S11 KEY VCC 3 S12 KEY S13 KEY S14 KEY INT0 3 INT1 3T0 3T1 3 K1K2K3K4 RP18 10k 图 5 3 2 MCU BANK3 实验 按键扫描 处理按键抖动的方法有多种 在实验例程中 采用 带延时的双循环 检测法 有效 地消除了按键抖动 从而确保按一次键马上就能执行并且仅执行一次动作 在第 1 个循环 里 每隔 100ms 检测一次按键 即每秒 10 次 通常情况下足够快了 如果有键按下则立 即退出循环 后续程序会马上处理这个按键 并不需要额外的延时等待 处理完按键动作 后 进入第 2 个循环 该循环也是每隔 100ms 检测一次按键 一直等到刚才按下的键抬起 后才会退出循环 然后继续第 1 个循环 也可以采用中断的形式 进行按键检测 R1 10k S1 KEY VCC INT1 图 5 3 3 基础实验 按键中断 8051 单片机有 INT0 和 INT1 两条外部中断请求输入线 用于输入两个外部中断源的 中断请求信号 并允许外部中断源以低电平或下降沿触发方式来输入中断请求信号 INT0 和 INT1 中断的入口地址分别是 0003H 和 0013H TCON 寄存器 SFR 地址 88H 中的 IT0 和 IT1 位分别决定 INT0 和 INT1 的触发方 式 置位时为下降沿触发 清零时为低电平触发 实际应用时 如果外部的中断请求信号 在产生后能够在较短时间内自动撤销 则可以选择低电平触发 在中断服务程序里要等待 其变高后才能返回主程序 否则会再次触发中断 产生不必要的麻烦 如果外部的中断请求信号产生后可能长时间后才能撤销 则为了避免在中断服务程序 里长时间无谓等待 可以选择下降沿触发 下降沿触发是 一次性 的 每次中断只会有 1 个下降沿 因此中断处理程序执行完后可以立即返回主程序 而不必等待中断请求信号 恢复为高电平 这是一个重要的技巧 3 实验步骤实验步骤 自己动手建立 Keil C51 工程 编辑源程序 编译生成 HEX 文件 利用 Flash Magic 软件将例程的 HEX 文件下载到 MCU BANK1 运行程序 分别按下 4 只独立式按键 数码管分别显示 1 2 3 4 成都信息工程学院电子教学实验中心系列实验指导教材 第 30 页 5 3 2 行列式按键 行列式按键 1 实验目的 实验目的 掌握行列式按键扫描的一般处理方法 2 实验原理实验原理 假如一个系统中要用到较多的按键 如果仍然采用 I O 独立按键的接法 则会占用大 量的 I O 端口 而行列式键盘则能很好地利用有限的 I O 资源 比如 MCU 外围要接 20 只 按键 如果采用独立按键接法 要占用 20 根 I O 线 如果换成 4 5 的行列键盘 则只需 要 9 根 I O 线 效果十分明显 S21 KEY S22 KEY S23 KEY S24 KEY S25 KEY S26 KEY S27 KEY S28 KEY S29 KEY S30 KEY S31 KEY S32 KEY S33 KEY S34 KEY S35 KEY S36 KEY P27 3 P26 3 P25 3 P24 3 P23 3 P22 3 P21 3 P20 3 图 5 3 4 MCU BANK3 实验 行列键盘扫描 如图 5 3 4 所示为 DP 51MCore 的 4 4 行列键盘原理图 P2 端口内部已经有上拉电阻 外部可以省略 如果您采用 P0 端口扫描键盘 则要注意加上上拉电阻 因为 P0 是开漏的 内部无上拉 线反转法 是扫描行列键盘的常见方法 线反转法 的工作过程如下 把行列键盘的扫描信号分成两组 KR1 KR2 KRm 为行 KC1 KC2 KCn 为 列 所有扫描信号初始化为高电平 调用行列键盘扫描程序 扫描时 先反转 KC1 即 KC1 0 准备按列扫描 当 然 您也可以选择反转 KR1 按行进行扫描 行列对称 道理是一样的 依次读取 KR1 KR2 KRm 的状态 如果发现某根线 KRi 是低电平 则说明 KC1 与 KRi 相交的那只按键被按下了 记录其扫描码 使 KC1 恢复为高电平 反转 KC2 再次读取 KR1 KR2 KRm 的状态 查看是否有键按下 最后恢复 KC2 如此 一直扫描完最后的 KCn 这一列 返回适当的键盘扫描码 完成 请认真体会这种按键检测处理方法 3 实验步骤实验步骤 自己动手建立 Keil C51 工程 编辑源程序 编译生成 HEX 文件 利用 Flash Magic 软件将例程的 HEX 文件下载到 MCU BANK1 运行程序 分别按下 16 只按键 数码管分别显示 0 9 和 A F 成都信息工程学院电子教学实验中心系列实验指导教材 第 31 页 5 4 实验实验 4 定时器实验 定时器实验 5 4 1 LED 闪烁发光闪烁发光 1 实验目的实验目的 学习定时器的简单用法 2 实验原理实验原理 R1 2k D1 LED VCC P1 1 图 5 4 1 基础实验 LED 闪烁发光 不管是哪一款单片机 定时器 计数器几乎都是标准配置 学会其用法是起码的要求 8051 单片机内部有两个定时器 计数器 T0 和 T1 8052 内核的单片机还新增了 T2 定时器与计数器概念的区别仅仅是时钟来源不同 定时器的计时脉冲来自晶振的 12 分频 而计数器的计数脉冲来自外部管脚 T0 P3 4 或 T1 P3 5 在本实验中 先来学习定时器的用 法 T0 和 T1 共有 4 种工作模式 其中模式 0 为 13 位定时器 奇怪吧 怎么不是 8 位 16 位 而是 13 位呢 这是为了与早期的 8048 兼容而设置的 现在基本上不再使用 TMOD TCON TH0 TL0 TH1 TL1 是与定时器操作有关的几个寄存器 表格 5 4 1 TMOD 寄存器 76543210 GATEC TM1M0GATEC TM1M0 定时器模式寄存器 TMOD SFR 地址为 89H 不可位寻址 TMOD 的结构如表格所示 TMOD 的低 4 位用于对 T0 的控制 高 4 位控制 T1 当 M1 M0 0 1 时 定时器被设置 为方式 1 即 16 位定时器 C T 0 为定时器 C T 1 作为计数器 GATE 是门控 位 T0 T1 作为 16 位定时器时通常要使 GATE 0 在实验例程中 设置 TMOD 的值 为 01H 表格 5 4 2 TCON 寄存器 76543210 TF1TR1TF0TR0IE1IT1IE0IT0 定时器控制寄存器 TCON SFR 地址为 88H 可以位寻址 TCON 的结构如表格所示 TCON 寄存器的低 4 位与中断控制有关 在这里先不必理会 TR0 或 TR1 置位时 启动定 时器运行 当定时器溢出后 TF0 或 TF1 会自动置位 通过软件查询的办法可以获取该位 的状态 定时值寄存器 TH0 TL0 和 TH1 TL1 它们的 SFR 地址分别是 8CH 8AH 和 8DH 8BH 启动定时器之前要先设置初值 初值计算公式为 定时器模式 1 初值 65536 t T 成都信息工程学院电子教学实验中心系列实验指导教材 第 32 页 在公式中 t 是预定的定时时间 T 1 f 12 是定时器的输入时钟脉冲的 1 个周期 f 是振荡器频率 8051 单片机规定 主时钟的 12 分频作为定时器的时钟输入 举个例子 现在用 11 0592MHz 的晶振 这个频点奇怪吗 等到学习串行口通信部分时就会明白的 想要定时 10ms 则 T 1 f 12 1 921600 初值 65536 0 01 T 56320 换算成 16 进 制为 0DC00H 这样 TH0 和 TL0 分别取值为 0DCH 和 00H 当定时器启动后 每经过 1 个 T 周期 定时值自动加 1 当加到 65536 时归 0 溢出 同时 TF0 或 TF1 置位 但是定时器并不因为溢出而停止运行 而是继续跑 在例程的主循环里 先点亮 LED 利用定时器延时 200ms 然后熄灭 LED 再延时 800ms 如此 就会看到 LED 不断闪烁发光 3 实验步骤实验步骤 参考光盘里的实验例程 自己动手建立 Keil C51 工程 编辑源程序 编译生成 HEX 文件 利用 Flash Magic 软件下载程序文件 下载到任意四台单片机中任意一台都可以 运行程序 LED 亮 200ms 灭 800ms 反复循环 5 4 2 555 脉冲测量脉冲测量 1 实验目的实验目的 掌握 T0 T1 的计数器用法和门控计数用法 2 实验原理实验原理 利用 8051 的定时器 计数器 T0 或 T1 可以直接测量一定范围内的方波频率和脉冲宽度 为了方便做实验 DP 51MCore 实验仪提供有一个方波脉冲发生器 由 NE555 模拟定时器 构成 占空比 5 95 可调 参见图 5 4 2 1 2 3 4 5 6 8 GND Vout Disc RSTVcc Vco TH TR 7 U38 NE555 VCC 3 R49 390 RW3 10k C39 470nF C38 10nF 1 2 JP9 CON2 T0 3 R52 220 1 TP11 CON1 1 TP12 CON1 555 GND R53 390 D34 1N4148 D35 1N4148 图 5 4 2 占空比可调的 NE555 方波脉冲发生器 成都信息工程学院电子教学实验中心系列实验指导教材 第 33 页 Osc 12 8 Bits TL0 8 Bits TH0 Interrupt TF0 T0 INT0 TR0 Gate C T 0 C T 1 图 5 4 3 8051 定时器 计数器 T0 内部结构示意图 如图 5 4 3 所示为 8051 定时器 计数器 T0 的内部结构示意图 测量方波频率的方法 方波信号从 T0 管脚输入 预先设置 TMOD 寄存器 C T 位为 1 Gate 位为 0 另外确保 INT0 管脚为高电平 测量时 先清除 TH0 TL0 和 TF0 然后 置位 TR0 用另外一个定时器 光盘例程用的是 T2 定时 1 秒 定时结束时清除 TR0 则 寄存器 TH0 TL0 的内容就是方波的频率 单位是 Hz 最后送动态数码管显示 测量脉冲宽度的方法 脉冲信号从 INT0 管脚输入 预先设置 C T 位为 0 Gate 位为 0 测量前清除 TH0 TL0 和 TF0 由于要测量的是正脉冲宽度 因此要先不断读取 INT0 管脚的状态 等待 INT0 为低电平时 置位 TR0 这样 INT0 管脚一旦变成高电平则计数 器立即开始计数 计数开始后 还要不断访问 INT0 管脚 等待其变低时 清除 TR0 最 后 寄存器 TH0 TL0 的内容即脉冲宽度 换算成微秒单位后送动态数码管显示 3 实验步骤实验步骤 自己动手建立 Keil C51 工程 编辑源程序 编译生成 HEX 文件 利用 Flash Magic 软件将光盘例程 测量方波频率 的 HEX 文件下载到 MCU BANK3 暂时不要运行 用跳线帽短接 JP9 使 555 产生的方波信号引到 T0 管脚 运行程序 旋动电位器 RW3 可以看到不同的频率显示 单位 Hz 利用 Flash Magic 软件将光盘例程 测量脉冲宽度 的 HEX 文件下载到 MCU BANK3 暂时不要运行 拔去 JP9 的跳线帽 拔去 JP17 中 INT0 处的跳线帽 用杜邦线连接 JP9 的 555 到 JP17 的 INT0 运行程序 旋动电位器 RW3 可以看到不同的脉冲宽度显示 单位 s 实验完毕 拔去杜邦线 整理好 恢复 JP17 中 INT0 处的跳线帽 5 5 实验实验 5 用 用 8255 扩展并行扩展并行 IO 1 实验目的实验目的 了解传统并行 I O 扩展芯片 8255 的用法 2 实验原理实验原理 8255 是传统的并行 I O 扩展芯片 因为其价格昂贵 体积大 功耗高 占用 MCU 的 I O 过多 所以目前在真正的工业产品设计里已经较少采用该芯片 但由于 8255 具有典型 成都信息工程学院电子教学实验中心系列实验指导教材 第 34 页 的并行扩展特性 在教学领域还占有一席之地 PA3 1 PA2 2 PA1 3 PA0 4 RD 5 CS 6 GND 7 A1 8 A0 9 PC7 10 PC6 11 PC5 12 PC4 13 PC0 14 PC1 15 PC2 16 PC3 17 PB0 18 PB1 19 PB2 20 PB3 21 PB4 22 PB5 23 PB6 24 PB7 25 Vcc 26 D7 27 D6 28 D5 29 D4 30 D3 31 D2 32 D1 33 D0 34 RESET 35 WR 36 PA7 37 PA6 38 PA5 39 PA4 40 U34 8255 D0 2 D1 2 D2 2 D3 2 D4 2 D5 2 D6 2 D7 2 CS2 2 A0 2 A1 2 WR 2 RD 2 RST 2 VCC 2 C17 100nF 1 2 3 4 5 6 7 8 16 15 14 13 12 11 10 9 SW7 SW DIP 8 XDATA 0 xE000 0 xE003 VCC 2 LED D12 Red D13 Red D14 Red D17 Red D18 Red D19 Red D20 Red D21 Red VCC 2 1 2 3 4 5 6 7 8 J2 CON8 RP1010k RP1210k RP1310k RP1410k RP16 330 RP15 330 图 5 5 1 MCU BANK2 实验 用 8255 扩展并行 I O 实验电路如图 5 5 1 所示 8255 芯片被安排到地址 XDATA 0 xE000 0 xE003 对应 3 个 8 位并行 I O 端口和一个控制寄存器 PA 端口接有 8 只 LED 灯 PB 端口接拨码开关 PC 端口用排针引出备用 8255 的 I O 有多种工作模式 比较复杂 这里不一一介绍了 详见数据手册 3 实验步骤实验步骤 利用 Flash Magic 软件将程序的 HEX 文件下载到 MCU BANK2 运行 运行效果 对例程 通过 8255 点亮 LED 8 只 LED 依次亮灭 循环 拨码 开关控制 LED 开关拨到 ON 对应的 LED 点亮 拨到 OFF 则熄灭 5 6 实验实验 6 UART 基本收发基本收发 1 实验目的实验目的 学习串行口通信的基本概念 掌握 8051 串行口的基本用法 2 实验原理实验原理 只有真正学会了串行口的各种用法 才能正真算得上学会了 8051 单片机 成都信息工程学院电子教学实验中心系列实验指导教材 第 35 页 在 8051 单片机中 涉及串行口操作的寄存器有多个 如 SCON SBUF PCON IE 以及定时器 T1 等等 以下将对这些寄存器以及串行口的基本用法做一个简单介绍 SCON SCON 是串行口控制寄存器 SFR 地址 0 x98 可位寻址 描述如下 SCON 7 SM0 方式选择位 0 SCON 6 SM1 方式选择位 1 SM0 SM1 00 方式 0 同步移位寄存器 波特率固定为 f 12 f 为主时钟 下同 SM0 SM1 01 方式 1 10 位异步收发器 波特率由 T1 PCON 7 指定 SM0 SM1 10 方式 2 11 位异步收发器 波特率固定为 f 32 PCON 7 1 时 或 f 64 PCON 7 0 时 SM0 SM1 11 方式 3 11 位异步收发器 波特率由 T1 PCON 7 指定 方式 1 2 3 的实验电路原理图请参考 0 图 0 1 SCON 5 SM2 方式选择位 2 用于多机通信 SCON 4 REN 接收使能位 REN 置位时允许接收数据 否则禁止接收 SCON 3 TB8 方式 2 和 3 的第 9 个数据发送位 SCON 2 RB8 方式 2 和 3 的第 9 个数据接收位 可以用于带校验位的异步收发 或者用于多机通信 对方式 0 和 1 无效 SCON 1 TI 发送中断标志 SCON 0 RI 接收中断标志 发送结束时 TI 自动置位 如果使能中断 则中断被触发 TI 被置位后 需要用 软件来清除 接收结束时 RI 自动置位 如果使能中断 则中断被触发 RI 被置位后 需要用 软件来清除 发送和接收共享同一个中断向量 入口地址都为 0023H 在编写中断服务程序时 应当首先判断 TI 和 RI 位 然后再跳转到不同的处理分支 SBUF SBUF 是串行口数据缓冲寄存器 SFR 地址 99H 不可位寻址 SBUF 寄存器负责各个 方式下的串行口数据收发 SBUF 实际上是两个不同的物理寄存器 只是共用同一个 SFR 地址 一个只读 一个只写 不会冲突 因此发送和接收过程可以同时进行 方式 0 除外 向 SBUF 写入数据后 硬件就开始自动发送这个数据 发送完毕置位 TI 标志 如果收到数 据 则 RI 会自动置位 提示可以从 SBUF 读取所接收到的数据了 如果没有及时读走接收 到的数据 则在接收到下一个数据时 原有的数据会被 冲掉 方式 0 在方式 0 下 串行口作为同步移位寄存器使用 波特率固定为 f 12 串行数据通过 RXD P3 0 管脚输入 输出 而 TXD P3 1 管脚总是向外部提供移位时钟 数据在时钟 上升沿有效 发送时 只需将数据写入 SFR 寄存器 SBUF 接收时 应当先清除 RI 位 再 置位 REN 等到 RI 被自动置位时 表明接收完成 不论是接收还是发送 8 位数据的低位 总是在前 高位总是在后 方式 0 虽然名为 同步 但一般不会用作同步通信 而是主要用于 I O 扩展 扩展输 入端口时 可以使用 74X165 X 为 LS HC AHC 等 扩展输出端口时 可以使用 74X595 不推荐用 74X164 这两种芯片都可以级联 方式 1 成都信息工程学院电子教学实验中心系列实验指导教材 第 36 页 方式 1 是全双工的 10 位异步收发器 UART 1 位起始位 0 8 位数据 仍然是低 位在前 1 位停止位 1 无校验位 在 8051 单片机里 这是相当常用的一种方式 RXD 管脚负责接收数据 REN 须置位才能接收 TXD 管脚负责发送数据 起始位和停止 位是由硬件自动插入的 软件无需额外的处理 方式 1 的波特率由定时器 T1 和 PCON 7 来指定 在方式 1 和 3 下 主时钟一般取 11 0592MHz 或 22 1184MHz 不是任意的频点 常见的波特率有 2400 4800 9600 19200 38400 57600 115200 等 数据的收发双方 一般要事先约 定好相同的波特率才能正常通信 初学 C 语言的人都知道 printf 和 scanf 是两个非常有用的 I O 函数 在 Keil C51 中 也有这两个函数 同样好用 在默认情况下 它们是以串行口作为标准 I O 设备的 当然 也可以通过编程指定为其它 I O 设备 如您自己的 128 64 液晶屏和 4 4 键盘 因此 只要对串行口相关的几个寄存器做一个简单的初始化 再配合一个在电脑上运行的串行口 调试软件 如 Windows 的超级终端 ZLGCOMView 等 就能够方便地运用这两个函数 方式 2 方式 2 是全双工的 11 位异步收发器 比方式 1 多了一个数据位 多出来的数据位通常 用作奇偶校验 发送数据时 先把数据放入累加器 A 再把 PSW 中的奇偶标志 P 复制到 SCON 寄存器的 TB8 最后执行 MOV SBUF A 发送数据 接收时 如果检测到 RI 置位 则清除 RI 再执行 MOV A SBUF 读取数据 最后判断 PSW 中的 P 标志是否与 SCON 中的 TB8 相符 注意 接收双方奇偶校验位的规定必须事先约定一致 方式 2 的波特率是固定为 f 32 PCON 7 1 时 或 f 64 PCON 7 0 时 方式 3 方式 3 是全双工的 11 位异步收发器 方式 3 除了波特率的与方式 2 不同外 其它一致 方式 3 的波特率产生方法与方式 1 相同 波特率 波特率 Baud Rate 即串行通信的位速率 单位 bps 意为 位 秒 9600 的波特 率 是指串行通信设备每秒钟可以发送或接收 9600 个 bit 比特 在方式 1 下 除去起始 位和停止位不算 实际每秒可以发送或接收的有效数据是 960 个 byte 字节 这可以理解 为用 Flash Magic 软件配合 DP 51MCore 下载一个 2KB 大小的例程时 需要花费 2 秒多一 点的时间 采用 22 1184MHz 晶振的 8051 最高可以产生 115200 的波特率 每秒可达 11 52KB 标准 8051 单片机没有专门的波特率发生器 因此在串行口设置为方式 1 和 3 后 必须 占用定时器 T1 来产生波特率 在方式 1 和 3 下 串行口发送和接收的波特率取决于定时 器 T1 的溢出率和 PCON 7 定时器 T1 的方式 0 和 1 没有自动重装功能 这会带来波特率 的误差 进而导致收发数据出错 所以 必须 设置为方式 2 即 8 位自动重装方式 一 般 请不要使能 T1 的中断 即保持 ET1 为 0 功耗控制寄存器 PCON 的最高位 SMOD 置位时 能够使波特率在原有基础上加倍 定时器 T1 初值计算公式为 PCON 7 0 时 TH1 TL1 256 f 12 32 BaudRate PCON 7 1 时 TH1 TL1 256 f 12 16 BaudRate 其中 f 为主时钟频率 BaudRate 是波特率 如果计算结果超过 255 则表明预设的波 特率过高 或晶振频率不够 如果计算结果是小数 则表明晶振和波特率的组合不合适 会给串行通信带来误差 这将导致收发数据出错 方式 0 的波特率是固定的 为 f 12 在所有方式里波特率最高 方式 2 的波特率是固定的 不能通过定时器改变 只能通过设置 PCON 7 选择是否加倍 成都信息工程学院电子教学实验中心系列实验指导教材 第 37 页 当 PCON 7 0 时 波特率为 f 64 当 PCON 7 1 时 波特率为 f 32 例如 晶振取 7 3728MHz 这也是一个常见的频点 PCON 7 0 则波特率为 115200 在 8052 内核单片机中 新增的定时器 T2 也可以作为波特率发生器 具体的用法请读 者自行参考相关资料 这里不再赘述 中断处理 串行口通信可以选择查询方式或中断方式来处理 要视具体情况而定 一般 对较大 的程序 为了提高处理效率 常常采用中断处理方式 初始化好串行口以后 置位 SFR 寄存器 IE 当中的 ES 和 EA 后 不管是软件或硬件的 原因 只要使 TI 或 RI 置位 就会触发串行口中断 发送和接收共享同一个中断向量 入 口地址都为 0023H 在编写中断服务程序时 应当首先判断 TI 和 RI 位 然后再跳转到不 同的处理分支 注意 进入中断后 TI 和 RI 不会自动清零 而必须要用指令来清除 通 常 在程序里还要设置长度足够大的接收缓冲区 从 SBUF 读取的数据暂存在其中 以给 主程序的进一步处理留足时间 一般不需要设置发送缓冲区 请留意中断优先级问题 在使用串行口中断的同时 如果还用到了另外的中断 如 T0 的定时中断 则正在处理串行数据时 被其它中断打断 并占用了一段较长 CPU 时间 就有可能造成串行口数据丢失 毕竟硬件的缓冲区只有 SBUF 一个 通常的处理方法是把 串行口中断设置为高级优先级 方法是置位 SFR 寄存器 IP 中的 PS 位 而其它所有中断都 设置为低级优先级 也许您认为这样会造成处理其它中断的不便 是的 标准 8051 就是这 样 好在 Philips 半导体推出的多款 8051 内核单片机都
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年社区矫正社会监督员工作职责模拟题
- 青光眼护理学术交流竞赛
- 2026年城管法律法规知识更新题库
- 2026年少年军校少年警校活动开展与国防教育内容考核
- 2026年妇女常见法律风险防范与法律援助申请题
- 2026年国防动员法基础知识竞赛
- 2026年数据中心消防设施维护测试卷
- 股票投资入门与进阶策略
- 2026年党校研究生入学考试专业基础理论知识全真模拟试卷及答案(一)
- 道路与室外工程施工方案
- 新视野大学英语(第四版)读写教程3(思政智慧版) 教案 B3U4 Unit 4 When work is a pleasure
- 装修安全施工承诺书
- 《楚门的世界》电影赏析
- GB/T 44413-2024城市轨道交通分类
- 房颤导致血栓护理
- DB32∕T 1649-2010 公路养护工程预算编制办法及定额
- 2024年九江杭氧气体有限公司招聘笔试参考题库附带答案详解
- 2024年广西北部湾大学招考聘用98名专任教师重点基础提升难、易点模拟试题(共500题)附带答案详解
- (正式版)JBT 14449-2024 起重机械焊接工艺评定
- (完整文本版)体检报告单模版
- 土石坝安全监测与维修养护-土石坝护坡的修理
评论
0/150
提交评论