基于单片机智能台灯(调光,时钟)系统Proteus仿真(含全部资料)

++全套资料包含:Proteus仿真源文件+keil C语言源程序+AD原理图+流程图+元器件清单+说明书等++

资料下载:

通过网盘分享的文件:资料分享

链接: 百度网盘 请输入提取码 提取码: tgnu


目录

资料下载:

Proteus仿真功能

项目文件资料:

一、Proteus仿真源文件

二、AD原理图文件

二、报告说明书

三、系统流程图

[四、Keil c语言程序源代码](#四、Keil c语言程序源代码)


项目功能:

基于单片机的智能台灯设计

设计一智能台灯,以单片机技术为核心,结合光强传感器(本课题仿真需要统一采用光敏电阻)。系统可根据环境亮度自动调整灯光亮度,并在台灯上有时钟信息显示。

系统功能:

1)利用光电传感器(采用光敏电阻)进行信号的采集及控制,并通过液晶屏显示强度值。

2)时钟显示部分:

在单片机内部利用定时器产生1秒定时,达到时分秒的计时。具有复位功能。

利用按键输入调整小时,分钟,秒时刻;当没有键按下时,时钟正常运行;

当按下键1一次时,时钟停止走动,按键2对秒进行调整;

当按下键1二次时,按键2或键3对分钟进行加1或减1调整;

当按下键1三次时,按键2或键3对小时进行加1或减1调整;

当按下键1四次时,调整结束,时钟按设定的时间进行运行。

采用液晶屏显示时间。


项目文件:

一、Proteus仿真源文件

​​

二、AD原理图文件

二、报告说明书

三、系统流程图

​​

四、器件清单

|------|---------|----|
| 元件 | 型号 | 数量 |
| 单片机 | AT89C51 | 1 |
| 电容 | 10uf | 1 |
| 电容 | 30pf | 2 |
| 晶振 | 12MHZ | 1 |
| 电阻 | 10k | 2 |
| 按钮 | | 4 |
| 模数芯片 | ADC0832 | 1 |
| 电位器 | 1k | 2 |
| LED | 红色 | 4 |
| 电阻 | 100欧 | 4 |
| 电阻 | 1k | 1 |
| 三极管 | PNP | 1 |
| 显示器 | LCD1602 | 1 |
| 排阻 | 10k | 1 |
| 电容 | 100uf | 1 |

五、Keil c语言程序源代码(部分)

复制代码
#include "reg51.h"
#include "ADC0832.h"
#include "lcd1602.h"
sbit k1=P3^0;//按钮
sbit k2=P3^1;
sbit k3=P3^2;
sbit L1=P3^3;//LED
sbit lamp=P1^7;//灯
uchar xian1[]="05:10:25";//时间显示
uchar xian2[]="light:000Lx";//光强
uchar mode=0;//工作模式
uchar light=0;//光强
uchar pwm=0;
uchar time=0,miao=25,fen=10,shi=5;//计时
//主函数
void main()
{
	init_1602();
	write_string(1,3,xian1);
	write_string(2,0,xian2);
	TMOD|=0X01;
	TH0=0X3C;
	TL0=0XB0;	
	ET0=1;//打开定时器0中断允许
	EA=1;//打开总中断
	TR0=1;//打开定时器
	while(1)
	{
	if(pwm<100)//输出PWM波
		pwm++;
	else
		pwm=0;
	if(pwm<80-light)
		lamp=0;
	else
		lamp=1;
		if(!k1)	//模式切换
		{
			if(mode<3)
				mode++;
			else
				mode=0;
			switch(mode)//点亮指示灯
			{
				case 0:L1=1;L2=1;L3=1;break;
				case 1:L1=1;L2=1;L3=0;break;//秒
				case 2:L1=1;L2=0;L3=1;break;//分
				case 3:L1=0;L2=1;L3=1;		//时
			}
			while(!k1);
		}
		if(!k2)//加
		{
			switch(mode)
			{
				case 1://秒
					if(miao<59)
						miao++;
					break;
				case 2://分
					if(fen<59)
						fen++;
					break;
				case 3://时
					if(shi<23)
						shi++;
			}
			if(mode)
			{
			xian1[0]=shi/10+0x30;//显示
			xian1[1]=shi%10+0x30;
			xian1[3]=fen/10+0x30;
			xian1[4]=fen%10+0x30;
			xian1[6]=miao/10+0x30;
			xian1[7]=miao%10+0x30;
			write_string(1,3,xian1);
			}
			while(!k2);
		}
		if(!k3)//加
		{
			switch(mode)
			{
				case 1://秒
					if(miao>0)
						miao--;
					break;
				case 2://分
					if(fen>0)
						fen--;
					break;
				case 3://时
					if(shi>0)
						shi--;
			}
			if(mode)
			{
			xian1[0]=shi/10+0x30;//显示
			xian1[1]=shi%10+0x30;
			xian1[3]=fen/10+0x30;
			xian1[4]=fen%10+0x30;
			xian1[6]=miao/10+0x30;
			xian1[7]=miao%10+0x30;
			write_string(1,3,xian1);
			}
			while(!k3);
		}
	}
}
void Timer0() interrupt 1 //定时器0中断
{
	TH0=0X3C;
	TL0=0XB0;
	if(mode)
	{
		light=ADC();//测量光强
		xian2[6]=light/100+0x30;
		xian2[7]=light%100/10+0x30;
		xian2[8]=light%10+0x30;
		write_string(2,0,xian2);
		return;
	}
	if(time<20)	//计时
		time++;
	else
	{
		time=0;
		if(miao<59)//秒
			miao++;
		else
		{
			miao=0;
			if(fen<59)//分
				fen++;
			else
			{
				fen=0;
				if(shi<23)//时
					shi++;
				else
					shi=0;
			}
		}
		xian1[0]=shi/10+0x30;//显示
		xian1[1]=shi%10+0x30;
		xian1[3]=fen/10+0x30;
		xian1[7]=miao%10+0x30;
		write_string(1,3,xian1);
		light=ADC();//测量光强
		xian2[6]=light/100+0x30;
		xian2[7]=light%100/10+0x30;
		xian2[8]=light%10+0x30;
		write_string(2,0,xian2);
	}
}

六、全套资料包含

​​

七:项目资源获取

需要完整的资料可以点击下面的名片关注,回复"资料"!

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

相关推荐
qiuiuiu4134 小时前
正点原子RK3568学习日志-编译第一个驱动程序helloworld
linux·c语言·开发语言·单片机
hazy1k5 小时前
51单片机基础-动态数码管显示
stm32·单片机·嵌入式硬件·51单片机
Heavy sea5 小时前
STM32 DMA直接存储器访问(寄存器与HAL库实现)
stm32·单片机
漫夜8555 小时前
MCU和GPIO (1)
单片机·嵌入式硬件
电子凉冰5 小时前
FPGA强化-串口RS485
fpga开发
点灯小铭6 小时前
基于单片机的智能洗碗机设计
单片机·嵌入式硬件·mongodb·毕业设计·课程设计
ShiMetaPi6 小时前
操作【GM3568JHF】FPGA+ARM异构开发板 使用指南:音频接口
arm开发·嵌入式硬件·fpga开发·rk3568
码不停蹄Zzz7 小时前
xdma IP使用教程1-xdma ip核配置
网络协议·tcp/ip·fpga开发
BreezeJuvenile8 小时前
外设模块学习(5)——DS18B20温度传感器(STM32)
stm32·嵌入式硬件·学习·温度传感器·ds18b20