資源簡介
里面有兩個(gè)程序,一種為簡單的數(shù)字鐘+萬年歷,一種為按鍵較多的數(shù)字鐘+萬年歷,都是用數(shù)碼管顯示,另外兩個(gè)程序都附帶protues仿真圖,且已調(diào)通,程序也不需改,另外還有靜態(tài)顯示

代碼片段和文件信息
#include
#define?uchar?unsigned?char
#define?uint?unsigned?int
uint?T0_countercount;
uchar?code?Tab[]={
0xc00xf90xa40xb0
0x990x920x820xf8
0x800x900xbf}; ???//數(shù)字編碼
uchar?hour=00min=59sec=50b=0i;//初始化顯示
uint?mon=10day=22year=2013a;
/*****控制按鈕********/
sbit?fuwei=P1^3;
sbit?moshi=P1^4;
sbit?miao=P1^0;
sbit?fen=P1^1;
sbit?shi=P1^2;
/********定時(shí)器********/
void?dinshiqi()
{
TMOD=0x01;?//定時(shí)器0的工作方式設(shè)置為2(0000?0010)
TH0=(65536-50000)/256; ??//裝初值0.1s
TL0=(65536-50000)%256;
ET0=1; ?//開定時(shí)器0中斷
TR0=1; ?//啟動(dòng)定時(shí)器0
EA=1;
}
/*****************延時(shí)*****************/
void?delay()
{uchar?i;
for(i=0;i<200;i++);}
void?yanshi(void) //延時(shí)
{
???unsigned?char?xy;
???for(x=0;x<200;x++)
?????for(y=0;y<200;y++);}
/***********鍵盤掃描************/
void?kbscan1()
{
if(miao==0) //判斷是否有按鍵按下miao
{
yanshi();
if(miao==0)
sec++;
if(sec==60)
sec=0;
while(miao==0);}
if(fen==0) //判斷是否有按鍵按下.fen
{
yanshi();
if(fen==0)
min++;
if(min==60)
min=0;
while(fen==0);}
if(shi==0) //判斷是否有按鍵按下shi
{
yanshi();
if(shi==0)
hour++;;
if(hour==24)
hour=0;
while(shi==0);}
if(moshi==0) ?//切換萬年歷??
?{
??yanshi();
??????if(moshi==0)
??????b++;
??????if(b==2)
??????b=0;
??while(moshi==0);}
if?(fuwei==0) //復(fù)位按鍵
??{sec=0;min=0;hour=0;} ?
}
//************************************************
void?kbscan2()
{
if(shi==0) ???//年加1
{ ????????????????
??????yanshi();
??????if(shi==0)
??????year++;
??while(shi==0);
}
????if(fen==0) //月加1
{ ???? ??????
??????yanshi();
??????if(fen==0)
??????mon++;
??????if(mon==13)
??????mon=1;
??while(fen==0);
?}
?if(moshi==0) ?//切換數(shù)字鐘???
?{
??yanshi();
??????if(moshi==0)
??????b++;
??????if(b==2)
??????b=0;
??while(moshi==0);
?}
????if(miao==0) //日加1
{ ???????
??????yanshi();
??????if(miao==0)
??day++;
??if(day==a+1)
??day=1;
?????}
?while(miao==0);
?
?if?(fuwei==0) //復(fù)位按鍵
??{day=22;mon=10;year=2013;}
??}?
/****************數(shù)字鐘和萬年歷子程序********************/
void?hms(void) //數(shù)字鐘子函數(shù)
{
????P3=0x01; ?????//位選
P2=Tab[hour/10]; ?//顯示時(shí)的十位
delay();
P3=0x02; //位選
P2=Tab[hour%10]; //顯示時(shí)的個(gè)位
delay();
P3=0x24; //位選
P2=0xbf; //顯示橫杠
delay();
P3=0x08; //位選
P2=Tab[min/10]; //顯示分的十位
delay();
P3=0x10; //位選
P2=Tab[min%10]; //顯示分的個(gè)位
delay();
P3=0x24; //位選
P2=0xbf; //顯示橫杠
????delay();
P3=0x40; //位選
P2=Tab[sec/10]; //顯示秒的十位
delay();
P3=0x80; //位選
P2=Tab[sec%10]; //顯示秒的個(gè)位
delay();
}
//******************************************************
void?wannianli(void)? //萬年歷子函數(shù)
{ P2=0xff; //消影(清零)
????P3=0x00;
????P3=0x01; ??//位選
P2=Tab[year/1000]; //年的千位
delay();
P2=0xff; ?//消影(清零)
????P3=0x00;
P3=0x02; //位選
P2=Tab[year/100%10]; //年的百位
delay();
P2=0xff; ?//消影(清零)
????P3=0x00;
????P3=0x04; ?? //位選
P2=Tab[year%100/10]; //年的十位
delay();
P2=0xff; ?/
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件?????285696??2012-04-25?15:49??電子時(shí)鐘課程設(shè)計(jì)報(bào)告.doc
-----------?---------??----------?-----??----
???????????????285696????????????????????1
評論
共有 條評論