单片机数字时钟系统设计利用6个7段数码管显示时间,分别用二个7段数码管显示时,分,秒,时按24小时计。。 20

有pcb图的吗... 有pcb图的吗 展开
 我来答
百度网友f91146c
2012-05-30
知道答主
回答量:18
采纳率:0%
帮助的人:9.8万
展开全部
PCB图我就没有只有原理图和程序。你要吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b918bbd91
2012-06-08 · 超过24用户采纳过TA的回答
知道答主
回答量:182
采纳率:0%
帮助的人:78.7万
展开全部
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar aa,h,hh,hl,m,mh,ml,s,sh,sl,ah,am,as,
ahh,ahl,amh,aml,ash,asl,a,b,c;
sbit dula=P2^6;
sbit wela=P2^7;
sbit dian=P0^7;
sbit fm=P2^3;
sbit key1=P3^4;
sbit key2=P3^5;
sbit key3=P3^6;
sbit key4=P3^7;
sbit d1=P1^0;
uchar code table[]={ 0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f};
void display(uchar hh,uchar hl,uchar mh,uchar ml,uchar sh,uchar sl);//显示函数
void delay(uint z) ;//延时函数
void init() ;//初始化话函数
void chan();//调时函数
uchar alarm(uchar ah1,uchar am1);//调闹铃函数
uchar trans(uchar h,uchar m,uchar s);//显示转换函数
void time(); //时间函数
void main()
{
init(); //初始化
while(1)
{
alarm(); //调闹钟
chan(); //调时
time(); //时间
if(ah==h&&am==m)
{
if(s%2==0)
fm=0;
else
fm=1;
}
if(!(ah==h&&am==m))
fm=1;
}
}

uchar trans(uchar h,uchar m,uchar s)//时间转换
{
//a=h;
//b=m;
//c=s;
hh=h/10;
hl=h%10;
mh=m/10;
ml=m%10;
sh=s/10;
sl=s%10;
return (hh,hl,mh,ml,sh,sl) ;
}

void time()//时间函数
{
if(aa==20)
{
aa=0;
s++;
//fm=1;
if(s==60)
{
s=0;
m++;
if(m==60)
{
m=0;
h++;
if(h==24)
h=0;
}
}
}
trans(h,m,s);
display(hh,hl,mh,ml,sh,sl);
//return (h,m,s);
}

void chan() //调时行数
{
if(key1==0)
{
h++;
while(key1==0);
if(h==24)
h=0;
}
if(key2==0)
{
m++;
while(key2==0);
if(m==60)
{
m=0;
h++;
if(h==24)
h=0;
}
}
}

uchar alarm(uchar ah1,uchar am1)//调闹钟函数
{
loop:if(key3==0)
{
while(1)
{

if(key1==0)
{
ah++;
while(key1==0);
if(ah==24)
ah=0;
}
if(key2==0)
{
am++;
while(key2==0);
if(am==60)
{
am=0;
ah++;
if(ah==24)
ah=0;
}
}
trans(ah,am,as);
display(hh,hl,mh,ml,sh,sl);
if(key4==0)
goto loop;
}
}
return (ah,am);
}

void delay(uint z) //延时函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

void display(uchar hh,uchar hl,uchar mh,uchar ml,uchar sh,uchar sl)//显示函数
{
dula=1;
P0=table[hh];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delay(1);

dula=1;
P0=table[hl];
dian=1;
dula=0;
P0=0xff;
wela=1;
P0=0x7d;
wela=0;
delay(1);

dula=1;
P0=table[mh];
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delay(1);

dula=1;
P0=table[ml];
dian=1;
dula=0;
P0=0xff;
wela=1;
P0=0x77;
wela=0;
delay(1);

dula=1;
P0=table[sh];
dula=0;
P0=0xff;
wela=1;
P0=0xef;
wela=0;
delay(1);

dula=1;
P0=table[sl];
dula=0;
P0=0xff;
wela=1;
P0=0xdf;
wela=0;
delay(1);
}

void init() //初始化函数
{
wela=0;
dula=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}

void timer0() interrupt 1 //中断函数
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式