




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单单 片片 机机 原原 理理 及及 应用应用 实实 验验 指指 导导 书书 济南大学物理学院 2013 09 前前 言言 由于单片机具有高可靠性 超小型 低价格 容易产品化等特点 在仪 器仪表智能化 实时工业控制 实时数据采集 智能终端 通信设备 信息显示 家用电器等控制应用领域 具有十分广泛的用途 由于目前在国 内单片机应用中 51 系列单片机仍然是一种主流单片机 所以本实验指导 书为学习 51 单片机的学生 配合 单片机原理 及应用 课程的教学 编 写了这本实验指导书 单片机原理 及应用 是一门实践性很强的课程 提高教学质量的一 个重要环节是上机实习和训练 无论是学习C 语言程序设计 还是学习接 口电路和外设与计算机的连接 或者软硬兼施地研制单片机应用系统 不通 过加强动手是不能获得预期效果的 本实验指导书提供多个实验的指导性 材料 有些实验还有一些有一定难度的选做项目 可以根据课时的安排和教 学要求进行取舍 为了达到某些实验的目的 书中提供的参考程序与实际应 用中的程序会有些差别 所以不一定是最优的 由于时间紧迫 需要赶课程进度与实验时间的同步 加上编者学识有 限 如有不妥之处 欢迎读者批评指正 实实 验验 须须 知知 1 实验前必须阅读教科书的有关部分和本实验指导书 了解实验目的 内容 步骤 做好实验前的准备工作 编写好实验中要求自编或修改的程序 完成实验前要求完成的准备工作后方可以上机实验 否则不得上机操作 2 各种电源的电压和极性不能接错 严禁带电接线和接插元器件 通 电前须经过指导教师检查认可后方能通电 3 不准随意拨弄各种与实验无关的旋钮和开关 凡与本次实验无关的 任何设备都禁止动用和摸弄 注意安全 4 严禁用手触摸实验系统印制电路板和元器件的引脚 防止静电击穿 芯片 5 实验中若损坏仪器或元器件 应及时向指导教师报告 6 在实验室内保持安静和卫生 不得随意走动和喧哗 集中精力完成 实验 7 实验完成后 关掉电源 及时整理实验台桌面 保持环境整洁 8 按规定认真完成实验 内容并写入作业本中 在规定的时间内缴上 作业 9 凡实验未能按规定完成的学员 不能参加本课程的考试 单片机实验作业格式 实验标题 一 实验目的 二 实验设计及调试 1 实验电路 画出与实验内容有关的实验电路 2 实验设计及调试步骤 根据内容写出实验程序 调试程序 观 察结果 3 实验调试过程中所遇到的问题 解决问题的思路和解决的方法 三 实验后的经验教训总结 目 录 实验一实验一 实验板使用 实验板使用 KEILKEIL C51C51 软件使用软件使用 1 实验二实验二 LEDLED 灯显示实验灯显示实验 6 实验三实验三 单片机控制数码管实验单片机控制数码管实验 8 实验四实验四 按键实验按键实验 12 实验五实验五 中断系统应用实验中断系统应用实验 15 实验六实验六 定时器定时器 计数器使用计数器使用 18 实验七实验七 单片机串行通信单片机串行通信 22 实验八实验八 LCD1602LCD1602 液晶显示液晶显示 25 实验一 实验板使用 Keil C51 软件使用 一 实验目的一 实验目的 1 熟悉单片机实验板 Keil C51软件使用 二 实验说明二 实验说明 本实验介绍实验板的组成 Keil C51 软件使用以及烧录软件的使用 通过该实验学生 可以了解单片机编程 调试方法 三 三 Keilc 软件使用说明软件使用说明 1 打开程序 双击程序 2 新建工程 Project New Project 保存工程 选择 CPU 一般选 ATMEL 公司的 AT89S51 3 设置工程 右击 Options for Target 1 选择 Create HEX 输出 HEX 文件 4 新建源文件 选 File New 输入 编辑源程序 保存 汇编源程序 文件名 asm C 源程序 文件名 c 5 为工程添加源文件 在 Project 出口 File 页上单 击文件组 选择 Add Files to Group Source Group 1 选项 选择你的 源文件和文件类型 然后点 击 ADD 再点击 close 6 编译 点击 或右击 Target 1 Build Target F7 就可对源程序进行编译 当程序有语法错误时 会在输 出窗口 Output Windows 中 显示错误信息和警告信息 修 改编译成功后会生成 HEX 文 件 7 下载 调试 编译成功后 用在线烧录程序将 HEX 文件下载到单片机内部 ROM 中 运行 在运行过程中若发现错误要重新修改程序 并编译后再下载运行 四 烧录软件的使用四 烧录软件的使用 1 打开在线烧录程序 2 选择 MCU 类型 STC89C51RC 3 点击 打开工程目录下的 hex 文件 4 选择端口 一般是 COM1 5 点击 Download 烧录程序 6 打开实验板上的电源 如果烧录的时候出现问题 点击 stop 注意 注意 5 5 6 6 两步骤的顺序不能颠倒 即在两步骤的顺序不能颠倒 即在点击 Download 之前要先关掉实验板上的电源 五 实验内容及步骤五 实验内容及步骤 1 启动 PC 机 安装好 Keil C51 软件以及烧录软件 用串口线连接计算机与实验板 USB 线提供电源 2 打开 Keil uVision 仿真软件 首先建立本实验的项目文件 接着建立源程序 编译无 误后 全速运行程序 3 可把源程序编译成可执行文件 用烧录器烧录到 89 芯片中 实验二 LED 灯显示实验 一 实验目的一 实验目的 让小灯进行多种显示方式 二 实验内容二 实验内容 向端口发送不同的数据 点亮 LED 灯 三 实验设备三 实验设备 单片机模块 89S51 或 89S52 LED 灯显示模块 四 实验原理四 实验原理 五 实验步骤五 实验步骤 单片机模块 P1 口与 LED 灯连接 控制 LED 灯有多种显示方式 如 流水 打灯 逐个熄灭 点亮 交错点亮 熄灭等 实验步骤说明 实验步骤说明 本实验需要用到单片机最小应用系统 用 P1 口做输出口 程序功能使发光二极管点亮 1 用串行数据通信线连接计算机与实验板 用 USB 给实验板提供电源 2 打开 Keil uVision2 仿真软件 首先建立本实验的项目文件 输入源程序 参考程序 1 进行编译 直到编译无误 生成 hex 文件 3 通过 STC ISP 下载软件 将 hex 文件下载到实验板内 观察发光二极管显示情况 参考程序 C 程序代码 include define uchar unsigned char define uint unsigned int void delayms uint a uint i uchar j for i 0 i a i for j 0 j 200 j void main while 1 P1 0 x00 delayms 200 P1 0X01 delayms 500 P1 0X02 delayms 500 P1 0X04 delayms 500 P1 0X08 delayms 500 P1 0X10 delayms 500 P1 0X20 delayms 500 P1 0X40 delayms 500 P1 0X80 delayms 500 六 实验内容要求 六 实验内容要求 请在 keil 环境下编写以下程序 1 点亮最后一个 LED 或者任意一个 LED 或者任意几个 LED 2 让点亮的 LED 闪烁 3 点亮板子上的 L0 L2 L4 L6 灯 与 L1 L3 L5 L7 灯交替闪烁 4 设计出流水灯程序 依次点亮 L1 L7 实验三 单片机控制数码管实验 一 实验目的一 实验目的 1 掌握数码管是如何显示出字符 2 掌握延时子程序的使用 二 实验原理二 实验原理 1 数码管两种接法数码管两种接法 2 共阴极数码管编码共阴极数码管编码 0 x3f 0 x06 0 x5b 0 x4f 0 x66 0 x6d 0 1 2 3 4 5 0 x7d 0 x07 0 x7f 0 x6f 0 x77 0 x7c 6 7 8 9 A B 0 x39 0 x5e 0 x79 0 x71 0 x00 C D E F 无显示 请思考共阳极数码管的编码 三 实验电路图三 实验电路图 ab cde g GND f dp GND a b c e f g d dp a b c d e f g dp dp g f e d c b a 5V a b 四 四 参考例子参考例子 1 让第一个数码管显示一个 3 字 对于实验板 共阴极共阴极 数码管的位 WE1 WE6 对应 74HC573 2 芯片 WE P2 7 位 选信号控制 74HC573 2 芯片 数码管的选通是通过 WE P2 7 选中 74HC573 2 芯片 P0 口控制 WE1 WE6 得到的 要让第一个数码管显示 3 字 那么别的数码管的位选就要 关闭 即只打开第一个数码管的位选 控制位选的 P0 口要输出的数据位 0 xfe 二进制 为 1111 1110 位选确定后 在确定段选 要显示的是 3 那么 P0 口要输出 0 x4f 二 进制 0100 1111 2 在四个数码管上显示 8 位选 WE P2 7 有效 接 74HC573 2 对应 P0 口 左边四个数码管 WE1 WE2 WE3 WE4 对应的 P0 口 0 xfe 0 xfd 0 xfb 0 xf7 1111 1110 1111 1101 1111 1011 1111 0111 段选 接 P0 口 共阴极编码 0 x7f 五 参考程序五 参考程序 一 一 让第一个数码管显示一个 3 字 include sbit dula P2 6 段选信号的锁存器控制 sbit wela P2 7 位选信号的锁存器控制 void main dula 0 wela 0 P0 0 x4f 数字 3 的代码 dula 1 dula 0 P0 0 xfe 选中第一个数码管 wela 1 wela 0 while 1 二 让前两个数码管显示 88 include sbit dula P2 6 段选信号的锁存器控制 sbit wela P2 7 位选信号的锁存器控制 void delay unsigned int count unsigned int i j for i 0 i count i for j 0 j 120 j void main dula 0 wela 0 while 1 P0 0 x7f 数字 8 的代码 dula 1 dula 0 P0 0 xfe 选中第一个数码管 wela 1 wela 0 delay 2 P0 0 x7f 数字 8 的代码 dula 1 dula 0 P0 0 xfd 选中第二个数码管 wela 1 wela 0 delay 2 三 三 让数码管流动显示 3 字 include sbit dula P2 6 段选信号的锁存器控制 sbit wela P2 7 位选信号的锁存器控制 unsigned char code table 0 xfe 0 xfd 0 xfb 0 xf7 0 xef 0 xdf 数码管各位的码表 void delay unsigned int count unsigned int i j for i 0 i count i for j 0 j 120 j void main unsigned char num while 1 for num 0 num 6 num P0 table num wela 1 wela 0 P0 0 x4f 数字 3 的代码 dula 1 dula 0 delay 1000 六 实验内容六 实验内容 基础内容 1 将第二位数码管显示 8 2 用数码管显示你的生日 拓展内容 1 用第一个数码管循环显示 0 9 实验四 按键实验 一 实验目的一 实验目的 1 进一步熟悉编程和程序调试 2 学习独立按键的使用方法 二 实二 实验说明验说明 如果系统只需几个按键 可直接采用 I O 线构成单个按键电路 各个按键之间相互独 立 一根线上的按键状态不会影响其他输入线上的工作状态 又称独立式键盘接口电路 检测是否有键闭合 如有键闭合 则去除键抖动 判断键号并转入相应的按键处理 编写单片机的键盘检测程序时 一般在检测按下时加入去抖延时 检测松手时就不用加了 三 实验电路图三 实验电路图 四 四 参考例子参考例子 1 按下 K2 灯亮 按下 K1 灯灭 参考程序代码 C 程序代码 include sbit K1 P3 4 sbit K2 P3 5 sbit D1 P1 0 void main if K1 0 D1 1 if K2 0 D1 0 2 按下 k1 键 LED 灯亮 再次按下灯灭 include define uchar unsigned char uchar num sbit led P1 0 sbit k1 P3 4 void delay uchar i uchar j k for j i j 0 j for k 125 k 0 k void main while 1 if k1 0 delay 20 消抖 if k1 0 while k1 等待按键松开 num switch num case 1 led 0 break case 2 led 1 num 0 break 第 2 种方法 include sbit s2 P3 4 采集按键状态 此时作为输入引脚 sbit led P1 0 此时作为输出引脚 void delay unsigned char p unsigned char m n for m p m 0 m for n 125 n 0 n void main while 1 if s2 0 delay 10 消抖 if s2 0 while s2 等待按键松开 led led 五 实验内容五 实验内容 基础内容 基础内容 通过按键来控制数码管的显示情况 按下 K1 第一个数码管显示 1 再次按 下数码管显示 2 依次按下后加 1 显示到 5 后返回显示 1 拓展内容 拓展内容 通过 K1 K2 K3 K4 分别控制 8 个 led 灯 显示不同的流水灯效果 实验五 中断系统应用实验 一 实验目的一 实验目的 1 掌握外部中断技术的基本使用方法 2 掌握中断处理程序的编写方法 二 实验原理二 实验原理 1 1 外部中断的初始化设置外部中断的初始化设置共有三项内容 中断总允许即 EA 1 外部中断允许即 EXi 1 i 0 或 1 中断触发方式设置 中断触发方式设置一般有两种方式 电平触发方式 和脉冲 边沿 触发方式 本实验选用后者 其前一次为高电平后一次为低电平时为有效 中断请求 因此高电平状态和低电平状态至少维持一个周期 中断请求信号由引脚 INT0 P3 2 和 INT1 P3 3 引入 2 2 中断控制原理 中断控制原理 中断控制是提供给用户使用的中断控制手段 实际上就是控制一些寄存器 51 系列用 于此目的的控制寄存器有四个 TCON IE SCON 及 IP 3 中断响应的过程 中断响应的过程 首先中断采样然后中断查询最后中断响应 采样是中断处理的第一步 对于本实验的 脉冲方式的中断请求 若在两个相邻周期采样先高电平后低电平则中断请求有效 IE0 或 IE1 置 1 否则继续为 0 所谓查询就是由 CPU 测试 TCON 和 SCON 中各标志位的状态 以确定有没有中断请求发生以及是那一个中断请求 中断响应就是对中断请求的接受 是 在中断查询之后进行的 当查询到有效的中断请求后就响应一次中断 4 51 的中断系统的中断系统 51 的中断系统包括 5 个中断源 并提供两个优先级 允许用户对中断源进行独立控制和 中断优先级设置 8051 支持的 5 个中断源分别为外部中断 0 定时器 0 溢出中断 外部中断 1 定时器 1 溢出中断和串口中断 对应的中断号为 0 1 2 3 4 寄存器有 4 个工作 组可以切换 为 0 3 C51 中 中断服务程序是以中断函数的方式来时实现的 5 中断函数格式如下 中断函数格式如下 void 函数名 interrupt 中断号 using 工作组 中断服务程序内容 三 参考例子三 参考例子 8 个 LED 为流水灯 按下按键 button 后 8 个 LED 灯闪烁 4 次后返回原状态 按键接 在 P3 2 上 为外部中断 0 参考程序 适用于参考程序 适用于上图仿真电路 上图仿真电路 include include define uchar unsigned char void delay uchar k uchar i j for i 0 i k i for j 0 j 125 j void INT0 init void EX0 1 IT0 1 EA 1 void main uchar q temp INT0 init while 1 temp 0 xfe for q 0 q 8 q P1 temp delay 200 temp crol P1 1 void int0 1 interrupt 0 uchar m for m 0 m 4 m P1 0 x00 delay 200 P1 0 xff delay 200 四 实验内容四 实验内容 基础内容 基础内容 使用外部中断 1 实现以下功能 8 个 led 流水灯循环显示 按下按键后 数码管显示 sos 并且蜂鸣器发出报警音 一 段时间后回到 led 顺次点亮 循环显示效果 注意 1 注意 C51 中的不同中断号 2 分析开发板原理图 注意外部中断 1 所用的按键及程序设置 拓展内容 拓展内容 使用外部中断 1 实现 第一个数码管从 0 开始加法计数 加到 9 返回 0 使用外部中断 1 实现 按键后计数 暂停 再按继续计数 实验六 定时器 计数器使用 一 实验目的一 实验目的 1 学习 89C51 内部定时计数器的使用和编程方法 2 进一步掌握中断处理程序的编写方法 二 实验原理二 实验原理 1 51 单片机有两个 16 位内部定时器 计数器 T C Timer Counter 若是内部晶振 驱动时钟 则是定时器 若是 8051 的输入引脚的脉冲信号 则它是计数器 定时器实际上 也是工作在计数方式下 只不过对固定频率的脉冲计数 由于脉冲周期固定由计数值可以 计算出时间 有定时功能 定时器有关的寄存器有工作方式寄存器 TMOD 和控制寄存器 TCON TMOD 用于设 置定时器 计数器的工作方式 0 3 并确定用于定时还是用于计数 TCON 主要功能是为定 时器在溢出时设定标志位 并控制定时器的运行或停止等 2 TMOD 1 M1M0 工作方式控制位 2 C T 定时器方式或计数器方式选择位 若 C T 1 时 为计数器方式 C T 0 时 为定时器方式 3 GATE 定时器 计数器运行门控标志位 当 GATE 1 时 T C 的启动受双重控制 即要求 INT0 或 INT1 引脚为高电平且 TR0 或 TR1 置 1 时 相应的 T C 才被选通工作 若 GATE 0 T C 的启动仅受 TR0 或 TR1 控制 即置 1 T C 就被选通 而不管 INT0 或 INT1 的电平是高还是低 3 TCON TF0 TF1 分别是定时器 计数器 T0 T1 的溢出中断标志位 加法计数器计满溢出时 置 1 申请中断 在中断响应后自动复 0 TF 产生的中断申请是否被接受 还需要由中断是 否开放来决定 TR1 TR0 分别是定时器 计数器 T1 T0 的运行控制位 通过软件置 1 后 定时器 计数器才开始工作 在系统复位时被清 0 4 初始化 1 初始化步骤 在使用 51 系列单片机的 T C 前 应对它进行编程初始化 主要是对 TCON 和 TMOD 编程 还需要计算和装载 T C 的计数初值 一般完成以下几个步骤 1 确定 T C 的工作方式 编程 TMOD 寄存器 2 计算 T C 中的计数初值 并装载到 TH 和 TL 3 T C 在中断方式工作时 必须开 CPU 中断和源中断 编程 IE 寄存器 4 启动定时器 计数器 编程 TCON 中 TR1 或 TR0 位 2 计数初值的计算 1 定时器的计数初值 在定时器方式下 T C 是对机器周期脉冲计数的 fOSC 6MHZ 一个机器周期为 12 fOSC 2us 则 方式 0 13 位定时器最大定时间隔 213 2us 16 384ms 方式 1 16 位定时器最大定时间隔 216 2us 131 072ms 方式 2 8 位定时器最大定时间隔 28 2us 512us 若 T C 工作在定时器方式 1 时 要求定时 1ms 求计数值 如设计数初值为 x 则 有 216 x 2us 1000us 推出 x 216 500 因此 TH TL 可置 65 536 500 2 计数器的计数初值 在计数器方式下 方式 0 13 位计数器的满计数值 213 8192 方式 1 16 位计数器的满计数值 216 65 536 方式 2 8 位计数器的满计数值 28 256 若 T C 工作在计数器方式 2 时 则要求计数 10 个脉冲的计数初值 如设计数初值 为 x 则有 28 x 10 即 x 28 10 因此 TH TL 256 10 三 参考例子三 参考例子 设单片机晶振频率为 12 MHz 利用定时器在 P1 0 脚输出周期为 2 ms 的方波 分析 选用定时器 计数器 T0 作定时器 输出为 P1 0 引脚 2 ms 的方波可由间隔 1 ms 的高低电平相间而成 因而只要每隔 1 ms 对 P1 0 取反一次即可得到这个方波 机器周期 12 12MHz 1 s 1 ms 内 T0 需要计数 N 次 N 1 ms 1 s 1000 由于计数器向上计数 为得到 1000 个计数之后的定时器溢出 必须给定时器置初值为 65536 1000 参考程序 参考程序 一 设置周期为 2ms 的方波 查询方式 include sbit P1 0 P1 0 void main P1 0 1 TMOD 0 x01 T0 工作在定时器方式 1 16 位定时器 TR0 1 启动 T0 for 主程序循环 TH0 65536 1000 256 预置计数初值 TL0 65536 1000 256 do P1 0 P1 0 P1 0 取反 TF0 0 软件清 TF0 while TF0 查询等待 TF0 置位 中断方式 include sbit P1 0 P1 0 void main P1 0 0 TMOD 0 x01 T0 工作在定时器方式 1 TH0 65536 1000 256 预置计数初值 TL0 65536 1000 256 EA 1 CPU 开中断 TF0 0 ET0 1 T0 开中断 TR0 1 启动 T0 开始定时 while 1 void timer0 void interrupt 1 T C 中断服务程序入口 TF0 0 清楚中断标志位 P1 0 P1 0 P1 0 取反 TH0 65536 1000 256 计数初值重装载 TL0 65536 1000 256 二 利用定时器精确定时 1s 控制 LED 以秒为单位闪烁 已知 fosc 12MHz 选择选择 T1 的模式的模式 1 定时时间为 定时时间为 10ms 当 当 10ms 的定时时间到 的定时时间到 TF1 1 连续定时 连续定时 100 次 次 调用亮灯函数 再连续定时调用亮灯函数 再连续定时 100 次 调用灭灯函数 循环工作 即达到次 调用灭灯函数 循环工作 即达到 1s 闪烁闪烁 1 次的效果 次的效果 1 初值计算 65536 X 12 fosc 10ms 初值 X 55536 0D8F0H 因为 65536 10000 256 即为 55536 的高 8 位 65536 10000 256 即为 55536 的低 8 位 所以 TH1 65536 10000 256 TL1 65536 10000 256 2 程序设计 C 语言程序 include sbit LED P1 0 unsigned char i void main LED 1 定义灯的初始状态为灭 i 0 TMOD 0 x10 设置定时器 1 工作在模式 1 TL1 65536 10000 256 TH1 65536 10000 256 设置定时初值 TR1 1 启动定时器 1 ET1 1 允许定时器 1 中断 EA 1 while 1 void timer1 int interrupt 3 TL1 65536 10000 256 定时器重装初值 TH1 65536 10000 256 i if i 100 LED LED i 0 四四 实验内容 实验内容 1 基础内容 根据开发板原理图 设计一个 9 秒倒计时 数码管从 9 每秒减一 到 0 后定 时关 蜂鸣器响 2 拓展内容 设计一个 60 秒倒计时器 实验七 单片机串行通信 一 一 实验目的实验目的 1 理解单片机串行口的工作原理 2 学习使用单片机的 TXD RXD 口 3 了解 MAX232 芯片的作用 二 二 实验原理实验原理 计算机与其外部设备之间进行数据交换称为通信 通信的基本方式可分为并行通信和 串行通信两种 并行通信中数据至少有 8 路 可以同时将一个字节的 8 位二进制代码发送 到对方 串行通信用两根传输线进行数据的传输 一次只能发送一位二进制 串行通信技术根据传送的编码格式不同 可分为同步通信和异步通信两种方式 1 同步方式 数据以数据块为单位传送 在开始传送前用同步字符来指示 并由时钟 来实现发送端和接收端同步 2 异步方式 数据时不连续传送的 以字符为单位进行传送 被传送字节分为 起始 位 数据位 校验位和停止位 称为一帧 常用格式 a 1bit 起始位 8bit 数据位 无校验位 1bit 停止位 b 1bit 起始位 8bit 数据位 1 位偶校验位 1bit 停止位 串行通信技术根据数据流动方向分为三种方式 1 单工通信 数据流动方向是固定的 数据只能由一方发送到另一方 2 半双工通信 数据的流动方向是双向的 但一时刻 数据只能在一个方向流动 3 全双工通信 允许数据在两个方向流动 即通信双方的数据发送和接收是同时的 SEND RECV 发送控制器 接收控制器 发送数据缓冲器 SBUF 接收数据缓冲器 SBUF 移位寄存器 移 位 脉 冲 1 3 2 并入 启动 并出 写SBUF 读SBUF 装 载 SBUF 串入 RI TI 串行口中断 内部移位脉冲 内部移位脉冲 8 8 内部总线 1 1 uchar code table1 I get void init TMOD 0X20 TH1 0Xfd TL1 0Xfd TR1 1 REN 1 SM0 0 SM1 1 EA 1 ES 1 四四 实验内容 实验内容 基础内容 基础内容 1 在上位机上用串口调试助手发送一个字符 单片机收到字符后 若为 X 则返回给上位 机 OK 否则返回 error 串口波特率设为 9600 2 实现 2 个单片机间通信 一个单片机按键控制另一个单片机 LED 灯亮灭 拓展内容 拓展内容 在上位机上用串口调试助手发送 1 单片机收到字符后 数码管显示 1 发送 2 显示 2 发送 3 显示 3 串口波特率设为 9600 1232 2 OSC SMOD 波波波 f 12329600 100592 11 2 6 0 void main init while 1 if flag 1 ES 0 for i 0 i 6 i SBUF table1 i while TI TI 0 SBUF a while TI TI 0 ES 1 flag 0 void fzhd interrupt 4 RI 0 a SBUF flag 1 实验八 LCD1602 液晶显示 液晶显示模块已作为很多电子产品的通过器件 如在计算器 万用表 电子表及很多 家用电子产品中都可以看到 显示的主要是数字 专用符号和图形 一 实验目的 一 实验目的 掌握单片机控制 LCD1602 液晶显示的原理和方法 二 实验原理 二 实验原理 1 1 液晶显示原理液晶显示原理 液晶显示的原理是利用液晶的物理特性 通过电压对其显示区域进行控制 有电就有 显示 这样即可以显示出图形 液晶显示器具有厚度薄 适用于大规模集成电路直接驱动 易于实现全彩色显示的特点 目前已经被广泛应用在便携式电脑 数字摄像机 PDA 移动 通信工具等众多领域 液晶显示器的分类液晶显示器的分类 通常可按其显示方式分为段式 字符式 点阵式等 除了黑白显示外 液晶显示器还有多灰度有彩色显示等 如果根据驱动方式来分 可以分为静态驱动 Static 单纯矩阵驱动 Simple Matrix 和主动矩阵驱动 Active Matrix 三种 2 2 16021602 字符型字符型 LCDLCD 简介简介 字符型液晶显示模块是一种专门用于显示字母 数字 符号等点阵式 LCD 目前常用 16 1 16 2 20 2 和 40 2 行等的模块 一般 1602 字符型液晶显示器实物如图 2 所示 图 1 1602 字符型液晶显示器实物图 1 1 1602LCD1602LCD 的基本参数及引脚功能的基本参数及引脚功能 1602LCD 分为带背光和不带背光两种 控制驱动主电路为 HD44780 带背光的比不带背 光的厚 是否带背光在应用中并无差别 1 1 1602LCD1602LCD 主要技术参数 主要技术参数 显示容量 16 2 个字符 芯片工作电压 4 5 5 5V 工作电流 2 0mA 5 0V 模块最佳工作电压 5 0V 字符尺寸 2 95 4 35 W H mm 2 2 引脚功能说明 引脚功能说明 1602LCD 采用标准的 14 脚 无背光 或 16 脚 带背光 接口 各引脚接口说明如表 1 所示 表 1 1602LCD 引脚 编号符号引脚说明编号符号引脚说明 1VSS 电源地 9D2 数据 2VDD 电源正极 10D3 数据 3VL 液晶显示偏压 11D4 数据 4RS 数据 命令选择 12D5 数据 5R W 读 写选择 13D6 数据 6E 使能信号 14D7 数据 7D0 数据 15BLA 背光源正极 8D1 数据 16BLK 背光源负极 第 1 脚 VSS 为地电源 第 2 脚 VDD 接 5V 正电源 第 3 脚 VL 为液晶显示器对比度调整端 接正电源时对比度最弱 接地时对比度 最高 对比度过高时会产生 鬼影 使用时可以通过一个 10K 的电位器调整对 比度 第 4 脚 RS 为寄存器选择 高电平时选择数据寄存器 低电平时选择指令寄存器 第 5 脚 R W 为读写信号线 高电平时进行读操作 低电平时进行写操作 当 RS 和 R W 共同为低电平时可以写入指令或者显示地址 当 RS 为低电平 R W 为高电 平时可以读忙信号 当 RS 为高电平 R W 为低电平时可以写入数据 第 6 脚 E 端为使能端 当 E 端由高电平跳变成低电平时 液晶模块执行命令 第 7 14 脚 D0 D7 为 8 位双向数据线 第 15 脚 背光源正极 第 16 脚 背光源负极 三 三 LCD1602LCD1602 液晶显示程序设计液晶显示程序设计 1 1 1602LCD1602LCD 的指令说明及时序的指令说明及时序 1602 液晶模块内部的控制器共有 11 条控制指令 如表 2 所示 表 2 控制命令表 序号序号指令指令RSRSR WR WD7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0 1 1清显示清显示0 00 00 00 00 00 00 00 00 01 1 2 2光标返回光标返回0 00 00 00 00 00 00 00 01 1 3 3 置输入模式置输入模式 0 00 00 00 00 00 00 01 1 I I D D S S 4 4显示开显示开 关控制关控制0 00 00 00 00 00 01 1D DC CB B 5 5 光标或字符移位光标或字符移位 0 00 00 00 00 01 1 S S C C R R L L 6 6置功能置功能0 00 00 00 01 1DLDLN NF F 7 7 置字符发生存贮器地置字符发生存贮器地 址址 0 00 00 01 1 字符发生存贮器地址字符发生存贮器地址 8 8置数据存贮器地址置数据存贮器地址0 00 01 1显示数据存贮器地址显示数据存贮器地址 9 9读忙标志或地址读忙标志或地址0 01 1BFBF计数器地址计数器地址 1010 写数到写数到 CGRAMCGRAM 或或 DDRAMDDRAM 1 10 0 要写的数据内容要写的数据内容 1111 从从 CGRAMCGRAM 或或 DDRAMDDRAM 读读 数数 1 11 1 读出的数据内容读出的数据内容 16021602 液晶模块的读写操作 屏幕和光标的操作都是通过指令编程来实现的 液晶模块的读写操作 屏幕和光标的操作都是通过指令编程来实现的 说明 1 为高电平 0 为低电平 1 指令 1 清显示 指令码 01H 光标复位到地址 00H 位置 2 指令 2 光标复位 光标返回到地址 00H 3 指令 3 光标和显示模式设置 I D 光标移动方向 高电平右移 低电平左移 S 屏幕上所有文字是否左移或者右移 高电平表示有效 低电平则无效 4 指令 4 显示开关控制 D 控制整体显示的开与关 高电平表示开显示 低电平表示关显示 C 控制光标的开与关 高电平表示有光标 低电平表示无光标 B 控制光标是否闪烁 高电平闪烁 低电平不闪烁 5 指令 5 光标或显示移位 S C 高电平时移动显示的文字 低电平时移动光标 6 指令 6 功能设置命令 DL 高电平时为 4 位总线 低电平时为 8 位总线 N 低电平时为单行显示 高电平时双行显示 F 低电平时显示 5x7 的点阵字符 高电平时显示 5x10 的点阵字符 7 指令 7 字符发生器 RAM 地址设置 8 指令 8 DDRAM 地址设置 9 指令 9 读忙信号和光标地址 BF 为忙标志位 高电平表示忙 此时模块不能 接收命令或者数据 如果为低电平表示不忙 10 指令 10 写数据 11 指令 11 读数据 2 2 1602LCD1602LCD 的指令时序的指令时序 基本操作时序如表 3 所示如下 表 3 基本操作时序表 读状态输入RS L R W H E H输出D0 D7 状态字 写指令输入RS L R W L D0 D7 指令码 E 高脉 冲 输出无 读数据输入RS H R W H E H输出D0 D7 数据 写数据输入RS H R W L D0 D7 数据 E 高脉冲输出无 读写操作时序如图 3 和 4 所示 图 3 读操作时序 图 4 写操作时序 3 3 1602LCD1602LCD 的的 RAMRAM 地址映射及标准字库表地址映射及标准字库表 液晶显示模块是一个慢显示器件 在执行每条指令之前一定要确认模块的忙标志为低电平 表示不忙 否则此指令失效 要显示字符时要先输入显示字符地址 也就是告诉模块在哪里显示字符 图 5 是 1602 的内部显示地址 图 5 1602LCD 内部显示地址 例如第二行第一个字符的地址是 40H 那么是否直接写入 40H 就可以将光标定位在第 二行第一个字符的位置呢 这样不行 因为写入显示地址时要求最高位 D7 恒定为高电平 1 所以实际写入的数据应 该是 01000000B 40H 10000000B 80H 11000000B C0H 在对液晶模块的初始化中要先设置其显示模式 在液晶模块显示字符时光标是自动右 移的 无需人工干预 每次输入指令前都要判断液晶模块是否处于忙的状态 1602 液晶模块内部的字符发生存储器 CGROM 已经存储了 160 个不同的点阵字符图 形 如图 6 所示 这些字符有 阿拉伯数字 英文字母的大小写 常用的符号 和日文假 名等 每一个字符都有一个固定的代码 比如大写的英文字母 A 的代码是 01000001B 41H 显示时模块把地址 41H 中的点阵字符图形显示出来 我们就能看到字母 A 图 6 字符代码与图形对应图 4 4 1602LCD1602LCD 的一般初始化 复位 过程的一般初始化 复位 过程 1 延时 15mS 2 写指令 38H 不检测忙信号 3 延时 5mS 4 写指令 38H 不检测忙信号 5 延时 5mS 6 写指令 38H 不检测忙信号 7 以后每次写指令 读 写数据操作均需要检测忙信号 8 写指令 38H 显示模式设置 9 写指令 08H 显示关闭 10 写指令 01H 显示清屏 11 写指令 06H 显示光标移动设置 12 写指令 0CH 显示开及光标设置 5 5 程序流程图 程序流程图 图 7 软件流程图 四四 实验内容 实验内容 基础内容 1 在 1602 液晶屏上第一行显示自己姓名的拼音 第二行显示自己的手机号码 2 上题中的显示内容从左端移入 速度自定 拓展内容 用矩阵键盘控制液晶屏显示 按下按键分别在第一行显示相应的 0 1 2 3 D E F 袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃 蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃 袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 联想营销费用管理办法
- 航道养护安全管理办法
- 船舶抛锚应急管理办法
- 节点绿化资金管理办法
- 节食药品安全管理办法
- 苏北农田流转管理办法
- 苏州户籍登记管理办法
- 苗圃苗木繁育管理办法
- 茶室管理办法百度百科
- 草果进境归类管理办法
- 2025华电(海西)新能源限公司面向华电系统内外公开招聘高频重点提升(共500题)附带答案详解
- 进出口贸易合规管理制度
- 医疗器械冷链培训
- 公共政策分析 课件 第0章 导论;第1章绪论:政策科学的“研究纲领”
- 冠脉微循环功能障碍评估
- 病理学课件下载
- 2024-2030年撰写:中国病房行业发展趋势及竞争调研分析报告
- 【MOOC】土木工程施工-西南科技大学 中国大学慕课MOOC答案
- 颈动脉狭窄手术治疗
- CAXA工艺图表2024使用手册
- 电动滑板车行车应急预案
评论
0/150
提交评论