一、 设计任务
利用可编程逻辑器件,设计一个多功能数字钟系统。
二、设计要求
1、能实现小时、分钟和秒计时的显示;
2、能够对数字钟的小时和分钟进行校对设置;
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit le=P1^0;
sbit key1=P3^7;
sbit key2=P3^6;
sbit key3=P3^5;
uchar hour,minute,second,t0,a8,a7,a5,a4,a2,a1;
void init();
void display(uchar a8,uchar a7,uchar a5,uchar a4,uchar a2,uchar a1);
uchar discode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67};
void delay(uint z)
{
uint x,y;
for(x=0;x<z;x++)
for(y=0;y<120;y++);
}
void main()
{
init();
while(1)
{
if(key1==0)
{
delay(10);
if(key1==0)
{
second++;
if(second==60)
{
second=0;
}
a1=second%10;
a2=second/10;
}while(key1==0);
}
if(key2==0)
{
delay(10);
if(key2==0)
{
minute++;
if(minute==60)
{
minute=0;
}
a4=minute%10;
a5=minute/10;
}while(key2==0);
}
if(key3==0)
{
delay(10);
if(key3==0)
{
hour++;
if(hour==24)
{
hour=0;
}
a7=hour%10;
a8=hour/10;
}while(key3==0);
}
display(a8,a7,a5,a4,a2,a1);
}
}
void init()
{
hour=12;
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;
t0++;
if(t0==20)
{
t0=0;
second++;
if(second==60)
{
second=0;
minute++;
if(minute==60)
{
minute=0;
hour++;
if(hour==24)
{
hour=0;
}
}
}
a2=second/10;
a1=second%10;
a5=minute/10;
a4=minute%10;
a8=hour/10;
a7=hour%10;
}
}
void display(uchar a8,uchar a7,uchar a5,uchar a4,uchar a2,uchar a1)
{
P2=0x7f;
le=1;
P0=discode[a8];
le=0;
delay(1);
P2=0xbf;
le=1;
P0=discode[a7];
le=0;
delay(1);
P2=0xdf;
le=1;
P0=0x40;
le=0;
delay(1);
P2=0xef;
le=1;
P0=discode[a5];
le=0;
delay(1);
P2=0xf7;
le=1;
P0=discode[a4];
le=0;
delay(1);
P2=0xfb;
le=1;
P0=0x40;
le=0;
delay(1);
P2=0xfd;
le=1;
P0=discode[a2];
le=0;
delay(1);
P2=0xfe;
le=1;
P0=discode[a1];
le=0;
delay(1);
}
注意:J16接单片机P2口,J12接单片机P0口。
追问需要什么元器件啊?给我个详细的元器件的清单和元器件的封装名称喔!谢谢你的帮助!
追答你们是用贴片的还是用直插的呀!型号可以给你封装要你自己定了,因为要根据你买的元器件定封装的。
单片机:STC90C516RD+ 1片
锁存芯片:74HC573D 1片
四位八段共阴极数码管 英寸数自己定 2个
剩下的就是单片机最小控制系统常见的东西了照着书画就可以了。晶振要12MHZ的。