电子开发 | 基础入门 | 电路原理图 | 姊舰鍥惧疄渚� | PLC鍩虹   銆婂鏋滃枩娆㈡湰绔欙紝璇锋寜 Ctrl+D 鎵嬪姩鏀惰棌锛佹劅璋㈡偍鐨勬敮鎸併€�涓€璧峰涔犱竴璧疯繘姝ワ紝鐢靛瓙寮€鍙戠帇娆㈣繋鎮紒.

电子开发网

电子开发网电子设计 | 电子开发网Rss 2.0 会员中心 会员注册

鈽呯數璺叕寮忔墜鍐岋紝鏈€鏂扮増銆婄數瀛愮數璺叕寮忚绠楀櫒銆嬶紝鐢佃矾鍏紡鏌ヨ鎵嬪唽 鐢佃矾鍏紡璁$畻鍣ㄣ€愮數瀛愪粠涓氫汉鍛樺繀澶囨墜鍐屻€�
鈽嗗崄澶╁浼氬崟鐗囨満瀹炰緥100 c璇█ chm鏍煎紡銆傝祫鏂欏唴瀹硅缁嗭紝瑕嗙洊渚嬪瓙澶氾紝鍐呭骞裤€愮數瀛愪粠涓氫汉鍛樺繀澶囨墜鍐屻€�
搜索: 您现在的位置: 电子开发网 >> 电子开发 >> 单片机 >> 正文

51单片机4位数码管电子钟源程序

作者:佚名    文章来源:本站原创    点击数:4178    更新时间:2018/3/8

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

标题:     定时器中断 24小时时钟程序

来源网站:http://www.dzkfw.com.cn/index.html

效果:     数码管显示24小时制时钟(具有调时功能)

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

                  数码管位选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;  //数码管千位引脚

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();                   //函数声明

void display(unsigned char hour,unsignedchar minute);

void delay(unsigned int timer);

void init();                                             


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

                                     主函数

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

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);

         }

}

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

                                     调时

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

void keyscan()

{

         if(key1==0)        //小时加1

         {

                   TR0=0;

                   hour++;

                            if(hour==24)

                                     hour=0;

                   delay(200)        ;

                   TR0=1;

         }

         if(key2==0)                 // 小时减

         {

                   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;             

}

 

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

                                                  定时器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;                  //小数点以半秒的时间闪烁

                   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;     

}

 

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

                                                 延时

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

void delay(unsigned int time)

{               

         unsignedint x,y;

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

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

}
关键字:51单片机  4位数码管  电子钟


Tags:51单片机,单片机,4位数码管电子时钟,c程序  
责任编辑:admin
请文明参与讨论,禁止漫骂攻击,不要恶意评论、违禁词语。 昵称:
1分 2分 3分 4分 5分

还可以输入 200 个字
[ 查看全部 ] 网友评论
    没有任何评论
鐢靛瓙寮€鍙戠綉锛氭眹闆嗙患鍚堝悇绫荤數瀛愬埗浣滀笌鐢佃矾鍥剧殑缃戠珯锛宲lc宸ユ帶鎶€鏈�,妯$數鏁扮數鐭ヨ瘑,鍗曠墖鏈篍DA绛夌瓑锛佽崯钀冪數璺浘缃戠珯绮惧崕锛屼负宸ョ▼甯堝垱閫犱环鍊笺€傛杩庡叧娉ㄥ井淇″叕浼楀彿锛氱數瀛愬紑鍙戠綉锛�
最新推荐
璧勬枡鍖呬笅杞�
 [闂佸憡顨嗗ú婊勬櫠閺嶎厼瀚夊Δ锕佹硶閵堫偊鏌¢崒锔藉]闂佸憡銇炵粈渚€濡垫径灞稿亾濞戝磭绱扮紒鍙樺嵆瀹曪繝寮撮悩宸毈闂佸搫鐗嗛幖顐︽偪閸曨剛鐟归柨鐕傛嫹100 c闁荤姴娴勯幏锟�
 [闁哄鍎愰崹顖氣枎閵忋垻灏甸柨鐕傛嫹]婵炴垶鎸搁ˇ瀹犮亹缁€鐑睠闁诲孩鍐荤紓姘卞姬閸曨剛顩烽悹鎭掑妽閸╁倿寮堕悜鍡楃仧婵炲棭鏁-TR
 [闂佹椿婢€缁插鎯岄悙顒傤浄閻犳亽鍔嶉崺鍌炴偣娴g懓绀冩い鎿勬嫹]LM324闁哄鏅滈崝鏍棘閿燂拷4~20mA闁哄鍎戦幏锟�1~5V闂佹眹鍨归悘姘辩矈閿燂拷
 [闂佹椿婢€缁插鎯岄悙顒傤浄閻犳亽鍔嶉崺鍌炴偣娴g懓绀冩い鎿勬嫹]LM386婵$偛婀辩划顖炴倵椤掍焦濯撮柟鎹愵嚙椤斿﹪鏌涜箛鎿冨剶妞ゃ儲鎹囧銊╁箚瑜嬫禍锝夋煕閿濆啫濡奸悽顖ゆ嫹
 [闂佹椿婢€缁插鎯岄悙顒傤浄閻犳亽鍔嶉崺鍌炴偣娴g懓绀冩い鎿勬嫹]936闂佺粯甯掗敃銈堛亹閹绢喗鍋ㄥù锝呭暟閻斿懘鏌涘Ο鐓庢灁闁诡喖锕畷鍫曟晸閿燂拷
 [闂佸憡顨嗗ú婊勬櫠閺嶎厼瀚夊Δ锕佹硶閵堫偊鏌¢崒锔藉]闁烩剝甯掗幊搴ㄦ晬閹邦兘鏋栭柕蹇ョ磿閵堟挳鎮归悮瀛樺+濠电偞鎸撮弲娑氣偓鐧告嫹+闂佺缈伴崕鎾敆閻斿吋鍎嶉柛鏇ㄥ亜缁€锟�
 [闂備緡鍋呭銊╁极閵堝鍋ㄩ梻鍫熺〒閹藉秹鎮规担鐟扮妞ゆ挸鎲″ḿ顏堫敍濞嗘劦鍋�]S7-200PLC闂佹眹鍔岀€氼亞鎸掗姀銈嗗剳闁绘梹妲掗幏顐⒚归悪鍛 S7_2
 [闁哄鍎愰崹顖氣枎閵忋垻灏甸柨鐕傛嫹]S7-200闁圭厧鐡ㄩ幐濠氬几閸愨晝顩烽悹浣告贡缁€鍕煕韫囷絿鍘滅紒鎲嬫嫹,STEP7
 [闁哄鍎愰崹顖氣枎閵忋垻灏甸柨鐕傛嫹]ModbusPoll闂佸憡绮岄鐖媎busSalve闂佺ǹ楠忛幏锟�
 [闁哄鍎愰崹顖氣枎閵忋垻灏甸柨鐕傛嫹]STEP7濠碘槅鍨崜婵堚偓姘懇閺屽矁绠涢弬璺ㄦ▌婵炲濮伴崐鏇犺姳閿燂拷 Smart_
 [闁哄鍎愰崹顖氣枎閵忋垻灏甸柨鐕傛嫹]Modbus闁荤姴顑呴崯鎶芥儊椤栨粌鍨濋柛鎾楀倻瑙� v1.024 缂傚倷绶ら幏锟�
 [闁哄鍎愰崹顖氣枎閵忋垻灏甸柨鐕傛嫹]Modscan32闂佸憡绮岄鐖媎sim32,modb
 [闂佹椿婢€缁插鎯岄悙顒傤浄閻犳亽鍔嶉崺鍌炴偣娴g懓绀冩い鎿勬嫹]89c51闂佺ǹ绻愰ˇ閬嶆偟濞戙垹妫橀梺顐g闂嗗綊鏌i鍡楁珢缂佽鲸鐛otues
 [闂佹椿婢€缁插鎯岄悙顒傤浄閻犳亽鍔嶉崺鍌炴偣娴g懓绀冩い鎿勬嫹]婵炴垶鎸稿ú銈夊礋妤e啫鍌ㄩ柛鐐村Оotues婵炲濮惧▔鏇烇耿閿涘嫮鐭欓悗锝庝簽绾板秵绻濊閸旀鎮ラ敓锟�
 [闂佹椿婢€缁插鎯岄悙顒傤浄閻犳亽鍔嶉崺鍌炴偣娴g懓绀冩い鎿勬嫹]51闂佸憡顨嗗ú婊勬櫠閺嶎厼瀚夐柛婵嗗閸у﹦绱掔€h埖瀚� protues婵炲濮惧▔鏇烇耿閿燂拷
鏈€鏂版枃绔�
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 在线帮助 - 文章列表
返回顶部
刷新页面
下到页底
晶体管查询