杭州电子科技大学本科毕业论文
delay_ms1();
P1|=0x0f; //lit off all led P0=0xff; s3=0;
P0=table[led[3]]; delay_ms1();
P1|=0x0f; //lit off all led P0=0xff; }
/*********************************************************************/ /*********************显示两位函数************************************/ void display1(unsigned char a,b) //显示两位 {
led[0]=a; led[1]=a/10; led[2]=b; led[3]=b/10; display(); }
/*****************************************************************/ /*******************中断服务函数*********************************/ void timer2(void) interrupt 5 using 1 { if(s==1) {timer++; if(timer==2) {timer=0;flag++; if(flag==10)
{flag=0;timer_second++; if(timer_second==60) {timer_second=0; timer_minute++;} } } }
30
杭州电子科技大学本科毕业论文
timer2_tick++; if(timer2_tick==20) { timer2_tick=0; }
/********************************************************************/ /******************当前时间程序*************************************/ void display_time(void) {
P1|=0x0f; //lit off all led P0=0xff; s0=0;
led[3]=now.minute; P0=table[led[3]]; delay_ms1();
P1|=0x0f; //lit off all led P0=0xff; s1=0;
led[2]=now.minute/10; P0=table[led[2]]; delay_ms1();
P1|=0x0f; //lit off all led P0=0xff;
31
now.second++; if(now.second==60) { now.minute++;
now.second=0; }
if(now.minute==60) { now.hour++; now.minute=0; if(now.hour==24) now.hour=0; }
} TF2=0;
杭州电子科技大学本科毕业论文
s2=0;
led[1]=now.hour; if(now.second%2) P0_7=0; else P0_7=1; P0=table[led[1]];
delay_ms1();
P1|=0x0f; //lit off all led P0=0xff; s3=0;
led[0]=now.hour/10; P0=table[led[0]]; delay_ms1();
P1|=0x0f; //lit off all led P0=0xff; }
/*********************************************************************/ /*****************秒表显示函数***************************************/ void displaytimer(void) {
P1|=0x0f; //lit off all led P0=0xff; s0=0;
led[3]=flag; P0=table[led[3]]; delay_ms1();
P1|=0x0f; //lit off all led P0=0xff; s1=0;
led[2]=timer_second; P0=table[led[2]]; P0_7=0;
delay_ms1();
P1|=0x0f; //lit off all led P0=0xff; s2=0;
32
杭州电子科技大学本科毕业论文
led[1]=timer_second/10;
P0=table[led[1]]; delay_ms1();
P1|=0x0f; //lit off all led P0=0xff; s3=0;
led[0]=timer_minute; P0=table[led[0]]; P0_7=0; delay_ms1();
P1|=0x0f; //lit off all led P0=0xff; }
/*********************************************************************/ /***************闹铃显示函数******************************************/ void display_ring(void)
{display1(ring_minute,ring_hour); if(now.hour==ring_hour) {if(now.minute==ring_minute) bell=0; power_ctrl = 0; }
else bell=1;
power_ctrl = 1;//p1^7高电平时,继电器通;低电平时,继电器断 }
/*********************************************************************/ /************************温度显示函数******************************/ void display_temp(void) {
float temp,k,value; unsigned char tmp; delay_ms1();
value=adc_conv();
tmp=value; temp=(float)tmp;
33
杭州电子科技大学本科毕业论文
}
k=log(temp/(255-temp)); temp=k/3380+1/298.15; temp=1/temp-273.15; tmp=(unsigned char)temp; led[0]=tmp; led[1]=(tmp0)/10; led[2]=0; led[3]=0;
display();
/*********************************************************************/ /*******************T2定时器初始化***********************************/ static void timer2_initialize (void) {
T2CON=0x00; timer2_tick=0; TH2 = 0x4C; }
/*********************************************************************/ /********************按键记值程序************************************/ char gotkey() { keys=0; if (mode_button==0) {
delay100ms(); if (mode_button==0) keys=1; }
TL2 = 0x00; RCAP2H = 0x4C; RCAP2L = 0x00; ET2 = 1; EA = 1; TR2 = 1;
if (operation_button==0)
34