电子课程设计做的一个电子时钟,本人新手,请各位大虾别笑话
#include <reg51.h>#define LaoBai unsigned char
#define Liyuchao unsigned int
LaoBai code GY[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
Liyuchao second=0,minter=0,hour=12;
Liyuchao sshi,sge,mge,mshi,hshi,hge;
static char ji_shu_zhong_duan_ci_shu=0;
sbit P21=P2^1;
sbit P22=P2^2;
sbit P23=P2^3;
sbit P24=P2^4;
sbit P25=P2^5;
sbit P26=P2^6;
sbit P27=P2^7;
sbit P20=P2^0;
sbit P10=P1^0;
sbit P11=P1^1;
void delay()
{
LaoBai i;
for(i=0;i<15;i++);
}
void int1()interrupt 1 using 2
{
TH0=0x4C;
TL0=0x00;
ji_shu_zhong_duan_ci_shu++;
if(minter==60)minter=0;
if(hour==24)hour=0;
}
void main()
{
TMOD=0x01;
TH0=0x4C;
TL0=0x00;
EA=1;
ET0=1;
TR0=1;
for(;;)
{
sshi=second/10;
sge=second%10;
mshi=minter/10;
mge=minter%10;
hshi=hour/10;
hge=hour%10;
P0=GY;
P27=1;
delay();
P27=0;
P0=GY;
P26=1;
delay();
P26=0;
P0=0xBF;
P25=1;
delay();
P25=0;
P0=GY;
P24=1;
delay();
P24=0;
P0=GY;
P23=1;
delay();
P23=0;
P0=0xBF;
P22=1;
delay();
P22=0;
P0=GY;
P21=1;
delay();
P21=0;
P0=GY;
P20=1;
delay();
P20=0;
if(ji_shu_zhong_duan_ci_shu==20)
{ ji_shu_zhong_duan_ci_shu=0;
second++;
if(second==60)
{
second=0;minter++;
if(minter==60)
{
minter=0;hour++;
if(hour==24)
hour=0;
}
}
else if(P10==0)minter++;
else if(P11==0)hour++;
}
}
} 回复【楼主位】guyong2012
-----------------------------------------------------------------------
上图http://cache.amobbs.com/bbs_upload782111/files_44/ourdev_667995CUVJIT.jpg
(原文件名:未命名.jpg) 这个可以练练手,做电子钟的话,可以用时钟芯片,像DS1302,PCF8563等都可以的。 必学的东东~ 回复【楼主位】guyong2012
-----------------------------------------------------------------------
上实物图:http://cache.amobbs.com/bbs_upload782111/files_45/ourdev_672297Y8DRLN.jpg
(原文件名:未命名.jpg) 回复【5楼】guyong2012
-----------------------------------------------------------------------
直接用上拉电阻驱动的。。。没有用三极管,锁存器之类的 这样的一般不准,大概一小时就慢6分钟!! mark 大大大
页:
[1]