已阅读5页,还剩107页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 宜春学院宜春学院 proteusproteus mcs 51mcs 51 教学实验教学实验 指导书指导书 教师使用版教师使用版 何剑锋何剑锋 编编 自动化专业实验室自动化专业实验室 2009 年年 3 月编 月编 2 目录 第一部分第一部分 验证性实验验证性实验 实验一 i o 口输出实验 led 流水灯实验 7 一 实验要求 7 二 实验目的 7 三 实验电路及连线 7 四 实验说明 8 五 实验流程图 8 六 实验步骤 8 七 实验结果和体会 9 八 建议 9 实验二 i o 口输入 输出实验 模拟开关灯 10 一 实验要求 10 二 实验目的 10 三 实验电路及连线 10 四 实验说明 10 五 实验程序流程图 11 六 实验步骤 11 七 实验结果和体会 12 八 建议 12 实验三 8255i o 扩展实验 13 一 实验要求 13 二 实验目的 13 三 实验电路及连线 13 四 实验说明 14 五 实验程序流程图 14 六 实验步骤 14 七 实验结果和体会 15 八 建议 15 实验四 无译码的七段数码管显示实验 16 一 实验要求 16 二 实验目的 16 三 实验电路及连线 16 四 实验说明 16 五 实验程序流程图 17 六 实验步骤 17 七 实验结果和体会 18 八 建议 18 实验五 bcd 码译码的多位数码管扫描显示实验 19 一 实验要求 19 二 实验目的 19 三 实验电路及连线 19 四 实验说明 19 五 实验程序流程图 20 六 实验步骤 20 七 实验结果和体会 21 八 建议 21 实验六 独立式键盘实验 22 一 实验要求 22 二 实验目的 22 三 实验电路及连线 22 四 实验说明 22 五 实验程序流程图 23 六 实验步骤 23 七 实验结果和体会 24 八 建议 24 3 实验七 计数器实验 25 一 实验要求 25 二 实验目的 25 三 实验电路及连线 25 四 实验说明 25 五 实验程序流程图 25 六 实验步骤 26 七 实验结果和体会 26 八 建议 26 实验八 定时器实验 27 一 实验要求 27 二 实验目的 27 三 实验电路及连线 27 四 实验说明 27 五 实验程序流程图 28 六 实验步骤 28 七 实验结果和体会 29 八 建议 29 实验九 单个外部中断实验 30 一 实验要求 30 二 实验目的 30 三 实验电路及连线 30 四 实验说明 30 五 实验程序流程图 31 六 实验步骤 31 七 实验结果和体会 32 八 建议 32 实验十 多个中断同时存在实验 33 一 实验要求 33 二 实验目的 33 三 实验电路及连线 33 五 实验程序流程图 34 六 实验步骤 34 七 实验结果和体会 36 八 建议 36 实验十一 矩阵键盘扫描实验 37 一 实验要求 37 二 实验目的 37 三 实验电路及连线 37 四 实验说明 37 五 实验流程图 38 六 实验步骤 38 七 实验结果和体会 40 八 建议 40 实验十二 串行端口输出扩充实验 41 一 实验要求 41 二 实验目的 41 三 实验电路及连线 41 四 实验说明 41 五 实验流程图 42 六 实验步骤 42 七 实验结果和体会 44 八 建议 44 实验十三 串行端口输入扩充实验 45 一 实验要求 45 二 实验目的 45 三 实验电路及连线 45 四 实验说明 46 五 实验流程图 46 4 六 实验步骤 46 七 实验结果和体会 47 八 建议 47 实验十四 8051 与 pc 之间串行通信实验 48 一 实验要求 48 二 实验目的 48 三 实验电路及连线 48 四 实验说明 48 五 实验流程图 49 六 实验步骤 50 七 实验结果和体会 51 八 建议 51 第二部分第二部分 综合性实验综合性实验 实验十五 两 8051 单片机通信实验 53 一 实验要求 53 二 实验目的 53 三 实验电路及连线 53 四 实验说明 53 五 实验流程图 54 六 实验步骤 54 七 实验结果和体会 57 八 建议 57 实验十六 i2c 总线 at24cxx 存储器读写 58 一 实验要求 58 二 实验目的 58 三 实验电路及连线 58 四 实验说明 58 五 实验流程图 59 六 实验步骤 61 七 实验结果和体会 65 八 建议 65 实验十七 温度传感器 ds18b20 实验 66 一 实验要求 66 二 实验目的 66 三 实验电路及连线 66 四 实验说明 66 五 实验流程图 67 六 实验步骤 67 七 实验结果和体会 72 八 建议 72 实验十八 实时时钟 ds1302 实验 73 一 实验要求 73 二 实验目的 73 三 实验电路及连线 73 四 实验说明 73 五 实验流程图 74 六 实验步骤 74 七 实验结果和体会 81 八 建议 81 实验十九 a d 转换实验 82 一 实验要求 82 二 实验目的 82 三 实验电路及连线 82 四 实验说明 83 五 实验程序流程图 83 六 实验步骤 83 七 实验结果和体会 84 八 建议 84 5 实验二十 d a 转换实验 85 一 实验要求 85 二 实验目的 85 三 实验电路及连线 85 四 实验说明 85 五 实验程序流程图 86 六 实验步骤 86 七 实验结果和体会 87 八 建议 87 实验二十一 液晶显示的控制 1 44780 88 一 实验要求 88 二 实验目的 88 三 实验电路及连线 88 四 实验说明 88 五 实验程序流程图 89 六 实验步骤 89 七 实验结果和体会 92 八 建议 92 实验二十二 液晶显示的控制 2 ks0108 93 一 实验要求 93 二 实验目的 93 三 实验电路及连线 93 四 实验说明 94 五 实验程序流程图 94 六 实验步骤 94 七 实验结果和体会 105 八 建议 105 第三部分第三部分 设计性实验设计性实验 实验二十三 基于 proteus 的外部扩展实验 107 一 设计任务和要求 107 二 课题的具体工作内容 107 三 设计分工建议 107 四 课题成果的要求及评分意见 107 实验二十四 基于 proteus 的接口技术实验 108 一 设计任务和要求 108 二 课题的具体工作内容 108 三 设计分工建议 108 四 课题成果的要求及评分意见 108 实验二十五 基于proteus的数据采集存储测试系统仿真 109 一 设计任务和要求 109 二 课题的具体工作内容 109 三 设计分工建议 109 四 课题成果的要求及评分意见 109 实验二十六 利用单片机实现对 flash 存储器坏块的自动检测 110 一 设计任务和要求 110 二 课题的具体工作内容 110 三 设计分工建议 110 四 课题成果的要求及评分意见 110 6 第一部分第一部分 验证性实验验证性实验 7 实验一实验一 i o 口输出实验口输出实验 led 流水灯实验流水灯实验 一一 实验要求实验要求 利用 51 单片机及 8 个发光二级管等器件 构成一个流水灯单片机系统 二二 实验目的实验目的 1 1 掌握单片机最小系统的构成 2 2 掌握 i o 口的使用及驱动能力的概念 3 3 熟悉移位指令和软件延时程序 三三 实验电路及连线 实验电路及连线 1 1 proteusproteus 实验电路实验电路 2 2 硬件验证实验 硬件验证实验 5151 板板 006 006 板 板 cpu 板006 板 p1 0led1 p1 1led2 p1 2led3 p1 3led4 p1 4led5 p1 5led6 p1 6led7 p1 7led8 5v 5v gndgnd 8 四四 实验说明 实验说明 1 1 主要知识点概述 主要知识点概述 本实验涉及到三个知识点 单片机最小系统的构成 单片机 i o 口的使用以 及软件延时程序的编写 1 单片机最小系统由单片机芯片 时钟电路以及复位电路构成 2 i o 口的使用 p1 口是准双向口 它作为输出口时与一般的双向口使用方 法相同 即当 p1 口用为输入口时 必须先对它置 1 若不先对它置 1 读入的 数据可能是不正确的 3 延时子程序的延时计算问题 对于程序 delay movr6 200 del1 movr7 250 del2 djnzr7 del2 djnzr6 del1 ret 由指令表可知 mov djnz 指令均需用两个机器周期 在采用 12mhz 晶振 时 一个机器周期时间长度为 1us 所以该段程序执行时间约为 250 2 2 200 2 1us 1000402 100ms 2 2 实验效果说明 实验效果说明 发光二级管进行流水灯操作 从上到下依次点亮 五五 实验流程图 实验流程图 否 是 开 始 r2 8 acc 0feh 延时 0 2s p1 acc acc 左移一次 r2 r2 1 r2 0 六六 实验步骤 实验步骤 1 1 proteusproteus 仿真仿真 a 在 proteus 中打开设计文档 流水灯 dsn b 建立实验程序并编译 加载 hex 文件 仿真 c 如不能正常工作 打开调试窗口进行调试 9 参考程序 org 00h start mov r2 8 mov a 0feh loop mov p1 a lcall delay rl a 循环左移 djnz r2 loop 判断移动是否超过 8 位 未 超过继续循环 ljmp start delay mov r5 20 延时程序 延时 0 2s d1 mov r6 20 d2 mov r7 248 djnz r7 djnz r6 d2 djnz r5 d1 ret end 2 2 实验板验证实验板验证 a 用 isp 下载 hex 程序到 cpu b 按连接表连接电路 c 检查验证结果 3 3 扩展实验 扩展实验 a 改变延时时间为 1s b 改变流水灯流动方向 c 改变流水灯的流动样式 设计流程和程序 设计流程和程序 七七 实验结果和体会 实验结果和体会 八八 建议 建议 10 实验二 i o 口输入 输出实验 模拟开关 一 实验要求一 实验要求 利用 51 单片机 按钮和发光二级管 构成一个模拟开关灯的单片机系统 二 实验目的二 实验目的 1 1 了解单片机 i o 输入输出的使用 2 2 掌握单片机 i o 口位操作的编程 3 3 掌握分支程序的设计与分析方法 三 实验电路及连线三 实验电路及连线 1 proteus 实验电路实验电路 2 2 硬件验证实验硬件验证实验 cpu 板板 006 板 板 硬件连接表硬件连接表 cpu 板006 板 p1 0led1 p3 0sw1 5v 5v gndgnd 11 四 实验说明四 实验说明 1 主要知识点概述 主要知识点概述 1 开关状态的检测过程 单片机对开关状态的检测相对于单片机来说 是从单片机的 p3 0 端口输入信号 而输 入的信号只有高电平和低电平两种 当拨开开关 k1 拨上去 即输入高电平 相当开关断 开 当拨动开关 k1 拨下去 即输入低电平 相当开关闭合 单片机可以采用 jb bit rel 或者是 jnb bit rel 指令来完成对开关状态的检测即可 2 输出控制 如图中所示 当 p1 0 端口输出高电平 即 p1 0 1 时 根据发光二极管的单向导电 性可知 这时发光二极管 l1 熄灭 当 p1 0 端口输出低电平 即 p1 0 0 时 发光二极管 l1 亮 我们可以使用 setb p1 0 指令使 p1 0 端口输出高电平 使用 clr p1 0 指令使 p1 0 端口输出低电平 2 实验效果说明 实验效果说明 按下按钮 灯亮 松开按钮 灯灭 五 实验程序流程图五 实验程序流程图 是 开始 k1 开关闭合了吗 l1 亮 l1 灭 否 六 实验步骤六 实验步骤 1 proteus 仿真仿真 a 在 proteus 中打开设计文档 i o 实验 dsn b 建立实验程序并编译 加载 hex 文件 仿真 c 如不能正常工作 打开调试窗口进行调试 参考程序 org00h start jb p3 0 lig 判断开关状态 clr p1 0 开关闭合 灯亮 sjmpstart lig setb p1 0 开关打开 灯灭 sjmpstart 返回 end 2 实验板验证 实验板验证 a 用 isp 下载 hex 程序到 cpu b 按连接表连接电路 c 检查验证结果 3 扩展实验 扩展实验 a 设计三路开关输入 三路发光二级管输出的电路及程序 12 b 设计开关触发 延时 1s 灯灭程序 设计流程和程序设计流程和程序 七 实验结果和体会七 实验结果和体会 八 建议八 建议 13 实验三实验三 8255i o 扩展实验扩展实验 一 一 实验要求实验要求 利用 8255 可编程并行口芯片 实现输入 输出实验 实验中用 8255p 口做输出 pb 口 作输入 二 二 实验目的 实验目的 1 了解 8255 芯片结构及编程方法 2 了解 8255 输入 输出实验方法 三 实验电路及连线三 实验电路及连线 1 proteus 实验电路实验电路 2 硬件验证实验 硬件验证实验 8255 的 cs 接地址译码 cs0 则命令字地址为 7003h pa 口地址为 7000h pb 口地 址为 7001h pc 口地址为 7002h pa0 pa7 pa 口 接 led0 led7 pb0 pb7 pb 口 接 k0 k7 开关量 硬件连接表硬件连接表 cpu 板板006 板板8255 板板 p2 7cs0 p0 0 p0 7d0 d7 key0 key7pb0 pb7 led1 led8pa0 pa7 alele wr rdwr rd resetreset 14 四 实验说明四 实验说明 可编程通用接口芯片 8255a 有三个八位的并行 i o 口 它有三种工作方式 本实验采 用的是方式 0 pa pc 口输出 pb 口输入 很多 i o 实验都可以通过 8255 来实现 五 实验程序流程图五 实验程序流程图 六 实验步骤六 实验步骤 1 1 proteusproteus 仿真仿真 a 在 proteus 中打开设计文档 8255 dsn b 建立实验程序并编译 加载 hex 文件 仿真 c 如不能正常工作 打开调试窗口进行调试 参考程序 pa pb 流水灯 org 00horg 00h main acall delaymain acall delay mov dptr 7003hmov dptr 7003h mov a 82hmov a 82h movx dptr amovx dptr a loop mov dptr 7001hmov a 11111110b movx a dptrmov dptr 7000h mov dptr 7000hloop movx dptr a movx dptr arl a sjmp loopacall delay delay mov r1 00hsjmp loop dlp mov r2 50hdelay djnz r2 end djnz r1 dlp ret end 2 实验板验证 实验板验证 a 用 isp 下载 hex 程序到 cpu 15 b 按连接表连接电路 c 检查验证结果 3 扩展实验 扩展实验 设计按键控制的流水灯 要求不同按键按下时流水灯以不同方式闪动 闪动方案自定 设计流程和程序设计流程和程序 七 实验结果和体会 七 实验结果和体会 八 建议 八 建议 16 实验四实验四 无译码的七段数码管显示实验无译码的七段数码管显示实验 一 实验要求一 实验要求 利用 51 单片机 一个 7 段数码管 构成一个单个 led 显示系统 二 实验目的二 实验目的 1 了解数码管显示原理 2 掌握读表程序的编写 三 实验电路及连线三 实验电路及连线 1 proteus 实验电路实验电路 2 硬件验证实验 硬件验证实验 cpu 板板 004 板 板 硬件连接表 硬件连接表 cpu 板板 004 板 板 cpu 板led 板 p0 0led a p0 1led b p0 2led c p0 3led d p0 4led e p0 5led f p0 6led g p0 7led com 5v 5v gndgnd 注 注 p0 口在口在 cpu 板上已经接上拉电阻 板上已经接上拉电阻 四 实验说明四 实验说明 1 主要知识点概述 主要知识点概述 17 1 led 数码显示原理 七段 led 显示器内部由七个条形发光二极管和一个小圆点发光二极管组成 根据各管 的极管的接线形式 可分成共阴极型和共阳极型 led 数码管的 g a 七个发光二极管因加正电压而发亮 因加零电压而不以发亮 不同 亮暗的组合就能形成不同的字形 这种组合称之为字形码 下面给出共阳极的字形码见表 2 2 段码表格 由于显示的数字 0 9 的字形码没有规律可循 只能采用查表的方式来完成我们所需的 要求了 这样我们按着数字 0 9 的顺序 把每个数字的笔段代码按顺序排好 建立的表格 如下所示 table db 0c0h 0f9h 0a4h 0b0h 99h 92h 82h 0f8h 80h 90h 2 实验效果说明 实验效果说明 数码管循环显示 0 9 五 实验程序流程图五 实验程序流程图 六 实验步骤六 实验步骤 1 proteus 仿真仿真 a 在 proteus 中打开设计文档 led dsn b 建立实验程序并编译 加载 hex 文件 仿真 c 如不能正常工作 打开调试窗口进行调试 参考程序 0 0c0h 8 80h 1 0f9h 9 90h 2 0a4h a 88h 3 0b0h b 80h 4 99h c 0b6h 5 92h d 0b0h 6 82h e 86hh 7 f8h f 8eh 18 org 00h start mov dptr table 指针指向表头地址 s1 mova 00h 设置地址偏移量 movca a dptr 查表取得段码 送 a 存储 cjnea 01h s2 判断段码是否为结束符 ljmpstart s2 movp0 a 段码送 led 显示 lcall delay 指针加 1 incdptr ljmps1 delay mov r5 20 延时子程序 d2 mov r6 20 d1 mov r7 248 djnz r7 djnz r6 d1 djnz r5 d2 ret table db 0c0h 0f9h 0a4h 0b0h 99h 92h 82h 0f8h 80h 90h 段码表 db01h 结束符 end 2 实验板验证 实验板验证 a 用 isp 下载 hex 程序到 cpu b 按连接表连接电路 c 检查验证结果 3 扩展实验 扩展实验 a 将程序改为循环显示一串号码 如学号 b 设计一个组成 0 的各段流动点亮的程序 设计流程和程序设计流程和程序 七 实验结果和体会七 实验结果和体会 八 建议八 建议 19 20 实验五实验五 bcd 码译码的多位数码管扫描显示实验码译码的多位数码管扫描显示实验 一 实验要求一 实验要求 利用 51 单片机 bcd 译码芯片 74ls47 和两位 led 构成一个数码管扫描显示系统 二 实验目的二 实验目的 1 掌握 bcd 译码电路的工作原理 2 掌握多位数码管显示的编程 三 实验电路及连线三 实验电路及连线 1 proteus 实验电路实验电路 2 硬件验证实验 硬件验证实验 cpu 板板 004 显示板 显示板 硬件连接表硬件连接表 cpu 板004 板 p0 0bcd a p0 1bcd b p0 2bcd c p0 3bcd d p3 0seg1 p3 1seg2 5v 5v gndgnd 四 实验说明四 实验说明 1 主要知识点概述 主要知识点概述 二进制编码的十进制数 简称 bcd 码 binary coded decimal 此例中 74ls47 完成 bcd 编码的功能 21 多位 led 显示 先往段码端口输出段码 再选通位选 对应的 led 显示 2 实验效果说明 实验效果说明 两个数码管同时循环显示 0 9 五 实验程序流程图五 实验程序流程图 六 实验步骤六 实验步骤 1 proteus 仿真仿真 a 在 proteus 中打开设计文档 bcd led dsn b 建立实验程序并编译 加载 hex 文件 仿真 c 如不能正常工作 打开调试窗口进行调试 参考程序 org00h l mova 0 设置显示初值 movr0 10 设置显示个数 start mov p0 a 向 p0 口输出显示段码 setbp3 0 setbp3 1 位选 lcall delay inca djnzr0 start jmpl delay mov r5 50 延时程序 d1 mov r6 20 d2 mov r7 248 djnz r7 djnz r6 d2 判断显示是 否到 9 是 否 开 始 a 0 r1 10 置段码 置位码 延时显示 22 djnz r5 d1 ret end 2 实验板验证 实验板验证 a 用 isp 下载 hex 程序到 cpu b 按连接表连接电路 c 检查验证结果 3 扩展实验 扩展实验 设计一个 99 计数器 设计流程和程序设计流程和程序 七 实验结果和体会七 实验结果和体会 八 建议八 建议 23 实验六实验六 独立式键盘实验独立式键盘实验 一 实验要求一 实验要求 利用 51 单片机 8 个按钮 8 路发光二级管构成一个独立式键盘系统 二 实验目的二 实验目的 1 掌握多路 i o 输入输出的编程 三 实验电路及连线三 实验电路及连线 1 proteus 实验电路实验电路 2 硬件验证实验 硬件验证实验 硬件连接表 硬件连接表 cpu 板板 006 板 板 cpu 板006 板 p1 0 p1 7led1 led8 p3 0 p3 7sw1 sw8 5v 5v gndgnd 四 实验说明四 实验说明 1 主要知识点概述 主要知识点概述 使用分支程序编程方法 对开关状态进行监测 输入电平有变化 跳转到相应的 处理程序进行处理 输出处理结果 2 实验效果说明 实验效果说明 按下 8 个按钮 点亮对应的灯 24 五 实验程序流程图五 实验程序流程图 开 始 p3 0ffh p1 0feh p3 p1 0fdhp1 0bfhp1 7fh 结 束 p3 1 1p3 2 1p3 6 1p3 7 1 六 实验步骤六 实验步骤 1 proteus 仿真仿真 a 在 proteus 中打开设计文档 独立式键盘 dsn b 建立实验程序并编译 加载 hex 文件 仿真 c 如不能正常工作 打开调试窗口进行调试 参考程序 org 0000h ljmp start org 0100h start mov p3 0ffh hl jnb p3 0 hl0 jnb p3 1 hl1 jnb p3 2 hl2 jnb p3 3 hl3 jnb p3 4 hl4 jnb p3 5 hl5 jnb p3 6 hl6 jnb p3 7 hl7 ljmp hl 25 hl0 mov p1 0feh ljmp hl hl1 mov p1 0fdh ljmp hl hl2 mov p1 0fbh ljmp hl hl3 mov p1 0f7h ljmp hl hl4 mov p1 0efh ljmp hl hl5 mov p1 0dfh ljmp hl hl6 mov p1 0bfh ljmp hl hl7 mov p1 07fh ljmp hl end 2 实验板验证 实验板验证 a 用 isp 下载 hex 程序到 cpu b 按连接表连接电路 c 检查验证结果 3 扩展实验 扩展实验 按键后使对应的灯闪烁 设计流程和程序设计流程和程序 七 实验结果和体会七 实验结果和体会 八 建议八 建议 26 实验七实验七 计数器实验计数器实验 一 实验要求一 实验要求 8051 内部定时计数器 t0 按计数器模式和方式 1 工作 对 p3 4 t0 引脚进行计数 将其数值按二进制数在 p1 口驱动 led 灯上显示出来 二 实验目的二 实验目的 掌握单片机定时计数器计数方式的使用及编程方法 三 实验电路及连线三 实验电路及连线 1 proteus 实验电路实验电路 2 硬件验证实验 硬件验证实验 硬件连接表硬件连接表 cpu 板004 板006 板 p0 0 p0 6led a led g p0 7led com p3 4sw1 5v 5v gndgnd 四 实验说明四 实验说明 1 主要知识点概述 主要知识点概述 本实验中内部计数器起计数器的作用 外部事件脉冲由 p3 4 引入定时 计数器 t0 即 t0 用来检测外部脉冲数 2 实验效果说明 实验效果说明 由按键产生计数脉冲 led 分别显示脉冲个数 10 个以内 五 实验程序流程图五 实验程序流程图 开始 开始计数 计数 输出计数值 设置工作方式 27 六 实验步骤六 实验步骤 1 proteus 仿真仿真 a 在 proteus 中打开设计文档 courter dsn b 建立实验程序并编译 加载 hex 文件 仿真 c 如不能正常工作 打开调试窗口进行调试 参考程序 org0 movtmod 00000101b 置 t0 计数器方式 1 movth0 0 置 t0 初值 movtl0 0 movr0 10 setbtr0 t0 运行 movdptr table s1 mova tl0 movca a dptr movp0 a ljmps1 table db 0c0h 0f9h 0a4h 0b0h 99h 92h 82h 0f8h 80h 90h 结束符 db 0c0h 0f9h 0a4h 0b0h 99h 92h 82h 0f8h 80h 90h 结束符 end 2 实验板验证 实验板验证 a 用 isp 下载 hex 程序到 cpu b 按连接表连接电路 c 检查验证结果 3 扩展实验 扩展实验 设计流程和程序设计流程和程序 七 实验结果和体会七 实验结果和体会 八 建议八 建议 28 实验八实验八 定时器实验定时器实验 一 实验要求一 实验要求 用 51 单片机的 p1 0 口接 1 个发光二级管 编写程序 控制发光二级管闪烁 时间间 隔 1s 要求 at89c51 内部定时器计时 二 实验目的二 实验目的 掌握单片机定时计数器定时方式的使用及编程方法 三 实验电路及连线三 实验电路及连线 1 proteus 实验电路实验电路 2 硬件验证实验 硬件验证实验 硬件连接表硬件连接表 cpu 板006 板 p1 0led1 5v 5v gndgnd 四 实验说明四 实验说明 1 主要知识点概述 主要知识点概述 关于内部计数器的编程 主要是定时常数的位置和有关控制寄存器的设置 内部计数 器在单片机中主要有定时器和计数器两个功能 本例使用的是定时器 定时 1s cpu 运行 定时中断方式 实现每 1s 输出状态发生一次反转 即发光二级管 1s 亮一次 定时器有关的寄存器有工作方式寄存器 tmod 和控制寄存器 tcon tmod 用于设 置定时器 计数器的工作方式 0 3 并确定用于定时还是计数 tcon 主要功能是为定时器 在溢出时设定标志位 并控制定时器的运行或停止 内部计数器用于定时器时 是对机器周期计数 每个机器周期的长度是 12 个振荡周期 本例中单片机晶振 12mhz 选用工作方式 2 既 8 位自动重装方式定时器 定时器 100us 29 中断一次 所以定时常数的设置可按以下方法计算 机器周期 12 12mhz 1us 256 定时常数 1us 100us 定时常数 156 然后对 100us 中断次数计数 10000 次 就是 1s 2 实验效果说明 实验效果说明 发光二级管按设定的定时时间闪烁 五 实验程序流程图五 实验程序流程图 主程序主程序 定时中断服务程序定时中断服务程序 六 实验步骤六 实验步骤 1 proteus 仿真仿真 a 在 proteus 中打开设计文档 timer dsn b 建立实验程序并编译 加载 hex 文件 仿真 c 如不能正常工作 打开调试窗口进行调试 参考程序 tickequ10000 10000 100us 1s t100usequ256 100 100us 时间常数 12m c100usequ30h 100us 计数单元 ledbufequ40h ledbitp1 0 org00h ljmpstart 跳至主程序 org000bh 定时中断入口地址 t0int pushpsw 状态保护 mova c100us 1 jnzgoon 开 始 置 t1 工作方式 设置时间常数 设置初始状态位 设置秒计数值 中断允许 输出状态位 等待中断 定时中断入口 保护现场 秒计数值减 1 重新设置秒计数值 计到 1s 状态位取反 恢复现场 中断返回 是 否 30 decc100us 秒计数值减 1 goon decc100us 1 mova c100us orla c100us 1 jnzexit 100us 计数器不为 0 返回 movc100us high tick 100us 计数器为 0 重置计数器 movc100us 1 low tick cplledbuf 取反 led exit poppsw reti start movtmod 02h 方式 2 定时器 movth0 t100us 置定时器初值 movtl0 t100us movie 10000010b ea 1 it0 1 setbtr0 开始定时 clrledbuf clrled movc100us high tick 设置 10000 次计数值 movc100us 1 low tick loop movc ledbuf movled c ljmploop end 2 实验板验证 实验板验证 a 用 isp 下载 hex 程序到 cpu b 按连接表连接电路 c 检查验证结果 3 扩展实验 扩展实验 使用其他定时器其他工作方式设计该实验 设计流程和程序设计流程和程序 七 实验结果和体会七 实验结果和体会 八 建议八 建议 31 实验九实验九 单个外部中断实验单个外部中断实验 一 实验要求一 实验要求 利用 p3 2 接一个外部中断输入 通过 p1 口连接 8 个发光二级管显示中断程序的作用 二 实验目的二 实验目的 1 理解中断源 中断标志 中断入口等概念 2 掌握中断程序的分析与设计方法 三 实验电路及连线三 实验电路及连线 1 proteus 实验电路实验电路 2 硬件验证实验 硬件验证实验 硬件连接表硬件连接表 cpu 板006 板 p1 0 p1 7led1 led8 p3 2sw1 5v 5v gndgnd 四 实验说明四 实验说明 1 主要知识点概述 主要知识点概述 外部中断的响应过程 32 1 中断采样 根据采样结果设置 tcon 寄存器中断响应标志位的状态 2 中断查询 查询 tcon 标志位的状态 确定是否响应 3 中断响应 保护断点内容 装入中断入口地址 执行中断服务程序 返回中断 点 继续执行原来程序 2 实验效果说明 实验效果说明 中断未发生时 led 做闪烁状态 当有中断产生 led 呈流水灯操作 五 实验程序流程图五 实验程序流程图 主程序框图 外部子程序框图 六 实验步骤六 实验步骤 1 proteus 仿真仿真 a 在 proteus 中打开设计文档 外部中断 dsn b 建立实验程序并编译 加载 hex 文件 仿真 c 如不能正常工作 打开调试窗口进行调试 参考程序 开始 p1 口灯闪烁 中断产生 p1 口呈流水灯操作 org 0000h 程序由地址 0 开始执行 ljmp start org 0003h 设置外部中断矢量地址 ljmp int 跳转到中断控制入口处 start mov sp 60h mov tcon 00000000b mov ip 00000001b mov ie 10000001b 对中断进行初始化 run mov a 0 loop mov p1 a mov r5 20 lcall delay cpl a ljmp loop 闪烁灯 int 中断服务程序 开 始 设置初始状态 等待中断 中断允许 设置中断控制寄存 器 中断入口 流水灯程序 中断返回 恢复现场 保护现场 33 push acc push psw 保护现场 clr rs1 切换寄存器组 setb rs0 clr c mov a 11111111b mov r4 16 loopr 流水灯程序 rrc a mov p1 a mov r5 20 call delay djnz r4 loopr pop psw 恢复现场 pop acc reti delay mov r6 50 延时程序 s1 mov r7 100 djnz r7 djnz r6 s1 djnz r5 delay ret end 2 实验板验证 实验板验证 a 用 isp 下载 hex 程序到 cpu b 按连接表连接电路 c 检查验证结果 3 扩展实验 扩展实验 改变中断触发方式或更改中断服务程序内容重做以上实验 内容自定 设计流程和程序设计流程和程序 七 实验结果和体会七 实验结果和体会 八 建议八 建议 34 35 实验十实验十 多个中断同时存在实验多个中断同时存在实验 一 实验要求一 实验要求 利用 p3 2 接一个外部中断输入 同时使用到单片机定时器中断 通过 p1 口连接 8 个 发光二级管显示中断的作用 二 实验目的二 实验目的 了解中断嵌套和中断优先级的概念和编程方法 三 实验电路及连线三 实验电路及连线 1 proteus 实验电路实验电路 2 硬件验证实验 硬件验证实验 cpu 板006 板 p1 0 p1 7led1 led8 p3 2sw1 5v 5v gndgnd 四 实验说明四 实验说明 1 所用知识点概述 所用知识点概述 中断优先级 51 系统有高 低两个中断优先级 各中断的优先级通过中断优先寄存器 ip 进行设定 在进行中断响应时 高优先级可以打断低优先级的中断服务 形成中断 嵌套 2 实验效果说明 实验效果说明 36 外部中断未发生时 系统通过定时器定时的方法 使 led 做流水灯操作 当有中断 产生 led 闪烁 5 次 完毕返回 五 实验程序流程图五 实验程序流程图 主程序框图 定时中断子程序 外中断中断 子程序 六 实验步骤六 实验步骤 1 proteus 仿真仿真 a 在 proteus 中打开设计文档 多个中断 dsn b 建立实验程序并编译 加载 hex 文件 仿真 c 如不能正常工作 打开调试窗口进行调试 参考程序 计时中断与外部中断同时存在实验 利用计时方式 使 8 只 led 灯每隔 1s 左移一次 当外部中断 p3 2 出现时 8 个 led 灯闪 烁 5 次 闪烁完后返回主程序运行 org 0000h ljmp start org 0003h 外部中断入口 ljmp ext org 000bh 定时中断入口 ljmp tim start mov sp 70h 建立堆栈区 mov tmod 00000001b 定时器 0 工作方式 1 mov th0 high 65536 10000 mov tl0 low 65536 10000 装计数器初值 setb tr0 tr0 置 1 定时开始 mov ie 10000011b 开总中断 定时器 0 中断允许 mov ip 00000001b 设定外部中断 0 优先级高 开 始 设置初始状态 等待中断 中断允许 设置中断控制寄 存器 外中断入口 闪烁灯程序 中断返回 恢复现场 保护现场 否 是 定时中断入口 计数值重新赋值 现场保护 中断返回 流水灯程序 恢复现场 溢出次数 100 37 mov r5 100 定时溢出次数 mov r1 0feh ljmp tim push acc push psw 现场保护 mov th0 high 65536 10000 mov tl0 low 65536 10000 重赋计数值 djnz r3 loop mov r3 100 mov a r1 mov p1 a rl a mov r1 a 移位 loop pop psw pop acc 恢复现场 reti 外部中断服务程序 闪烁 5 ext push acc push psw mov a 00 mov r2 10 loop3 mov p1 a call delay cpl a djnz r2 loop3 pop psw pop acc reti 延时程序 delay mov r5 20 d1 mov r6 20 d2 mov r7 248 djnz r7 djnz r6 d2 djnz r5 d1 ret end 2 实验板验证 实验板验证 a 用 isp 下载 hex 程序到 cpu b 按连接表连接电路 c 检查验证结果 38 3 扩展实验 扩展实验 设计两个外部中断与定时中断同时存在的实验 设计流程和程序设计流程和程序 七 实验结果和体会 七 实验结果和体会 八 建议 八 建议 39 实验十一实验十一 矩阵键盘扫描实验矩阵键盘扫描实验 一一 实验要求实验要求 利用 4x4 16 位键盘和一个 7 段 led 构成简单的输入显示系统 实现键盘输入和 led 显示实验 二二 实验目的实验目的 1 理解矩阵键盘扫描的原理 2 掌握矩阵键盘与 51 单片机接口的编程方法 三三 实验电路及连线 实验电路及连线 1 1 proteusproteus 实验电路实验电路 2 2 硬件验证实验硬件验证实验 cpu 板004 板007 p2 0 p2 7led a led g p1 0 p1 3c1 c4 p1 4 p1 7r1 r4 5v 5v 5v gndgndgnd 四四 实验说明 实验说明 1 1 主要知识点概述 主要知识点概述 本实验阐述了键盘扫描原理 过程如下 首先扫描键盘 判断是否有键按下 再确定是哪一个键 计算键值 输出显示 2 2 实验效果说明 实验效果说明 以数码管显示键盘的作用 点击相应按键显示相应的键值 40 五五 实验流程图 实验流程图 六六 实验步骤 实验步骤 1 1 proteusproteus 仿真仿真 a 在 proteus 中打开设计文档 键盘扫描 dsn b 建立实验程序并编译 加载 hex 文件 仿真 c 如不能正常工作 打开调试窗口进行调试 参考程序 org 0000h ajmp main org 0030h main mov dptr table 将表头放入 dptr lcall key 调用键盘扫描程序 movc a a dptr 查表后将键值送入 acc mov p2 a 将 acc 值送入 p0 口 ljmp main 返回反复循环显示 key lcall ks 调用检测按键子程序 开 始 扫描键盘 有键按下 延时去抖 扫 描键盘 找到闭合键 计算键值 根据键值得到对应段码 输出段码显示 否 是 41 jnz k1 有键按下继续 lcall delay2 无键按调用延时去抖 ajmp key 返回继续检测按键 k1 lcall delay2 lcall delay2 有键按下延时去抖动 lcall ks 再调用检测按键程序 jnz k2 确认有按下进行下一步 ajmp key 无键按下返回继续检测 k2 mov r2 0efh 将扫描值送入 r2 暂存 mov r4 00h 将第一列值送入 r4 暂存 k3 mov p1 r2 将 r2 的值送入 p1 口 l6 jb p1 0 l1 p1 0 等于 1 跳转到 l1 mov a 00h 将第一行值送入 acc ajmp lk 跳转到键值处理程序 l1 jb p1 1 l2 p1 1 等于 1 跳转到 l2 mov a 04h 将第二行的行值送入 acc ajmp lk 跳转到键值理程序进行键值处理 l2 jb p1 2 l3 p1 2 等于 1 跳转到 l3 mov a 08h 将第三行的行值送入 acc ajmp lk 跳转到键值处理程序 l3 jb p1 3 next p1 3 等于 1 跳转到 next 处 mov a 0ch 将第四行的行值送入 acc lk add a r4 行值与列值相加后的键值送入 a push acc 将 a 中的值送入堆栈暂存 k4 lcall delay2 调用延时去抖动程序 lcall ks 调用按键检测程序 jnz k4 按键没有松开继续返回检测 pop acc 将堆栈的值送入 acc ret next inc r4 将列值加一 mov a r2 将 r2 的值送入 a jnb acc 7 key 扫描完至 key 处进行下一扫描 rl a 扫描未完将 a 中的值右移一位进行下一列的扫描 mov r2 a 将 acc 的值送入 r2 暂存 ajmp k3 跳转到 k3 继续 ks mov p1 0fh 将 p1 口高四位置 0 低四位值 1 mov a p1 读 p1 口 xrl a 0fh 将 a 中的值与 a 中的值相异或 ret 子程序返回 delay2 40ms 延时去抖动子程序 42 mov r5 08h l7 mov r6 0fah l8 djnz r6 l8 djnz r5 l7 ret table 七段显示器数据定义 db 0c0h 0f9h 0a4h 0b0h 99h 01234 db 92h 82h 0f8h 80h 90h 56789 db 88h 83h 0c6h 0a1h 86h abcde db 8eh f end 程序结束 2 2 实验板验证实验板验证 a 用 isp 下载 hex 程序到 cpu b 按连接表连接电路 c 检查验证结果 3 3 扩展实验 扩展实验 设计其他方式键盘扫描程序 设计流程和程序 设计流程和程序 七七 实验结果和体会 实验结果和体会 八八 建议 建议 43 实验十二实验十二 串行端口输出扩充实验串行端口输出扩充实验 一一 实验要求 利用移位积存器 74ls164 单片机的串口和 7 个 led 完成串行端口扩展 实现跑马灯 闪烁 二二 实验目的 1 理解串行通讯和并行通讯的含义 2 了解 74ls164 的工作原理 理解串转并的原理 3 掌握单片机串口用于并行输出口扩展的原理 三三 实验电路及连线 1 proteusproteus 实验电路实验电路 2 2 硬件验证实验 硬件验证实验 cpucpu 板板 006 006 板 板 首先将 006 板上拨码开关拨向 on cpu 板006 板 p3 0164 a 164 b p3 1164 clk 5v 5v gndgnd 四四 实验说明 1 1 主要知识点概述 主要知识点概述 本实验用到了两个主要知识点是 74ls164 的工作机制 简单的单片机串口输出 2 2 实验效果说明 实验效果说明 使用 7
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江苏省南京市联合体2025-2026学年上学期期末九年级物理试卷(含答案)
- 黑龙江省龙东十校联盟2025-2026学年高一(上)期末物理试卷(含答案)
- 广东省深圳市南山区2025-2026学年上学期七年级1月期末数学试题(含答案)
- 2025-2026学年安徽省合肥45中八年级上册(数学HK)期末试卷(无答案)
- 微观经济学试题及答案
- 科幻文学溯源:从舶来品到本土化
- 2022-2023年人教版七年级数学上册期末测试卷及参考答案
- 边检业务培训课件
- 初升高自主招生研讨:初升高自主招生研讨-方程与不等式(答案)
- 书让我陶醉作文
- 2026贵州省省、市两级机关遴选公务员357人考试备考题库及答案解析
- 儿童心律失常诊疗指南(2025年版)
- 北京通州产业服务有限公司招聘备考题库必考题
- 2026年基金从业资格证考试题库500道含答案(完整版)
- 气体灭火系统维护与保养方案
- GB/T 10922-202555°非密封管螺纹量规
- ESD护理教学查房
- 内窥镜护理不良事件分析与防范措施
- 2025年《电信业务投诉处理》知识考试题库及答案解析
- 82-2手榴弹使用课件
- 道路清扫保洁服务投标方案
评论
0/150
提交评论