基于51单片机的数字钟
void timer1() interrupt 3 using 3 //display
{
TH1=(65536-3000)/256;
TL1=(65536-3000)%256; //0.006s
monthl=tmonthl[month];
monthh=tmonthh[month];
dayl=tdayl[day];
dayh=tdayh[day];
hourl=thourl[hour];
hourh=thourh[hour];
if(slient==1)
{ if(j4)
j++;
else
j=1;
if(state==1 || state==4 || state==5) //显示时间 1:显示时间 2:显示月日 3:显示年 4:修改分钟 5:修改时钟 6:修改年 7:修改月 8:修改日 ;
{
if(j==1)
{if(state==4 dps==0 int0!=0) // 闪烁,调节时不闪
P1=0x00;
else
{P1=display[minl]; //p3.5,p3.4,p3.1,p3.0 为势能端
}} //11XX10
else if(j==2)
{if(state==4 dps==0 int0!=0) // 闪烁
P1=0x00;
else
{P1=display[minh];
}} //11XX01
else if(j==3)
{if(state==5 dps==0 int0!=0) // 闪烁
P1=0x00;
else
{P1=display[hourl];
}} //10XX11
else if(j==4)
{if(state==5 dps==0 int0!=0) // 闪烁
P1=0x00;
else
{P1=display[hourh];
}} //01XX11
}
else if(state==2 || state==7 || state==8) //显示月日 1:显示时间 2:显示月日 3:显示年 4:修改分钟 5:修改时钟 6:修改年 7:修改月 8:修改日 ;
{
if(j==1)
{if(state==8 dps==0 int0!=0) // 闪烁
P1=0x00;
else
{P1=display[dayl]; //p3.5,p3.4,p3.1,p3.0 为势能端
}} //11XX10
else if(j==2)
{if(state==8 dps==0 int0!=0) // 闪烁
P1=0x00;
else
{P1=display[dayh];
}} //11XX01
else if(j==3)
{if(state==7 dps==0 int0!=0) // 闪烁
P1=0x00;
else
{P1=display[monthl];
}} //10XX11
else if(j==4)
{if(state==7 dps==0 int0!=0) // 闪烁
P1=0x00;
else
{P1=display[monthh];
}} //01XX11
}
else if(state==3 || state==6) //显示年
{
if(state==6 dps==0 int0!=0)
P1=0x00;
else
{if(j==1)
{P1=display[year1]; //p3.5,p3.4,p3.1,p3.0 为势能端
} //11XX10 3e
else if(j==2)
{P1=display[year2];
} //11XX01 3d
else if(j==3)
{P1=display[year3];
} //10XX11 2f
else if(j==4)
{P1=display[year4];
} //01XX11 1f
}
}
if(j==1)
{P3_0=0;P3_1=1;P3_4=1;P3_5=1;}
else if(j==2)
{P3_0=1;P3_1=0;P3_4=1;P3_5=1;}
else if(j==3)
{P3_0=1;P3_1=1;P3_4=0;P3_5=1;}
else if(j==4)
{P3_0=1;P3_1=1;P3_4=1;P3_5=0;}
/////////////////////////////////////////////////////////// DP
/////////////////////////////////////////////////////////// 1:显示时间 2:显示月日 3:显示年 4:修改分钟 5:修改时钟 6:修改年 7:修改月 8:修改日 ;
if(dps==1)
{if(state==1 || state==2)
{ if(j==1) //DP,显示时间,月日
{DP=0;}
else if(j==2)
{DP=0;}
else if(j==3)
{DP=1;}
else if(j==4)
{DP=0;} }
else if(state==3)
{ if(j==1) //DP,显示年
{DP=0;}
else if(j==2)
{DP=0;}
else if(j==3)
{DP=0;}
else if(j==4)
{DP=0;} }
else if(state==4)
{ if(j==1) //DP,改分钟
{DP=1;}
else if(j==2)
{DP=1;}
else if(j==3)
{DP=0;}
else if(j==4)
{DP=0;} }
else if(state==5)
{ if(j==1) //DP,改时钟
{DP=0;}
else if(j==2)
{DP=0;}
else if(j==3)
{DP=1;}
else if(j==4)
{DP=1;} }
else if(state==8)
{ if(j==1) //DP,改日
{DP=0;}
else if(j==2)
{DP=1;}
else if(j==3)
{DP=0;}
else if(j==4)
{DP=0;}
}
else if(state==7)
{ if(j==1) //DP,改月
{DP=0;}
else if(j==2)
{DP=0;}
else if(j==3)
{DP=0;}
else if(j==4)
{DP=1;}
}
else if(state==6)
{ DP=0; //DP, 改年
}}
else //dps==0
DP=0;
//////////////////////////////////////////////////////////////////DP
}
else //slient==0
{P1=0x00;ET1=0;} //省电,关闭显示器,关闭显示中断
} //timer1 显示
- 用CPLD实现FIR数字滤波器的设计(08-07)
- 基于DSP的短波分集合成接收机(09-01)
- DSP+FPGA嵌入式多路视频监控系统硬件平台(04-10)
- 数字信号处理器TMS320F241在变频空调中的应用(04-28)
- 数字信号控制器在变频家电中的应用(05-15)
- 什么是DSP及DSP技术详解(05-15)