標題: 8段數(shù)碼管可調(diào)數(shù)字時鐘 [打印本頁]
作者: Sugar唐 時間: 2017-12-26 20:58
標題: 8段數(shù)碼管可調(diào)數(shù)字時鐘
#include<reg51.h> //頭文件
#define uchar unsigned char
uchar codeseg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
uchar dis[8]={0,0,0,0,0,0,0,0};
uchar hour=0,min=0,sec=0; //定義三個變量表示時、分、秒
uchar t1_counter=0;
bit kp=0;
void delayms(uchar ms)
{
uchari,j;
for(j=ms;j>0;j--)
for(i=0;i<123;i++);
}
void display (void)
{
uchar i;
for(i=0;i<8;i++)
{
P2=i;
P0=seg[dis];
delayms(1);
}
}
void S1_fun(void)
{
if(++hour==24) //當“時”加24時,重新賦值0
hour=0;
}
void S2_fun(void)
{
if(--hour==255)
hour=23;
}
void S3_fun(void)
{
if(++min==60)
min=0;
}
void S4_fun(void)
{
if(--min==255)
min=59;
}
void key(void)
{
if((P3&0x0f)!=0x0f)
{
delayms(10);
if(((P3&0x0f)!=0x0f)&&(kp==0))
{
kp=1;
if((P3&0x0f)==0x0e)S1_fun();
if((P3&0x0f)==0x0d)S2_fun();
if((P3&0x0f)==0x0b)S3_fun();
if((P3&0x0f)==0x07)S4_fun();
}
}
elsekp=0;
}
void main(void)
{
TMOD|=0X10;
TH1=15536/256;
TL1=15536%256;
TR1=1;EA=1; ET1=1;
display();
while(1)
{
key();
dis[0]=hour/10;
dis[1]=hour%10;
dis[2]=10;
dis[3]=min/10;
dis[4]=min%10;
dis[5]=10;
dis[6]=sec/10;
dis[7]=sec%10;
display();
}
}
void t1_int(void) interrupt 3 //定時器1函數(shù)
{
TH1=15536/256;
TL1=15536%256;
if(++t1_counter==20)
{
t1_counter=0;
if(++sec==60)
{
sec=0;
if(++min==60)
{
min=0;
if(++hour==24)
hour=0;
}
}
}
}
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |