电路很简单 8位共阴数码管 (如果没有买的可以买2个四位数码管) 段选接P2口 位选接p1口,用stc单片机可以直接连接,两个按键接p1.6 和p1.7,实现时间的调整功能.完整程序代码下载地址:http://www.51hei.com/f/dzszkt.rar
这个就是我自己弄的程序小时钟的:
#include
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0xff};
uchar code kai[]={0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7};
sbit tiao=P1^6;
sbit gai=P1^7;
uchar hour,min,sec,e,set,dada,x,i,j,u,v,w,s,m,n,p,q;
void delay(uchar k)
{
uchar a,b;
for(a=0;a
for(b=0;b<100;b++)
{
;
}
}
}
void time_cond(void)
{
if(sec==59)
{
sec=0;
min++;
}//sec
if(min==59)
{
min=0;
hour++;
}//min
if(hour==23)
{
hour=0;
}//hour
}//time_con
void xianshi(uchar i,j,u,v,w,s)
{
P2=table[i];
P1=kai[0];
delay(5);
P2=table[j];
P1=kai[1];
delay(5);
P2=table[p];
P1=kai[2];
delay(5);
P2=table[u];
P1=kai[3];
delay(5);
P2=table[v];
P1=kai[4];
delay(5);
P2=table[q];
P1=kai[5];
delay(5);
P2=table[w];
P1=kai[6];
delay(5);
P2=table[s];
P1=kai[7];
delay(5);
}
void KEY_tiao(void)
{
if(gai==0)
{
e++;
}
if(e>3)
{
e=1;
}
delay(200);
}//tiaozheng
void display_h(void)
{
P2=table[i];
P1=kai[0];
delay(20);
P2=table[j];
P1=kai[1];
delay(20);
P2=table[11];
P1=kai[0];
delay(20);
P2=table[11];
P1=kai[1];
delay(20);
i=hour/10;
j=hour%10;
}//display_h
void display_m(void)
{
P2=table[u];
P1=kai[3];
delay(20);
P2=table[v];
P1=kai[4];
delay(20);
P2=table[11];
P1=kai[3];
delay(20);
P2=table[11];
P1=kai[4];
delay(20);
u=min/10;
v=min%10;
}//display_m
void tiaozheng(void)
{
if(gai==0)
TR0=0;
KEY_tiao();
switch(e)
{
case 1 :{
if(tiao==0)
{
hour++;
display_h();
if(hour>24)
{
hour=0;
}
}
}//case 1
break;
case 2 :{
if(tiao==0)
{
min++;
display_m();
if(min>60)
{
min=0;
}
}
}//case 2
break;
}//switch
}//tiaozheng[page]
void Timer_init()
{
ET0=0;
TCON=0x00;
TMOD=0x01;//工作方式1
TH0=0x3c;
TL0=0xaf;//定时50mS,12mHz
ET0=1;
}//Timer_init
void Timer_Start()
{
TR0=1;
}//Timer_Start
void Timer_interrupt(void) interrupt 1 using 0
{
EA=0;
dada++;
if(dada==20)
{
dada=0;
sec++;
}
EA=1;
TH0=0x3c;
TL0=0xaf;
}//Timer_interrupt
void Int1_interrupt(void) interrupt 2 using 2
{
TR0=0;
}//Int1_interrputd
void Int0_interrupt(void) interrupt 0 using 1
{
TR0=1;
}//Int0_interrput
void main(void)
{
EA=1;
EX0=1;
EX1=1;
Timer_init();
Timer_Start();
while(1)
{
xianshi(i,j,u,v,w,s);
time_cond();
i=hour/10;
j=hour%10;
u=min/10;
v=min%10;
w=sec/10;
s=sec%10;
p=10;
q=10;
tiaozheng();
}//while
}//main
上一篇:51串口通信程序(带详细注释)
下一篇:LCD12232串行显示C51程序
推荐阅读最新更新时间:2024-03-16 14:25
设计资源 培训 开发板 精华推荐
- ADI有奖下载活动之19:ADI可编程逻辑控制器(PLC)解决方案(更新版)
- TI 技术大咖带你领略独一无二的MCU世界 推荐、抢楼全有礼!
- 学视频,晒WEBENCH® 设计方案,免费获得TI样片!
- TI史上最强音视频DSP—DM6467之SEED开发板全套资源
- 我与BeagleBone 有个约会!
- 下载安森美半导体无线与可穿戴便携解决方案
- 有奖报名|TI MSPM0 在【电力输送和工厂自动化与控制系统】、【家用电器和电机控制】中的典型应用
- 安森美有奖直播|适用于光储充的SiC及IGBT隔离栅极驱动器方案
- 英飞凌MERUS™ D类音频解决方案|【阅读赢好礼,下单送开发板】
- 泰克完整LED驱动测试方案 领跑节能亮化新时代