標(biāo)題:
用at89s52和七段數(shù)碼管實(shí)現(xiàn)計(jì)時(shí)時(shí)鐘
[打印本頁]
作者:
daming
時(shí)間:
2014-12-30 23:43
標(biāo)題:
用at89s52和七段數(shù)碼管實(shí)現(xiàn)計(jì)時(shí)時(shí)鐘
/*程序名稱:at89s52實(shí)現(xiàn)時(shí)鐘
程序功能:用at89s52和七段數(shù)碼管實(shí)現(xiàn)計(jì)時(shí)時(shí)鐘
作者 :hankjulianth
*/
#include"reg52.h"
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uint sec,min,hour;//秒,分,時(shí)計(jì)數(shù)
uint t1;//定義計(jì)數(shù)器
sbit sc=P3^7;//鎖存信號(hào)
void _init_();//初始化函數(shù)
void timer0();//定時(shí)器T0中斷函數(shù)
void showtime();//時(shí)間顯示函數(shù)
void settime(uint,uint,uint)
void main()
{
t1=0;
settime(0,0,0);
_init_();
while(1)
{
if(t1==20)
{
sec++;
t1=0;
}
if(sec==60)
{
min+=1;
sec=0;
}
if(min==60)
{
hour+=1;
min=0;
}
if(hour==24)
{
hour=0;
}
showtime();
}
}
void _init_()
{
//啟用且設(shè)置T0,定時(shí)50ms
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TMOD=0x01;
TR0=1;
}
void timer0() interrupt 1
{
_init_();
t1++;
}
void settime(uint i,uint j,uint k)//設(shè)置初始時(shí)間函數(shù): k : j : i
{
sec=i;
min=j;
hour=k;
}
void showtime()
{
//秒鐘顯示
sc=1;
P0=table[sec/10];
P2=0x06;
sc=0;
sc=1;
P0=table[sec%10];
P2=0x07;
sc=0;
//分鐘顯示
sc=1;
P0=table[min/10];
P2=0x03;
sc=0;
sc=1;
P0=table[min%10];
P2=0x04;
sc=0;
//時(shí)鐘顯示
sc=1;
P0=table[hour/10];
P2=0x01;
sc=0;
sc=1;
P0=table[hour%10];
P2=0x0;
sc=0;
}
復(fù)制代碼
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1