• 51单片机光照强度检测自动路灯开关仿真( proteus仿真+程序+报告+讲解视频)


    51单片机智能路灯仿真( proteus仿真+程序+报告+讲解视频)

    仿真图proteus7.8及以上

    程序编译器:keil 4/keil 5

    编程语言:C语言

    设计编号:S0052

    讲解视频

    基于51单片机的光照检测自动路灯控制仿真设计( proteus仿真+程序+报告+讲解视频)

    1.主要功能:

    基于51单片机的万年历时钟仿真设计

    基于51单片机的路灯自动开关控制仿真设计

    1、测量环境光强度,如果光照过低,开灯

    2、可以通过按键设置阀值,光照低于该阀值表示光照过低

    3、LCD显示光照和阀值

    4、环境亮度越低,灯光亮度越高

    需注意仿真中51单片机芯片是通用的,AT89C51,AT89C52都是51单片机的具体型号,内核是兼容的。相同的原理图里,无论stc还是at都一样,引脚功能都是一样的,程序也是一样的,芯片可以替换为STC89C52/STC89C51/AT89C52/AT89C51等51单片机芯片。

    以下为本设计资料展示图:

    2.仿真

    开始仿真

    打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。开始仿真后LCD1602显示检测到光照强度和默认光照阈值。当前检测到的光照强度是3lx,接近于0,PWM的占空比最小,PNP三极管低电平导通,经过PNP三极管反向后LED灯的亮度接近最亮。

    img

    环境光照强度通过光敏电阻的值改变,img上下箭头分别调低和调高光敏电阻的阻值。

    img

    通过点击光敏电阻的阻值调整,检测到环境光照强度93Lx,接近于阈值。越接近阈值,单片机控制输出的PWM占空比,PNP三极管低电平导通,PWM经过PNP三极管反向后LED灯的亮度越暗。

    img

    高于阈值,单片机控制输出的PWM占空比最大达100%,PNP三极管低电平导通,PWM经过PNP三极管反向后LED灯完全熄灭。

    以上仿真结果均符合设计要求。

    3. 程序代码

    使用keil4或者keil5编译,代码有注释,可以结合报告理解代码含义。

    在这里插入图片描述

    main函数部分代码

    #include "reg51.h"
    #include "lcd1602.h"
    #include"ADC0809.h"
    sbit lamp=P2^3;//灯
    sbit k1=P3^6;//按钮
    sbit k2=P3^7;
    
    uchar hang1[]="Ligh:000Lx";//显存
    uchar hang2[]=" Lim:000Lx";
    uint light=0,limit=100;//光强
    uint time=0;
    uint pwm=0,sec=0;
    //主函数
    void main()
    {
    	init_1602();
    	adc0809_init();
    	TMOD|=0X01;
    	TH0=0X3C;
    	TL0=0XB0;	
    	ET0=1;//打开定时器0中断允许
    	EA=1;//打开总中断
    	TR0=1;//打开定时器
    	while(1)
    	{
    		if(!k1)//加
    		{
    			limit++;
    			while(!k1);
    		}
    		if(!k2)//减
    		{
    			limit--;
    			while(!k2);
    		}
    		//PWM
    	if(sec<99)
    		sec++;
    	else
    		sec=1;
    	if(pwm<sec)
    		lamp=1;
    	else
    		lamp=0;
    	}
    }
    //定时器0中断
    void Timer0() interrupt 1
    {
    	if(time<10)//定时0.5s
    		time++;
    	else
    	{
    		time=0;						  
    		light=adc0809_read();//测光
    		hang1[5]=light/100+0x30;
    		hang1[6]=light%100/10+0x30;
    		hang1[7]=light%10+0x30;
    		hang2[5]=limit/100+0x30;
    		hang2[6]=limit%100/10+0x30;
    		hang2[7]=limit%10+0x30;
    		write_string(1,0,hang1);
    		write_string(2,0,hang2);
    		
    		if(light>limit)//功能1
    		{
    			pwm=0;
    		}
    		else
    		{	
    			pwm=99-light*100/limit;//输出PWM占空比,光照强度越低,pwm占空比越大
    		}
    	}
    	TH0=0X3C;
    	TL0=0XB0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76

    4. 设计报告

    6308字设计报告,内容包括引言,硬件设计、软件设计、软硬件框图、调试、总结和展望等

    img

    5. 设计资料内容清单

    资料设计资料包括仿真,程序代码、讲解视频、功能要求、设计报告、软硬件设计框图等。

    0、常见使用问题及解决方法–必读!!!!

    1、仿真图

    2、程序源码

    3、开题报告

    3、原理图

    5、功能要求

    6、元器件清单

    7、设计报告

    8、软硬件流程框图

    9、讲解视频

    Altium Designer 软件资料

    filename.bat

    KEIL软件资料

    Proteus软件资料

    单片机学习资料

    目录清单.txt

    答辩技巧

    设计报告常用描述

    鼠标双击打开查找更多51 STM32单片机课程毕业设计.url

    img

    资料下载链接(可点击):

  • 相关阅读:
    图文并茂quasar2.6+vue3+ts+vite创建项目并引入mockjs,mockjs 拦截ajax请求的原理是什么,quasar为什么要使用boot?
    DotNetGuide新增C#/.NET/.NET Core充电站(让你学习不迷路)
    ESP8266-Arduino编程实例-L3G4200D三轴陀螺仪驱动
    什么是代理服务器
    以太坊路线图:合并之后 Rollup+分片是扩容关键
    网络编程详细介绍()
    前端程序员如何使用GPT
    .NET餐厅管理系统sql数据帮助类C#利用反射获取对象属性值、将sr_readStr数组存入数据库image类型的字段中
    获得Windows官方映像(ISO)
    springboot2.7.x 集成log4j2配置写入日志到mysql自定义表格
  • 原文地址:https://blog.csdn.net/weixin_52733843/article/details/133074784