




已阅读5页,还剩47页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
I 摘 要 介绍了一种廉价的应用广泛的 MCS 51 系列单片机实验板 它与传 统的教学实验板相比有如下的优点 1 价格低廉 2 使用简单方 便 只要有带 RS232 串口的 PC 机就能进行实验 3 功能全 基本上 具备单片机常用的接口 例如存储器 LED 数码管显示 键盘人机接 口 并行接口 串行接口 等等 本实验板兼顾学生单片机实验和毕业设计等不同用途 可以做流 水灯实验 键盘实验等一些简单实验 在增加一些外围电路以后 可 以进行一些实际应用 它具有模块化硬件结构和简单的人机交互功能 并详细阐述了系统组成 硬件功能模块及部分演示程序 该实验板具 有降低设计成本 缩短开发周期 丰富学生知识 提高设计水平等优 点 关键词 单片机 实验板 流水灯 数码管 键盘 II Abstract Introducing a low cost MCS 51 micro controller experimental board which is broadly used It has the following merits compared with the traditional teaching experimental board 1 the price is inexpensive It is used simply and convenient So long as the PC machine has belt RS232 string mouth the experiment can be able to carried on 3 entire function It basically has the monolithic integrated circuit commonly used connection For example memory LED numerical code tube demonstration keyboard man machine connection parallel connection serial connection and so on This experimental board gives dual attention to the different uses for example the student monolithic integrated circuit experiment and the graduation project can do flows lamp experiment Keyboard experiment etc which is simple experiment After we increases some periphery electric circuits We can use it to carry on some practical applications The system configuration hardware function mode and the demo program block diagram are described in detail The experimental circuit has characteristics such as lowering of design cost shortening dexelopming cycle increasing knowledge of students and raising of projected capacity etc Keywords MCU Experimental board Flows lamp Numerical code tube Keyboard III 目 录 摘 要 I Abstract II 第 1 章 绪论 1 1 1 单片机实验板的设计的意义 1 1 2 本课题所需要做的工作 1 1 3 实验板的总体设计 2 第 章 实验板重要器件介绍 3 2 1 AT89C51 单片机 3 2 2 仿真头介绍 6 2 3 串口通信模块 7 2 4 LED 器件的工作原理 10 2 4 1 LED 器件发光的基本原理 10 2 4 2 LED 器件的驱动 10 2 5 音乐模块 11 2 6 键盘模块 12 第 3 章 系统实验板开发设计 14 3 1 流水灯模块实验设计 14 3 1 1 流水灯的硬件设计 14 3 1 2 流水灯的程序设计 14 3 2 串口通信模块实验设计 15 3 2 1 串口通信模块的硬件设计 15 3 2 2 串口通信模块的程序设计 16 3 3 LED 显示模块实验设计 16 3 3 1 串口通信模块的硬件设计 16 3 3 2 LED 模块的程序设计 17 3 4 音乐模块设计 18 IV 3 4 1 音乐模块的硬件设计 18 3 4 2 音乐模块的程序设计 19 3 5 键盘模块设计 22 3 5 1 键盘模块的硬件设计 22 3 5 2 键盘模块的软件设计 22 第 4 章 系统调试和实验分析 24 4 1 系统调试软件介绍 24 4 1 1 伟福 V8 L 仿真界面及设置 24 4 1 2 软件的调试 26 4 2 流水灯模块实验调试 28 4 3 串口通信实验调试 29 4 4 LED 显示实验调试 30 4 5 键盘实验调试 31 结 论 33 参考文献 34 附录 1 35 附录 2 36 附录 3 39 致 谢 43 1 第 1 章 绪论 1 1 单片机实验板的设计的意义 目前单片机利用当今先进的半导体器件制造技术以其高可靠性高 性能价格比在工业控制系统智能化仪器仪表办公自动化等诸多领域得 到极为广泛的应用 MCS 51系列单片机以其优越的性能成熟的技术及 可靠性和高性能价格比成为国内单片机应用领域中的主流 单片机在智能仪器 工业控制 机电一体化等方面应用非常广泛 许多高校工科专业均开设了单片机类的课程 单片微型计算机原理是 机制机电及相关专业本科生和研究生必须掌握的一门重要专业基础课 而在当前形势下 实践能力和创新精神是对21世纪高素质人才的基本 要求 运用现代化的实验教学手段 充分利用实验室现有条件 提高 学生的动手能力和创新能力 是单片机教学的重要环节 以培养学生 的实践能力和创新精神为目标 不断地改革和完善单片机实验教学的 内容和方法是激发学生学习单片机技术的学习兴趣 从而充分发挥学 生的主观能动性和创造性的主要途径 而这一切的实现都需要有一个 适合学生的单片机实验板 多年来由于实验条件较差等方面的因素 大多数学生学完后仍停留在理论层面上 不能灵活应用 多功能单片 机应用实验板是提高学生动手能力 与教学内容紧密结合 成本低廉 的实验装置 系统的设计立足于教学大纲 能满足进行教学中各种实 验的要求 它采用模块式结构 学生可根据自己的需要灵活将这些模 块组成一个系统 作为学习开发板使用 增加必要的外围电路和设备 后 又可作为实际控制板 1 2 本课题所需要做的工作 本课题是基于AT89C51的单片机实验板 要求能做交通灯实验 键盘实验 数码显示实验 串行口实验等基本实验还能做一些设计开 2 发性实验 本课题应由硬件和软件共同组成 硬件应充分了解单片机 包括 存储空间 串行口 串行通信等 掌握矩阵键盘和LED的静态显示 并 要在充分满足系统可实现的功能的基础上考虑到器件的价格 制版的 复杂度和软件的实现难度 软件应了解C51的编程方法 常用的一些编 程技巧 调试运行程序 尽量使程序简洁 易懂 便于移植 编译效 率高 健壮性好 1 3 实验板的总体设计 系统设计以MCS 51系列单片机中8031 8051 89C51作为CPU进 行 图1 1 实验板总体结构框图 系统扩展 将数据存储器 程序存储器 1 O口扩展 串行口通讯 LED显示 键盘与显示等多种功能模块集成于一体 系统硬件结构布局 如图1 1所示 系统总电路图见附录1 3 第 章 实验板重要器件介绍 2 1 AT89C51 单片机 本设计中采用 AT89C51 是一种带 4K 字节闪烁可编程可擦除只读 存储器 FPEROM Falsh Programmable and Erasable Read Only Memory 的低电压 高性能 CMOS8 位微处理器 俗称单片机 该器 件采用 ATMEL P1 0 1 P1 1 2 P1 2 3 P1 3 4 P1 4 5 P1 5 6 P1 6 7 P1 7 8 RST 9 P3 0 RXD 10 P3 1 TXD 11 P3 2 INT0 12 P3 3 INT1 13 P3 4 T0 14 P3 5 T1 15 WR 16 RD 17 XTAL2 18 XTAL1 19 GND 20 P2 0 21 P2 1 22 P2 2 23 P2 3 24 P2 4 25 P2 5 26 P2 6 27 P2 7 28 PSEN 29 ALE 30 EA 31 P0 7 32 P0 6 33 P0 5 34 P0 4 35 P0 3 36 P0 2 37 P0 1 38 P0 0 39 VCC 40 AT89C51 图 2 1 AT89C51 引脚图 高密度非易失存储器制造技术制造 与工业标准的 MCS 51 指令集和输 出管脚相兼容 由于将多功能 8 位 CPU 和闪烁存储器组合在单个芯片 中 ATMEL 的 AT89C51 是一种高效微控制器 为很多嵌入式控制系 统提供了一种灵活性高且价廉的方案 1 主要特性 8031CPU 与 MCS 51 兼容 4K 字节可编程 FLASH 存储器 寿命 1000 写 擦循环 全静态工作 0Hz 24KHz 三级程序存储器保密锁定 128 8 位内部 RAM 32 条可编程 I O 线 两个 16 位定时器 计数器 6 4 个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器 和时钟电路 2 管脚说明 VCC 供电电压 GND 接地 P0 口 P0 口为一个 8 位漏级开路双向 I O 口 每脚可吸收 8TTL 门电流 当 P1 口的管脚第一次写 1 时 被定义为高阻输入 P0 能够用 于外部程序数据存储器 它可以被定义为数据 地址的第八位 在 FIASH 编程时 P0 口作为原码输入口 当 FIASH 进行校验时 P0 输 出原码 此时 P0 外部必须被拉高 P1 口 P1 口是一个内部提供上拉电阻的 8 位双向 I O 口 P1 口缓 冲器能接收输出 4TTL 门电流 P1 口管脚写入 1 后 被内部上拉为高 可用作输入 P1 口被外部下拉为低电平时 将输出电流 这是由于内 部上拉的缘故 在 FLASH 编程和校验时 P1 口作为第八位地址接收 P2 口 P2 口为一个内部上拉电阻的 8 位双向 I O 口 P2 口缓冲器 可接收 输出 4 个 TTL 门电流 当 P2 口被写 1 时 其管脚被内部上 拉电阻拉高 且作为输入 并因此作为输入时 P2 口的管脚被外部拉 低 将输出电流 这是由于内部上拉的缘故 P2 口当用于外部程序存 储器或 16 位地址外部数据存储器进行存取时 P2 口输出地址的高八位 在给出地址 1 时 它利用内部上拉优势 当对外部八位地址数据存储 器进行读写时 P2 口输出其特殊功能寄存器的内容 P2 口在 FLASH 编程和校验时接收高八位地址信号和控制信号 P3 口 P3 口管脚是 8 个带内部上拉电阻的双向 I O 口 可接收输 出 4 个 TTL 门电流 当 P3 口写入 1 后 它们被内部上拉为高电平 并用作输入 作为输入 由于外部下拉为低电平 P3 口将输出电流 ILL 这是由于上拉的缘故 P3 口也可作为 AT89C51 的一些特殊功能口 各管脚备选功能 P3 0 RXD 串行输入口 P3 1 TXD 串行输出口 5 P3 2 INT0 外部中断 0 P3 3 INT1 外部中断 1 P3 4 T0 记时器 0 外部输入 P3 5 T1 记时器 1 外部输入 P3 6 WR 外部数据存储器写选通 P3 7 RD 外部数据存储器读选通 P3 口同时为闪烁编程和编程校验接收一些控制信号 RST 复位输入 当振荡器复位器件时 要保持 RST 脚两个机器 周期的高电平时间 ALE PROG 当访问外部存储器时 地址锁存允许的输出电平用于 锁存地址的地位字节 在 FLASH 编程期间 此引脚用于输入编程脉冲 在平时 ALE 端以不变的频率周期输出正脉冲信号 此频率为振荡器 频率的 1 6 因此它可用作对外部输出的脉冲或用于定时目的 然而要 注意的是 每当用作外部数据存储器时 将跳过一个 ALE 脉冲 如想 禁止 ALE 的输出可在 SFR8EH 地址上置 0 此时 ALE 只有在执行 MOVX MOVC 指令是 ALE 才起作用 另外 该引脚被略微拉高 如 果微处理器在外部执行状态 ALE 禁止 置位无效 PSEN 外部程序存储器的选通信号 在由外部程序存储器取指期 间 每个机器周期两次 PSEN 有效 但在访问外部数据存储器时 这两 次有效的 PSEN 信号将不出现 EA VPP 当 EA 保持低电平时 则在此期间外部程序存储器 0000H FFFFH 不管是否有内部程序存储器 注意加密方式 1 时 EA 将内部锁定为 RESET 当 EA 端保持高电平时 此间内部程序存储 器 在 FLASH 编程期间 此引脚也用于施加 12V 编程电源 VPP XTAL1 反向振荡放大器的输入及内部时钟工作电路的输入 XTAL2 来自反向振荡器的输出 3 单片机机系统复位 系统复位是任何微机系统执行的第一步 使整个控制芯片回到默 认的硬件状态下 8051 单片机的系统复位是由 RESET 引脚来控制的 当此引脚与高电平相接超过 24 个震荡周期后 8051 即进入芯片内部复 6 位的状态 而且一直在此状态下等待 直到 RESET 引脚转为低电平后 才检查 EA 引脚是高电平或低电平 若为高电平则执行芯片内部的程序 代码 若为低电平便会执行外部的程序 8051 在系统复位时 将其内 部的一些重要寄存器设置为特定的值 2 2 仿真头介绍 本课题采用伟福公司的 E51 S 仿真器进行仿真 采用仿真器 可以 把实际硬件系统的单片机芯片拔掉 把单片机仿真插头插入单片机芯 片插座上 整个开发系统就取代了单片机的功能 系统运行时 能够 产生和单片机完全相同的实时信号 以实现对用户样机系统中的软 硬件的故障诊断和调试 伟福仿真器具有以下的特点 1 基于不同的单片机系统的设计时 往往需要选择不同的单片机 CPU 而伟福仿真软件 WINDOWS 版本支持多类 CPU 仿真 仿真器 则采用主机 仿真头组合 通过更换不同的仿真头 可对各种不同类型 的单片机进行仿真 2 WINDOWS 版本功能强大 中文界面 英文界面可任选 用户源 程序的大小不再有任何限制 支持 ASM C PLM 语言混合编程 具 有项目管理功能 为用户的资源共享 课题重组提供强有力的手段 支持点屏显示 用鼠标左键点一下源程序中的某一变量 即可显示该 变量的数值 有丰富的窗口显示方式 多方位 动态地显示仿真的各 种过程 使用极为便利 3 两种工作模式 在没有硬件时 可以通过软件实现模拟仿真 4 集成环境 编辑 编译 下载 调试全部集中在一个环境下 多 种仿真器 多类 CPU 仿真全部集成在一个环境下 可仿真 51 系列 196 系列 PIC 系列 飞利浦公司的 552 LPC764 DALLAS320 华 邦 438 等 51 增强型 CPU 7 设计中要正确选择晶振 仿真头晶振和用户板晶振频率必须一致 用户板上的晶振频率是 11 0592MHz 所以要把跳线选到 11 0592MHz 如果没有正确选择晶振频率 则用该仿真器仿真打印时 打印机出现的是乱码 POD8X5X 仿真头可配 E2000 系列 E51 系列仿真器 用于仿真 INTEL8031 51 系列及兼容单片机 可仿真 CPU 种类 8031 32 8051 52 8751 52 54 55 58 89C51 52 55 58 89C1051 2051 4 051 华邦的 78E51 52 54 58 LG 的 97C51 52 1051 2051 2 3 串口通信模块 RS 232C 标准是美国电子工业协会 EIA 与 BELL 等公司一起开发 的通信协议 是最初为远程通信连接数据终端设备 DTE 与数据通信设 备 DCE 而制定的 目前较广泛的应用与计算机与终端或外设之间的近 端连接 1 机械特性 1 连接器 由于 RS 232C 标准只规定了采用一对物理连接器 但 对连接器本身的物理特性没有任何定义 因此出现了各种类型的连接 器 其中在实际应用中 DB 25 应用比较多 下面就将这两种连接器作 简单介绍 引脚 信号 1 保护地 2 发送数据 SOUT 3 请求发送 RTS 4 清除发送 CTS 5 数据装置准备 DSR 6 信号地 7 载波检测 DCD 20 数据终端准备 DCR 22 响铃指示 RI 8 2 电缆长度 传输电缆的长度与传输的电容有关 EIA 标准规定 被驱动电路的电容 包括电缆连接电容必须小于 2500PF 对于一个多 芯电缆来说 每英尺电容为 40PF 50PF 所以满足电容特性的电缆长 度最长为 50 英尺 RS 232C 规定允许的连接电缆不超过 50 英尺 但若 能保证电缆总电容小于 2500PF 则电缆长度可以超过限定值 2 电器特性 微机见串行通讯时 两者一般有一定距离 为了克服线路上的电 消耗 避免信息出错 常用 RS 232C 电平实现信号之间的传输 由于 RS 232C 电平采用负逻辑 即逻辑 1 5 15V 逻辑 0 5 15V 而 TTL 的 1 0 分别为 2 4 5V 和 0 4 0V 因此需要外 接电路实现电平转换 这种转换常用传输线驱动器 MC1488 和传输线 接收器 MC1489 来实现 MCS 51 内部含有一个可编程全双工串行通信接口 具有 UART 的 全部功能 该接口电路不仅能同时进行数据的发送和接收 也可作为 一个同步移位寄存器使用 在进行异步通信时 数据的发送和接收分别在各自的时钟 TCLK 和 RCLK 控制下进行的 但都必须与字符位数的波特率保持一致 MCS 51 串行口的发送和接收时钟可由两种方式产生 一种是由主机频 率 fosc 经分频后产生 另一种方式是由内部定时器 T1 或 T2 的溢出率 经 16 分频后提供 1 发送和接收的过程如下 串行口的发送过程由指令 MOV SBUF A 启动 即 CPU 由一条写 发送缓冲器的指令把数据 字符 写入串行口的发送缓冲器 SBUF 发 中 再由硬件电路自动在字符的始 末加上起始位 低电平 停止位 高电平 及其它控制位 如奇偶位等 然后在移位脉冲 SHIFT 的控 制下 低位在前 高位在后 从 TXD 端 方式 0 除外 一位位地向外 发送 串行口的接收与否受制于允许接收位 REN 的状态 当 REN 被软件 置 1 后 允许接收器接收 接收端 RXD 一位位地接收数据 直到收 到一个完整的字符数据后 控制电路进行最后一次移位 自动去掉启 9 始位 使接收中断标志 RI 置 1 并向 CPU 申请中断 CPU 响应中断 用一条指令 MOV A SBUF 把接收缓冲器 SBUF 收 的内容读入 累加器 TI 和 RI 是由硬件置位的 但需要用软件复位 2 相关的寄存器 1 SBUF 是两个在物理上独立的接收 发送缓冲器 可同时发送 接收数据 两个缓冲器只用一个字节地址 99H 可通过指令对 SBUF 的 读写来区别是对接收缓冲器的操作还是对发送缓冲器的操作 串行口 对外有两条独立的收发信号线 RXD P3 0 TXD P3 1 因此可以 同时发送 接收数据 实现全双工 2 SCON 寄存器用来控制串行口的工作方式和状态 可按位寻址 其字节地址为 98H 3 PCON 中的 SMOD 用来控制波特率加倍 4 TMOD 设置定时器 1 的工作方式 用来产生波特率 5 如果用到中断 则还需要用到中断相关的寄存器 IE IP 等 3 四种工作方式 方式 0 同步移位寄存器方式 其波特率是固定为振荡频率 fosc 的 1 12 在这种工作方式下 发送和接收串行数据都通过 RXD P3 0 进 行 从 TXD P3 1 输出移位脉冲 控制外部的移位寄存器移位 1 帧 信息为 8 位 没有起始位 停止位 方式 1 8 位 UART 1 帧信息为 10 位 其中一位起始位 0 八位数据 位 先低位后高位 和一个停止位 1 波特率可变 根据定时器 1 的 溢出率计算 方式 2 9 位 UART 1 帧信息为 11 位 其中一位起始位 0 八位数据 位 先低位后高位 一位控制位 第九位 和一个停止位 1 波特率 为振荡频率的 1 64 或 1 32 方式 3 9 位 UART 帧信息为 11 位 其中一位起始位 0 八位数据位 10 先低位后高位 一位控制位 第九位 和一个停止位 1 波特率可 变 根据定时器 1 的溢出率计算 附加的第 9 位数据为 SCON 中的 TB8 的值 它由软件置位或清零 可作为多机通信中地址 数据信息的标志 位 也可作为数据的奇偶校验 11 2 4 LED 器件的工作原理 2 4 1 LED 器件发光的基本原理 发光二极管 light emitting diode LED 是一种把电能变成光能的 特种器件 当电流通过它的时候 便可以产生可视的光 发光二极管的结构主要由 PN 结芯片 电极和光学系统构成 我们 知道 发光是一种能量转化现象 当系统受到外界激发后 会从稳定 的低能态跃迁到不稳定的高能态 当系统由不稳定的高能态重新回到 稳定的低能态时 能量差以光的形式辐射出来 就会产生发光现象 当在 PN 结上加以正向电压之后 p 区的空穴注入至 N 区 N 区的电子 注入至 P 区 相互注入的电子与空穴相遇后即产生复合 这些少数载 流子在结的注入和复合中产生辐射而发光 它是自发辐射发光 不需 要较高的注入电流产生粒子数反转分布 也不需要光学谐振腔 发射 的是非相干光 2 4 2 LED 器件的驱动 从 LED 器件的发光机理可以知道 当向 LED 器件施加正向电压时 流过器件的正向电流使其发光 因此 LED 的驱动就是要使它的 PN 结处于正偏置 同时为了控制它的发光强度 还要解决正向电流的调 节问题 具体的驱动方式有直流驱动 恒流驱动 脉冲驱动和扫描驱 动等 本课题 LED 器件的驱动为扫描驱动 其中脉冲驱动和扫描驱动原理如下 1 脉冲驱动 利用人眼的视觉暂留特性 采用向 LED 器件重复通断供电的方法 使之点燃 就是通常所说的脉冲驱动方式 采用这种方式时应该注意 两个问题 脉冲电流幅值的确定和重复频率的选择 首先 要想获得 与直流驱动方式相当的发光强度 脉冲驱动电流的平均值 就应该与 直流驱动的电流值相同 所以脉冲驱动时 脉冲电流的幅值应该比直 12 流驱动电流大 T t 倍 其次是脉冲重复频率的问题 通过视觉暂留特性的分析 己经知 道脉冲重复频率必须高于 24Hz 否则会产生闪烁现象 脉冲驱动的主 要应用有两个方面 扫描驱动和占空比驱动 2 扫描驱动 现行显示方式多为扫描方式 扫描显示的原理是基于人类眼睛的 视觉暂留效应 要显示行轮流显示 只要刷新频率不小于 24 帧 秒 人 们不会有闪烁的感觉 但由于每行显示占有的时间相对的少 所以亮 度难于发挥到最佳值 以每个扫描周期 T 扫描 16 行为例 首先输出第 一行点阵数据到列驱动寄存器 再发出行驱动信号 延时一段时间 关闭行驱动 完成第一行扫描 然后以同样方式扫描第二行 第三行 一直到第 l6 行 完成一帧的显示 扫描驱动是通过数字逻辑电路 使若干 LED 器件轮流导通 用以 节省控制驱动电路 LED 显示屏是将发光灯按行或按列布置的 驱动 时也就按行按列驱动 在扫描驱动方式下可以按行扫描 按列控制 也可以按列扫描 按行控制 所谓 扫描 的含义 就是指一行一行地循 环接通整行的 LED 器件 而不问这一行的哪一列的 LED 器件是否应该 点亮 某一列的 LED 器件是否应该点亮 由所谓的列控制电路来负责 2 5 音乐模块 三极管是一种控制元件 主要用来控制电流的大小 以共发射极 接法为例 信号从基极输入 从集电极输出 发射极接地 当基极电 压 Ub有一个微小的变化时 基极电流 Ib也会随之有一小的变化 受基 极电流 Ib的控制 集电极电流 Ic会有一个很大的变化 基极电流 Ib越 大 集电极电流 Ic也越大 反之 基极电流越小 集电极电流也越小 即基极电流控制集电极电流的变化 但是集电极电流的变化比基极电 流的变化大得多 这就是三极管的放大作用 Ic 的变化量与 Ib变化量 之比叫做三极管的放大倍数 Ic Ib 表示变化量 三极管 13 的放大倍数 一般在几十到几百倍 三极管在放大信号时 首先要进 入导通状态 即要先建立合适的静态工作点 也叫建立偏置 否则会 放大失真 在三极管的集电极与电源之间接一个电阻 可将电流放大 转换成电压放大 当基极电压 Ub升高时 Ib变大 Ic也变大 Ic 在集 电极电阻 Rc的压降也越大 所以三极管集电极电压 Uc会降低 且 Ub 越高 Uc就越低 Uc Ub 蜂鸣器属于低成本器件 所以在很多设计中均采用蜂鸣器来实现 报警功能 本设计中也包含了蜂鸣器电路 由于驱动蜂鸣器需要比较 大的驱动电流 所以利用了三极管 8550 来增加驱动能力 R30 主要 作为限流保护电阻 防止电流过大 本设计中蜂鸣器采用低电平驱动 P0 7 输出低电平将触发蜂鸣器 另外 P89LPC931 的定时 计数器 1 的 溢出翻转也可以驱动蜂鸣器鸣叫 要使用此功能电路 JP4 4 需要跳接 到 BEEP 端 如果用户不使用此功能 可以将 JP4 4 跳线断开 就可 以将 P0 7 作为其它功能使用了 2 6 键盘模块 为了减少键盘与单片机接口时所占用 I O 口线的数目 在键数较 多时 通常都将键盘排列成列矩阵式 如图 2 2 所示 14 图 2 2 键盘排列 每一水平线与垂直线的交叉处不相通 而是通过一个按键来连通 利用这种行列矩阵结构只需 N 个行线和 M 个列线即可组成 M 乘 N 个 按键的键盘 则键盘与微机连线为 M 加 N 根 键数越多 这种键盘的 优点越明显 图 2 2 表示 4 乘 4 矩阵键盘 这个矩阵键盘的四条平行线接到接口 的 D7 D4 列线接到接口的 D3 D0 上 在采用这种矩阵式非编码键 盘的单片机系统中 键盘处理程序首先执行确认有无键盘按下的程序 段 其工作过程为 CPU 由 D3 D0 口输出全 0 使所有的列线输出低 电平 然后取出 D7 D4 的状态 判断是否为全 1 若键盘上没有键 盘闭合 行 列线之间是断开的 所有行线 D7 D4 均为高电平 若有 键按下闭合时 则对应的行线和列线短路 则行线的输入即为列线的 输出 当确认有稳定的键按下后 下一步就要识别那一个按键被按下 对键的识别通常采用逐行 逐列 扫描的查询法 判断键盘中哪一个键按下 由列线逐列置低电平后 检查行输入 状态 其方法是 依次给列线送低电平 然后查所有行线状态 如果 全为 1 则所按下之键不在此列 如果不全为 1 则所按下的必在此 15 列 而且是在与低电平行线相交的交点上的哪个键 最后确定键盘上每个键的键值 键值赋值的最直接办法是将列 行线按二进制顺序排列 当某一键按下时 键盘扫描程序执行到该列 置 0 电平 读出各行状态为非全 1 状态 这时的行列数据组合成键值 如图 2 2 中键盘值从左至右 从上至下依次是 77 7B 7D 7E B7 BB BD BE E7 EB ED EE 这种负 逻辑表示往往不够直观 因而采取行列线加反相器或软件求反的方法 把键盘改成正逻辑 这时键值依次为 88 82 81 48 44 42 41 18 14 12 11 不论是正逻辑还是负逻辑 这种键盘的键值表示方式分散度大且 不等距 用散转指令进入键处理程序不太方便 对于不是 4 乘 4 或 8 乘 4 8 乘 8 键盘 使用也不太容易 所以在许多场合 还需要进一步 的程序处理 以依次排列键值 16 第 3 章 系统实验板开发设计 3 1 流水灯模块实验设计 3 1 1 流水灯的硬件设计 用 5V 电源给单片机供电 并把单片机的 P0 0 P0 7 口与流水灯模 块的 8 个引脚用排线连接起来 每个发光二极管外接一个 1K 电阻 防 止电流过大而烧坏发光二极管 其连法如图所示 图 3 1 流水灯硬件设计图 3 1 2 流水灯的程序设计 用定时器查询方式控制 P0 口流水灯 1s 钟流动一次 单片机的晶 振为 11 0592MHz 用 C51 编写程序如下 ORG 0000H AJMP START ORG 0040H START MOV P1 0FFH CALL DELAY 17 CALL DELAY MOV P1 01H LOOP CALL DELAY MOV A P1 RL A MOV P1 A SJMP LOOP DELAY MOV R1 00H DEL1 MOV R6 00H DJNZ R6 DJNZ R1 DEL1 RET 3 2 串口通信模块实验设计 3 2 1 串口通信模块的硬件设计 单片机的 P3 0 3 1 引脚与串口通信模块中的 RS 232 的 12 1 引 脚相连 而 13 4 引脚接到 9 引脚的连接器的 7 引脚上 连接器的 5 脚接电路板的地 连接器的另一端连到 PC 机上 C1 1 VS 2 C1 3 C2 4 C2 5 VS 6 T2OUT 7 R2IN 8 R2OUT 9 T2IN 10 T1IN 11 R1OUT 12 R1IN 13 T1OUT 14 GND 15 VCC 16 U1 MAX232D 100pF C6 Cap Pol1 100pF C7 Cap Pol1 VCC 100pF C4 p3 1 p3 0 100pF C5 Cap Pol1 1 2 3 4 5 6 7 8 9 11 10 J1 D Connector 9 图 3 2 串口通信模块的硬件设计 18 3 2 2 串口通信模块的程序设计 ORG 0000H JMP START ORG 0030H START MOV SCON 50H 设置成串口 1 方式 MOV TMOD 20H 波特率发生器 T1 工作在模式 2 MOV PCON 80H 波特率翻倍为 4800 2 MOV TH1 0FAH 预置初值 X 256 FOSC 2 384 9600 MOV TL1 0FAH SETB TR1 WRIT MOV A 0AFH MOV SBUF A MOV R5 09H LOOP CALL DELAY DJNZ R5 LOOP AJMP WRIT DELAY MOV R6 00H DEY2 MOV R7 00H DJNZ R7 DJNZ R6 DEY2 RET 3 3 LED 显示模块实验设计 3 3 1 串口通信模块的硬件设计 把单片机的 P0 0 P0 7 P2 0 P2 3 口与 LED 显示模块对应的引 脚用排线连接起来 即可进行实验 其连法如图 3 3 所示 P0 0 P0 7 19 是控制数码管显示的数据口 而 P2 0 P2 3 为数码管的位选端 4 个数 码管采用动态显示的方法显示 如图 3 3 所示 图 3 3 LED 显示模块 3 3 2 LED 模块的程序设计 设计出一个 4 位显示的电子时钟 对于单片机初学者来说 设计 一个电子时钟真的是很有用的 其中要理解的东西有很多 如 P0 口的 数据传送 P2 口的位控制 也就是数码管的位选通 数码管数字显示 代码 延时的处理 数码管动态显示 还有的就是中断子程序的设计 感觉这个是最难的 因为单片机的计秒不是人类的大脑思维 如果让 计算机实现 1 秒后实现中断的效果 是最大的难处 还其他的一些知 识的应用 及算法的实现 如果以后要扩展成一个电子闹钟 可能还 要应该到中断优先级相关的知识 程序流程图见图 3 4 程序见附录 2 20 开始 设置 T0 为 16 位 定时器 给 TH0 和 TL0 附初识值 定时 10ms 全局中断和 T0 中断 显示时间 图 3 4 LED 显示程序流程图 3 4 音乐模块设计 3 4 1 音乐模块的硬件设计 图 3 5 音乐模块硬件电路 把单片机的 P1 0 口与唱歌模块对应的引脚用排线连接起来 其连 法如图 3 5 所示 21 3 4 2 音乐模块的程序设计 音乐标题 八月桂花香 音乐输出 p1 0 脚 ORG 0000H LJMP START ORG 000BH INC 20H 中断服务 中断计数器加 1 MOV TH0 0D8H MOV TL0 0EFH 12M 晶振 形成 10 毫秒中断 RETI START MOV SP 50H MOV TH0 0D8H MOV TL0 0EFH MOV TMOD 01H MOV IE 82H MUSIC0 NOP MOV DPTR DAT 表头地址送 DPTR MOV 20H 00H 中断计数器清 0 MUSIC1 NOP CLR A A 清零 MOVC A A DPTR 查表取代码 JZ END0 是 00H 则结束 CJNE A 0FFH MUSIC5 如果是休止符 往下执行 LJMP MUSIC3 MUSIC5 NOP 22 MOV R6 A R6 18H 音符的频率 INC DPTR DPTR 加一 MOV A 0 MOVC A A DPTR 取节拍代码送 R7 MOV R7 A R7 30H 音符发音的时间 SETB R0 启动计数 MUSIC2 NOP CPL p3 3 P3 3 是音乐输出引脚 MOV A R6 MOV R3 A R3 R6 18H LCALL DEL MOV A R7 CJNE A 20H MUSIC2 中断计数器 20H R7 否 不等 则继续循环 MOV 20H 00H 等于 则取下一代码 INC DPTR LJMP MUSIC1 MUSIC3 NOP 休止 100 毫秒 CLR TR0 MOV R2 0DH R2 13 MUSIC4 NOP MOV R3 0FFH R3 255 LCALL DEL DJNZ R2 MUSIC4 INC DPTR LJMP MUSIC1 END0 23 NOP MOV R2 0FFH 歌曲结束 延时 1 秒后继续 MUSIC6 MOV R3 00H LCALL DEL DJNZ R2 MUSIC6 LJMP MUSIC0 DEL NOP DEL3 MOV R4 02H DEL4 NOP DJNZ R4 DEL4 NOP DJNZ R3 DEL3 RET NOP DAT DB 18H 30H 1CH 10H DB 20H 40H 1CH 10H DB 18H 10H 20H 10H DB 1CH 10H 18H 40H DB 1CH 20H 20H 20H DB 1CH 20H 18H 20H DB 20H 80H 0FFH 20H DB 30H 1CH 10H 18H DB 20H 15H 20H 1CH DB 20H 20H 20H 26H DB 40H 20H 20H 2BH 24 DB 20H 26H 20H 20H DB 20H 30H 80H 0FFH DB 20H 20H 1CH 10H DB 18H 10H 20H 20H DB 26H 20H 2BH 20H DB 30H 20H 00h 3 5 键盘模块设计 3 5 1 键盘模块的硬件设计 把键盘的 8 个引脚接到单片机的 P1 0 P1 7 即可 如图 3 6 所示 3 6 键盘模块的硬件电路 3 5 2 键盘模块的软件设计 在第 2 章我们已经介绍了键盘的工作原理 因此我们可以设计出 程序流程图见图 3 7 程序见附录 3 25 否 否 否 否 是 是 是 是 开始 P1 口置 0 第一列清 0 第一行是否为 0 第二行是否为 0 第三行是否为 0 第四行是否为 0 第二列清 0 以下同上 计算按键值 返回 图 3 7 键盘程序流程图 26 第 4 章 系统调试和实验分析 4 1 系统调试软件介绍 伟福 V8 L 仿真品种多 功能强 和国内外同类高档仿真器功能相 比较 软硬件方面具有多种先进特点 1 通用仿真器 主机 POD 组合 通过更换 POD 可以对各种 CPL 进行仿真 为用户提供了一种灵活的多 CPL 仿真系统 2 仿真头内置 提高仿真频率 减小外接插头体积 可以灵活接 插用户板 3 强大的逻辑分析仪综合调试功能 逻辑分析仪由交互式软件菜 单窗口对系统硬件的逻辑或进行同步实时采样 并实时在线调试分析 采样深度 64K 最高时基采样频率达 100M 64 路波形的可精确实时反 映用户程序运行时的历史时间 4 1 1 伟福 V8 L 仿真界面及设置 1 伟福 V8 L 软件在以前的版本基础上做了增加了许多功能 特别 是在窗口管理 项目管理和源文件编辑工具上做了较大改进 在伟福 V8 L 环境下的所有窗口均可以放在窗口的同一块区域 各窗口可以直 接切换 节省了窗口的面积 使窗口管理更有效 伟福 V8 L 还增强了 项目管理和源文件编辑方面的功能 使得项目 文件切换更方便 有 效地后退 前进功能使得修改程序更方便 新增加的书签窗口和断点 窗口可以有效地管理断点和书签 使得程序员无需在众多的代码和断 点中逐行查询 断点信息和书签信息在各自的窗口中显示一目了然 如图 4 1 所示 27 图 4 1 伟福 V8 L 仿真界面 2 仿真器 USB 口 电源接好 仿真头对应管脚安装完毕 打开伟 福仿真器集成调试软件对仿真器进行设置 如图 4 2 点击 好 即进入 仿真界面 图 4 2 仿真器设置 点击 文件 打开文件 例如 选择 SNOW4 ASM 进行仿真 28 4 1 2 软件的调试 因为程序大 在程序执行期间会出现乱码 需要一段段进行检查 首先要保证解码的正确性 所以单独把此段程序进行了调试 另外 LCD 显示屏也应进行单独的测试 是否好用 以便查找错误的根源 1 分项调试 解码调试 这是一个红外解码的过程 根据编码的规则进行读取并转化脉冲 信号 在获得正确的数字时蜂鸣器响 并且送到了 LCD 显示屏 这是 本课题需要解决的最大难题 因为它涉及了脉冲的时序 需要计算很 多的时间参数 在编译的时候没有出现什么错误 但是蜂鸣器时响时不响 得不 到正确的解码 显示的都是一些点点或者乱码 针对这种情况我做了 一下的分析 1 软件延时方面不够准确 2 在使用参数方面有冲突 3 对发送码脉冲识别不准确 8 经过仔细的查证 问题出现在定义解码后的数据存储地址上 即 MOV R0 IRCOM 的位置 在未更正之前如下 I5 MOV R2 0 0 14ms 计数 MOV R0 IRCOM 但是这条语句不应出现在这个位置的 如果这样的话 R0 在每接收一 个字节后就被重置一次 前面的数字都被覆盖 以至于出现解码的错 误 将 MOV R0 IRCOM 放在解码开始以前就不会出现这样的错误 了 MOV R2 04H MOV R0 IRCOM I1 JNB IRIN I2 等待 IR 信号出现 LCD 显示的调试 模拟 LCD 显示一个汉字 啊 根据指导书上的介绍不是一个难题 此次同样是没有出现编译方面的错误 但是没有汉字显示 调整了程 序中的很多语句也没有能够完成显示的功能 软件上找不到问题 只 29 能再到硬件上去查找原因了 这时发现自己犯下了一个很大的错误 BUSY 和 REQ 管脚被接反了 BUSY 是一条测 LCD 忙闲状态的管脚 有语句 SUBI 写模块子程序 单线延时方式 JB BUSY SUBI 因此 整个程序就停留在这条语句上不能继续执行 2 整体的调试 在这两个单项的调试结束后 我进行了整体的软件设计和调试实 验 由于在两个单项调试上面用到了相同的参数 所以这需要先进行 统一的参数变量 尤其是增加的地址变量 比如 为了使显示的数字 可以从左至右逐字显示 为了方便我们可以使用寄存器 R0 R7 但是 它对寄存器的要求比较严格 不能在程序中的其他参数中出现 是作 为唯一的调用 在程序中 R0 R7 都被用到 容易造成混乱 所以就采 用了 30H 作为坐标地址的寄存器 编译程序时 出现了如下图 4 3 所示的错误 图 4 3 编译后出现的问题 CJNE 语句跳转出了范围 我做了下面的改动 CLEAR CJNE A 1bH CHU AJMP IR SHOW3 CHU JMP IR OUT 这次程序编译成功 按下 K1 键 显示屏出现了不规范的图形 位置也是不规律的 30 所以就在 PERFECT 子程序下手 出现这样情况的原因应该有两种可能 一 地址单元不稳定 二 行列坐标没有规范好 原因正如上面所预料 在这段程序中可以看到 以汉字为单位的 行列坐标顺序被颠倒了 以至于出现了乱码 如图 4 4 图 4 4 编程中出现的问题 按下数字键 屏幕可以正确的显示 但是当按下 ENTER 键 显示的汉字为一片的点点或者随机的一些东西 出现这种情况肯定是 因为存储数字的单元中的内容被清除 或者覆盖 即 24H 27H 经过 查询 在做分项调试的时候 程序初始化的时候把 24H 27H 全部付零 在综合在一起的时候没有改正 MOV A 00H MOV R0 20H LOOP0 MOV R0 A 20H 28H 清零 INC R0 CJNE R0 28H LOOP0 改为 CJNE R0 24H LOOP0 即可 4 2 流水灯模块实验调试 按照图 3 1 进行电路板的焊接 焊接完以后按照 3 1 2 给出的程序 进行调试 调试结果如下图示 从图 4 4 我们可以看出 P1 口各个引脚每隔一定时间依次输出高电 平 从尔二极管可以循环发光 该实验可以使我们知道 P1 口为准双向 口 P1 口的每一位都能独立地定义为输入位或输出位 做为输入位时 31 必须向锁存器相应位写入 1 该位才能作为输入 AT89C51 中所有锁 存器在复位时均置为 1 如果后来在口锁存器写过 0 在需要时应写 入一个 1 使它作为一个输入 图 4 5 流水灯实验调试结果图 做完该实验我们可以学习 P1 口的使用方法和延时子程序的编写和 使用 4 3 串口通信实验调试 按照图 3 2 进行电路板的焊接 焊接完以后按照 3 2 2 给出的程序 进行系统调试 本串口程序的功能是 每隔 1 秒向电脑发送 1 次数据 AF 首先设置串口通信为方式 1 波特率为 9600 波特率发生器 T1 工作在模式 2 然后每隔 1 秒向电脑发送一次数据 在 wave6000 下编译此程序 生成 chuan HEX 文件 通过烧写器把 16 进制代码烧到单片机上 连接好电路 给单片机通电 在电脑上运 行串口调试助手 并选则 16 进制显示 在显示区内会显示接受到的数 据 如下图所示 32 图 4 6 串口实验调
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广东惠州市教育局招聘市直公办中小学(幼儿园)编外教职员40人考前自测高频考点模拟试题(含答案详解)
- 2025福建泉州文旅集团第二批招聘17人笔试历年参考题库附带答案详解
- 2025福建建瓯市属国有企业招聘20人笔试历年参考题库附带答案详解
- 2025甘肃酒泉市省属公费师范毕业生专项招聘29人模拟试卷及答案详解(网校专用)
- 2025广西北海有礼品牌运营有限公司招聘21人笔试历年参考题库附带答案详解
- 2025年甘肃省兰州新区城镇物业管理有限责任公司招聘笔试历年参考题库附带答案详解
- 2025年延安市宝塔区产业园区开发建设投资有限公司招聘笔试历年参考题库附带答案详解
- 2025年中国煤炭销售运输有限责任公司社会招聘笔试历年参考题库附带答案详解
- 2025四川九洲空管科技有限责任公司招聘财务管理岗测试笔试历年参考题库附带答案详解
- 2025内蒙古呼伦贝尔农垦集团有限公司社会招聘笔试及笔试历年参考题库附带答案详解
- FZ∕T 61002-2019 化纤仿毛毛毯
- 幼儿园社会《让爱住我家》
- 2024全国职业院校技能大赛ZZ059安全保卫赛项规程+赛题
- 青岛版科学五年级上册全册练习题(含答案)
- 食品新产品开发 课件 第二章 食品新产品开发流程
- 高中化学374个必备知识点
- 单轴燃气蒸汽联合循环机组调试程序
- 舟山海域赤潮发生特点及成因分析
- 丝杠安全操作保养规定
- 体育测量与评价PPT课件-第九章 运动员选材的测量与评价
- 《情满今生》读书笔记模板
评论
0/150
提交评论