基于单片机的智能灯控系统
目录实验四 简易路灯智能控制器一、项目设计
1.了解光敏电阻电气特性。
2.学会在面包板上搭建光敏电阻电路测量环境光强度。
3.学会使用PCF8591数模转换模块将光敏电阻两端电压转换为数字信号。
4.学会使用1602液晶显示器显示字符串。
5.学会控制LED灯亮灭。
二、设计项目要求
目前大多数路灯开关均采用定时控制方法,设定统一的、固定的时间开关路灯(如:18:00开路灯,6:00关路灯),但因天气原因可能需要提前开关路灯,既能在亮度较暗时,及时开灯补充光照,也能在亮度较明亮时,提前关闭路灯,节约资源。请设计一款简易路灯智能控制器,自动采集环境光照强度,并在1602LCD上显示光强(0暗-255亮),在亮度低于指定值(100)时,自动打开路灯(用LED灯模拟),在亮度高于指定值(200)时自动关闭路灯。
1602液晶显示示例:
三、项目实现步骤
通过光敏电阻的使用来来测定外界灯光的强度,将光敏电阻测得的光强度作为判断LED灯开关的条件,根据需要设计适应的光强度条件,当测得的外界光强度满足实验要求的条件的时候,实现相应的开关灯操作。
方案实现步骤;
第一步:构思光敏电阻控制路灯的构思需要,初步设计思路;
第二步:在构思完成的前提下实现设计系统电路图,并按照需要连接各器件;
第三步:根据设计的电路编写程序来实现相应的控制功能;
第四步:将编写好的程序下载的连接灯控系统中,检验实验效果;
第五步:根据初步试验效果与实验要求作比较做出跟进一步的完善。
四、代码实现
//传感器数模转换Pcf859代码实现:#includesbitscl=P2^0;//I2C时钟sbitsda=P2^1;//I2C数据bitack;//应答标志位/*******************************************************************起动总线函数函数原型:voidStart_I2c();功能:启动I2C总线,即发送I2C起始条件.********************************************************************/voidStart_I2c(){sda=1;/*发送起始条件的数据信号*/_nop_();scl=1;_nop_();/*起始条件建立时间大于4.7us,延时*/_nop_();_nop_();_nop_();_nop_();sda=0;/*发送起始信号*/_nop_();/*起始条件锁定时间大于4μs*/_nop_();_nop_();_nop_();_nop_();scl=0;/*钳住I2C总线,准备发送或接收数据*/_nop_();_nop_();}/*******************************************************************结束总线函数函数原型:voidStop_I2c();功能:结束I2C总线,即发送I2C结束条件.********************************************************************/voidStop_I2c(){sda=0;/*发送结束条件的数据信号*/_nop_();/*发送结束条件的时钟信号*/scl=1;/*结束条件建立时间大于4μs*/_nop_();_nop_();_nop_();_nop_();_nop_();sda=1;/*发送I2C总线结束信号*/_nop_();_nop_();_nop_();_nop_();}/*******************************************************************字节数据发送函数函数原型:voidI2C_SendByte(u8c);功能:将数据c发送出去,可以是地址,也可以是数据,发完后等待应答,并对此状态位进行操作.(不应答或非应答都使ack=0)发送数据正常,ack=1;ack=0表示被控器无应答或损坏。********************************************************************/voidI2C_SendByte(u8c){u8i;for(i=0;i