18luck网站

18luck网站電子設計 | 18luck网站Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 18luck网站 >> 18luck平台 >> 單片機 >> 正文

單片機製作的時鍾程序

作者:佚名    文章來源:本站原創    點擊數:    更新時間:2018-03-07
今天完成的一個用單片機製作的時鍾程序,
/****************************************************************
*工程名:帶秒顯示時鍾單片機程序                    *
*單片機:STC89C52 *
*電路板:https://www.fpxing.com/index.html  *
*目  的:學習單片機編程 *
*是 間:2018-01-25星期五 *
*修  訂:功能有待完善,下邊我還加上調整時間的功能 *
*****************************************************************/
#include
#define uint unsigned int
#define uchar unsigned char
sbit wei=P2^7;  //位鎖存器使能端定義
sbit duan=P2^6;  //段鎖存器使能端定義
sbit led=P1^4;  //這個是我買的實驗板上的led使能端控製位
//定義需要的為變量...
uchar code duan_table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0x00
};//數碼管從1——F顯示編碼表,記得最後一個分號哦...
uchar a,xiaoshi,fenzhong,miao,miao1,miao2,xiao1,xiao2,fen1,fen2; //定義要用到的變量,記得一個字符都不要寫錯哦...
void dispay(uchar miao1,uchar miao2,uchar fen1,uchar fen2,uchar xiao1,uchar xiao2); //顯示函數什麽,一定要記得什麽哦...
void delay(uchar x);
void init()//初始化函數
{
TMOD=0X01; //定時計數器工作模式,工作於16位定時器計數器模式
TH0=(65536-50000)/256;  //十六位寄存器高八位賦初值
TL0=(65536-50000)%256;  //............低八位賦初值
EA=1; //開總中斷
ET0=1; //開定時器計數器0中斷
TR0=1; //啟動定時器/計數器0
}
void main()
{
init();   //調用初始化函數
while(1)
{
if(a==20) //判斷是否定時到1秒鍾
{
a=0; //到一秒a清零
miao++; //讓秒加1
if(miao==60) //判斷秒是否到60
{
miao=0; //秒到60,讓"miao"清零
fenzhong++; //讓分鍾自加1
if(fenzhong==60) //判斷分鍾是否到60
{
fenzhong=0;  //分鍾到60,讓"fenzhong"清零
xiaoshi++;   //讓小時加1
if(xiaoshi==24) //判斷小時是否到24
{xiaoshi=0;}  //到24,讓"xiaoshi"清零,從零點從新走動...
}
}
xiao1=xiaoshi/10;
xiao2=xiaoshi%10;  //上麵一行和這一行是把小時的兩位分離出來,比如23,分解成2和3;下麵幾行一樣就不解釋了
fen1=fenzhong/10;
fen2=fenzhong%10;
miao1=miao/10;
miao2=miao%10;
}
dispay(miao1,miao2,fen1,fen2,xiao1,xiao2);
}
}
void dispay(uchar miao1,uchar miao2,uchar fen1,uchar fen2,uchar xiao1,uchar xiao2)
{
duan=1;
P0=duan_table[xiao1];
duan=0;
P0=0xff;
wei=1;
P0=0xfb;//第三個LED亮,小時高位
wei=0;
delay(2);
duan=1;
P0=duan_table[xiao2];
duan=0;
P0=0xff;
wei=1;
P0=0xf7;  //第四個LED亮,小時低位
wei=0;
delay(2);
duan=1;
P0=duan_table[fen1];
duan=0;
P0=0xff;
wei=1;
P0=0xef; //第五個LED亮,分鍾高位
wei=0;
delay(2);
duan=1;
P0=duan_table[fen2];
duan=0;
P0=0xff;
wei=1;
P0=0xdf;  //第六個LED亮,分鍾低位
wei=0;
delay(2);
duan=1;
P0=duan_table[miao1];
duan=0;
P0=0xff;
wei=1;
P0=0xbf; //第七個LED亮,秒高位
wei=0;
delay(2);
duan=1;
P0=duan_table[miao2];
duan=0;
P0=0xff;
wei=1;
P0=0x7f;
wei=0;
delay(2);
}
void delay(uchar x)
{
uchar bb,dd;
for(bb=x;bb>0;bb--)
for(dd=110;dd>0;dd--);
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
}
Tags:單片機時鍾,單片機,時鍾程序  
責任編輯:admin
請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個字
[ 查看全部 ] 網友評論
關於我們 - 聯係我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁麵
下到頁底
晶體管查詢