找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 6974|回復(fù): 12
收起左側(cè)

成功了!新手自己DIY的一個(gè)時(shí)鐘

  [復(fù)制鏈接]
ID:52744 發(fā)表于 2013-8-7 03:03 | 顯示全部樓層 |閱讀模式
單片機(jī)做時(shí)鐘,實(shí)現(xiàn)功能:
1、定時(shí)器一秒定時(shí);
2、小時(shí)、分、秒顯示 ;
3、按鍵設(shè)置時(shí)間,使用四個(gè)按鍵
步驟如下: 第一次按KEY-SET ,設(shè)置小時(shí);第二次按KEY-SET ,設(shè)置分鐘;第二次按KEY-SET ,設(shè)置秒。
在設(shè)置過(guò)程中,按UP循環(huán)加1;按down循環(huán)減1;按KEY-ENTER退出設(shè)置。
4、按鍵設(shè)置時(shí)間時(shí)相應(yīng)的位閃爍:設(shè)置”小時(shí)“時(shí),小時(shí)閃爍 12.20.30
設(shè)置”分鐘“時(shí),分鐘閃爍 12.20.30
設(shè)置”秒“時(shí),秒閃爍 12.20.30
這里閃爍我用紅色代替。
110106tqq9yfce9iy3edji.jpg


#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit key_set=P3^4;
sbit key_up=P3^5;
sbit key_down=P3^6;
sbit key_enter=P3^7;
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,
0x71,0x00};
uchar count,num,num1,hour,hour1,hour2,min,min1,min2,sec,sec1,sec2,shan;
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void display(uchar hour,uchar min,uchar sec)
{
hour1=hour/10;
hour2=hour%10;
min1=min/10;
min2=min%10;
sec1=sec/10;
sec2=sec%10;
if(shan==1)
{
if(count==1)
{
//TR0=0;
hour1=16;
hour2=16;
}
if(count==2)
{
//TR0=0;
min1=16;
min2=16;
}
if(count==3)
{
//TR0=0;
sec1=16;
sec2=16;
}
if(key_enter==0)
{
count=0;
shan=0;
TR0=1;

}

}
dula=1;
P0=table[hour1];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delayms(1);
dula=1;
P0=table[hour2]|0x80;
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delayms(1);
dula=1;
P0=table[min1];
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delayms(1);
dula=1;
P0=table[min2]|0x80;
dula=0;
P0=0xff;
wela=1;
P0=0xf7;
wela=0;
delayms(1);
dula=1;
P0=table[sec1];
dula=0;
P0=0xff;
wela=1;
P0=0xef;
wela=0;
delayms(1);
dula=1;
P0=table[sec2];
dula=0;
P0=0xff;
wela=1;
P0=0xdf;
wela=0;
delayms(1);
}
void keyscan()
{
if(key_set==0) //key_set鍵的程序
{
delayms(5);
if(key_set==0)
{

count++;
TR0=0;
if(count==4)
count=1;
if(count<4)
{
TR1=1;

shan=1;
}
while(!key_set)
display(hour,min,sec);
}

}
if(key_up==0)
{
delayms(5);
if(key_up==0)
{
while(!key_up)
display(hour,min,sec);

if(count==1)
{
hour++;
if(hour==24)
hour=0;
}
if(count==2)
{
min++;
if(min==60)
min=0;

}
if(count==3)
{
sec++;
if(sec==60)
sec=0;
}
}
}

if(key_down==0)
{
delayms(5);
if(key_down==0)
{
while(!key_down)
display(hour,min,sec);

if(count==1)
{
hour--;
if(hour==255)
hour=23;
}
if(count==2)
{
min--;
if(min==255)
min=59;

}
if(count==3)
{
sec--;
if(sec==255)
sec=59;
}
}
}


if(key_enter==0)
{
delayms(5);
if(key_enter==0)
{
while(!key_enter)
display(hour,min,sec);

count=0;
shan=0;
TR0=1;
/* TR1=0;
TH0=(65536-46080)/256;
TL0=(65536-46080)%256;*/
}
}
}
void init()
{
TMOD=0x11;
TH0=(65536-46080)/256;
TL0=(65536-46080)%256;
TH1=(65536-46080)/256;
TL1=(65536-46080)%256;
EA=1;
ET0=1;
ET1=1;
TR0=1;
TR1=0;
}
void main()
{
init();
while(1)
{
keyscan();
display(hour,min,sec);
}
}

void T0_time() interrupt 1
{
TH0=(65536-46080)/256;
TL0=(65536-46080)%256;
num++;
if(num==20)
{
num=0;
sec++;
if(sec==60)
{
sec=0;
min++;
if(min==60)
{
min=0;
hour++;
if(hour==24)
hour=0;
}
}
}
}
void T1_time() interrupt 3
{
TH1=(65536-46080)/256;
TL1=(65536-46080)%256;
num1++;
if(num1==10)
{
num1=0;
shan=~shan;
}
}
回復(fù)

使用道具 舉報(bào)

ID:32572 發(fā)表于 2013-8-7 22:07 | 顯示全部樓層
不錯(cuò),若能共享下仿真文件更好!
回復(fù)

使用道具 舉報(bào)

ID:52630 發(fā)表于 2013-8-7 22:33 | 顯示全部樓層
看過(guò)郭天祥的都會(huì)
回復(fù)

使用道具 舉報(bào)

ID:55067 發(fā)表于 2013-9-14 09:58 | 顯示全部樓層
DFGDSAHSFDUJDIGKODF
回復(fù)

使用道具 舉報(bào)

ID:61145 發(fā)表于 2014-4-27 11:13 | 顯示全部樓層
謝謝分享!
回復(fù)

使用道具 舉報(bào)

ID:10107 發(fā)表于 2014-5-23 16:04 | 顯示全部樓層
剛學(xué)單片機(jī),我也在做個(gè)類(lèi)似的,,但是設(shè)置的時(shí)候?qū)?yīng)位置閃爍這這點(diǎn)還沒(méi)實(shí)現(xiàn),,樓主的閃爍部分還沒(méi)看明白
回復(fù)

使用道具 舉報(bào)

ID:58215 發(fā)表于 2014-5-23 21:03 | 顯示全部樓層
剛學(xué)還看不懂
回復(fù)

使用道具 舉報(bào)

ID:62015 發(fā)表于 2014-5-25 09:25 | 顯示全部樓層
感謝分享
回復(fù)

使用道具 舉報(bào)

ID:63747 發(fā)表于 2014-7-9 15:55 | 顯示全部樓層
程序沒(méi)注釋還真不好看懂,先收了
回復(fù)

使用道具 舉報(bào)

ID:63588 發(fā)表于 2014-7-12 08:51 | 顯示全部樓層
有文件沒(méi)有
回復(fù)

使用道具 舉報(bào)

ID:63972 發(fā)表于 2014-7-14 16:01 | 顯示全部樓層
大神啊~~
回復(fù)

使用道具 舉報(bào)

ID:148002 發(fā)表于 2016-11-15 11:55 | 顯示全部樓層
很好的 設(shè)計(jì)
回復(fù)

使用道具 舉報(bào)

ID:194844 發(fā)表于 2017-5-1 19:56 | 顯示全部樓層
若能共享下仿真文件更好!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表