发布时间 : 星期四 文章单片机课程设计报告(万年历)更新完毕开始阅读9f121058ccbff121dc368334
江西财经大学职业技术学院 单片机课程设计报告 }
void TimeSet(void) //时间调整函数 {
display_Time(); if(SET==0) {
delay1ms(10); if(SET==0) {
mode++; delay1ms(20); switch(mode) {
case(1):{gbdisplay(0x48);hourset(); delay1ms(500);} break; case(2):{gbdisplay(0x4c);minuteset();delay1ms(500);} break; case(3):{gbdisplay(0x4f);secondset();delay1ms(500);} break; case(4):{gbdisplay(0x09);yearset();delay1ms(500);} break;
{ }
if(RED==0) { }
display_minutea(minutea); gbdisplay(0x48); if(CANL==0) { }
delay1ms(500); break; delay1ms(20); if(RED==0) { }
minutea--;
if(minutea==0) minutea=59; while(RED==0) ; delay1ms(20); if(ADD==0) { }
minutea++;
if(minutea>59) minutea=0; while(ADD==0) ;
}
第 49 页 共 63 页
江西财经大学职业技术学院 单片机课程设计报告 case(5):{gbdisplay(0x0c);monthset();delay1ms(500);} break; case(6):{gbdisplay(0x0f);dayset();delay1ms(500);} break;
}
if(mode==7) mode=0;
}
}
}
/***************显示温度模块********************/
unsigned char code displayexplain[]={%unsigned char code displayerror[]={%unsigned char code displayerror1[]={%unsigned char code displaypart1[]={%unsigned char code displaypart2[]={%unsigned char flag;
/**********************操作DS18B20模块***************************/ sbit DQ=P3^3; unsigned char time;
/**********************DS18B20初始化****************************/ bit IntDS18B20(void) { bit temp; DQ=1;
for(time=0;time<2;time++); DQ=0;
for(time=0;time<200;time++); DQ=1;
for(time=0;time<10;time++); temp=DQ;
for(time=0;time<200;time++); return temp; }
/**************************读DS18B20**********************/ unsigned char ReadDS18B20(void) { unsigned char i; unsigned char dat; for(i=0;i<8;i++) { DQ=1; _nop_(); DQ=0; _nop_(); DQ=1;
for(time=0;time<2;time++); 第 50 页 共 63 页
江西财经大学职业技术学院 单片机课程设计报告 dat>>=1; if(DQ==1) dat=dat|0x80; else
dat=dat|0x00; for(time=0;time<10;time++);
}
return dat;
}
/*********************向DS18B20写数据**************************/ void WriteDS18B20(unsigned char date) { unsigned char i; for(i=0;i<8;i++) { DQ=1; _nop_(); DQ=0;
DQ=date&0x01;
for(time=0;time<10;time++); DQ=1;
for(time=0;time<1;time++);
date>>=1;
}
for(time=0;time<4;time++); }
/*******************为读取温度做好准备************************/ void ReadyreadDS18B20(void) { IntDS18B20(); WriteDS18B20(0XCC); WriteDS18B20(0X44); delay1ms(200); IntDS18B20(); WriteDS18B20(0XCC); WriteDS18B20(0XBE);
}
/*************在1602液晶上显示相关信息模块**********************/ /****************当未检测到DS18B20时显示信息模块****************/ void Display_Error(void) {
unsigned char i=0; 第 51 页 共 63 页
江西财经大学职业技术学院 单片机课程设计报告 Write_Address(0x00);
while(displayerror[i]!='\\0') { Write_Date(displayerror[i]); i++;
delay1ms(100);
}
delay1ms(5); i=0;
Write_Address(0x40);
while(displayerror1[i]!='\\0') { Write_Date(displayerror1[i]); i++;
delay1ms(100);
}
delay1ms(3000) ;
}
/*************温度显示模块****************/ void Display_Explain(void) { unsigned char i=0; Write_Address(0x00); delay1ms(5);
while(displayexplain[i]!='\\0') { Write_Date(displayexplain[i]); i++;
delay1ms(5); } i=0;
Write_Address(0x40);
while(displaypart1[i]!='\\0') { Write_Date(displaypart1[i]); i++;
delay1ms(5);
} i=0;
Write_Address(0x4C);
while(displaypart2[i]!='\\0') { Write_Date(displaypart2[i]);
i++;
第 52 页 共 63 页