200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 万年历单片机c语言 c51单片机万年历的c程序

万年历单片机c语言 c51单片机万年历的c程序

时间:2024-01-25 04:36:16

相关推荐

万年历单片机c语言 c51单片机万年历的c程序

求一个单片机可以显示阳历的年、月、日、星期、小时.分.秒。阴历也能显示,标明是否为闰年。 用LCD液晶显示,可以调整时间。。。。。

这有个数码管显示的程序

以前做的,。。

你可以在我这个程序上修改修改

包括键盘扫描,还有动态显示

【。。。】

#include

//常量参数

#define TMODW 0x01;

#define SCONW 0x00;

#define xplay 0x04;//显示分频系数

//显示位选

unsigned char data stb;

//键值缓存,0xFF无键命令

unsigned char data keynum;

//显示字型变量

unsigned char data play[8];

//工作参数

unsigned char data l,m;

//字型码

unsigned char code BCDPC[10]=

{0x3F,0x06,0x5B,0x4F,0x66,

0x6D,0x7D,0x07,0x7F,0x6F};

//字位码

unsigned char code STBCODE[8]=

{0x01,0x02,0x04,0x08,

0x10,0x20,0x40,0x80 };

//400Hz xplay分频计数

unsigned char data cttime;

//时钟参数

unsigned char data hr,min,sec,sec100;

//调整时钟参数(时钟“走”)

void ct1()

{sec100++;

if (sec100==100)

{sec100=0;sec++;

if (sec==60)

{sec=0;min++;

if (min==60)

{min=0;hr++;

if (hr==24) hr=0;

}

}

}

}

//时钟参数→LED 显示缓存7段参数转换函数;

void xcplay()

{play[0]=BCDPC[hr/10];

play[1]=BCDPC[hr%10];

play[2]=BCDPC[min/10];

play[3]=BCDPC[min%10];

play[4]=BCDPC[sec/10];

play[5]=BCDPC[sec%10];

play[6]=BCDPC[sec100/10];

play[7]=BCDPC[sec100%10];

}

//显示扫描

void cplay()

{T0=1;//T0-高电平消隐

T1=0;//T1-低电平准备发脉冲前沿

TI=0;//?

P1=0;//?

SBUF=STBCODE[stb];

while (TI==0)

{

};

TI=0;

SBUF=play[stb];

while (TI==0)

{

};

T1=1;

T0=0;

stb=++stb&0x07;

}

extern void cthl0();

//定时器0中断处理程序

void ct0(void) interrupt 1 using 1

{cthl0();

cttime--;

if (cttime==0)

{cttime=xplay;

ct1();//调用时钟“走”函数

xcplay();//调用时钟参数→Led显示缓存转换函数

};

cplay();

}

void w20ms()

{for (l=0;l<41;l++)

{for (m=0;m<81;m++)

{

}

}

}

void tkey()

{P1=0xF0;

keynum=0xFF;

if (P1!=0xF0)

{w20ms();

P1=0xF0;

if (P1!=0xF0)

{P1=0xFE;

switch (P1)

{case 0xEE:keynum=0;break;

case 0xDE:keynum=1;break;

case 0xBE:keynum=2;break;

case 0x7E:keynum=3;break;

}

P1=0xFD;

switch (P1)

{case 0xED:keynum=4;break;

case 0xDD:keynum=5;break;

case 0xBD:keynum=6;break;

case 0x7B:keynum=7;break;

}

P1=0xFB;

switch (P1)

{

case 0xEB:keynum=8;break;

}

};

};

P1=0x00;

}

void command()

{switch (keynum)

{

case 0:{hr=hr+1;

if (hr==24)

hr=0;

}

break;

case 1:{min=min+1;

if (min==60)

min=0;

}

break;

case 2:{sec=sec+1;

if (sec==60)

sec=0;

}

break;

case 3:{sec100=0;

}

break;

case 4:{

while(!(P1=0xED))

{

hr=0;

min=0;

sec=0;

}

}

break;

case 5:{hr=hr-1;

if (hr==00)

hr=24;

}

break;

case 6:{min=min-1;

if (min==00)

min=59;

}

break;

case 7:{sec=sec-1;

if (sec==00)

sec=0;

}

break;

case 0xFF:break;

}

keynum=0xFF;

}

main ()

{ hr=8;

min=5;

sec=8;

sec100=0;

TMOD=TMODW;

SCON=SCONW;

ET0=1;

TR0=1;

EA=1;

cttime=xplay;

while (1)

{w20ms();

tkey();

command();

};

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。