利用51單片機(jī)制作的電子時(shí)鐘
STC89C52是STC公司生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash存儲(chǔ)器。STC89C52使用經(jīng)典的MCS-51內(nèi)核,但做了很多的改進(jìn)使得芯片具有傳統(tǒng)51單片機(jī)不具備的功能。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。
本文引用地址:http://m.butianyuan.cn/article/201611/318364.htm買了很長(zhǎng)時(shí)間了可是一直在那里放著,今天重新拿出來(lái)寫了一段電子時(shí)鐘的C++程序,利用充電寶供電,當(dāng)作電子時(shí)鐘挺不錯(cuò)的。
功能:
4個(gè)七段數(shù)碼管作為時(shí)鐘顯示的主體兩個(gè)顯示小時(shí),兩個(gè)顯示分鐘,8個(gè)LED燈作為秒數(shù)的閃爍,4個(gè)獨(dú)立按鍵分別為hour+1,hour+10,minute+1,minute+10。
查詢LED電路,接入端為P1^0到P1^7。
數(shù)碼管采用了驅(qū)動(dòng)芯片,接入端為P2^0到P2^3。
按鍵的接入端如圖所示。
有了各種電路的接入端,我們利用keil進(jìn)行編程。
/* * Copyright (c) 2015,煙臺(tái)大學(xué)計(jì)算機(jī)學(xué)院 * All right reserved. * 作者:邵帥 * 文件:temp.c* 完成時(shí)間:2015年05月29日 */ #include打包成hex文件,進(jìn)行燒錄。#define uchar unsigned char sbit P2_0 = P2^0;sbit P2_1 = P2^1;sbit P2_2 = P2^2;sbit P2_3 = P2^3;sbit key1=P3^5;//按鍵sbit key2=P3^4;sbit key3=P3^3;sbit key4=P3^2;static unsigned char second,minute,hour;unsigned int tcount;unsigned char m;uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};void delay(uchar i){uchar j,k; for(j=i;j>0;j--)for(k=125;k>0;k--);}void display(){P0=table[hour/10];P2_0 = 0;delay(5);P2_0 = 1;P0=(table[hour%10]& 0x7f);P2_1 = 0;delay(5);P2_1 = 1;P0=table[minute/10];P2_2 = 0;delay(5);P2_2 = 1;P0=table[minute%10];P2_3 = 0;delay(5);P2_3 = 1;}void main(void){unsigned int a;TMOD=0x02;TH0=0x06;TL0=0x06;TR0=1;ET0=1;EA=1;while(1){if(key1==0){if(key1==0) //確認(rèn)按鍵被按下{while(!key1);//松手檢測(cè)hour++;}}if(key2==0){if(key2==0) {while(!key2);hour=hour+10;}}if(key3==0){if(key3==0) {while(!key3);minute++;}}if(key4==0){if(key4==0) {while(!key4);minute=minute+10;}} for(a=100;a>0;a--){display();}}}void t0(void) interrupt 1 using 0 { tcount++;if(tcount==4000){tcount=0;second++;if(second==60){second=0;minute++;if(minute==60){minute=0;hour++;if(hour==24){hour=0;}}}P1=~P1;}}
運(yùn)行單片機(jī)!
本來(lái)計(jì)劃使用小米的盒子當(dāng)外殼的,后來(lái)發(fā)現(xiàn)盒子有點(diǎn)小,就先裸機(jī)了,反正5V電不著~
評(píng)論