单片机电子钟c程序

[11-21 22:50:19]   来源:http://www.88dzw.com  电子小制作   阅读:8829

文章摘要://**单片机SST89E58RD 8位共阳数码管 12M晶振**// //***P0段选,P2位选***// #include "at89x52.h" #define uchar unsigned char #define uint unsigned int uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff}; uchar n; uchar hh,mm,ss; uchar nhh,nmm,nss; uint year; uchar day,mon,week; ucha

单片机电子钟c程序,标签:小制作,电子样本制作,http://www.88dzw.com

//**单片机SST89E58RD 8位共阳数码管 12M晶振**//
//*******P0段选,P2位选*******//
#include "at89x52.h"
#define uchar unsigned char
#define uint unsigned int
uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};
uchar n;
uchar hh,mm,ss;
uchar nhh,nmm,nss;
uint year;
uchar day,mon,week;
uchar hhs,hhg,mms,mmg,sss,ssg;
uchar days,dayg,mons,mong;
uchar nhhs,nhhg,nmms,nmmg,nsss,nssg;
uchar set1=1,set2=1;
sbit fm=P3^2;
sbit k1=P3^4;
sbit k2=P3^5;
sbit k3=P3^6;
sbit k4=P3^7;
uchar table1[]={31,31,29,31,30,31,30,31,31,30,31,30,31}; //闰年
uchar table2[]={31,31,28,31,30,31,30,31,31,30,31,30,31}; //非闰年
void jishi();
void baoshi();
void alarm();
void set_time();
void set_alarm();
void set_mdw();
void key_change();
void key_set();

void delay(int m)   //延时程序,延时m*0.5ms
{
   uint i;
   uint j;
   for (i=0;i<m;i++)
   {
     for(j=0;j<500;j++){}
   }
}

void timer0() interrupt 1
{
TMOD=0x01;
TH0=0x3c;
TL0=0xb1;

n++;
jishi();
}

main()
{
TMOD=0x01;
TH0=0x3c;
TL0=0xb1;

TR0=1;
EA=1;
ET0=1;
hh=12;mm=00;ss=00;
nhh=7;nmm=30;nss=0;
year=2008;mon=12;day=1;week=1;
while(1)
{
hhs=hh/10%10;//时分秒
hhg=hh%10;
mms=mm/10%10;
mmg=mm%10;
sss=ss/10%10;
ssg=ss%10;
nhhs=nhh/10%10;//闹钟
nhhg=nhh%10;
nmms=nmm/10%10;
nmmg=nmm%10;
nsss=nss/10%10;
nssg=nss%10;
days=day/10%10;//月日
dayg=day%10;
mons=mon/10%10;
mong=mon%10;

key_change(); //k1按键扫描
key_set(); //k2按键扫描
set_time(); //设置时间
set_mdw(); //设置月日星期
set_alarm(); //设置闹钟

if(set1==1) //正常走时显示
{
P0=tab[hhs];P2_7=0;delay(1);P2_7=1;//时十位
P0=tab[hhg];P2_5=0;delay(1);P2_5=1;//时个位
P0=tab[10];P2_3=0;delay(1);P2_3=1;//"-"
P0=tab[mms];P2_1=0;delay(1);P2_1=1;//分十位
P0=tab[mmg];P2_6=0;delay(1);P2_6=1;//分个位
P0=tab[10];P2_4=0;delay(1);P2_4=1;//"-"
P0=tab[sss];P2_2=0;delay(1);P2_2=1;//秒十位
P0=tab[ssg];P2_0=0;delay(1);P2_0=1;//秒个位
}
if(set1==2) //设置时间
{
P0=tab[hhs];P2_7=0;delay(1);P2_7=1;//时十位
P0=tab[hhg];P2_5=0;delay(1);P2_5=1;//时个位
P0=tab[10];P2_3=0;delay(1);P2_3=1;//"-"
P0=tab[mms];P2_1=0;delay(1);P2_1=1;//分十位
P0=tab[mmg];P2_6=0;delay(1);P2_6=1;//分个位
P0=tab[10];P2_4=0;delay(1);P2_4=1;//"-"
P0=tab[sss];P2_2=0;delay(1);P2_2=1;//秒十位
P0=tab[ssg];P2_0=0;delay(1);P2_0=1;//秒个位
}
if(set1==3) //正常显示月日-星期
{
P0=tab[mons];P2_7=0;delay(1);P2_7=1;//时十位
P0=tab[mong];P2_5=0;delay(1);P2_5=1;//时个位
P0=tab[10];P2_3=0;delay(1);P2_3=1;//"-"
P0=tab[days];P2_1=0;delay(1);P2_1=1;//分十位
P0=tab[dayg];P2_6=0;delay(1);P2_6=1;//分个位
P0=tab[11];P2_4=0;delay(1);P2_4=1;//"-"
P0=tab[11];P2_2=0;delay(1);P2_2=1;//秒十位
P0=tab[week];P2_0=0;delay(1);P2_0=1;//秒个位
}
if(set1==4) //设置月日-星期
{
P0=tab[mons];P2_7=0;delay(1);P2_7=1;//时十位
P0=tab[mong];P2_5=0;delay(1);P2_5=1;//时个位
P0=tab[10];P2_3=0;delay(1);P2_3=1;//"-"

[1] [2] [3]  下一页


Tag:电子小制作小制作,电子样本制作电子制作 - 电子小制作