找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2653|回復: 1
打印 上一主題 下一主題
收起左側(cè)

簡易數(shù)字時鐘

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:155769 發(fā)表于 2016-12-18 23:28 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
簡易數(shù)字時鐘
1、功能描述
用四個7段數(shù)碼管來顯示時間,并可通過按鍵來調(diào)整時間。
2、元器件清單
  
名稱
  
參數(shù)
數(shù)量
備注
AT89C52
1
74HC574
4
鎖存器
7段數(shù)碼管
4
共陰極
電阻
R1=1K
1
電容
C1、C2=33pF
2
極性電容
C3=10uF
1
晶振
X1=12MHz
1
發(fā)光二極管
2
按鍵
2
3、部分器件功能
74HC574鎖存器
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg
程序流程圖
  
        
N
   
   
   
  
        
N
   
   
   
  
        
N
   
   
   
  
        
Y
   
   
   
  
        
Y
   
   
   
  
        
Y
   
   
   
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image005.giffile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image006.giffile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image007.giffile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image008.giffile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image009.giffile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image008.giffile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image010.giffile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image011.giffile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image012.giffile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image009.giffile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image009.giffile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image009.giffile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image007.gif
  
        
min=0 hou++
   
   
   
  
        
sec=0 min++
   
   
   
  
        
num=0 sec++
   
   
   
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image013.giffile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image014.giffile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image015.giffile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image016.giffile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image017.gif

file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image018.gif


  
        
Y
   
   
   


  
        
N
   
   
   


5、電路原理圖及仿真效果圖
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image020.jpg
附:程序
#include<reg52.h>
sbit hou_shi=P3^6;
sbit hou_ge=P3^7;
sbit min_shi=P3^5;
sbit min_ge=P3^4;
sbit sec_dian=P3^0;
int num=0,hou=23,min=59,sec=0;
/***************時鐘子程序*******************/
void clock()
{
       if(num==20)
       {
              num=0;
              sec++;
       }
       if(sec==60)
       {
              sec=0;
              min++;
       }
       if(min==60)
       {
              min=0;
              hou++;
       }
       if(hou==24)
       {
              hou=0;
       }
}
/****************延時子程序******************/
void delay(void)  
{
   unsigned char a,b;
   for(a=40;a>0;a--)
        for(b=100;b>0;b--);
}
/****************分鐘顯示子程序******************/
void display_min(num_min)
{
       inta,b;
       a=num_min/10;
       b=num_min%10;
       min_shi=1;        //開鎖存器
       switch(a)
       {
              case0:P2=0x3F;delay();break;
              case1:P2=0x06;delay();break;
              case2:P2=0x5B;delay();break;
              case3:P2=0x4F;delay();break;
              case4:P2=0x66;delay();break;
              case5:P2=0x6D;delay();break;
              case6:P2=0x7D;delay();break;
              case7:P2=0x07;delay();break;
              case8:P2=0x7F;delay();break;
              case9:P2=0x6F;delay();break;
              default:break;
       }
       min_shi=0;       //關(guān)鎖存器
       //delay();   //延時
       min_ge=1;
       switch(b)
       {
              case0:P2=0x3F;delay();break;
              case1:P2=0x06;delay();break;
              case2:P2=0x5B;delay();break;
              case3:P2=0x4F;delay();break;
              case4:P2=0x66;delay();break;
              case5:P2=0x6D;delay();break;
              case6:P2=0x7D;delay();break;
              case7:P2=0x07;delay();break;
              case8:P2=0x7F;delay();break;
              case9:P2=0x6F;delay();break;
              default:break;
       }
       min_ge=0;
}
/***************小時顯示程序*******************/
void display_hou(num_hou)
{
       inta,b;
       a=num_hou/10;
       b=num_hou%10;
       hou_shi=1;
       //delay();
       switch(a)
       {
              case0:P1=0x3F;delay();break;
              case1:P1=0x06;delay();break;
              case2:P1=0x5B;delay();break;
              case3:P1=0x4F;delay();break;
              case4:P1=0x66;delay();break;
              case5:P1=0x6D;delay();break;
              case6:P1=0x7D;delay();break;
              case7:P1=0x07;delay();break;
              case8:P1=0x7F;delay();break;
              case9:P1=0x6F;delay();break;
              default:break;
       }
       hou_shi=0;
       //delay();
       hou_ge=1;
       switch(b)
       {
              case0:P1=0x3F;delay();break;
              case1:P1=0x06;delay();break;
              case2:P1=0x5B;delay();break;
              case3:P1=0x4F;delay();break;
              case4:P1=0x66;delay();break;
              case5:P1=0x6D;delay();break;
              case6:P1=0x7D;delay();break;
              case7:P1=0x07;delay();break;
              case8:P1=0x7F;delay();break;
              case9:P1=0x6F;delay();break;
              default:break;
       }
       hou_ge=0;
}
/***************閃爍燈*******************/
void display_sec(num_sec)
{
       if(num_sec%2==0)
              sec_dian=0;
       if(num_sec%2==1)
              sec_dian=1;
}
/****************主程序******************/
void main()
{
       IE=0x8d;  //開總中斷(EA=1),開定時器1(ET1=1),
                             //開外部中斷1EX1=1,開外部中斷0EX0=1.
       TMOD=0x10;            //選擇定時器1的工作方式為方式1
       TH1=(65536-40000)/256;     //裝初值
       TL1=(65536-40000)%256;
       TCON=0x45;                     //啟動定時器1(TR1=1),設(shè)置INT0INT1負邊沿觸發(fā)。
       while(1)
       {
              clock();
              display_sec(sec);
              display_min(min);
              display_hou(hou);
       }
}
void time1() interrupt 3   //定義定時器1
{
       TH1=(65536-40000)/256;
       TL1=(65536-40000)%256;
       num++;
}
void interrupt1() interrupt 2   //定義外部中斷1
{
       hou++;
       sec=0;
}
void interrupt0() interrupt 0    //定義外部中斷0
{
       min++;
       sec=0;
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:1143878 發(fā)表于 2025-2-20 10:19 | 只看該作者
你這個是圖片上傳失敗了嗎?怎么全是路徑文件
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表