✨哈喽大家好,这里是@每天一杯冰美式oh,985电子本硕,大厂嵌入式在职0.3年,业余时间做做单片机小项目,有需要也可以提供就业指导(免费)~
🐱🐉这是51单片机毕业设计100篇系列的第19篇:基于51单片机的智能台灯
💻项目相关说明:
- 代码量:564行
- 报告字数:5547字
- 含代码、仿真、原理图、报告、器件清单、常见问题(实物、lw可另外定制)
🎈项目分享:见文末!
1、主要功能
该系统由AT89C51/STC89C52单片机+LCD1602显示模块+DS1302时间模块+光敏传感器模块+人体红外模块+按键等模块构成。适用于智能台灯、自动调节灯光亮度等相似项目。
可实现功能:
1、LCD1602实时显示北京时间、环境光照强度、手动/自动模式、台灯亮度等信息;
2、DS1302采集时间数据;
3、光敏传感器(电位器模拟)采集光照强度;
4、人体红外传感器(按键模拟)采集人体靠近信息;
5、按键可设置自动/手动模式,手动模式下通过按键可以自动调节台灯亮度,自动模式下如果有人接近,则根据环境亮度,自动打开台灯并调节亮度;
6、具备自动断电功能,人离开1分钟后自动关灯。
2、仿真
proteus仿真使用8.10版本,由于该软件版本迭代原因,不能确保其他版本软件能够正常运行,请安装好对应软件(版本一致或者高于这个版本都可以)
3、代码
部分代码,仅供参考,注释齐全。
/* 按键扫描 */
unsigned char key_scan(void)
{
uchar keyval=0;
if(KEY1 == 0) //如果按键1按下
{
delay(10); //延时10ms,去除按键抖动
if(KEY1 == 0) //再判断一次按键按下
{
return 1; //输出键值1
}
}
if(KEY2 == 0) //如果按键2按下
{
delay(10); //延时10ms,去除按键抖动
if(KEY2 == 0) //再判断一次按键按下
{
return 2; //输出键值2
}
}
if(KEY3 == 0) //如果按键3按下
{
delay(10); //延时10ms,去除按键抖动
if(KEY3 == 0) //再判断一次按键按下
{
return 3; //输出键值3
}
}
return 0; //如果没有按键按下,则输出0
}
4、原理图
使用AD21绘制(不是嘉立创哦
5、参考报告
内含5.5k字,24页相关报告一份,纯手打~
6、演示视频
含52s的演示视频,将该项目的功能都展示了一遍,如果还有不清楚的地方,欢迎后台私聊!
7、常见问题
8、资源获取
扫描如下二维码,回复"51智能台灯"获取本项目所有文件!
希望可以对你有所帮助~