|
具体程序如下:
#include<reg52.h>
#include<ABSACC.h>
#define uchar unsigned char
#define uint unsigned int
#define OSC_FREQ 12000000 //12Mhz
#define C50us (65536 - OSC_FREQ/(12000000/35)) //50us ¶¨ê±
#define C1ms (65536 - OSC_FREQ/(12000000/980)) //1ms¶¨ê±
#define C10ms (65536 - OSC_FREQ/(12000000/9970)) //10ms¶¨ê±
#define COM8255 XBYTE[0XFFFF]
#define PA8255 XBYTE[0XFFFC] //1100 A1A0
#define PB8255 XBYTE[0XFFFD] //1101
#define PC8255 XBYTE[0XFFFE] //1110
sbit dp=P2^7; //êyÂë1ü¶ÎÂë¿ØÖÆf
sbit g=P2^6; //êyÂë1ü¶ÎÂë¿ØÖÆe
sbit f=P2^5; //êyÂë1ü¶ÎÂë¿ØÖÆf
sbit e=P2^4; //êyÂë1ü¶ÎÂë¿ØÖÆe
sbit d=P2^3; //êyÂë1ü¶ÎÂë¿ØÖÆd
sbit c=P2^2; //êyÂë1ü¶ÎÂë¿ØÖÆc
sbit b=P2^1; //êyÂë1ü¶ÎÂë¿ØÖÆb
sbit a=P2^0; //êyÂë1ü¶ÎÂë¿ØÖÆa
sbit LED1=P1^7; //êyÂë1üλ¿Ø×óÆe1,12Ñô¼«
sbit LED2=P1^6; //êyÂë1üλ¿Ø2
sbit LED3=P1^5; //êyÂë1üλ¿Ø3
sbit LED4=P1^4; //êyÂë1üλ¿Ø4
sbit P1_0 = P1^0;
sbit P1_1 = P1^1;
sbit P1_2 = P1^2;
sbit P1_3 = P1^3;
sbit P1_4 = P1^4;
sbit SDA =P2^6;
sbit SCLK =P2^5;
sbit SLCK=P2^4;
uchar disp[]={0xfc,0x0c,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};
uchar disp1[]={0x89,0x86,0xc7,0xc7,0xfc,0x02};
uchar disp2[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar Hour = 23;
uchar Minute = 56;
uchar Second = 32;
uchar count_m;
void Set_Init_Timer1( ) //¶¨ê±Æ÷13õê¼»ˉoˉêy
{
EA=1; //¿a×üÖD¶Ï
ET1=1; //ÔêDí¶¨ê±Æ÷1ÖD¶Ï
TR1=1; //Æô¶ˉ¶¨ê±Æ÷1
}
void Set_INT0() //ía2¿ÖD¶Ï03õê¼»ˉ
{
EA = 1; //¿a·Å×üÖD¶Ï
EX0 = 1; //ía2¿ÖD¶Ï0¿aÖD¶Ï
IT0 = 1; //ía2¿ÖD¶Ï0±ßÑØ′¥·¢·½ê½
}
void Set_Init_8255()
{ // MOV A,#82H
COM8255=0x82; //8255B??? MOV DPTR,#0FFFFH MOVX @DPTR,A
P1_2=0; //8255??P1_2=0
P1_1=1; //8255??P1_1=1
P1_0=0; //8255??P1_0=0
}
void DelayX1ms(uint count)
{
uint j;
while(count--!=0)
{
for(j=0;j<72;j++);
}
}
void disp1_HELLO_h4()
{
LED4=1;
LED3=1;
LED2=1;
LED1=0;
P2=disp1[0];
DelayX1ms(1);
LED4=1;
LED3=1;
LED2=0;
LED1=1;
P2=disp1[1];
DelayX1ms(1);
LED4=1;
LED3=0;
LED2=1;
LED1=1;
P2=disp1[2];
DelayX1ms(1);
LED4=0;
LED3=1;
LED2=1;
LED1=1;
P2=disp1[3];
DelayX1ms(1);
}
void disp1_HELLO_L2()
{
char n;
for(n=0;n<8;n++)
{
SBUF = disp1[4];
while(!TI);
TI=0;
SLCK = 0;
SLCK=1;
SBUF = disp1[5];
while(!TI);
TI=0;
SLCK = 0;
SLCK=1;
}
}
void disp_led_Hour(uchar hour )
{
LED4=1;
LED3=1;
LED2=1;
LED1=0;
P2=disp2[hour/10];
DelayX1ms(1);
LED4=1;
LED3=1;
LED2=0;
LED1=1;
P2=disp2[hour%10];
DelayX1ms(1);
}
void disp_led_Minute(uchar minute )
{
LED4=1;
LED3=0;
LED2=1;
LED1=1;
P2=disp2[minute/10];
DelayX1ms(1);
LED4=0;
LED3=1;
LED2=1;
LED1=1;
P2=disp2[minute%10];
DelayX1ms(1);
}
void disp_led_Second(uchar second)
{
char n;
for(n=0;n<8;n++)
{
SBUF = disp[second/10];
while(!TI);
TI=0;
SLCK = 0;
SLCK=1;
SBUF = disp[second%10];
while(!TI);
TI=0;
SLCK = 0;
SLCK=1;
}
}
void Timer1_int( ) interrupt 3 using 1 //¶¨ê±Æ÷1ÖD¶Ï·tÎñ
{
TMOD = 0x10;
TH1 = C10ms/256; //10ms¶¨ê±
TL1 = C10ms%256;
EA=1; //¿a×üÖD¶Ï
ET1=1; //ÔêDí¶¨ê±Æ÷1ÖD¶Ï
TR1=1; //Æô¶ˉ¶¨ê±Æ÷1
count_m++;
if (count_m==92) //ÿÃëê±¼äμ½
{
Second++;
count_m=0;
if(Second==60) //ÿ·Öê±¼äμ½
{
Second=0;
Minute++;
if(Minute==60) //ÿD¡ê±ê±¼äμ½
{
Minute=0;
Hour++;
if(Hour==24) //ÿò»ììê±¼äμ½
{
Hour = 0;
}
}
}
}
}
void Hour_add()
{
Hour++;
if(Hour>23)Hour=0;
}
void Minute_add()
{
Minute++;
if(Minute>59)Minute=0;
}
void Second_add()
{
Second++;
if(Second>59)Second=0;
}
void Disp_Time_Pause() interrupt 0 using 3
{
TR1 = 0;
}
void DIS_Time()
{
do
{
disp_led_Hour(Hour);
disp_led_Minute(Minute);
disp_led_Second(Second);
DelayX1ms(5);
switch(PB8255) //¶á8255B¿ú
{
case 0xEF:TR1=0;Hour_add();DelayX1ms(250);break; //PB=0xEF,K12¼ü°′ÏÂ
case 0xDF:TR1=0;Minute_add();DelayX1ms(250);break; //PB=0xDF,K13¼ü°′ÏÂ
case 0xBF:TR1=0;Second_add() ;DelayX1ms(250);break;//PB=0xBF,K14¼ü°′ÏÂ
case 0x7F:Set_Init_Timer1( );DIS_Time();break; //PB=0x7F,K15¼ü°′ÏÂ
}
}while(1);
}
void main()
{
TR1=0;
Set_INT0();
disp1_HELLO_L2();
do
{
disp1_HELLO_h4();
Set_Init_8255();
switch(PB8255) //¶á8255B¿ú
{
case 0xEF:TR1=0;Hour_add();DelayX1ms(250);break; //PB=0xEF,K12¼ü°′ÏÂ
case 0xDF:TR1=0;Minute_add();DelayX1ms(250);break; //PB=0xDF,K13¼ü°′ÏÂ
case 0xBF:TR1=0;Second_add() ;DelayX1ms(250);break;//PB=0xBF,K14¼ü°′ÏÂ
case 0x7F:Set_Init_Timer1( );DIS_Time();break; //PB=0x7F,K15¼ü°′ÏÂ
}
}while(1);
}
|
评分
-
查看全部评分
|