历史上的今天
返回首页

历史上的今天

今天是:2025年03月05日(星期三)

正在发生

2020年03月05日 | 基于51单片机和数码管的万年历程序

2020-03-05 来源:eefocus

可实现功能:

启动程序数码管按照××-××-××格式显示时分秒并走时

按下C1按钮后按照××-××-××格式显示年月日

按下C3调时模式按钮时分秒/年月日静止,指示灯亮起,进入调时模式

先按C2选位按钮再按下C0加一按钮,对应的位置改变

再次按下C3按钮退出调时模式,继续走时

 

#include
#define uChar unsigned char
#define uInt unsigned int

uChar a []={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; 
uChar b []={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; 
uChar second=00,minute=00,hour=10,year=17,month=01,day=11,count;

sbit Key1 = P3^7; //计时停止
sbit Key2 = P3^6; //调位
sbit Key3 = P3^0; //加一
sbit Key4 = P3^2; //切换
sbit LED1 = P1^7;


void Delayms(uInt t)
{
uInt i,j;
for(i=0;ifor(j=0;j<125;j++)
;
}

 

void Dispaly1(uChar second,uChar minute,uChar hour)
{

P2=b[0];
P0=a[hour/10];
Delayms(5);


P2=b[1];
P0=a[hour%10];
Delayms(5);

P2=b[2];
P0=0x40;
Delayms(5);

P2=b[3];
P0=a[minute/10];
Delayms(5);


P2=b[4];
P0=a[minute%10];
Delayms(5);

P2=b[5];
P0=0x40;
Delayms(5);

P2=b[6];
P0=a[second/10];
Delayms(5);


P2=b[7];
P0=a[second%10];
Delayms(5);


}

 


void Dispaly2(uChar day,uChar month,uChar year)
{

P2=b[0];
P0=a[day/10];
Delayms(5);


P2=b[1];
P0=a[day%10];
Delayms(5);

P2=b[2];
P0=0x40;
Delayms(5);

P2=b[3];
P0=a[month/10];
Delayms(5);


P2=b[4];
P0=a[month%10];
Delayms(5);

P2=b[5];
P0=0x40;
Delayms(5);

P2=b[6];
P0=a[year/10];
Delayms(5);


P2=b[7];
P0=a[year%10];
Delayms(5);


}

void Keyscan1()
{
static uChar i=0,j=0;
if(Key1==0)
{
Delayms(10); //消抖
if(Key1==0)
while(!Key1); //等待按键弹起
i++;
}
if(i%2==1)
{
LED1=0;
TR0=0;
}
if(i%2==0)
{
LED1=1;
TR0=1;
}
if(Key2==0)
{
Delayms(10);
if(Key2==0)
while(!Key2);
j++;
}
if(j%4==1)
{
if(Key3==0)
{
Delayms(10);
if(Key3==0)
while(!Key3);
second++;
if(second==60)
second=0;
}
}
if(j%4==2)
{
if(Key3==0)
{
Delayms(10);
if(Key3==0)
while(!Key3);
minute++;
if(minute==60)
minute=0;
}
}
if(j%4==3)
{
if(Key3==0)
{
Delayms(10);
if(Key3==0)
while(!Key3);
hour++;
if(hour==24)
hour=0;
}
}




}

void Keyscan2()
{
static uChar m=0,n=0;
if(Key1==0)
{
Delayms(10);
if(Key1==0)
while(!Key3);
m++;
}
if(m%2==1)
{
LED1=0;
TR0=0;
}
if(m%2==0)
{
LED1=1;
TR0=1;
}
if(Key2==0)
{
Delayms(10);
if(Key2==0)
while(!Key2);
n++;
}
if(n%4==1)
{
if(Key3==0)
{
Delayms(10);
if(Key3==0)
while(!Key3);
day++;
if(day==30)
day=0;
}
}
if(n%4==2)
{
if(Key3==0)
{
Delayms(10);
if(Key3==0)
while(!Key3);
month++;
if(month==12)
month=0;
}
}
if(n%4==3)
{
if(Key3==0)
{
Delayms(10);
if(Key3==0)
while(!Key3);
year++;
if(year==99)
year=0;
}
}




}

void main()
{

TMOD=0x01; 
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
static uChar h=0;
if(Key4==0)
{
Delayms(10);
if(Key4==0)
while(!Key4);
h++;
}
if(h%2==1)
{
Dispaly2(year,month,day);
Keyscan2();
}
if(h%2==0)
{
Dispaly1(second,minute,hour);
Keyscan1();
}

}
}

void time0_int(void) interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
count++;
if(count==100)
{
count=0;
second++;
if(second==60)
{
second=0;
minute++;
if(minute==60)
{
minute=0;
hour++;
if(hour==24)
{
hour=0;
day++;
if(day==30)
{
day=0;
month++;
if(month==12)
{
month=0;
year++;
if(year==99)
{
year=0;
}
}
}
}
}
}
}
}


推荐阅读

史海拾趣

Hantronix公司的发展小趣事

随着业务的不断增长,HANBIT Electronics意识到全球化布局的重要性。2010年,公司在韩国本土之外的首个生产基地——中国东莞分公司正式成立。这一举措不仅有效降低了生产成本,还大大缩短了产品交付周期,提高了对亚洲市场的响应速度。同时,公司还积极在欧洲和美国等地设立研发中心和销售网络,实现了从研发、生产到销售的全球化布局。这一战略调整极大地增强了HANBIT Electronics在全球电子市场的竞争力。

EOZ Secme公司的发展小趣事

随着国内市场的饱和,EOZ Secme开始积极寻求海外市场的拓展。公司制定了详细的国际化战略,通过参加国际展会、建立海外销售渠道等方式,逐步打开了国际市场的大门。同时,EOZ Secme还积极与国际知名企业开展合作,共同研发新产品,拓展业务领域。这些努力使得EOZ Secme在国际市场上的影响力不断增强。

對餘科技(DIOFIT)公司的发展小趣事

在市场竞争日益激烈的情况下,DIOFIT公司凭借敏锐的市场洞察力和灵活的营销策略,不断拓展市场份额。他们针对不同地区、不同行业的需求,制定个性化的产品推广方案,通过线上线下相结合的方式,加强品牌推广和渠道建设。同时,DIOFIT公司还积极参与各类展会和论坛,与业界同仁交流合作,拓展国际视野,为公司的发展注入新的活力。

智烽维(CDA)公司的发展小趣事

智烽维(CDA)于2007年成立,专注于超级电容器(法拉电容)的研发和生产。在创立初期,公司面临着资金短缺、技术挑战和市场认知度低等多重困难。然而,凭借对技术的执着追求和对市场的敏锐洞察,智烽维成功推出了卷绕型超级电容器产品,并逐渐在市场上建立起了一定的知名度。

Everett Charles Technologies (ECT)公司的发展小趣事

1965年,Everett Charles Technologies (ECT) 公司正式成立,标志着其在电子测试系统硬件与软件领域的起点。ECT的创始人凭借对电子技术的深刻理解和市场需求的敏锐洞察,成功开发出了一系列符合工业标准的产品,包括POGO探针、ValuGrid测试治具等。这些产品的推出,不仅奠定了ECT在电子测试领域的基础,也为公司的后续发展提供了强大的动力。

聚辰(Giantec)公司的发展小趣事

自1994年(部分资料显示为1993年,但此处采用最新信息)成立以来,港源公司始终将技术创新视为企业发展的核心驱动力。公司专注于轻触开关、微动开关、AC/DC插座、变压器等开关零组件产品的研发,通过引进国内外先进技术,并自主成功研发了自动化生产设备和检测设备,实现了生产自动化,大幅提升了产品质量和生产效率。港源公司还积极参与国际技术交流与合作,与众多行业标杆客户长期紧密合作,能够尽早了解市场需求,快速响应并推出符合行业标准的新产品,从而引领了电子开关行业的发展方向。

问答坊 | AI 解惑

好用的基准电压源

好用的基准电压源…

查看全部问答>

加性噪声

调制信道对信号的影响除乘性干扰外,还有加性干扰(即加性噪声)。加性噪声虽然独立于有用信号,但它却始终存在,干扰有用信号,因而不可避免地对通信造成危害。本节讨论信道中的加性噪声,内容包括信道内各种噪声的分类及性质,以及定性地说明它们 ...…

查看全部问答>

一个讲电源测试的PPT(very good)

一个讲电源测试的PPT(very good)…

查看全部问答>

求VxWorks教程

想进入VxWorks领域,各位谁有点入门的资料,能否赐予?感激不尽! 邮箱:siuhuali@163.com 没有多少分了,抱歉!…

查看全部问答>

memory-mapped registers 的具体含义?

RT TI DSP中memory-mapped registers是指实际在DSP中存在的寄存器还是仅在存储器中存在的呢? 小弟很菜,望各位大哥多多指教!…

查看全部问答>

请问EVC下开发的应用程序如何下载到目标平台上?

我用PB编译好了winCE内核后,已经把镜像下载到了目标平台上,跑起来了。现在下一步是开发应用程序,就是把evc下的应用程序也下载到目标平台上。我不想使用把应用程序编译到内核然后一起下载到目标板上的的方法,觉得那样不够灵活。请问内核下载到目 ...…

查看全部问答>

可原地旋转的汽车

如果没有过硬的驾驶技巧,是很难让汽车实现360度的原地旋转的。然而有了我们今天为大家介绍的这款概念车,这种“特技”就变成了家常便饭。         这款概念车的四个轮子与车体的连接处都被设计成了弧形的,因此四个轮子 ...…

查看全部问答>

请教关于stm32与电脑的485通讯

当波特率为19200,38400或者57600时,电脑接收到的数据正常,当用9600时,电脑接收到的数据有时候被分成两部分。       这会是什么原因,请指点。 图片.pdf (36.88 KB) 下载次数:63 2009-12-7 17: ...…

查看全部问答>

TI阅读:电压基准如何影响 ADC 性能,第 3 部分

本帖最后由 dontium 于 2015-1-23 11:40 编辑 电压基准如何影响 ADC 性能,第 3 部分 …

查看全部问答>

申请LM3S8962开发板

实施开始项目,下位机采用单片机采集温度,电压等,通过无线传输到主板LM3S8962.再通过网口传到上位机LABVIEW上,实现采集。…

查看全部问答>