电子时钟课程设计
采用4位数码管,高两位显示小时,低两位显示秒,时间采用24小时制要求:1.具有顺计时2.闹铃3.倒计时功能当然可以调整时间有的麻烦发到邮箱974307742@qq.com...
采用4位数码管,高两位显示小时,低两位显示秒,时间采用24小时制 要求:1.具有顺计时2.闹铃3.倒计时 功能 当然可以调整时间 有的麻烦发到邮箱 974307742@qq.com谢谢!我已经设计原理图 可以根据它编写程序
展开
1个回答
展开全部
这是一个时分秒的程序,希望对你有帮助,其他功能可以自己加吧
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0xbf,0x86,
0xdb,0xcf,0xe6,0xed,
0xfd,0x87,0xff,0xef};
uchar t,num1,num2,num3;
sbit dula=P2^6;
sbit wela=P2^7;
sbit key2=P3^4;
sbit key3=P3^5;
sbit key5=P3^7;
uchar miao1,miao2,fen1,fen2,shi1,shi2;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void keyscan()
{
if(key2==0)
{
delay(20);
if(key2==0)
{
num1++;
}
}
while(!key2);
if(key3==0)
{
delay(20);
if(key3==0)
{
num2++;
}
}
while(!key3);
if(key5==0)
{
delay(200);
if(key5==0)
{
num3++;
}
}
while(!key5);
}
void main()
{
TMOD=0x01;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
miao1=num1/10;
miao2=num1%10;
fen1=num2/10;
fen2=num2%10;
shi1=num3/10;
shi2=num3%10;
keyscan();
wela=1;
P0=0xdf;
wela=0;
dula=1;
P0=table[miao2];
dula=0;
delay(5);
wela=1;
P0=0xef;
wela=0;
P0=0xff;
dula=1;
P0=table[miao1];
dula=0;
delay(5);
wela=1;
P0=0xf7;
wela=0;
P0=0xff;
dula=1;
P0=table[fen2];
dula=0;
delay(5);
wela=1;
P0=0xfb;
wela=0;
P0=0xff;
dula=1;
P0=table[fen1];
dula=0;
delay(5);
wela=1;
P0=0xfd;
wela=0;
P0=0xff;
dula=1;
P0=table[shi2];
dula=0;
delay(5);
wela=1;
P0=0xfe;
wela=0;
dula=1;
P0=0xff;
P0=table[shi1];
dula=0;
delay(5);
}
}
void t0_timer() interrupt 1
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
t++;
if(t==20)
{
t=0;
num1++;
if(num1==60)
{
num1=0;
num2++;
if(num2==60)
{
num2=0;
num3++;
if(num3==24)
{
num3=0;
}
}
}
}
}
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0xbf,0x86,
0xdb,0xcf,0xe6,0xed,
0xfd,0x87,0xff,0xef};
uchar t,num1,num2,num3;
sbit dula=P2^6;
sbit wela=P2^7;
sbit key2=P3^4;
sbit key3=P3^5;
sbit key5=P3^7;
uchar miao1,miao2,fen1,fen2,shi1,shi2;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void keyscan()
{
if(key2==0)
{
delay(20);
if(key2==0)
{
num1++;
}
}
while(!key2);
if(key3==0)
{
delay(20);
if(key3==0)
{
num2++;
}
}
while(!key3);
if(key5==0)
{
delay(200);
if(key5==0)
{
num3++;
}
}
while(!key5);
}
void main()
{
TMOD=0x01;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
miao1=num1/10;
miao2=num1%10;
fen1=num2/10;
fen2=num2%10;
shi1=num3/10;
shi2=num3%10;
keyscan();
wela=1;
P0=0xdf;
wela=0;
dula=1;
P0=table[miao2];
dula=0;
delay(5);
wela=1;
P0=0xef;
wela=0;
P0=0xff;
dula=1;
P0=table[miao1];
dula=0;
delay(5);
wela=1;
P0=0xf7;
wela=0;
P0=0xff;
dula=1;
P0=table[fen2];
dula=0;
delay(5);
wela=1;
P0=0xfb;
wela=0;
P0=0xff;
dula=1;
P0=table[fen1];
dula=0;
delay(5);
wela=1;
P0=0xfd;
wela=0;
P0=0xff;
dula=1;
P0=table[shi2];
dula=0;
delay(5);
wela=1;
P0=0xfe;
wela=0;
dula=1;
P0=0xff;
P0=table[shi1];
dula=0;
delay(5);
}
}
void t0_timer() interrupt 1
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
t++;
if(t==20)
{
t=0;
num1++;
if(num1==60)
{
num1=0;
num2++;
if(num2==60)
{
num2=0;
num3++;
if(num3==24)
{
num3=0;
}
}
}
}
}
深圳市兴威帆电子技术有限公司
2023-06-12 广告
2023-06-12 广告
时钟模块有许多选择,这里为您提供几家广泛应用的模块,并询问一些普遍问题:1. Arduino - 这是一个非常受欢迎的选择,因为它易于使用,价格实惠,且能与多种传感器连接。此外,它也具有可编程功能和Wi-Fi /蓝牙功能。2. Raspbe...
点击进入详情页
本回答由深圳市兴威帆电子技术有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询