基于51单片机的智能台灯设计 - 图文(7)

2019-05-18 19:02

//管脚声明

sbit LED = P1^4; sbit LEDR= P2^2; sbit LEDG= P2^4; sbit LEDY= P2^6; sbit set = P1^5; sbit add = P1^6; sbit dec = P1^7;

//主函数 void main() { //定时器初始化100HZ Init(); m=0; f=0; //模式1 LEDR=1; LEDY=1; LEDG=1; delay(3); LEDR=0; LEDY=1; LEDG=1; //循环 while(1) { //读取亮度AD值 LL=ADC0809(); ////////////////////////////////////// //亮度控制 //光敏控制Ok if(Mode==2) { if(LL>50) { X1=0; } else { if(LL-1>0xf0) LL=1;

31

X1=1020-LL*20; } }

//遥控器ok

else if(Mode==1) { X1=YK; ZY++; else ZY--; } if(ZY==400) { FZ=1; } if(ZY==0) { { X1--; } LED=1;

X2=1000-X1; while(X2!=0) { X2--; }

/////////////////////////////////////// if(set==0) { delay(20); if(set==0) { Mode++; if(Mode==1) { LEDR=1; LEDY=1; LEDG=1; delay(100); LEDR=0; LEDY=1; LEDG=1; } if(Mode==2)

32

{ LEDR=1; LEDY=1; LEDG=1; delay(100); LEDR=1; LEDY=1; LEDG=0; } if(Mode==3) { LEDR=1; LEDY=1; LEDG=1; delay(3); LEDR=1; LEDY=0; LEDG=1; } if(Mode==4) { Mode=1; LEDR=1; LEDY=1; LEDG=1; delay(100); LEDR=0; LEDY=1; LEDG=1; } while(set==0); } }

if(add==0) { delay(20); if(add==0) { YK=YK+100; if(YK>1000) { YK=0; } while(add==0);

33

} }

if(dec==0) { delay(20); if(dec==0) { YK=YK-100; if(YK>1000) { YK=0; } while(dec==0); } }

if(IrOK==1) { //1键 if(Im[2]==0x0c) { LEDR=1; LEDY=1; LEDG=1; delay(100); LEDR=0; LEDY=1; LEDG=1; Mode=1; } //2键 else if(Im[2]==0x18) { LEDR=1; LEDY=1; LEDG=1; delay(100); LEDR=1; LEDY=1; LEDG=0; Mode=2; } //3键 else if(Im[2]==0x5e) {

34

LEDR=1; LEDY=1; LEDG=1; delay(3); LEDR=1; LEDY=0; LEDG=1; Mode=3; } //+ else if(Im[2]==0x40) { YK=YK+100; if(YK>1000) { YK=0; } } //- else if(Im[2]==0x19) { YK=YK-100; if(YK>1000) { YK=0; } } IrOK=0; } } }

//定时器初始化 void Init(void) {

EA=1;//开启总中断

IT1=1;//下降沿有效 EX1=1;//外部中断1开

TMOD=0x11;//定时器初始化 TH0=0;//T0赋初值

35

TL0=0;

TR0=0;//t0开始计时 }

//延时

void delay(uchar i) {

uchar j,k; for(j=i;j>0;j--)

for(k=125;k>0;k--); }

//外部中断解码程序_外部中断0 void intersvr1(void) interrupt 2 using 1 {

LED=1; TR0=1;

Tc=TH0*256+TL0;//提取中断时间间隔时长 TH0=0;

TL0=0; //定时中断重新置零 if((Tc>Imin)&&(Tc

if(Tc>Inum1&&Tc

Im[m/8]=Im[m/8]>>1|0x80; m++; }

if(Tc>Inum2&&Tc

Im[m/8]=Im[m/8]>>1; m++; //取码 }

if(m==32) {

m=0; f=0;

if(Im[2]==~Im[3]) {

IrOK=1; TR0=0; }

else IrOK=0; //取码完成后判断读码是否正确 }

//准备读下一码 } }

36


基于51单片机的智能台灯设计 - 图文(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:舞蹈系毕业论文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: