標(biāo)題: 多功能數(shù)碼管秒表(帶正、倒計(jì)時(shí),及時(shí)鐘模式)有代碼 [打印本頁(yè)]
作者: 一毛零logo 時(shí)間: 2016-12-3 17:27
標(biāo)題: 多功能數(shù)碼管秒表(帶正、倒計(jì)時(shí),及時(shí)鐘模式)有代碼
IMG_20161203_172523.jpg (665.83 KB, 下載次數(shù): 75)
下載附件
自己焊的,看起開,,還可以吧,哈哈
2016-12-3 17:26 上傳
基于STC89C52的數(shù)碼管顯示秒表,用矩陣鍵盤,有走秒,輸入時(shí)間正計(jì)時(shí)、倒計(jì)時(shí),到時(shí)提醒,及切換到時(shí)鐘模式的功能
鍵盤位置:7 8 9 開始(正計(jì)時(shí))
4 5 6 暫停
1 2 3 倒計(jì)時(shí)
模式切換 0 時(shí)間校正 清零
很容易理解,所以,這個(gè)就直接附代碼~~
下載地址:
多功能秒表.doc
(6.43 KB, 下載次數(shù): 85)
2016-12-3 17:22 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
///////////////////////////////////////////////////頭文件和一些定義和初始化在附件里有///////////////////////////////////////////////////
char codetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,
0x54};//數(shù)碼管段碼,最后一個(gè)為n
char code weixuan[]={0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//數(shù)碼管位碼
void Init()//清零
{
run=0;
remind=0;
num=0;
time=0;
miao=0;
fen=0;
time0=0.00001;
beep=1;
key=16;
EA=0;
ET0=0;
TR0=0;
}
void delay(unsigned char i)//延時(shí)
{
char j,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void bee()//蜂鳴器
{
beep=0;
delay(500);
beep=1;
}
void keyscan()//按鍵檢測(cè)
{
uchar temp;
P3=0xfe;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xee:
key=7;
break;
case0xde:
key=8;
break;
case 0xbe:
key=9;
break;
case0x7e:
key=12;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
}
}
P3=0xfd;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xed:
key=4;
break;
case0xdd:
key=5;
break;
case0xbd:
key=6;
break;
case0x7d:
key=13;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
}
}
P3=0xfb;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xeb:
key=1;
break;
case0xdb:
key=2;
break;
case0xbb:
key=3;
break;
case0x7b:
key=14;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
}
}
P3=0xf7;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xe7:
key=10;
break;
case0xd7:
key=0;
break;
case0xb7:
key=11;
break;
case0x77:
key=15;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
}
}
}
void stor()
{
if(key!=16)
{
if(key>11)
switch(key)
{
case 12:run=1;break;
case13:run=0;break;
case14:run=2;break;
case15:Init();
}
if(key<10)
{
if(time0==0.00001)
time0=0;
time0=time0*10+key;
run=3;
}
}
key=16;//防止循環(huán)進(jìn)入此函數(shù)
}
void T0_time()interrupt 1
{
TH0=(65536-9216)/256;
TL0=(65536-9216)%256;
// num++;
// if(num==2)
// {
// num=0;
if(run==1)
time+=0.01;
else
time-=0.01;
// }
}
void display(float t)
{
intmiao_,time10,a[6],n1;
time10=t*100;
miao_=time10%100;
miao=time10/100%60;
fen=time10/100/60;
a[0]=miao_%10;
a[1]=miao_/10;
a[2]=miao%10;
a[3]=miao/10;
a[4]=fen%10;
a[5]=fen/10;
for(n1=0;n1<6;n1++)
{
if(n1!=2&&n1!=4)
{
P0=table[a[n1]];
dula=1;
dula=0;
P0=weixuan[n1];
wela=1;
wela=0;
delay(5);
}
else
{ //05 4744
P0=table[a[n1]]+0x80;
dula=1;
dula=0;
P0=weixuan[n1];
wela=1;
wela=0;
delay(5);
}
}
// if(remind==0)
// {
// for(a5=0;a5<3;a5++)//數(shù)碼管0-2位依次顯示
// {
// yu1=shang1%10;//取余
// shang1=shang1/10;//取商
// if(a5==1)//循環(huán)到個(gè)位時(shí)顯示小數(shù)點(diǎn)
// {
// P0=table[yu1]+0x80;
// dula=1;
// dula=0;
// P0=weixuan[a5];
// wela=1;
// wela=0;
// delay(5);
// }
// else
// {
// P0=table[yu1];
// dula=1;
// dula=0;
// P0=weixuan[a5];
// wela=1;
// wela=0;
// delay(5);
// }
// }
// for(;a5<5;a5++)//數(shù)碼管3-4位依次顯示
// {
// yu2=shang2%10;//取余
// shang2=shang2/10;//取商
// if(a5==3)//循環(huán)到個(gè)位時(shí)顯示小數(shù)點(diǎn)
// {
// P0=table[yu2]+0x80;
// dula=1;
// dula=0;
// P0=weixuan[a5];
// wela=1;
// wela=0;
// delay(5);
// }
// else
// {
// P0=table[yu2];
// dula=1;
// dula=0;
// P0=weixuan[a5];
// wela=1;
// wela=0;
// delay(5);
// }
// }
//
// }
// else
// {
// P0=table[13];
// dula=1;
// dula=0;
// P0=weixuan[0];
// wela=1;
// wela=0;
// delay(5);
//
// P0=table[16];
// dula=1;
// dula=0;
// P0=weixuan[1];
// wela=1;
// wela=0;
// delay(5);
//
// P0=table[14];
// dula=1;
// dula=0;
// P0=weixuan[2];
// wela=1;
// wela=0;
// delay(5);
// }
}
void check_display()
{
if(run==0)
TR0=0;
if(run==1&&TR0==0||run==2&&TR0==0)
{
TMOD=0x01;
TH0=(65536-9216)/256;
TL0=(65536-9216)%256;
EA=1;
ET0=1;
TR0=1;
if(run==2&&time0!=0.00001)
time=time0;
}
if(time==time0&&run==1&&remind==0)
{
// bee();
run=0;
remind=1;
}
if(time<=0&&run==2&&remind==0)
{
// bee();
run=0;
remind=1;
}
if(run!=3)
display(time);
else
display(time0);
}
void main()
{
Init();
while(1)
{
keyscan();
stor();
check_display();
}
}
作者: shizhanglei 時(shí)間: 2016-12-3 17:57
可以用作課程設(shè)計(jì)嗎
作者: 一毛零logo 時(shí)間: 2016-12-3 19:21
怎么樣的課程設(shè)計(jì)?有什么要求
作者: 一毛零logo 時(shí)間: 2016-12-3 19:55
你具體什么要求?
作者: 210408437 時(shí)間: 2016-12-3 23:47
怎么樣的課程設(shè)計(jì)?有什么要求
作者: T1997 時(shí)間: 2017-12-6 10:08
這個(gè)可以改成實(shí)現(xiàn)6位數(shù)碼管顯示時(shí)分秒倒計(jì)時(shí)的嗎?
作者: 惺忪牛犢子 時(shí)間: 2017-12-27 20:02
大神,沒有仿真圖。
作者: 506692350 時(shí)間: 2020-6-17 13:38
可以,這功能完美
作者: ajian-1023 時(shí)間: 2020-10-19 13:07
這個(gè)有電路嗎
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |