8位流水灯的单片机控制ppt课件

上传人:钟*** 文档编号:4459107 上传时间:2020-01-07 格式:PPT 页数:25 大小:670KB
返回 下载 相关 举报
8位流水灯的单片机控制ppt课件_第1页
第1页 / 共25页
8位流水灯的单片机控制ppt课件_第2页
第2页 / 共25页
8位流水灯的单片机控制ppt课件_第3页
第3页 / 共25页
点击查看更多>>
资源描述
项目二 8位流水灯的单片机控制 项目目标项目任务项目分析项目预备知识项目实施知识点链接 项目目标通过单片机控制8个发光二极管的顺序点亮 学会使用MCS 51单片机芯片的P1口进行输出控制 进一步学习汇编程序的分析方法 并能熟练运用RR RL等基本指令 项目任务要求应用AT89C51芯片 控制8个发光二极管的有序亮灭 呈现流水灯的效果 设计单片机控制电路并编程实现此功能 项目分析利用单片机P1口连接8个发光二极管 利用各引脚输出电位的变化 控制发光二极管的亮灭 P1口各引脚的电位变化可以通过指令来控制 为了清楚地分辨发光二极管的点亮和熄灭 在P1口输出信号由一种状态向另一种状态变化时 编写延时程序实现一定的时间间隔 项目预备知识 循环移位指令 RLA将累加器A中的数据依次左移一位RRA将累加器A中的数据依次右移一位RLCA将累加器A中的数据连同进位标志位CY一起依次左移一位RRCA将累加器A中的数据连同进位标志位CY一起依次右移一位 RLARRARLCARRCA 后两条指令 影响P标志和CY 循环移位指令 4条 例 若A 5CH CY 1 执行RLCA后 对RLC RRC指令 在CY 0时RLC相当于乘以2RRC相当于除以2 结果 A B9H CY 0 P 1 CLRA将累加器A中的数据清零CPLA将累加器A中的数据取反 项目预备知识 清0与取反指令 取反 CPLA A A例 若A 5CH 执行CPLA结果 A A3H 清0 CLRA 0 A 在项目一和项目二中 为了能清晰的分辨出蜂鸣器的鸣叫和发光二极管的变化 我们进行了延时程序的编写 CPU执行完延时程序耗费的时间即是我们所要延时的时间 通常可以利用时钟频率 指令周期结合寄存器中的数据进行延时时间的计算 延时程序如下 DELAY MOVR7 10 1 SD0 MOVR6 100 1 SD1 MOVR5 200 1 SD2 DJNZR5 D2 2 SDJNZR6 D1 2 SDJNZR7 D0 2 SRET 项目预备知识 软件延时程序的时间计算 采用12MHz的晶振 则一个机器周期是1 S MOVR7 10 是一条单周期指令 执行1次需要1 S 关于指令的执行周期可以查附录二 DJNZR5 D2 是双机器周期指令 执行1次需要2 1 2 S 计算第1层循环 D2 的时间 200 2 S 400 S第2层循环 D1 的时间 1 400 2 100 40300 S第3层循环 D0 的时间 1 40300 2 10 403030 S 0 4S 一 设计思路在AT89C51单片机芯片及基本外围电路组成的单片机最小系统基础上 利用P1口的8个引脚控制8个发光二极管 由于发光二极管具有普通二极管的共性 单向导电性 因此只要在其两极间加上合适的正向电压 发光二极管即可点亮 将电压撤除或加反向电压 发光二极管即熄灭 根据发光二极管的特性 结合单片机P1口的输出信号 即可实现流水灯的控制效果 项目实施 一 硬件电路设计 二 电路设计1 P1口结构及流水灯电路 左图是P1口中某一位的位结构电路图 P1口为8位准双向口 每一位均可独立定义为输入或输出口 当作为输出口时 1写入锁存器 T2截止 内部上拉电阻将电位拉至 1 此时该口输出为1 当0写入锁存器 T2导通 输出则为0 作为输入口时 锁存器置1 T2截止 此时该位既可以把外部电路拉成低电平 也可由内部上拉电阻拉成高电平 所以P1口称为准双向口 P1 0 P1 7 准双向I O口 内置了上拉电阻 2 1 D Q CK Q 读引脚 0 读锁存器 0 写锁存器 内部总线 Vcc 引脚P1 X 内部上拉电阻 1 P1 0 P1 7作为输出口 输出1 2 1 D Q CK Q 读引脚 0 读锁存器 0 写锁存器 内部总线 Vcc 引脚P1 X 内部上拉电阻 输出数据 1时 1 1 0 截止 1 2 1 D Q CK Q 读引脚 0 读锁存器 0 写锁存器 内部总线 Vcc 引脚P1 X 内部上拉电阻 输出数据 0时 0 0 1 0 导通 2 P1 0 P1 7作为输出口 输出0 2 1 D Q CK Q 读引脚 1 读锁存器 0 写锁存器 内部总线 Vcc 引脚P1 X 内部上拉电阻 输入数据时 要先对其写 1 1 1 0 截止 3 P1 0 P1 7作为输入口 发光二极管的连接方法 若将它们的阴极连接在一起 阳极信号受控制 即构成共阴极接法 如图a所示 若将它们的阳极连接在一起 阴极信号受控制 则构成共阳极接法 如图b所示 由于P1口引脚输出高电位时电压大约是5V 为保证发光二极管的可靠工作 必须在发光二极管和单片机输出引脚间连接一只限流电阻 本项目选用硅型普通发光二极管 限流电阻取220 P1口控制流水灯 8个发光二极管 电路 综合以上的分析 得到下图所示电路原理图 三 材料表从原理图可以得到实现本项目所需的元器件 元器件的选择应该合理 以满足功能要求为原则 否则会造成资源的浪费 二 控制程序的编写 一 绘制程序流程图本控制使用简单程序设计中的顺序结构形式实现 程序结构流程图如下图 二 编制汇编源程序 2 程序执行过程 ORG0000HLJMPMAIN2ORG0200HMAIN2 MOVP1 0FEH L0亮LCALLDELAYMOVP1 0FDH L1亮LCALLDELAYMOVP1 0FBH L2亮LCALLDELAYMOVP1 0F7H L3亮LCALLDELAYMOVP1 0EFH L4亮LCALLDELAYMOVP1 0DFH L5亮LCALLDELAY MOVP1 0BFH L6亮LCALLDELAYMOVP1 7FH L7亮LCALLDELAYSJMP 重复执行本条指令ORG0F00HDELAY MOVR7 10D0 MOVR6 100D1 MOVR5 200D2 DJNZR5 D2DJNZR6 D1DJNZR7 D0RET 子程序返回指令END 程序结束标记 在本项目中 利用P1口实现8个发光二极管的流水灯控制 主要利用了送数指令 将要显示的现象对应的数据通过P1口送出 在编写控制程序时 应首先将每个对应现象分析清楚 比如 要让L3亮 其余发光二极管灭 则P1口的数据应为11110111B 要让L7亮 则P1口的数据应为01111111B 然后找到能实现此操作的指令即可 下面使用我们在本项目中学习的移位指令编写程序如下 ORG0000HORG0F00HLJMPMAIN2DELAY MOVR7 10ORG0200HD0 MOVR6 100MAIN2 MOVA 0FEHD1 MOVR5 200XH MOVP1 AD2 DJNZR5 D2LCALLDELAYDJNZR6 D1RLADJNZR7 D0LJMPXHRETEND 知识点链接 分析后可知 本段程序与项目中给出的参考程序功能相似 但是指令数量较少 所占存储器空间较小 根据发光二极管的点亮次序 通过分析每次给P1口所送数据 发现不断变换的是数据中 0 的位置 若点亮次序是从L0 L7 则 0 是自低位 右 向高位 左 移动的 符合指令 RLA 的功能 同时还可以总结出 若应用 RRA 指令 则8个发光二极管的点亮次序是从L7 L0 应用了移位指令后 程序更简洁易懂了 因此在今后的学习中 应注意类似情况的处理 三 程序PROTUES仿真与调试
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!