<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > LED數(shù)碼管時(shí)鐘程序+電路-時(shí)間可調(diào)

          LED數(shù)碼管時(shí)鐘程序+電路-時(shí)間可調(diào)

          作者: 時(shí)間:2012-08-16 來(lái)源:網(wǎng)絡(luò) 收藏

          點(diǎn)擊瀏覽下一頁(yè)

          不來(lái)廢話(huà)上程序:/**************************************************************** 程序名稱(chēng):51單片機(jī)電子鐘+定時(shí)鬧鐘  晶振:12.00* 實(shí)驗(yàn)對(duì)象:51hei單片機(jī)學(xué)習(xí)開(kāi)發(fā)板* 單 片 機(jī):AT89S52或STC89C52  鬧鐘時(shí)間:7:10分(程序自定義)*使用定時(shí)器方式,顯示24小時(shí)“00-00-00”(增加中斷進(jìn)入對(duì)時(shí)功能P1為按鍵,P2為段選,P0為位選,      ****************************************************************//***使用定時(shí)器方式,顯示24小時(shí)“00-00-00”(增加進(jìn)入對(duì)時(shí)功能)P1為按鍵,P2為段選,P0為位選,{鬧鐘暫時(shí)不可調(diào)待完善})***/ #include reg52.h> #define uchar unsigned char           /*宏定義 */ #define uint unsigned int             /*宏定義 */ uchar hour,hour_h,hour_l;             /*定義小時(shí),小時(shí)的高位,小時(shí)的低位*/ uchar min,min_h,min_l;                /*分*/ uchar sec,sec_h,sec_l;         /*秒*/ uchar int_num;            /*定時(shí)溢出作用標(biāo)號(hào)*/ sbit key_secadd=P1^1;     /*定義了 p1.1為秒增1鍵,用在調(diào)時(shí)中斷里*/ sbit key_minadd=P1^2;     /*定義了 p1.2為分增1鍵,用在調(diào)時(shí)中斷里*/ sbit key_houradd=P1^3;    /*定義了 p1.3為時(shí)增1鍵,用在調(diào)時(shí)中斷里*/ sbit key_intime=P1^0;     //按P1.0進(jìn)入調(diào)時(shí)sbit key_quit=P1^5;    //P1.5退出調(diào)時(shí)sbit bell=P1^5;     //小喇叭void delay(uchar time);        /*延時(shí)子函數(shù)聲明*/ void display();                /*顯示子函數(shù)聲明*/ void inter_init();         /*定時(shí)器初始化子函數(shù)聲明*/ void time24();/****專(zhuān)用數(shù)碼管顯示表***/ uchar code duma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
          0x7f,0x6f,0x40}; /*0x40顯示“一”符號(hào)*/ uchar code wema[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0x00}; /*小時(shí)hour  分min  秒sec*/ //---------------------延時(shí)子函數(shù)--------------------------------void delay(uchar time)   /*延時(shí)子函數(shù)*/ { uchar time_1; for (;time>0;time--) for (time_1=100;time_1>0;time_1--); } //---------------------初始化T0函數(shù)-------------------------- void time0(void) interrupt 1  /*定時(shí)器T0服務(wù)子程序*/ { TH0=(65535-50000)/256; TL0=(65535-50000)%256; int_num++; }//---------------------定時(shí)器函數(shù)--------------------------void inter_init()     /*定時(shí)器初始化子函數(shù)*/ { EA=1;    /*開(kāi)總中斷*/ EX0=1;    /*開(kāi)外部中斷0*/ ET0=1;     /*打開(kāi)定時(shí)器T0*/ TMOD=0x01; /*工作方式1*/ TCON = 0x00;   /*觸發(fā)方式*/ IP = 0x01;    /*中斷優(yōu)先級(jí)別,T0優(yōu)先*/ TH0=(65535-50000)/256; /*置初值,大約50ms一個(gè)中斷 */ TL0=(65535-50000)%256; TR0=1;    /*置位TR0,啟動(dòng)定時(shí)器0*/ } //---------------------24小時(shí)時(shí)間自加 --------------------------void time24()       /*時(shí)間遞增*/ { if(int_num==20)  /*值滿(mǎn)20,大約就是一秒的時(shí)間。*/ {         /* 其值設(shè)為2,則定時(shí)時(shí)間快10倍,可做毫秒計(jì)時(shí)*/ int_num=0; sec++;       /*秒值加1*/ if(sec==60)  /*如果秒值滿(mǎn)60,就歸0*/ { sec=0; min++;  /*分值加1*/ if(min==60) { min=0; hour++;    /*分值歸0,時(shí)值加1*/ if(hour==24) { hour=0;   /*時(shí)值滿(mǎn)24歸0*/ } }  } }}//-----------按鍵調(diào)整子函數(shù)-------------------------------------void key(void) //按鍵調(diào)整子函數(shù){ if(key_intime==0){EA=0;  //      關(guān)中斷sec=0;  //秒歸零while(100) //正確   { display();if(key_quit==0){EA=1;break;}if(key_secadd==0) { delay(1); if(key_secadd==0) { sec++; while(!key_secadd); if(sec==60) { sec=0; } } } if(key_minadd==0) { delay(80); if(key_minadd==0) { min++; while(!key_minadd); if(min==60) { min=0; } } } if(key_houradd==0) { delay(80); if(key_houradd==0) { hour++; while(!key_houradd); if(hour==24) {hour=0; } } }} } } //---------------------數(shù)碼管顯示子函數(shù)------------------------------------- void display()  /*數(shù)碼管顯示子函數(shù)*/  {sec_h=sec/10;     /*求出秒高位需要顯示的字符*/ sec_l=sec%10;   /*求出秒低位需要顯示的字符*/ min_h=min/10; min_l=min%10; hour_h=hour/10; hour_l=hour%10;  P2=duma[sec_h];  /*顯示秒高位*/ P0=wema[6]; delay(10);P2=duma[sec_l];  /*顯示秒低位*/ P0=wema[7]; delay(10); P2=duma[10]; /* “一”符號(hào)的顯示 */ P0=wema[5]; delay(10);P2=duma[min_h];   /*分*/ P0=wema[3]; delay(10);P2=duma[min_l]; P0=wema[4]; delay(10);P2=duma[10];   /* “一”符號(hào)的顯示 */ P0=wema[2]; delay(10); P2=duma[hour_h];    /*時(shí)*/ P0=wema[0]; delay(10);P2=duma[hour_l]; P0=wema[1]; delay(10);} //---------------------主函數(shù)--------------------------------/*void alarm_clock() //鬧鐘子函數(shù)-變頻發(fā)聲{uint i,j,y,m;if(hour==00)//時(shí)到了00點(diǎn)?{if(min>=01){m=0;} //分大于或等于01就把m清零,若不成立向下執(zhí)行if(min==00)//到了00分?{if(m15){do{    //循環(huán)-變頻m++; display();for(i=0;i2000;i++) {bell=~bell;for(j=0;j24;j++);} //取反/ for(y=0;y2000;y++){bell=~bell;for(j=0;j25;j++);} //取反/for(i=0;i2000;i++) {bell=~bell;for(j=0;j26;j++);} //取反/ for(i=0;i2000;i++) {bell=~bell;for(j=0;j27;j++);} //取反/ }while(m15); //鬧15次結(jié)束}}} }*///---------------------主函數(shù)--------------------------------void main() { inter_init();       /*定時(shí)器初始化*/ hour=23;         /*自定義一個(gè)初值,方便快速觀察翻轉(zhuǎn)狀態(tài)(可修改)*/ min=59; sec=50; while(1){  key();   time24();  /*分開(kāi)時(shí)間,分別顯示字符*/ //alarm_clock();//鬧鐘函數(shù)display();    /*調(diào)用顯示函數(shù)來(lái)顯示*/ } } 

          c++相關(guān)文章:c++教程


          晶振相關(guān)文章:晶振原理


          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();