单片机电子钟的完整源程序12m晶振

单片机电子钟的完整源程序12m晶振
预览:

单片机电子钟的完整源程序12m晶振.txt不要放弃自己! -------(妈妈曾经这样对我说,转身出门的一刹那,我泪流满面,却不想让任何人看见!) 看到这一句 小编也心有感触,想起当初离家前往几千里外的地方的时候,妈妈也说过类似的话,但是身为男儿,必须创出一片天,才能报答父母的养育之恩!! #include <AT89X51.H>

#define uchar unsigned char

#define uint unsigned int



sbit key11=P3^3;

sbit key12=P3^4;

sbit key13=P3^5;

sbit led14=P1^4;

sbit led15=P1^5;

unsigned char code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};

//unsigned char code table[]={0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60,008H,05EH,082H,042H,054H,041H,001H,05AH,000H,040H};//我自己板子的字库

uchar hou1,hou2,min1,min2,flag;

uchar i,j,k,l;

uint tt,tt2;

void init();

void keyscan();

void count();

void display(uchar,uchar,uchar,uchar);

void delay(uint);

main()

{

init();

while(1)

{

while(flag==0)//时钟运行状态

{



keyscan();

count();

display(hou1,hou2,min1,min2);

if(i==k&&j==l){led14=0;}

if(tt%20==15)

led15=0;

if(tt%20==19)

led15=1;

}

while(flag==1)//时钟分钟设定状态

{

TR0=0;

keyscan();

count();

display(hou1,hou2,min1,min2);

}

while(flag==2)//时钟小时设定状态

{

keyscan();

count();

display(hou1,hou2,min1,min2);

}

while(flag==3)//闹钟分钟设定状态

{

keyscan();

count();

display(hou1,hou2,min1,min2);

}

while(flag==4)//闹钟小时设定状态

{

keyscan();

count();

display(hou1,hou2,min1,min2);

}

}

}

void init()

{

i=12;

j=0;

k=6;

l=0;

hou1=1;

hou2=2;

min1=0;

min2=0;

flag=0;



TMOD=0X11;//定时器0\1设置方式1 一次时间0.05s\0.01s

TH0=(65536-50000)/256;

TL0=(65535-50000)%256;

TH1=(65536-20000)/256;

TL1=(65535-20000)%256;

EA=1;//开总中断

ET0=1;//开定时器0中断

ET1=1;//开定时器1中断

EX0=1;//开外部中断0

TR0=1;//定时器0开始工作

TR1=1;//定时器1开始工作

IT0=1;//外部中断下降沿触发

}

void keyscan()//扫描独立键盘

{



if(key11==0)

{

delay(1);

if(key11==0)//消抖

{

flag++;

if(flag==5)

{

flag=0;

TR0=1;

}

while(!key11)//等待按键释放

{

count();

display(hou1,hou2,min1,min2);

}

}

}



if(flag==1) //此后为时钟设定分钟扫描

{

if(key12==0)

{

delay(1);

if(key12==0)//消抖

{

j++;

while(!key12)//等待按键释放

{

count();

display(hou1,hou2,min1,min2);

}

}

}

if(key13==0)

{

delay(1);

if(key13==0)//消抖

{

j--;

while(!key13)//等待按键释放

{

count();

display(hou1,hou2,min1,min2);

}

}

第1页/共2页 下一页>