电子开发 | 基础入门 | 电路原理图 | 婵⿴鍨伴懜浼村炊閹呮澖濞撴熬鎷� | PLC闁糕晞娅i、锟�   闁靛棗锕ら々褔寮稿⿰鍐╃仒婵炲棎鍨哄﹢鎵博濞嗘瑧绀夐悹鍥敱鐎碉拷 Ctrl+D 闁归潧顑呮慨鈺呭绩閹増顥戦柨娑楃劍閸斿懐鎷姀鈥充憾闁汇劌瀚弫顕€骞愭担纰樺亾閿燂拷濞戞挴鍋撻悹褍鍢查鐔哥▕閻樿京顏遍悹褏鏌夌换妯侯潰閵夘垳绀夐柣銏ゆ涧閻℃瑥顕i埀顒勫矗閹寸姴绔炬繛鍡愬灱缁诲骞冮…鎺旂<.

电子开发网

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

闁宠棄鎳愰弫鍝ユ崉椤栨艾褰嗙€殿喖绻戞晶婊堝礃瀹€瀣闁哄牃鍋撻柡鍌涘婢ф濡存繝鍕毄閻庢稒鍔楅弫鍝ユ崉椤栨艾褰嗙€殿喖绻楅鍝ョ不濡も偓濞呮帡濡寸€e墎绀夐柣顫祷閻箖宕楅鈧槐锟犲蓟閵夘煈鍤勯柟闈涱儏閸烇拷 闁活澀绲婚惌楣冨礂椤掆偓缁憋紕鎷嬮敍鍕毈闁革絻鍔婇埀顒佸姉閺佸摜鈧稒鍔掔划鐘崇▔濮橆偅鐪介柛娑櫭换鈧璺烘处婢ф粓宕樼仦鐑╁亾閿燂拷
闁宠棄妫楀畷鍕緞閳轰緡鍔呭ù鍏艰壘瀹曠喖鎮ч崶銊︾皻閻庡湱鍋樼欢锟�100 c閻犲浂鍙€閳伙拷 chm闁哄秶鍘х槐锟犲Υ閸屾繄銈柡鍌涚懃閸炲鈧湱顢婇娑氱磼閸☆厾绀夐悷鏇炴濞插﹥绗熺€n亞鎽嶅鑸电啲缁辨繈宕橀崨顓у晣妤犵偠锟ラ埀顒佸姉閺佸摜鈧稒鍔掔划鐘崇▔濮橆偅鐪介柛娑櫭换鈧璺烘处婢ф粓宕樼仦鐑╁亾閿燂拷
搜索: 您现在的位置: 电子开发网 >> 电子开发 >> 单片机 >> 正文

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

作者:佚名    文章来源:本站原创    点击数:3990    更新时间:2018-03-08

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

标题:     定时器中断 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 个字
[ 查看全部 ] 网友评论
    没有任何评论
闁汇垽娼ч悺娆忣嚕閳ь剟宕i幋鐘电Ч闁挎稒纰嶉惇褰掓⒖閸℃瑦鍋呴柛姘墕閹洨鐚鹃懡銈嗘毄閻庢稒鍔曢崺妤佹媴濠娾偓缁楀矂鎮芥担鍐唴闁搞儱澧藉▓鎴犵磾閹寸姷褰查柨娑橆唹lc鐎规悶鍎茬敮鍫曞箮閳ь剟寮甸敓锟�,婵☆垽绱曢弫鎼佸极閹殿喗鏆╅柣顓滃劥閻︼拷,闁告娲滄晶鏍嫉缁″膊A缂佹稑顦遍悺鎴︽晬娴h棄鐤柦鈧崘顏呮毄閻犱警鍨板ù妯肩磾閹寸姷褰茬紒顔藉劤瀹曟洟鏁嶇仦鑹扮鐎规悶鍎抽埢鑲╂暜閸繂鐏¢梺顐ゅС閻滎垶宕愮粭琛″亾閸屾侗鍋ㄩ弶鈺侀閸櫻冣枖閵娿儰绨冲ǎ鍥b偓鍐插絾濞村吋顨呰ぐ鍧楁晬濮樿鲸鏆╅悗娑欏姇缁辨垿宕i幋鐘电Ч闁挎冻鎷�
最新推荐
閻犙冨閺嬶繝宕犻崨顒傜憮閺夌儑鎷�
 [閸楁洜澧栭張楦跨カ閺傦拷]閸椾礁銇夌€涳缚绱伴崡鏇犲閺堝搫鐤勬笟锟�100 c鐠囷拷
 [鏉烆垯娆㈢猾锟�]娑撳褰礟LC鐎涳缚绡勬禒璺ㄦ埂鏉烆垯娆X-TR
 [閻絻鐭炬禒璺ㄦ埂鐠佹崘顓�]LM324鏉╂劖鏂�4~20mA鏉烇拷1~5V閻㈠灚绁�
 [閻絻鐭炬禒璺ㄦ埂鐠佹崘顓�]LM386妞圭粯鐎担鎾诲閸忓顥撻弨鎯с亣閸c劌甯�
 [閻絻鐭炬禒璺ㄦ埂鐠佹崘顓�]936閻掑﹤褰撮悽浣冪熅閸樼喓鎮婇崶锟�
 [閸楁洜澧栭張楦跨カ閺傦拷]鐡掑懎锛愬▔銏$ゴ鐠猴拷+濞撯晛瀹�+閹躲儴顒熼惃鍕礋
 [闁氨鏁ら悽闈涚摍鐠佹崘顓告潪顖欐]S7-200PLC閻ㄥ嫪璞㈤惇鐔昏拫娴狅拷 S7_2
 [鏉烆垯娆㈢猾锟�]S7-200鎼存挻鏋冩禒璁圭礄閸忣煉绱�,STEP7
 [鏉烆垯娆㈢猾锟�]ModbusPoll閸滃odbusSalve閸忥拷
 [鏉烆垯娆㈢猾锟�]STEP7濡剝瀚欓柌蹇斿瘹娴犮倕绨� Smart_
 [鏉烆垯娆㈢猾锟�]Modbus鐠嬪啳鐦划鍓т紥 v1.024 缂侊拷
 [鏉烆垯娆㈢猾锟�]Modscan32閸滃odsim32,modb
 [閻絻鐭炬禒璺ㄦ埂鐠佹崘顓�]89c51閸忓鐝涢弬閫涜雹閻噦绱檖rotues
 [閻絻鐭炬禒璺ㄦ埂鐠佹崘顓�]娑撳洤鍕鹃崢鍞抮otues娴犺法婀$粙瀣碍濠ф劗鐖�
 [閻絻鐭炬禒璺ㄦ埂鐠佹崘顓�]51閸楁洜澧栭張鍝勫坊缁嬶拷 protues娴犺法婀�
闁哄牃鍋撻柡鍌滃閺嬪啰绮╅敓锟�
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 在线帮助 - 文章列表
返回顶部
刷新页面
下到页底
晶体管查询