電子開發(fā)網(wǎng)

電子開發(fā)網(wǎng)電子設(shè)計(jì) | 電子開發(fā)網(wǎng)Rss 2.0 會員中心 會員注冊
搜索: 您現(xiàn)在的位置: 電子開發(fā)網(wǎng) >> 電子開發(fā) >> 單片機(jī) >> 正文

51單片機(jī)4位數(shù)碼管電子鐘源程序

作者:佚名    文章來源:本站原創(chuàng)    點(diǎn)擊數(shù):    更新時(shí)間:2018/3/8

/***************************************************************************

標(biāo)題:     定時(shí)器中斷 24小時(shí)時(shí)鐘程序

來源網(wǎng)站:http://www.www84811.com/index.html

效果:     數(shù)碼管顯示24小時(shí)制時(shí)鐘(具有調(diào)時(shí)功能)

說明:     使用12M晶振        ,key1=P3^7; key2=P3^6; key3=P3^5;key4=P3^4;

                  數(shù)碼管位選P1.0~P1.3   ,段選P0

******************************************************************************/

 

#include

 

#define uchar unsigned char;

#define uint unsigned int;

                                             

 

uchar position;          

uchar tt;            

uchar second;      

uchar minute;

uchar hour;      

 

 

uchar code table[]=

                            {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0--9

 

                 

sbit smg_q = P1^0;  //數(shù)碼管千位引腳

sbit smg_b = P1^1;

sbit smg_s = P1^2;

sbit smg_g = P1^3;

 

sbit key1=P3^7;                 //按鍵定義

sbit key2=P3^6;

sbit key3=P3^5;

sbit key4=P3^4;

 

 

void keyscan();                   //函數(shù)聲明

void display(unsigned char hour,unsignedchar minute);

void delay(unsigned int timer);

void init();                                             


/***********************************************************

                                     主函數(shù)

***********************************************************/

void main()

{

         init();                                   

         while(1)

         {

                   if(tt==20)

                   {                         

                            tt=0;

                            second++;

                            if(second==60)

                            {

                                     second=0;

                                     minute++;

                                     if(minute==60)

                                     {      

                                               minute=0;

                                               hour++;

                                               if(hour==24)

                                                        hour=0;

                                     }

                            }

                   }

 

                   keyscan();

                   display(hour,minute);     

                   delay(1);

         }

}

/***********************************************************

                                     調(diào)時(shí)

***********************************************************/

void keyscan()

{

         if(key1==0)        //小時(shí)加1

         {

                   TR0=0;

                   hour++;

                            if(hour==24)

                                     hour=0;

                   delay(200)        ;

                   TR0=1;

         }

         if(key2==0)                 // 小時(shí)減

         {

                   TR0=0;

                   hour--;

                            if(hour<0)

                                     hour=23;

                   delay(200)        ;

                   TR0=1;

         }

 

         if(key3==0)                   // 分鐘加

         {

                   TR0=0;

                   minute++;

                            if(minute==60)

                                     minute=0;

                   delay(200)        ;

                   TR0=1;

         }

 

                   if(key4==0)                    //        分鐘減

         {

                   TR0=0;

                   minute--;

                            if(minute<0)

                                     minute=59;

                   delay(200)        ;

                   TR0=1;

         }

}

 

/***********************************************************

                                                初始化

***********************************************************/

void init()

{

         tt=0;

         position=0;              

         second=0;

         minute=0;       

         hour=0;  

         smg_q=1;

         smg_b=1;

         smg_s=1;

         smg_g=1;

         key1=1;

         key2=1;

 

         TMOD=0X01; 

         TH0=(65536-50000)/256;       

         TL0=(65536-50000)%256;

         EA=1;               

         ET0=1;             

         TR0=1;             

}

 

/***********************************************************

                                                  定時(shí)器TO中斷

***********************************************************/

void t0() interrupt 1

{

         TH0=(65536-50000)/256;       

         TL0=(65536-50000)%256;

         tt++;                                             

}

 

/***********************************************************

                                          顯示

***********************************************************/

void display(unsigned char hour,unsignedchar minute)

{

         P0=0XFF;                            

         switch(position)

         {

         case0:             

                   smg_g=1;

                   smg_q=0;

                   P0=table[hour/10];

                   break;

 

         case1:

                   smg_q=1;       

                   smg_b=0;       

                   P0=table[hour%10];

 

                   if(tt>=10)

                            P0&=0x7f;                  //小數(shù)點(diǎn)以半秒的時(shí)間閃爍

                   break;

 

         case2:   

                   smg_b=1;                 

                   smg_s=0;                 

                   P0=table[minute/10];

                   break;

         case3:                      

                   smg_s=1;

                   smg_g=0;

                   P0=table[minute%10];

                   break;

         }

         position++;              

         if(position>3)

                   position=0;     

}

 

/***********************************************************

                                                 延時(shí)

***********************************************************/

void delay(unsigned int time)

{               

         unsignedint x,y;

         for(x=time;x>0;x--)

                   for(y=110;y>0;y--);

}
關(guān)鍵字:51單片機(jī)  4位數(shù)碼管  電子鐘

Tags:51單片機(jī),單片機(jī),4位數(shù)碼管電子時(shí)鐘,c程序  
責(zé)任編輯:admin
相關(guān)文章列表
51單片機(jī)零基礎(chǔ)入門
基于AT89C52單片機(jī)控制的雙軸太陽自動跟蹤系統(tǒng)設(shè)計(jì)
基于51單片機(jī)的數(shù)字電壓表設(shè)計(jì)_Proteus仿真+程序
基于51單片機(jī)的數(shù)字電壓表(ADC0832)(Proteus仿真+程序)_基于
ESP32單片機(jī)入門篇
超聲波測距+溫度+報(bào)警的單片機(jī)代碼_51單片機(jī)超聲波測距C語言程序
基于51單片機(jī)的SHT11溫濕度測量儀設(shè)計(jì)(源碼+仿真+文檔)
基于51單片機(jī)的恒溫控制器系統(tǒng) protues+keil c
51單片機(jī)數(shù)碼管顯示程序, 共陰數(shù)碼管顯示程序 數(shù)碼管原理(顯示
七段數(shù)碼管顯示原理研究_數(shù)碼管顯示0~9對應(yīng)的段碼
單片機(jī)C語言編程入門教程  流水燈程序示例
51單片機(jī)學(xué)習(xí)筆記直流電機(jī)驅(qū)動(PWM)C語言程序
MCU-51單片機(jī)直流電機(jī)驅(qū)動(PWM)51單片機(jī)驅(qū)動直流電機(jī)
基于51單片機(jī)—多功能秒表,多功能計(jì)時(shí)器C語言程序
STC89C52單片機(jī)數(shù)字電流表電壓表源碼與電路圖  51單片機(jī)電流電壓
自學(xué)stm32單片機(jī)四個(gè)步驟,實(shí)用又高效!
先學(xué)51還是先學(xué)STM32?STM32和51單片機(jī)的區(qū)別
單片機(jī)最小系統(tǒng)介紹及電路設(shè)計(jì) STM32單片機(jī)最小系統(tǒng)
什么是PIC單片機(jī)
51單片機(jī)和STM32單片機(jī)的結(jié)構(gòu)有什么不同
請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個(gè)字
[ 查看全部 ] 網(wǎng)友評論
最新推薦
關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁面
下到頁底
晶體管查詢
欧美一区二区三区久久综| JAPANESE在线播放国产| 色噜噜狠狠一区二区三区果冻 | 嫩草影院www| 国产在线无码视频一区二区三区| 亚洲精品国产精品国自产网站 | 古代肉多荤话文高h| 久久精品一区二区三区中文字幕| 97久久精品亚洲中文字幕无码| 激情网站在线观看| 影音先锋男人天堂| 国产ts人妖系列视频网站| 久久精品国产精品| 韩国黄色片在线观看| 欧美www网站| 国产精品无码无卡在线播放| 人人妻人人做人人爽精品| 一级毛片短视频| 男女猛烈无遮挡免费视频| 成人综合婷婷国产精品久久蜜臀| 国产亚洲精品精品国产亚洲综合| 亚洲avav天堂av在线网爱情| 麻豆aⅴ精品无码一区二区| 欧洲美熟女乱又伦av影片| 国产精品亚洲片在线| 亚洲成色www久久网站| 91国高清视频| 李老汉在船上大战雨婷| 国产福利萌白酱喷水视频铁牛| 亚洲成色www久久网站| 1区2区3区产品乱码免费| 校花主动掀开内裤给我玩| 国产欧美久久一区二区三区| 亚洲一区免费在线观看| 韩国免费毛片在线看| 日韩在线一区二区三区免费视频| 国产成人久久精品二区三区 | 国产国产成人精品久久| 久久午夜无码鲁丝片午夜精品 | 黑人video| 日本高清免费在线视频|