基于单片机的光控路灯设计含程序和仿真图.doc

上传人:xin****828 文档编号:6657263 上传时间:2020-03-01 格式:DOC 页数:26 大小:1.32MB
返回 下载 相关 举报
基于单片机的光控路灯设计含程序和仿真图.doc_第1页
第1页 / 共26页
基于单片机的光控路灯设计含程序和仿真图.doc_第2页
第2页 / 共26页
基于单片机的光控路灯设计含程序和仿真图.doc_第3页
第3页 / 共26页
点击查看更多>>
资源描述
摘 要 随着社会文明的不断发展 城市照明已经不仅仅局限于街道的照明 而更 是发展成为了城市景观等装饰性照明的综合市政工程 本系统采用 51 单片机和 相关的光电检测设备来设计智能光控路灯控制器 利用单片机可编程控制八位 逻辑 I O 端口实现路灯的智能化 达到节能 自动控制的目的 避免了传统电路 对能源的浪费 且路灯的自动控制更方便了工作人员的管理 而且所用的路灯 采用 LED 灯 众所周知 LED 是目前最为节能的发光元件 通过采用 LED 发光 可以节省大量的电能 因此 智能光控节能路灯必将在未来得到广泛的应用 本设计方案采用光线强度 时间以及道路车流量的三重模式控制 在很大程度 上做到了 随需而控 同时符合了当今社会所倡导的节约型 可持续性发展 的标准 因而拥有良好的可行性和具有很大的实用价值 本设计是以光敏电阻对于外界光线强弱的感应能力为基础进行的路灯自动 化控制系统设计 当光线强度弱到一定程度的时候 路灯就会自动灭掉 当光 线强到一定程度的时候 路灯就会自动开启 本设计以当外界光线强度弱到使 光敏电阻阻值大于等于 200 欧的时候 LED 灯会自动开启 小于 200 欧的时候 自动关闭 关键字 单片机 光敏电阻 LED 路灯照明 目 录 摘 要 1 绪 论 3 1 目标及任 务 4 2 硬件设计 2 1 主要模块构 成 4 2 2 电路设 计 9 2 3 系统流 程 11 三 系统的软件设计 3 1 详细步 骤 11 3 2 具体程序设 计 12 3 3 系统软件执行流 程 12 四 结论与设计调试 4 1 结 论 14 4 2 课程设计过程中遇到的主要问题以及解决办 法 14 五 心得体 会 15 六 参考文 献 16 七 附录 仿真图 源程序 17 绪 论 随着社会的发展 路灯已经成为一个城市的照明系统中不可分割的一部分 在城市照明中发挥着举足轻重的作用 而其所依靠的就是路灯自动化控制系统 但当前大多采用的是定时的路灯自动化控制系统 其通常都是采用全夜式 开启路灯的自动化控制系统 但因为夏天跟冬天因为天亮与天黑的时差颇大 使得夏天晚上过早的路灯就开启 早上又过晚的关闭 且世界奇观这么多 偶 尔总会出现点极端的天气状况 会造成白天天过黑 夜晚又如白昼般亮的情况 如日全食等 而路灯又不会自动开启或者关闭 这就使得交通事故的发生 概率增大 路灯在这种情况下失去了其应有的价值和意义也造成能源的白白浪 费 而且现在路灯已经全球基本普及 大到世界有名的大城市 小到小城镇 小乡村都已经有了路灯 可想而知世界能源在这块的浪费上是多么的巨大 光控路灯不仅可以解决这类问题 还可以使路灯在有需要的时候自动开启 或者关闭 避免了路灯在不需要的时候自动开启或者关闭 大大的避免了能源 不必要的浪费 对于地球环保和能源的节约 可以起到巨大的作用 一个城市 每年在这块能源的经济支出上对于普通人来说简直是一个天文数字 一个人一 辈子的用电可能都没有城市路灯几天的使用量大 光控路灯如果可以普及化 不仅可以为城市省下了一大笔的开支 使其可以将节省下的资金投资到更有意 义的地方去 使得城市可以更好 更快的发展 对于世界来说 更是可以取得 巨大的节约能源效果 对于绿色地球的实现做出巨大的贡献 路灯自动化的控制方式有很多 本系统采用 STC 89C52 和七段数码管显示 器 LED 灯等相关的光电检测 控制 显示设备 来设计智能光控路灯自动化 系统 实现能根据外界光线条件通过 IIC 总线模块 AD DA 转换模块等的处理 实现控制路灯的自动化开启或者关闭功能 一 目标及任务 本设计是以光敏电阻可以根据外界光线的强度而改变自身阻值的特性 光 线越强 阻值越小 光线越弱 阻值越大 为基础设计的光控路灯自动化控制 系统 其原理是利用光敏电阻感受外界光线强度并体现在自身阻值的变化上 然后根据这一阻值的大小来判断外界的光线亮度情况 然后根据所得数据判断 LED 是该亮起还是该灭掉 即当外界光线强度弱到使光敏电阻阻值大于等于 200 欧的时候 LED 灯会自动开启 小于 200 欧的时候 自动关闭 2 硬件设计 2 1 主要模块构成 1 光敏电阻感应模块与 AD DA 转换模块 所谓的 AD DA 转换就是模数 数模转换 该设计中我们涉及到的是 ADC 模数转换 PCF8591 是具有 IIC 总线接口的 8 位 A D 及 D A 的转换器 具有 4 路 A D 输入 1 路 A D 输出 这里该设计利用 PCF8591 来实现 ADC 转换数据的功能和连接 IIC 总线的 功能 其引脚 1 ANI0 ANI3 为模拟信号输入端 不用时接地 2 SDA 为 IIC 总线数据输入输出端 3 SDL 为 IIC 总线时钟输入端 4 VREF 为基准电压输入端 其原理为 光敏电阻通过感应外界的光线强度获得数据 通过 PCF8591 的 ANI0 端口 数据输入端口 输入数据 进行 ADC 模数转换 将感应数据 转换成数字数据 AD DA 模块和光敏电阻感应模块仿真图如下 AD DA 转换模块与光敏电阻感应模块 2 IIC 总线模块 随着大规模集成电路技术的发展 一个系统所需要的组件越来越多 所以 各组成部分之间便需要总线来实现组件之间数据的传输 控制 而 IIC 总线具 有简单 有效 高性能优点 可以大大简化系统的硬件设计 因此得到广泛应 用 因为 AT24C02 拥有存储芯片 且可重复擦除数百万次和重复读写的能力 因此在这里我们便采用 AT24C02 来实现 IIC 总线的 EEPROM 功能 用它来存 储数据并控制数据的输出与接收 实现 IIC 总线的双向串口通信功能 其引脚 a SDA 为串行数据输入输出端 是一个双向漏极开路结构的引脚 这里作为 IIC 总线数据输入输出端 b SCL 为串行移位时钟控制端 这里作为 IIC 总线时钟输入 写入数据时 上升沿有效 读出数据时 下降沿有效 IIC 总线仿真图如下 IIC 总线模块 3 LED 灯与数码管显示模块 这里我们应用了 74HC573 它包含八路 D 型透明锁存器 适用于面向总线 的三态输出 所有锁存器共用一个锁存使能 LE 端和一个输出使能 OE 端 利用 74HC573 的锁存功能 使其 LE 端口接单片机 利用单片机编程控制锁 存数据的输入延迟时间 以此来达到控制 LED 灯亮与灭和七段数码管显示数值 的稳定 使得 LED 灯和七段数码管不会一直亮灭亮灭的闪 其引脚 a 当 LE 为高电平时 数据从 Dn 输入到锁存器 b 当 LE 为低电平时 锁存器存储 D 输入上的信息一段就绪时间直到 LE 的下降沿来临 c 当 OE 为低电平时 8 个锁存器的内容可被正常输出 d 当 OE 为高电平时 输出进入高阻态 LED 灯模块和七段数码管模块仿真图如下 LED 灯显示模块 七段数码管显示模块 4 单片机最小化系统模块 最小系统是 51 单片机的最基本的组成部分 51 单片机的引脚虽然只有四 十 但它有很多的扩展功能 根据相应的课题设计要求可以设计相应的外围电 路 编写出相应的控制程序便可以跟外围电路很好的组合成功能复杂的系统 其引脚 a 18 19 脚为单片机的晶振引脚 外接 11 0592MHz 的晶振 晶振外围还有 2 个 22pF 的起振电容 可以使单片机更好的起振 b 9 脚为单片机的复位引脚 当复位引脚出现连续两个机器周期的高点平时 单片机复位 c 31 引脚为 EA 引脚 当 EA 接高电平时读取内部储存数据 当内部存储器 读取完成后 单片机自动读取外部存储器 当 EA 接低电平是 单片机只 读取外部存储器 单片机仿真图如下 单片机最小系统模块 2 2 电路设计 该设计是将上述的六个模块拼接一起组成一个系统体系 以实现设计所需 要的功能及光控路灯自动化控制系统 单个模块其功能相对会比较简单 单一 但将一些模块合理的串接起来就可以实现复杂的功能 当然也可以实现该设计 所需的功能 其连接方式 1 光敏电阻通过感应外界的光线强度 将其转换成模拟信号 利用 PCF8591 的 AIN0 模拟信号输入端 将模拟数据输入到 PCF8591 2 PCF8591 对数据进行 ADC 转换 模数转化 将模拟信号转换成数据信号 并根据单片机对 SCL IIC 总线时钟输入端 高低电平的控制 利用 SDA IIC 总线数据输入输出端 将数据传输至 IIC 总线的缓存元件 AT24C02 使其行使 EEPROM 功能 3 根据单片机传输给 AT24C02 的 SCL 串行移位时钟控制端 端口的高低电 平信号来执行数据的写入或者读出 写入数据时 上升沿有效 读出数据 时 下降沿有效 利用 AT24C02 的 SDA 端来进行数据的双向串口通信 4 AT24C02 在 SCL 为下降沿的时候通过 SDA 端将缓存的数据传输给单片机 5 74H573 的 LE 端口接单片机的端口 利用单片机对 LE 的输入电平进行控 制 当 LE 为高电平时 数据从 Dn 输入到锁存器 当 LE 为低电平时 锁 存器存储 D 输入上的信息一段就绪时间直到 LE 的下降沿来临 实现对 LED 灯模块跟七段数码管显示模块的延时时间控制 防止一闪一闪的 6 单片机通过处理数据 判断 LED 灯模块该亮还是该灭 并输出数据到 LED 灯模块和七段数码管模块所连接的 74HC573 的 Dn 端口 7 单片机通过对 SCL 和 LE 端口电平的输入来控制各模块间数据的传输 接 收 其模块连接流程图 光敏电阻 感应模块 AD DA 转换 模块 IIC 总线 模块 单片机 模块 数码管 显示模块 LED 灯模块 电路总图如下 2 3 系统流程 其流程为 光敏电阻读取外界光线的强度 通过 ADC 转换为数据编码传 输给单片机 单片机接收 处理 输出数据使得七段数码管显示出数据 当前 光敏电阻的阻值 执行中断 判断该光线的强度是否达到设定的要求 这里 设定光敏电阻阻值大于 等于 200 时 LED 灯亮 小于 200 时 LED 灯灭 若达到则 LED 灯亮起 若达不到则 LED 灯灭掉 其系统框图如下 晶振 电路 路振 光敏 输入 单 片 机 主 要 程 序 数码管 显示输出 LED 灯 亮灭输出 系统框图 三 系统的软件设计 启动该程序 接收光敏电阻传输进来的模拟数据 启动 ADC 转换程序将 模拟数据转换成数字数据 并启动 IIC 总线控制程序将数据缓存到 AT24C02 中 利用单片机编程对数据进行处理和传输的控制 使得整个系统可以很好的相互 协调运行 以达到实现光控路灯自动化控制系统所需要的功能的实现 对于 IIC 总线 AD DA 转换程序主要利用的是对 PCF8591 和 AT24C02 的 SDA SCL 端口的输入电平来实现程序的启动和关闭 以此达到控制数据的 输出和输入的功能 通过对 74HC573 的 LE 端口电平的输入控制 来达到 LED 灯和七段数码管显示时间的延迟 防止其一闪一闪的 3 1 详细步骤 启动该程序 光敏电阻感应外界光线的强度并转换成模拟信号 经过 PCF8591 的 AIN0 数据输入端口输入到 PCF8591 里面 经过 ADC 转换成数据 总线 当 SDA 端口由从高到低一次跳变 IIC 通信开始 SDA 将出具传输到 AT24C02 里面缓存起来 当 SDA 由低到高的一次跳变 IIC 通信结束 将 SDA 接单片机的 P3 2 端口 SCL 接单片机的 P3 3 端口 利用单片机的编程控制 P3 2 和 P3 3 端口高低电平的输入就可以控制 ADC 转换的数据输出延迟时间和 IIC 总线缓存区的数据输入单片机中或者单片机反馈的数据输入到缓存区里面 单片机的 P0 端口接的是 74HC573 这是一个八路透明锁存器 其端口 LE 接单 片机的 P1 0 跟 P1 1 利用单片机的编程来控制 P1 0 跟 P1 1 端口高低电平的输 出 以控制 74HC573 的数据传输到 LED 灯跟七段数码管的延迟时间 防止 LED 灯和七段数码管的闪动 当数据显示在数码管中后 中断程序启动 执行判断程序 判断当百位 2 的时候 LED 灯亮起来 判断 2 的时候 LED 灯就灭掉 程序中还用到了数据的动态读取与发送程序 使得七段数码管的数值可以 随着光敏电阻的感应数据一起不断的变化 还有延迟函数 可以设定显示函数的延迟时间 还有 IIC 总线的启动 结束程序 还有数据的发送接收函数与显示函数 3 2 具体程序设计 见附录 程序 3 3 系统软件执行流程 本系统的软件执行流程图如下 光敏电阻感应 外界光线强度 通过 ADC 模数转换 转换成数字数据 七段数码管显示出 当前光敏电阻阻值 LED 灯亮 LED 灯不亮 启动系统 YES NO 实行判断程序 判断 LED 灯是否开启 启动 IIC 总线程序 进行数据缓存 单片机启动动态 接收数据程序 中断程序开启 判断程序启动 启动 IIC 总线数据 发送函数 单片机处理数据 启动结束 IIC 总线程 序 单片机发送 处理后的数据 启动显示函数 读取数值 4 结论与设计调试 4 1 结论 随着社会的发展 路灯已经全球化 几乎只要有人群的地方就会有路灯 而用于控制路灯的自动化控制系统因为世界有这个需求 所以也出现了好多利 用不同外部因素来实现路灯的自动化控制系统 用来控制路灯的自动亮起或者 自动关闭 当前大多数地方采用的都是定时的路灯自动化控制系统 晚上路灯一整夜 都开启着 白天全天关闭着 但因为夏天跟冬天因为天亮与天黑的时差颇大 使得夏天晚上过早的路灯就开启 早上又过晚的关闭 且世界奇观这么多 偶 尔总会出现点极端的天气状况 会造成白天天过黑 夜晚又如白昼般亮的情况 如日全食等 而路灯又不会自动开启或者关闭 使得一个路灯每年都得应 为这个原因而白白浪费了多少能源 而世界路灯总量又是多么的庞大 那每年 世界在路灯这块的能源浪费上课想而知是一个多么庞大的天文数字啊 光控路灯比时控路灯明显的先进实用 灵活性上更是远远的超越时控路灯 未来必然会成为世界路灯自动化控制系统的主流 本设计采用的是利用单片机 进行的光控路灯自动化控制系统设计 但本设计所利用的元器件等原材料并不 属于极强耐用型 且设计不够完善 无法随需要而进行修改自己的所想要的光 线强度设定其值 高于等于该值就亮 低于就灭 因此此设计并不适合于现实 中大规模的应用 需要修改一下使用的元器件 改为使用寿命高的元器件进行 设计 并添加设定极限值功能和防瞬间强光灯也会亮的防 虚强光 功能 添加个感应强光的设定时间值即可 强光保持一定时间灯才会灭 反之也一样 弱光保持一定时间灯才会亮 利用修改后的系统就可以在现实中进行大规模的 应用 4 2 课程设计过程中遇到的主要问题以及解决办法 由于要设计本课题所需要用到的知识有很多都是没有教过的 所有使用的 一些元器件也是完全没接触过的型号 在实验中遇到不少的问题 1 要实现本课题所需要的内容需要用到好多脑子里几乎没半点概念的知识 2 对于所需要使用到的模块不了解 如 AD DA 转换 IIC 总线等 3 对于原理图多需要用到的芯片不会用 如 PCF8591 AT24C02 光敏电阻 等 4 对于原理图跟程序之间 各模块如何连接使其成为一个系统不了解 解决办法 1 花了的一段时间自学那些没教过的知识 AD DA 转换 IIC 总线的应用等 并知道要实现这些功能多需要用到的元器件 2 花了几天时间全面地查询 了解所需要用到的元器件其原理及怎样应用 3 又花了几天的时间将上面查询到的资料 消化 掉 以便开始课程设计的 开始动工设计 4 资料理解完之后 对于整个系统的构成已经有一个大体的理念了 可以开 始动手设计了 五 心得体会 这次设计的思想来源于平时的生活 在生活中路灯是随处可见的 有很多 得地方的路灯是时控的 这种控制方法有一些缺点 比如冬夏天黑和天亮的时 间是不同的 时控的话不能使路灯得到更充分的应用 所以这次我们决定做一 个光控的路灯 经过这一次的电子创新设计 才发现到目前为止学到的东西太少了 应用 在实际操作中真的感觉什么都不会 让我了解到我的知识是那么的稀少 那么 的浅薄 电子元件的世界那么大 我现在所学的 连皮毛都还算不上 需要多 多的努力学习 想要基础的掌握更多的电子元件 光靠课堂的学习是不够的 课后仍需要自学许多的知识 这次的电子创新设计让我看到了我自身在电子方 面的学习上的不足点 太多元器件不懂 各种软件也不会用 脑子里面压根就 没有存储任何资料 对一些元器件不管是原理还是怎样应用都是一个致命的盲 点 让我知道了 在学校里学的东西不去实践是更本没有学懂的 所以在学校剩下的这些时间里 不管事情忙不忙都得抽时间出来自学各种各样的元器件其原理还有怎样应用 不一定要全部精通 但至少也一定要略懂 这样以后在设计其他东西的时候 脑子里面才可以本能的想想可能会用到什么元器件 并在次查看设计需求和元 器件应用方式看是否真可以用得上 这次的课程设计 让我更加熟悉了单片机需要用到的 Proteus 仿真软件 Keil 程 序编写软件的功能和使用方法 也让我学习到了好几种电子元器件的使用方法 和原理 收获颇丰 我从这次的设计中感受到了坚持的重要性 做事不能轻言 放弃 虽然过程不顺利 但只要我们坚持下来了 朝着自己最开始的目标前进 就一定会到达终点 在这过程中的挫折实际是为成功的美景做铺垫 当我们完 成设计后才发现过程中的挫折只是在考验我们对目标是否坚定 在设计的过程中遇到许多的困难 很感谢帮助我们解答困惑的所有人 当 然这对提升我自己查找和运用资料的能力也起很好的推动作用 对不懂问题的 解答思路能力也很有帮助 电子创新设计 不仅让我们的知识掌握的更牢固 还让我意识到我们所学的知识可以跟现实生活紧密的联系起来 这让我对自己 的学习有了更多的信心 因为感觉我们来大学不是混日子的了 而是在学习真 正对我们生活有用 有帮助的知识能力 我会更加珍惜现在这有优越的学习环 境 努力学习知识让自己在激烈的社会竞争中不被打倒 参考资料 1 张义和等 例说 51 单片机 C 语言版 第 3 版 北京 人民邮电出 版社 2010 2 彭伟 单片机 C 语言程序设计实训 100 例 基于 8051 Proteus 仿真 北京 电子工业出版社 2009 3 李健 蒋全胜 任灵芝 智能路灯控制系统设计 J 工业控制计算机 2010 年 第六期 4 胡斌 元器件及实用电路 M 电子工业出版社 2007 年 7 月 5 冯育长等编著 单片机系统设计与实例分析 M 西安电子科技大学出版 2007 附录 Proteus 仿真图 符合条件 LED 灯亮起 未达到条件 LED 灯灭 源程序 include define uchar unsigned char define uint unsigned int unsigned char dispcount sbit a P1 0 段控制 sbit b P1 1 位控制 sbit LeDen P1 2 LED 灯控制端 sbit Line P1 3 点阵行控制端 sbit rst P3 4 DS1302 复位端 低电平关闭 sbit SDA P3 2 sbit SCL P3 3 unsigned char Duanma 0 x3f 0 x06 0 x5b 0 x4f 0 x66 0 x6d 0 x7d 0 x07 0 x7f 0 x6f unsigned char Weima 0 xfe 0 xfd 0 xfb 0 xf7 0 xef 0 xdf 0 xbf 0 x7f uchar tempdata 8 延时函数 void Delay uint z 延时函数延时 1ms uchar x y for x 0 x z x for y 0 y 120 y 启动总线 void Start SDA 1 时钟保持高 数据线从高到低一次跳变 I2C 通信开始 SCL 1 Delay 0 SDA 0 Delay 0 SCL 0 结束总线 void Stop SDA 0 时钟保持高 数据线从低到高一次跳变 I2C 通信停止 SCL 1 Delay 0 SDA 1 Delay 0 SCL 0 非应答函数 void Noack 函数功能 从机发送非应答位子程序 迫使数据传输过 程结束 SDA 1 Delay 0 SCL 1 Delay 0 SCL 0 void Ack 函数功能 主机应答位检查子程序 迫使数据传输过程结 束 SDA 0 Delay 0 SCL 1 Delay 0 SCL 0 数据发送函数 void Send uchar c uchar bite for bite 0 bite 8 bite 向 SDA 上发送一位数据字节 共八位 if c bite 若要发送的数据最高位为 1 则发送 位 1 else SDA 0 传送位 0 SCL 1 Delay 0 SCL 0 SDA 1 Delay 0 Delay 0 Delay 0 接收函数 uchar Rec uchar byte bite SDA 1 从 SDA 线上读取上一数据字节 共八位 for bite 0 bite 8 bite SCL 0 Delay 0 SCL 1 Delay 0 byte Duanma 2 LeDen 1 P0 0 x00 LeDen 0 Delay 30 if tempdata 1 Duanma 2 LeDen 1 P0 0XFF 关闭 LED 灯 LeDen 0 Delay 30 TH0 65536 2000 256 重新赋值 高八位 TL0 65536 2000 256 重新赋值 低八位 Display 0 8 显示函数 使用中断显示
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 其他分类 > 大学论文


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

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


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