|
基于80C51單片機(jī)的電子時(shí)鐘 8位動(dòng)態(tài)數(shù)碼管顯示時(shí)分秒
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (20.63 KB, 下載次數(shù): 81)
下載附件
2018-10-12 23:42 上傳
單片機(jī)源程序如下:
- //==================================================//
- //== 電子信息科學(xué)與技術(shù)(2)班 ==//
- //== ==//
- //== 八位數(shù)碼管電子時(shí)鐘 ==//
- //== 16214088 陳朝 24小時(shí)制電子表 ==//
- //== ==//
- //==================================================//
- #include<reg51.h>
- #include"delay.h"
- unsigned char code LED[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //定義共陰極LED7段顯示碼
- unsigned char dispbit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //定義數(shù)碼管位碼
- unsigned char hour=23,min=58,sec=52; //定義初始時(shí)間為23時(shí)58分52秒
- unsigned char tcount; //定義50ms計(jì)數(shù)變量
- void display(unsigned char,unsigned char,unsigned char);
- void delay(unsigned int time)//定義延時(shí)函數(shù)
- {
- unsigned int j = 0;
- for(;time>0;time--)
- for(j=0;j<125;j++);
- }
- void main(void)
- {
- TMOD=0x01; //定時(shí)/計(jì)數(shù)器0設(shè)為方式1
- TH0=(65536-50000)/256; //定時(shí)50ms初值的高八位送入TH0
- TL0=(65536-50000)%256; //定時(shí)50ms初值的低八位送入TL0
- EA=1; //開(kāi)CPU中斷
- ET0=1; //開(kāi)定時(shí)/計(jì)數(shù)器0的中斷
- TR0=1; //啟動(dòng)定時(shí)器0
- while(1)
- {
- display(hour,min,sec);
- }
- }
- void display(unsigned char hour,unsigned char min,unsigned sec)
- {
-
- P0=LED[hour/10]; //小時(shí)的十位送數(shù)碼管1位顯示
- P2=0xfe;
- delay(1);
- P2=0xff;
-
- P0=LED[hour%10]; //小時(shí)的個(gè)位送數(shù)碼管2位顯示
- P2=0xfd;
- delay(1);
- P2=0xff;
-
- P0=LED[10]; //橫杠送數(shù)碼管3位顯示
- P2=0xfb;
- delay(1);
- P2=0xff;
-
- P0=LED[min/10]; //分的十位送數(shù)碼管4位顯示
- P2=0xf7;
- delay(1);
- P2=0xff;
-
- P0=LED[min%10]; //分的個(gè)位送數(shù)碼管5位顯示
- P2=0xef;
- delay(1);
- P2=0xff;
-
- P0=LED[10]; //橫杠送數(shù)碼管6位顯示
- P2=0xdf;
- delay(1);
- P2=0xff;
-
- P0=LED[sec/10]; //秒的十位送數(shù)碼管7位顯示
- P2=0xbf;
- delay(1);
- P2=0xff;
-
- P0=LED[sec%10]; //秒的個(gè)位送數(shù)碼管8位顯示
- P2=0x7f;
- delay(1);
- P2=0xff;
- }
- void T0_time() interrupt 3 //定時(shí)器中斷處理函數(shù)
- {
- TH0=(65536-50000)/256; //重新將定時(shí)50ms初值的高八位送TH0
- TL0=(65536-50000)%256; //重新將定時(shí)50ms初值的低八位送TH0
- tcount++; //定時(shí)50ms時(shí)間到加1
- if(tcount==20) //判斷是否到1s
- {
- tcount=0; //到1s,變量清0
- sec++; //秒計(jì)數(shù)變量加1
- if(sec==60) //判斷秒是否到60
- {
- sec=0; //到60,秒變量清0
- min++; //分計(jì)數(shù)變量加1
- if(min==60) //判斷分是否到60
- {
- min=0; //到60,分變量清0
- hour++; //小時(shí)計(jì)數(shù)變量加1
- if(hour==24) //判斷小時(shí)是否到24
- hour=0; //到24,小時(shí)清0
- }
- }
- }
- }
-
復(fù)制代碼
所有資料51hei提供下載:
8位數(shù)碼管24小時(shí)制電子表.zip
(94.15 KB, 下載次數(shù): 95)
2018-10-12 20:25 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|