基于单片机控制的新型智能台灯 - 图文 联系客服

发布时间 : 星期日 文章基于单片机控制的新型智能台灯 - 图文更新完毕开始阅读ed72f956c850ad02de8041f5

哈尔滨理工大学学士学位论文

{x1=0;x2++;if(x2>=6)x2=0;} //个位加满10后,清零,向十位进一,十位加到6后,清零 fen=x1+x2*16; time_data_buff[1]=fen; lcd1602_line2[3]=mun_to_char[fen/0x10]; lcd1602_line2[4]=mun_to_char[fen%0x10];

for(i=3;i<5;i++)lcd_char_write(i,1,lcd1602_line2[i]);//显示分 } if(snum==3) //小时 24小时 { int x1,x2,i; lcd_command_write(0x80+0x40+1); x1=shi%0x10;//分的个位 x2=shi/0x10;//分得十位 x1++; if(x1>=10&&x2!=2) {x1=0;x2++;if(x2>=3)x2=0;} //个位加满10后,清零,向十位进一,十位加到6后,清零 if(x2==2){if(x1>=5){x1=0;x2=0;}} //如果十位为2,则个位只能是小于5的数 shi=x1+x2*16; time_data_buff[2]=shi; lcd1602_line2[0]=mun_to_char[shi/0x10]; lcd1602_line2[1]=mun_to_char[shi%0x10];

for(i=0;i<2;i++)lcd_char_write(i,1,lcd1602_line2[i]);//显示分 } if(snum==4) //日 最多31日 { int x1,x2,i; lcd_command_write(0x80+0x40+9); x1=ri%0x10;//分的个位 x2=ri/0x10;//分得十位 x1++; if(x1>=10&&x2!=3)

- 36 -

哈尔滨理工大学学士学位论文

{x1=0;x2++;} //个位加满10后,清零,向十位进一,十位加到3后,清零 if(x2==3){if(x1>=2){x1=1;x2=0;}} //如果十位为3,则个位只能是0或1 ,大于31日后变为1日 ri=x1+x2*16; time_data_buff[3]=ri; lcd1602_line1[8]=mun_to_char[ri/0x10]; lcd1602_line1[9]=mun_to_char[ri%0x10];

for(i=8;i<10;i++)lcd_char_write(i,0,lcd1602_line1[i]);//显示分 } if(snum==5) //月,一共12月份 { int x1,x2,i; lcd_command_write(0x80+0x40+6); x1=yue%0x10;//分的个位 x2=yue/0x10;//分得十位 x1++; if(x1>=10&&x2!=1) {x1=0;x2++;} //个位加满10后,清零,向十位进一,十位加到3后,清零 if(x2==1){if(x1>=3){x1=1;x2=0;}} //如果十位为1,则个位只能是0或1或2 大于12后,变为1月份 yue=x1+x2*16; time_data_buff[4]=yue; lcd1602_line1[5]=mun_to_char[yue/0x10]; lcd1602_line1[6]=mun_to_char[yue%0x10];

for(i=5;i<7;i++)lcd_char_write(i,0,lcd1602_line1[i]);//显示分 } if(snum==6) //年,最多99年 { int x1,x2,i; lcd_command_write(0x80+0x40+3); x1=nian%0x10;//分的个位 x2=nian/0x10;//分得十位 x1++;

- 37 -

哈尔滨理工大学学士学位论文

if(x1>=10&&x2!=9) {x1=0;x2++;} //个位加满10后,清零,向十位进一,十位加到9后,清零 if(x2==9){if(x1>=10){x1=0;x2=0;}} // 99年后变为00年 nian=x1+x2*16; time_data_buff[6]=nian; lcd1602_line1[2]=mun_to_char[nian/0x10]; lcd1602_line1[3]=mun_to_char[nian%0x10];

for(i=2;i<4;i++)lcd_char_write(i,0,lcd1602_line1[i]);//显示分 } if(snum==7) //星期,星期7 { int i; lcd_command_write(0x80+0x40+13); zhou++;if(zhou==8)zhou=1; time_data_buff[5]=zhou; for(i=0;i<3;i++)

lcd1602_line1[i+13]=Weeks[time_data_buff[5]&0x07][i]; /*星期*/

for(i=13;i<16;i++)lcd_char_write(i,0,lcd1602_line1[i]);//显示分 } } } if(s3==0)//s3键按下,说明光标处减一 { delay(60); if(s3==0) { while(!s3);//等待键释放 if(snum==1)//秒减一 { int x1,x2,i; lcd_command_write(0x80+0x40+7); x1=miao%0x10;//秒的个位 把秒16进制转换为十进制 x2=miao/0x10;//秒的十位 x1--; //秒的个位自减一 if(x1<0) //x1自减小于零之后变为9 x2自减一 ,自减

- 38 -

哈尔滨理工大学学士学位论文

小于零之后变为5 {x1=9;x2--; if(x2<0)x2=5;}// miao=x1+x2*16; //把十进制转换为十六进制 time_data_buff[0]=miao; //把秒送到time_data_buff保存 lcd1602_line2[6]=mun_to_char[miao/0x10]; lcd1602_line2[7]=mun_to_char[miao%0x10];

for(i=6;i<8;i++)lcd_char_write(i,1,lcd1602_line2[i]);//显示秒 } if(snum==2)//分减一 { int x1,x2,i; lcd_command_write(0x80+0x40+4); x1=fen%0x10;//秒的个位 把秒16进制转换为十进制 x2=fen/0x10;//秒的十位 x1--; //秒的个位自减一 if(x1<0) //x1自减小于零之后变为9 x2自减一 ,自减小于零之后变为5 {x1=9;x2--; if(x2<0)x2=5;}// fen=x1+x2*16; //把十进制转换为十六进制 time_data_buff[1]=fen; //把秒送到time_data_buff保存 lcd1602_line2[3]=mun_to_char[fen/0x10]; lcd1602_line2[4]=mun_to_char[fen%0x10]; for(i=3;i<5;i++)lcd_char_write(i,1,lcd1602_line2[i]);//显示秒 } if(snum==3)//小时减一 { int x1,x2,i; lcd_command_write(0x80+0x40+1); x1=shi%0x10;//秒的个位 把秒16进制转换为十进制 x2=shi/0x10;//秒的十位 x1--; //秒的个位自减一 if(x1<0&&x2!=2) //减到0时后变为24时, {x1=9;x2--; if(x2<0){x2=2;x1=4;} }// if(x2==2){ if(x1<0){x1=9;x2--;} } shi=x1+x2*16; //把十进制转换为十六进制

- 39 -