++全套资料包含:Proteus仿真源文件+keil C语言源程序+AD原理图+流程图+元器件清单+说明书等++
资料下载:
通过网盘分享的文件:资料分享
链接: 百度网盘 请输入提取码 提取码: tgnu
目录
[四、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);
}
}
六、全套资料包含
七:项目资源获取
需要完整的资料可以点击下面的名片关注,回复"资料"!
↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ↓↓↓↓↓↓↓↓↓↓↓↓ ↓↓↓↓↓↓↓↓↓↓↓↓ ↓↓↓↓↓↓↓↓↓↓↓↓ ↓↓↓↓↓↓↓↓↓↓↓↓ ↓↓↓↓↓↓↓↓↓↓↓↓ ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓