?? 旋轉led時鐘程序.c
字號:
#include<reg51.h>
unsigned char miao=0,fen=0,shi=0;
unsigned char miao1=0,miao2=0;
unsigned char fen1=0,fen2=0;
unsigned char shi1=0,shi2=0;
void xiezhi();
#define THCO 0xee //5ms
#define THLO 0x00
code char ziku[]=
{
0xFF,0x87,0x33,0x7B,0x7B,0x33,0x87,0xFF,/*"0",0*/
0xFF,0x77,0x77,0x03,0x7F,0x7F,0xFF,0xFF,/*"1",1*/
0xFF,0x77,0x3B,0x3B,0x5B,0x6B,0x37,0xFF,/*"2",2*/
0xFF,0xB7,0x7B,0x6B,0x6B,0x6B,0x97,0xFF,/*"3",3*/
0xFF,0xDF,0xAF,0xB7,0x3B,0x03,0xFF,0xFF,/*"4",4*/
0xFF,0xA3,0x6B,0x6B,0x6B,0x6B,0x9B,0xFF,/*"5",5*/
0xFF,0x87,0x6B,0x6B,0x6B,0x6B,0x9F,0xFF,/*"6",6*/
0xFF,0xF3,0xFB,0x1B,0xEB,0xF3,0xFB,0xFF,/*"7",7*/
0xFF,0x97,0x6B,0x5B,0x5B,0x4B,0xB7,0xFF,/*"8",8*/
0xFF,0xE7,0x5B,0x5B,0x5B,0x17,0x87,0xFF,/*"9",9*/
0xFF,0xFF,0xFF,0x6F,0x6F,0xFF,0xFF,0xFF,/*":",10*/
0x00,
};
main(void)
{
IT0=1; //外部中斷0連沿觸發方式
EX0=1; //使能外部中斷0
EA=1; //開部中斷
P2=0xff;
P0=0xff;
TMOD=0x11;
TH0=THCO; //載入高8位初值
TL0=THLO; //載入低8位初值
EA=1; //打開總中斷
ET0=1; //開定時器中斷。若為0則表示關閉!
TR0=1; //打開定時器
while(1)
{
//////////計時程序//////////////////////////////
if(miao==60){fen++;miao=0;}
if(fen==60){ shi++;fen=0;}
if(shi==24){shi=0;}
/////////////////////////////////////////////
}
}
void timw0() interrupt 1
{
static unsigned char c=0;
TH0=THCO;
TL0=THLO;
c++;
if(c>200)
{
miao++;
c=0;
}
}
void int0() interrupt 0 //外部中斷0程序入口 當霍爾檢測到時,開始進入
{
xiezhi();
}
void xiezhi()
{
unsigned int i;
unsigned int k;
/////////////////////////////////////////////////////////////////
miao1=miao/10; //顯示秒的第二位
miao2=miao%10; //顯示秒的第一位
fen1=fen/10; //顯示分的第二位
fen2=fen%10; //顯示分的第二位
shi1=shi/10; //顯示時的第二位
shi2=shi%10; //顯示時的第二位
/////////////////////////時鐘顯示/////////////////////////////時分秒
for(i=shi1*8;i<=shi1*8+8;i++) //顯示 時
{
P0=ziku[i];
for(k=25;k>0;k--);
P0=0xff;
for(k=25;k>0;k--);
}
for(i=shi2*8;i<=shi2*8+8;i++)
{
P0=ziku[i];
for(k=25;k>0;k--); //
P0=0xff;
for(k=25;k>0;k--); //可以不要
}
for(i=80;i<=87;i++) // 87 數組字模 取兩點
{
P0=ziku[i];
for(k=25;k>0;k--);
P0=0xff;
for(k=25;k>0;k--);
}
/////////////////////////分鐘顯示///////////////////////////////
for(i=fen1*8;i<=fen1*8+8;i++)
{
P0=ziku[i];
for(k=25;k>0;k--);
P0=0xff;
for(k=25;k>0;k--);
}
for(i=fen2*8;i<=fen2*8+8;i++)
{
P0=ziku[i];
for(k=25;k>0;k--);
P0=0xff;
for(k=25;k>0;k--);
}
for(i=80;i<=87;i++)
{
P0=ziku[i];
for(k=25;k>0;k--);
P0=0xff;
for(k=25;k>0;k--);
}
//////////////////////////秒鐘顯示///////////////////////////////
for(i=miao1*8;i<=miao1*8+8;i++)
{
P0=ziku[i];
for(k=25;k>0;k--);
P0=0xff;
for(k=25;k>0;k--);
}
for(i=miao2*8;i<=miao2*8+8;i++)
{
P0=ziku[i];
for(k=25;k>0;k--);
P0=0xff;
for(k=25;k>0;k--);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -