77-基于51单片机智能路灯控制系统源程序、原理图、元件清单实物制作

本文介绍了使用51单片机设计的智能路灯控制系统,可通过时间或光照强度自动控制路灯开关。提供了详细的程序代码,包括IIC通信、LCD1602显示和用户模式设置,新手友好且附带实物资料和原理图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

功能介绍:采用51单片机作为控制CPU,可以通过设置开灯和关灯时间开自动控制路灯的打开和关闭,也可以通过光照强度来控制路灯的开关,采用LCD1602显示屏来显示相关内容,独立按键进行功能调节,相关功能调节如下:

模式1设置时间的时

模式2设置时间的分

模式3设置时间的秒

模式4设置光敏值要求光照达到一定程度才会亮灯

晚上时间无论设置多少的值都是常亮

现在时间设置为19点自动亮到凌晨6点自动关闭如设置光敏值低于白天亮度时可以亮路灯等,程序中文注释,新手容易看懂,全套实物资料齐全:

下面是实物演示视频和相关实物图片

77-基于51单片机智能路灯控制系统(程序+原理图+元件清单全套资料)

下面是程序部分展示(程序有中文注释,新手容易看懂)

程序部分展示://IIC起始函数void iic_start(){  SCL = 1;  SDA = 1;  nops4();  SDA = 0;  nops4();  SCL = 0;}
//IIC停止函数void iic_stop(){  SCL = 0;  SDA = 0;  nops4();  SCL = 1;  nops4();  SDA = 1;  nops4();}
/* * 函数: void iic_sendACK(bit ack_back) 功能: 主机读完数据后是否向从机发送应答信号 *ck为1时发送应答信号ACK, SDA拉低,继续通信 *ck为0时不发送ACK,SDA置1,结束通信*/
void iic_sendACK(bit ack_back)            {  if(ack_back)     SDA = 0;  //应答,SDA拉低,继续通信  else     SDA = 1;  //非应答,SDA置1,结束通信  nops4();  SCL = 1;  nops4();  SCL = 0;  nops4();  SDA = 1;}/*主机写字节后检测读取从机发送的应答(写应答)*/bit iic_recACK(){  uchar i=0;  SDA = 1;       //先拉高SDA,等待检测  nops4();  SCL = 1;  nops4();  while((1==SDA)&&(i<255)) i++;  //SDA为1时,循环检测255次  if(SDA)        //非应答,拉低SCL,停止,返回1  {    SCL = 0;    iic_stop();    return 1;    }    else        //应答,拉低SCL,返回1  {    SCL = 0;    return 0;  }}
/*主机发送1字节数据给从机*//*从最高位开始发送*/void iic_sendbyte(uchar byt){  uchar i;  for(i=0;i<8;i++)  {           if(byt&0x80)    //判断最高位,并赋予SDA      SDA = 1;    else       SDA = 0;    nops4();    SCL = 1;        //SCL高电平,SDA数据稳定,发送    nops4();    byt<<=1;          //发送完成,字节左移    SCL = 0;  }  }
/*主机读取1字节数据*//*从高位接收,存放在低位*/uchar iic_recbyte(){  uchar i,byt;  for(i=0;i<8;i++)  {    SCL = 1;             //SCL高电平,SDA数据稳定    nops4();    byt<<=1;       //接收数据左移    if(SDA)         //判断接收数据,并赋给byt,1则+1,0则保持0;      byt = byt|0x01;    SCL = 0;       //拉低SCL,准备接收下一位数据    nops4();  }  return byt;         //读取字节完毕,返回读取值}

程序打开办法:特别注意:下载资料包以后一定要先解压!(建议解压到桌面上,文件路径太深会导致程序打开异常),解压后再用keil5打开。 

原理图采用【AD】altium designer打开,文件中有安装包

下面是资料包里面包含的相关文件展示

百度云盘资料下载链接 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值