|
#include "STC15.h" //函数声明
#include <intrins.h>
#define unchar unsigned char
#define uint unsigned int
sbit key1=P5^1;
sbit key2=P3^2;
sbit seg1=P5^4;
sbit seg2=P3^3;
sbit seg3=P3^7;
sbit seg4=P5^5;
sbit a=P1^1;
sbit b=P3^6;
sbit c=P1^4;
sbit d=P1^3;
sbit e=P1^2;
sbit f=P1^0;
sbit g=P1^5;
sbit h=P3^2;
unsigned char int_time;
unsigned char sec=59;
unsigned char min=59;
unsigned char hour=23;
unsigned char tcnt;
unsigned char code disdata[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
0x82,0xf8,0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e,0xFF};
void delay10us() //12MHz
{
unsigned char i;
_nop_();
i=25;
while(--i);
}
void delay10ms() //11.0592MHz
{
unsigned char i,j;
j=108;
i=145;
do{
while(--j);
}while(--i);
}
void displayHH1(unsigned char q)
{
switch(q)
{
case 0xc0:
{a=b=c=d=e=f=0;g=h=1;};break; //0
case 0xf9:
{b=c=0;a=d=e=f=g=h=1;};break; //1
case 0xa4:
{a=b=g=d=e=0;f=c=h=1;};break; //2
case 0xb0:
{a=b=c=d=g=0;e=f=h=1;};break; //3
case 0x99:
{b=c=g=f=0;a=d=e=h=1;};break; //4
case 0x92:
{a=c=d=g=f=0;b=e=h=1;};break; //5
case 0x82:
{a=c=d=e=f=g=0;b=h=1;};break; //6
case 0xf8:
{a=b=c=0;g=d=e=f=h=1;};break; //7
case 0x80:
{a=b=c=d=e=f=g=0;h=1;};break; //8
case 0x90:
{a=b=c=d=g=f=0;e=h=1;};break; //9
}
}
/////////////////////////////////////////////////////
void xian(uint num,uint num1)
{
seg1=1;
displayHH1(disdata[num/10]);
delay10us();
seg1=0;
seg2=1;
displayHH1(disdata[num%10]);
delay10us();
seg2=0;
seg3=1;
displayHH1(disdata[num1/10]);
delay10us();
seg3=0;
seg4=1;
displayHH1(disdata[num1%10]);
delay10us();
seg4=0;
}
/////////////////////////////////////////////////////
void main()
{
P5M1=0X00;
P5M0=0X00;
P3M1=0X00;
P3M0=0X00;
P1M1=0X00;
P1M0=0X00;
TMOD=0x01;
EA=1;
ET0=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
int_time=0;
sec=0;
min=0;
hour=12;
while(1)
{
xian(hour,min);
if(key1==0)
{
if(key1==0)
if(++min==60)
min=0;
while(!key1);
}
if(key2==0)
{
if(key2==0)
if(++hour==13)
hour=1;
while(!key2);
}
}
}
/////////////////////////////////////////////////////
void time_int0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
int_time++;
if(int_time==20)
{
int_time=0;
sec++;
}
if(sec==60)
{
sec=0;
min++;
}
if(min==60)
{
min=0;
hour++;
}
if(hour==13)
{
hour=1;
}
}
/////////////////////////////////////////////////////
|
-
1.jpg
(50.5 KB, 下载次数: 20)
-
2.jpg
(93.92 KB, 下载次数: 19)
-
-
数码时钟.pdf
83.58 KB, 下载次数: 2, 下载积分: 黑币 -5
|