本课程设计是利用微机原理试验箱的发光二极管来模拟路灯的控制。即由8255芯片A口对二极管的开关数据的采集来模拟昼夜,由触发器通过8259芯片来控制路灯的亮灭。当白天天气状况不好时,如遇到雨雪或大雾天气,通过控制可以将部分路灯点亮,天气状况好转时熄灭;当黑夜来临时,路灯全部点亮,若深夜车流量减少时,可以熄灭部分路灯以减少电力负荷,节约能源。
上传时间: 2016-06-10
上传用户:iswlkje
646-基于单片机的模拟路灯控制系统;646-基于单片机的模拟路灯控制系统
标签: 单片机
上传时间: 2021-10-21
上传用户:
文中详细描述了路灯模拟控制系统的设计方法。系统包括单片机控制、显示、红外感应、恒流驱动、路灯单元控制、故障检测与报警等6个模块。单片机控制模块以STC12C5A60S2为核心,完成各感应器件的信号采集任务,控制LED灯的工作模式,LCD显示各种数据。采用PWM波数字调节恒流源输出功率,达到控制LED路灯的照度;故障检测与报警模块可以实时检测各路灯单元的工作状态。实验证明该系统电路运行可靠。
上传时间: 2013-12-04
上传用户:pans0ul
本系统由支路控制器、单元控制器、显示模块、电源模块四大主要部分构成。支路控制器由SCT89C52单片机作为核心器件,辅以光敏电阻检测环境的变化,通过光电传感器检测道路交通状况,在路灯LED外壳内加装光敏电阻以检测路灯是否故障等,实现对系统整体功能控制;单元控制器以STC89C52作为控制核心,实现与支路控制器的通信,控制单元路灯的自动开关灯,控制恒流源输出功率的大小,辅以自制恒流源提供LED路灯电源;显示模块以LCD12864为核心器件,实现各路灯开关灯时间、路灯状态等信息的显示。整个系统功能齐全,精度高,稳定性好,各项指标均满足设计要求,人机界面良好。
上传时间: 2013-12-20
上传用户:weareno2
eeworm.com VIP专区 单片机源码系列 7资源包含以下内容:1. STC-ISP-V4.83下载软件.rar2. 用模块化的思想来武装你的keil编程(二).zip3. 怎么样学好单片机.doc4. 用模块化的思想来武装你的keil编程(一).zip5. TL431反馈参数计算.zip6. 《电子制作与维修经验精华280例》.pdf7. 74ls164_动态驱动多位数码管.zip8. 自动量程电压电流表.rar9. keil软件编译常见错误解释总结和中文翻译.pdf10. TL431与PC817的设计应用.zip11. 2013电子设计大赛手写板G题.rar12. 瑞萨RL78/G13开发套件快速入门教材.pdf13. 双色点阵控制卡原理图PCB.zip14. 基于利用时钟芯片DS1302实现万年历,1602LCD显示电子表.doc15. 用键盘控制的LED灯.zip16. HOT-51增强版开发板使用说明.zip17. TLC2543 AD高精度转换c语言程序.zip18. 电工电子排故系统--按键扫描修改--两方法.zip19. 74HC164应用实例:驱动数码管两例(电路图和源程序).zip20. 基于C8051的步进电机按键控制.zip21. 小车循迹AVR版.rar22. 音乐彩灯控制器设计.zip23. C51Tip-如何使8051工程和开发过程变得简单.zip24. 八位数字密码锁设计资料.rar25. 在keil中添加STC型号的3种方法.zip26. 基于74HC164扩展单片机系统I_O端口的研究.zip27. H8群瑞萨单片机之间的IIC通信,通信程序代码.zip28. 出租车计价器(单片机c语言).doc29. PL2303 VISTA WIN7驱动.rar30. PIC16F1823_LF1823中文资料.pdf31. LPC21XX初始化工具.rar32. 单片机c语言全解.rar33. FY2005K编程器软件V3安装程序.rar34. 单片机c语言资料.zip35. AVR下载器设计progisp166.rar36. ST7920控制器系列中文字库液晶模块说明书.zip37. SouceInsight 技巧.doc38. 遥控避障寻线开发板.rar39. 单片机模块C程序大全.zip40. 内存烧写使用说明和烧录软件.rar41. The 8051 Microcontroller.pdf42. VideoStudio_Pro_v14.0.0.342_Keymaker_99D.COM.rar43. 基于STC12C5A60S2单片机的模拟路灯控制系统设计.zip44. USB转CAN上位机软件.rar45. EM3-V22原理图.pdf46. LPC210X定时器初始化小工具.rar47. msp430基础资料.rar48. 51单片播放三首音乐C程序.doc49. 51单片机遥控家电毕业设计.doc50. AVR单片机在智能公交车报站器中的应用.pdf51. LCD12864显示C程序.docx52. ZIGBEE遥控飞机电路图.rar53. LCD12864经典写数据.doc54. M8最小系统资料包.rar55. 电子设计竞赛培训-控制类.ppt56. LCD1602与PCF8591驱动程序组合.doc57. 智能小车pid算法.doc58. 51单片机Atmel_AT89S52库元件.zip59. LCD1602写数据函数.doc60. NUC120遥控板原理图.pdf61. 基于51单片机用PCF8591进行AD_DA转换用1602LCD显示的电流采样.doc62. LCD1602驱动程序改主程序.doc63. RL78G13开发套件_MCU板原理图.pdf64. TLC5615数模转换.docx65. LCD1602驱动程序.doc66. IAR FOR msp430 5.4破解.rar67. TCL1549AD液晶采样显示.doc68. 2013全国电子设计大赛AD9854全部资料,51单片机编程,fpga编程的各种波形发生器.rar69. 分享--基于STC单片机的LED轮廓显示控制器设计.pdf70. PCF8591写读数据.doc71. 430单片机—ads1115驱动.rar72. 0809共阳数字电压表.rar73. LCD12864写数据函数.docx74. MSP430G2系列单片机原理与实践教程完整版.pdf75. 12864串口显示显示程序.rar76. 实验19 LCD12864_串行方式.zip77. 40系列45系列集成芯片大集合.zip78. stc12c5a60s2内置AD.rar79. stc12c5a60s2内置EEPROM的用法.rar80. 基于单片机及AD9850的正弦信号发生器设计说明书.pdf81. stc12c5260s2 PWM输出.rar82. 实用的51单片机C语言编程实例.doc83. 巡光小车程序.rar84. 2013年全国电子设计竞赛预测题目.pdf85. 简单的51单片机电子时钟.doc86. GSM开发板第三版资料.rar87. 51汇编指令.zip88. 指纹识别模块用户手册.pdf89. ds1302与数码管时间可调.zip90. 超声波测距资料(HC-SR04)_TB.zip91. 手机液晶屏的资料(有接口说明).pdf92. MSP430+IR+LCD显示读出的键值.rar93. LCD12864源码及proteus仿真.rar94. 4x4矩阵按键控制.zip95. GY-32-MMA7361模块发送资料.rar96. AVR_TWI总线学习笔记.docx97. STC12C5A60S2液晶AD显示.doc98. 单片机学习入门心得.doc99. 51单片机玩转NRF24L01+.doc100. 单片机应用基础.rar
上传时间: 2013-05-15
上传用户:eeworm
实现了整条支路的LED路灯定时控制开关灯、自动开关灯、独立控制开关灯及故障报警等多项功能。对1 W LED路灯单元可调恒流驱动电源,可以按照设定要求调节LED输出功率大小,实现调光功能。
上传时间: 2013-11-13
上传用户:大三三
注:1.这篇文章断断续续写了很久,画图技术也不精,难免错漏,大家凑合看.有问题可以留言. 2.论坛排版把我的代码缩进全弄没了,大家将代码粘贴到arduino编译器,然后按ctrl+T重新格式化代码格式即可看的舒服. 一、什么是PWM PWM 即Pulse Wavelength Modulation 脉宽调制波,通过调整输出信号占空比,从而达到改 变输出平均电压的目的。相信Arduino 的PWM 大家都不陌生,在Arduino Duemilanove 2009 中,有6 个8 位精度PWM 引脚,分别是3, 5, 6, 9, 10, 11 脚。我们可以使用analogWrite()控 制PWM 脚输出频率大概在500Hz 的左右的PWM 调制波。分辨率8 位即2 的8 次方等于 256 级精度。但是有时候我们会觉得6 个PWM 引脚不够用。比如我们做一个10 路灯调光, 就需要有10 个PWM 脚。Arduino Duemilanove 2009 有13 个数字输出脚,如果它们都可以 PWM 的话,就能满足条件了。于是本文介绍用软件模拟PWM。 二、Arduino 软件模拟PWM Arduino PWM 调压原理:PWM 有好几种方法。而Arduino 因为电源和实现难度限制,一般 使用周期恒定,占空比变化的单极性PWM。 通过调整一个周期里面输出脚高/低电平的时间比(即是占空比)去获得给一个用电器不同 的平均功率。 如图所示,假设PWM 波形周期1ms(即1kHz),分辨率1000 级。那么需要一个信号时间 精度1ms/1000=1us 的信号源,即1MHz。所以说,PWM 的实现难点在于需要使用很高频的 信号源,才能获得快速与高精度。下面先由一个简单的PWM 程序开始: const int PWMPin = 13; int bright = 0; void setup() { pinMode(PWMPin, OUTPUT); } void loop() { if((bright++) == 255) bright = 0; for(int i = 0; i < 255; i++) { if(i < bright) { digitalWrite(PWMPin, HIGH); delayMicroseconds(30); } else { digitalWrite(PWMPin, LOW); delayMicroseconds(30); } } } 这是一个软件PWM 控制Arduino D13 引脚的例子。只需要一块Arduino 即可测试此代码。 程序解析:由for 循环可以看出,完成一个PWM 周期,共循环255 次。 假设bright=100 时候,在第0~100 次循环中,i 等于1 到99 均小于bright,于是输出PWMPin 高电平; 然后第100 到255 次循环里面,i 等于100~255 大于bright,于是输出PWMPin 低电平。无 论输出高低电平都保持30us。 那么说,如果bright=100 的话,就有100 次循环是高电平,155 次循环是低电平。 如果忽略指令执行时间的话,这次的PWM 波形占空比为100/255,如果调整bright 的值, 就能改变接在D13 的LED 的亮度。 这里设置了每次for 循环之后,将bright 加一,并且当bright 加到255 时归0。所以,我们 看到的最终效果就是LED 慢慢变亮,到顶之后然后突然暗回去重新变亮。 这是最基本的PWM 方法,也应该是大家想的比较多的想法。 然后介绍一个简单一点的。思维风格完全不同。不过对于驱动一个LED 来说,效果与上面 的程序一样。 const int PWMPin = 13; int bright = 0; void setup() { pinMode(PWMPin, OUTPUT); } void loop() { digitalWrite(PWMPin, HIGH); delayMicroseconds(bright*30); digitalWrite(PWMPin, LOW); delayMicroseconds((255 - bright)*30); if((bright++) == 255) bright = 0; } 可以看出,这段代码少了一个For 循环。它先输出一个高电平,然后维持(bright*30)us。然 后输出一个低电平,维持时间((255-bright)*30)us。这样两次高低就能完成一个PWM 周期。 分辨率也是255。 三、多引脚PWM Arduino 本身已有PWM 引脚并且运行起来不占CPU 时间,所以软件模拟一个引脚的PWM 完全没有实用意义。我们软件模拟的价值在于:他能将任意的数字IO 口变成PWM 引脚。 当一片Arduino 要同时控制多个PWM,并且没有其他重任务的时候,就要用软件PWM 了。 多引脚PWM 有一种下面的方式: int brights[14] = {0}; //定义14个引脚的初始亮度,可以随意设置 int StartPWMPin = 0, EndPWMPin = 13; //设置D0~D13为PWM 引脚 int PWMResolution = 255; //设置PWM 占空比分辨率 void setup() { //定义所有IO 端输出 for(int i = StartPWMPin; i <= EndPWMPin; i++) { pinMode(i, OUTPUT); //随便定义个初始亮度,便于观察 brights[ i ] = random(0, 255); } } void loop() { //这for 循环是为14盏灯做渐亮的。每次Arduino loop()循环, //brights 自增一次。直到brights=255时候,将brights 置零重新计数。 for(int i = StartPWMPin; i <= EndPWMPin; i++) { if((brights[i]++) == PWMResolution) brights[i] = 0; } for(int i = 0; i <= PWMResolution; i++) //i 是计数一个PWM 周期 { for(int j = StartPWMPin; j <= EndPWMPin; j++) //每个PWM 周期均遍历所有引脚 { if(i < brights[j])\ 所以我们要更改PWM 周期的话,我们将精度(代码里面的变量:PWMResolution)降低就行,比如一般调整LED 亮度的话,我们用64 级精度就行。这样速度就是2x32x64=4ms。就不会闪了。
上传时间: 2013-10-08
上传用户:dingdingcandy
注:1.这篇文章断断续续写了很久,画图技术也不精,难免错漏,大家凑合看.有问题可以留言. 2.论坛排版把我的代码缩进全弄没了,大家将代码粘贴到arduino编译器,然后按ctrl+T重新格式化代码格式即可看的舒服. 一、什么是PWM PWM 即Pulse Wavelength Modulation 脉宽调制波,通过调整输出信号占空比,从而达到改 变输出平均电压的目的。相信Arduino 的PWM 大家都不陌生,在Arduino Duemilanove 2009 中,有6 个8 位精度PWM 引脚,分别是3, 5, 6, 9, 10, 11 脚。我们可以使用analogWrite()控 制PWM 脚输出频率大概在500Hz 的左右的PWM 调制波。分辨率8 位即2 的8 次方等于 256 级精度。但是有时候我们会觉得6 个PWM 引脚不够用。比如我们做一个10 路灯调光, 就需要有10 个PWM 脚。Arduino Duemilanove 2009 有13 个数字输出脚,如果它们都可以 PWM 的话,就能满足条件了。于是本文介绍用软件模拟PWM。 二、Arduino 软件模拟PWM Arduino PWM 调压原理:PWM 有好几种方法。而Arduino 因为电源和实现难度限制,一般 使用周期恒定,占空比变化的单极性PWM。 通过调整一个周期里面输出脚高/低电平的时间比(即是占空比)去获得给一个用电器不同 的平均功率。 如图所示,假设PWM 波形周期1ms(即1kHz),分辨率1000 级。那么需要一个信号时间 精度1ms/1000=1us 的信号源,即1MHz。所以说,PWM 的实现难点在于需要使用很高频的 信号源,才能获得快速与高精度。下面先由一个简单的PWM 程序开始: const int PWMPin = 13; int bright = 0; void setup() { pinMode(PWMPin, OUTPUT); } void loop() { if((bright++) == 255) bright = 0; for(int i = 0; i < 255; i++) { if(i < bright) { digitalWrite(PWMPin, HIGH); delayMicroseconds(30); } else { digitalWrite(PWMPin, LOW); delayMicroseconds(30); } } } 这是一个软件PWM 控制Arduino D13 引脚的例子。只需要一块Arduino 即可测试此代码。 程序解析:由for 循环可以看出,完成一个PWM 周期,共循环255 次。 假设bright=100 时候,在第0~100 次循环中,i 等于1 到99 均小于bright,于是输出PWMPin 高电平; 然后第100 到255 次循环里面,i 等于100~255 大于bright,于是输出PWMPin 低电平。无 论输出高低电平都保持30us。 那么说,如果bright=100 的话,就有100 次循环是高电平,155 次循环是低电平。 如果忽略指令执行时间的话,这次的PWM 波形占空比为100/255,如果调整bright 的值, 就能改变接在D13 的LED 的亮度。 这里设置了每次for 循环之后,将bright 加一,并且当bright 加到255 时归0。所以,我们 看到的最终效果就是LED 慢慢变亮,到顶之后然后突然暗回去重新变亮。 这是最基本的PWM 方法,也应该是大家想的比较多的想法。 然后介绍一个简单一点的。思维风格完全不同。不过对于驱动一个LED 来说,效果与上面 的程序一样。 const int PWMPin = 13; int bright = 0; void setup() { pinMode(PWMPin, OUTPUT); } void loop() { digitalWrite(PWMPin, HIGH); delayMicroseconds(bright*30); digitalWrite(PWMPin, LOW); delayMicroseconds((255 - bright)*30); if((bright++) == 255) bright = 0; } 可以看出,这段代码少了一个For 循环。它先输出一个高电平,然后维持(bright*30)us。然 后输出一个低电平,维持时间((255-bright)*30)us。这样两次高低就能完成一个PWM 周期。 分辨率也是255。 三、多引脚PWM Arduino 本身已有PWM 引脚并且运行起来不占CPU 时间,所以软件模拟一个引脚的PWM 完全没有实用意义。我们软件模拟的价值在于:他能将任意的数字IO 口变成PWM 引脚。 当一片Arduino 要同时控制多个PWM,并且没有其他重任务的时候,就要用软件PWM 了。 多引脚PWM 有一种下面的方式: int brights[14] = {0}; //定义14个引脚的初始亮度,可以随意设置 int StartPWMPin = 0, EndPWMPin = 13; //设置D0~D13为PWM 引脚 int PWMResolution = 255; //设置PWM 占空比分辨率 void setup() { //定义所有IO 端输出 for(int i = StartPWMPin; i <= EndPWMPin; i++) { pinMode(i, OUTPUT); //随便定义个初始亮度,便于观察 brights[ i ] = random(0, 255); } } void loop() { //这for 循环是为14盏灯做渐亮的。每次Arduino loop()循环, //brights 自增一次。直到brights=255时候,将brights 置零重新计数。 for(int i = StartPWMPin; i <= EndPWMPin; i++) { if((brights[i]++) == PWMResolution) brights[i] = 0; } for(int i = 0; i <= PWMResolution; i++) //i 是计数一个PWM 周期 { for(int j = StartPWMPin; j <= EndPWMPin; j++) //每个PWM 周期均遍历所有引脚 { if(i < brights[j])\ 所以我们要更改PWM 周期的话,我们将精度(代码里面的变量:PWMResolution)降低就行,比如一般调整LED 亮度的话,我们用64 级精度就行。这样速度就是2x32x64=4ms。就不会闪了。
上传时间: 2013-10-23
上传用户:mqien
随着科技的飞速发展,自动化已经运用在了生活中的方方面面,而路灯就是一个很好的例子。如何能够利用51单片机作为中央处理器实现路灯的节能是本设计的主要内容。通过书本知识学习、指导老师的辅导以及资料文献的查阅,确定51单片机为主要芯片,然后因为要实现声光控功能,那就必须使用到光敏电阻和驻极体话筒电阻来实现光和声音转换为电信号,利用单片机最小系统模块、声控模块、光控模块等几大模块为主的硬件来实现本次设计。本设计分别通过利用声控和光控模块的驻极体话筒和光敏电阻将声音信号和光信号通过转换为51单片机能够识别的电信号来实现声光控功能。通过运用所学知识和必要绘图仿真编程软件绘制出系统原理图、整体电路图程序流程图,完成系统电路设计、光敏传感器模电变換设计、声控整流滤波放大并进行程序编写、仿真、硬件调试等,终于设计实现了利用51单片机使白天由光控电路起作用控制灯不亮,晚上由声控电路起作用控制开关闭合灯亮,并且延时一段时间熄灭从而达到节能环保的目的,最终达到本次论文的要求。关键词:51单片机光控电路声控电路光敏电阻驻极体话筒在学校,机关,厂矿企业等单位的公共场所以及居民区的公共楼道,长明灯现象十分普遍,这造成了能源的极大浪费。另外,由于频繁开关或者人为因素,墙壁开关的损坏率很高,增大了维修量,浪费了资金。而本课题正是声光控制路灯的设计,它设计出一种电路新颖,安全节电,结构简单,安装方便,使用寿命长的声光双控白炽灯节能路灯,同时,这可加强对模拟电子技术和数字电子技术的理解和巩固。以此达到节能环保的作用
上传时间: 2022-03-30
上传用户:
51单片机智能路灯自动开启关闭程序设计整个系统以STC89C52单片机为核心器件,配合电阻电容晶振等器件,构成单片机的最小系统。其它个模块围绕着单片机最小系统展开。其中包括,照明设备采用USB小灯进行模拟,在USB小灯内部,是6颗白色的LED灯;光照强度采集模块,是使用光敏电阻+ADC0832,当外界有光照时,灯具会停止工作;人体感应采用红外热释传感器,该传感器灵敏度高,操作控制简单;时间控制模块采用PWM脉冲宽度调制,控制灯光亮度最大工作时间为60s;最后是供电采用常用的USB 5V进行供电。
上传时间: 2022-07-22
上传用户:qdxqdxqdxqdx