研究基于单片机的多功能电子时钟的设计的意思和目的是什么
展开全部
意思是设计,目的是毕业
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
深圳市兴威帆电子技术有限公司
2023-06-12 广告
2023-06-12 广告
实时时钟模块可以找深圳市兴威帆电子技术有限公司,本公司具有经验丰富的开发工程师和应用工程师,致力于公司自主知识产权IC等产品的研发和技术支持,已开发出多款成熟的产品并大量生产、销售及出口,我公司高精度实时时钟模块产品获得多项国家专利,打破了...
点击进入详情页
本回答由深圳市兴威帆电子技术有限公司提供
展开全部
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit key0=P3^0;
sbit key1=P3^1;
sbit key2=P3^2;
sbit key3=P3^3;
sbit key4=P3^4;
sbit key5=P3^5;
sbit dula=P2^0;
sbit wet=P2^1;
sbit wef=P2^2;
uchar aa,m,s,ZZ,YY;
uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void delayms(uint xms);
void displaytime(uchar m,uchar s);
void displayzuo(uchar Z,ucharY);
void delayms(uint xms);
void keyscan();
void time();
void init();
void main()
{
init();
while(1)
{
keyscan();
time();
displaytime( m, s);
displayzuo(ZZ,YY);
}
}
void displaytime(uchar m,uchar s)
{
uchar qian,bai,shi,ge;
qian=m/10;bai=m%10;shi=s/10; ge=s%10;
P0=tab[qian];dula=1;dula=0;P0=0x00;
wef=0;P1=0x01;wet=1;wet=0; delayms(2);
P0=tab[bai];dula=1; dula=0;P0=0x00;
wef=0;P1=0x02;wet=1;wet=0; delayms(2);
P0=tab[shi];dula=1;dula=0;P0=0x00;
wef=0;P1=0x04;wet=1;wet=0;delayms(2);
P0=tab[ge]; dula=1; dula=0; P0=0x00;
wef=0; P1=0x08;wet=1;wet=0; delayms(2);
wef=0;P1=0x00;wet=1;wet=0;//锁存器复位
}
void displayzuo(uchar Z,uchar Y)
{
uchar zbai,zshi,zge, ybai,yshi,yge;
zbai=Z/100;zshi=Z%100/10;zge=Z%100%10;
ybai=Y/100;yshi=Y%100/10;yge=Y%100%10;
P0=tab[zge]; dula=1;dula=0;P0=0x00;
wet=0;P1=0x08;wef=1;wef=0; delayms(2);
P0=tab[zshi];dula=1;dula=0;P0=0x00;
wet=0;P1=0x04;wef=1;wef=0; delayms(2);
P0=tab[zbai]; dula=1;dula=0;P0=0x00;
wet=0; P1=0x02;wef=1;wef=0; delayms(2);
P0=tab[ybai];dula=1; dula=0; P0=0x00;
wet=0; P1=0x20;wef=1;wef=0; delayms(2);
P0=tab[yshi];dula=1; dula=0; P0=0x00;
wet=0;P1=0x40;wef=1;wef=0; delayms(2);
P0=tab[yge];dula=1;dula=0; P0=0x00;
wet=0;P1=0x80;wef=1;wef=0; delayms(2);
wet=0;P1=0x00;wef=1;wef=0; //锁存器复位
}
void delayms(uint xms)
{
int i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1; ET0=1;TR0=0;
}
void keyscan()
{
uchar temp;
if(key0==0)
{
delayms(1);
if(key0==0)
{
ZZ--;
if(ZZ<0)
ZZ=255;
while(!key0);
}
}
if(key1==0)
{
delayms(1);
if(key1==0)
{
ZZ++;
if(ZZ>255)
ZZ=0;
while(!key1);
}
}
if(key2==0)
{
delayms(1);
if(key2==0)
{
YY--;
if(YY<0)
YY=255;
while(!key2);
}
}
if(key3==0)
{
delayms(1);
if(key3==0)
{
YY++;
if(YY>255)
YY=0;
while(!key3);
}
}
if(key4==0)
{
delayms(1);
if(key4==0)
{
TR0=~TR0;
while(!key4);
}
}
if(key5==0)
{
delayms(1);
if(key5==0)
{
temp=YY;
YY=ZZ;
ZZ=temp;
while(!key5);
}
}
}
void time()
{
if(aa==20)
{
aa=0;
s++;
if(s==60)
{
s=0;
m++;
if(m==99)
{
m=0;
}
}
}
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
}
#define uchar unsigned char
#define uint unsigned int
sbit key0=P3^0;
sbit key1=P3^1;
sbit key2=P3^2;
sbit key3=P3^3;
sbit key4=P3^4;
sbit key5=P3^5;
sbit dula=P2^0;
sbit wet=P2^1;
sbit wef=P2^2;
uchar aa,m,s,ZZ,YY;
uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void delayms(uint xms);
void displaytime(uchar m,uchar s);
void displayzuo(uchar Z,ucharY);
void delayms(uint xms);
void keyscan();
void time();
void init();
void main()
{
init();
while(1)
{
keyscan();
time();
displaytime( m, s);
displayzuo(ZZ,YY);
}
}
void displaytime(uchar m,uchar s)
{
uchar qian,bai,shi,ge;
qian=m/10;bai=m%10;shi=s/10; ge=s%10;
P0=tab[qian];dula=1;dula=0;P0=0x00;
wef=0;P1=0x01;wet=1;wet=0; delayms(2);
P0=tab[bai];dula=1; dula=0;P0=0x00;
wef=0;P1=0x02;wet=1;wet=0; delayms(2);
P0=tab[shi];dula=1;dula=0;P0=0x00;
wef=0;P1=0x04;wet=1;wet=0;delayms(2);
P0=tab[ge]; dula=1; dula=0; P0=0x00;
wef=0; P1=0x08;wet=1;wet=0; delayms(2);
wef=0;P1=0x00;wet=1;wet=0;//锁存器复位
}
void displayzuo(uchar Z,uchar Y)
{
uchar zbai,zshi,zge, ybai,yshi,yge;
zbai=Z/100;zshi=Z%100/10;zge=Z%100%10;
ybai=Y/100;yshi=Y%100/10;yge=Y%100%10;
P0=tab[zge]; dula=1;dula=0;P0=0x00;
wet=0;P1=0x08;wef=1;wef=0; delayms(2);
P0=tab[zshi];dula=1;dula=0;P0=0x00;
wet=0;P1=0x04;wef=1;wef=0; delayms(2);
P0=tab[zbai]; dula=1;dula=0;P0=0x00;
wet=0; P1=0x02;wef=1;wef=0; delayms(2);
P0=tab[ybai];dula=1; dula=0; P0=0x00;
wet=0; P1=0x20;wef=1;wef=0; delayms(2);
P0=tab[yshi];dula=1; dula=0; P0=0x00;
wet=0;P1=0x40;wef=1;wef=0; delayms(2);
P0=tab[yge];dula=1;dula=0; P0=0x00;
wet=0;P1=0x80;wef=1;wef=0; delayms(2);
wet=0;P1=0x00;wef=1;wef=0; //锁存器复位
}
void delayms(uint xms)
{
int i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1; ET0=1;TR0=0;
}
void keyscan()
{
uchar temp;
if(key0==0)
{
delayms(1);
if(key0==0)
{
ZZ--;
if(ZZ<0)
ZZ=255;
while(!key0);
}
}
if(key1==0)
{
delayms(1);
if(key1==0)
{
ZZ++;
if(ZZ>255)
ZZ=0;
while(!key1);
}
}
if(key2==0)
{
delayms(1);
if(key2==0)
{
YY--;
if(YY<0)
YY=255;
while(!key2);
}
}
if(key3==0)
{
delayms(1);
if(key3==0)
{
YY++;
if(YY>255)
YY=0;
while(!key3);
}
}
if(key4==0)
{
delayms(1);
if(key4==0)
{
TR0=~TR0;
while(!key4);
}
}
if(key5==0)
{
delayms(1);
if(key5==0)
{
temp=YY;
YY=ZZ;
ZZ=temp;
while(!key5);
}
}
}
void time()
{
if(aa==20)
{
aa=0;
s++;
if(s==60)
{
s=0;
m++;
if(m==99)
{
m=0;
}
}
}
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有先成的35837258
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询