找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2915|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)數(shù)碼管電子鐘(Proteus仿真圖+源程序)代碼已重新調(diào)試

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)






單片機(jī)源程序如下:
  1. #include <AT89X51.H>
  2. unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,
  3.                                0x66,0x6d,0x7d,0x07,
  4.                                0x7f,0x6f,0x77,0x7c,
  5.                                0x39,0x5e,0x79,0x71,0x00};
  6. unsigned char dispbitcode[]={0xfe,0xfd,0xfb,0xf7,
  7.                              0xef,0xdf,0xbf,0x7f};
  8. unsigned char dispbuf[8]={0,0,16,0,0,16,2,1};
  9. unsigned char dispbitcnt;
  10. unsigned char second;
  11. unsigned char minite;
  12. unsigned char hour;
  13. unsigned int tcnt;
  14. unsigned char mstcnt;  
  15. unsigned char i,j;
  16. void main(void)
  17. {
  18.   TMOD=0x02;
  19.   TH0=0x06;
  20.   TL0=0x06;
  21.   TR0=1;
  22.   ET0=1;
  23.   EA=1;
  24.   hour=12;
  25.    while(1)
  26.     {
  27.       if(P0_0==0)
  28.         {
  29.           for(i=5;i>0;i--)
  30.           for(j=248;j>0;j--);
  31.           if(P0_0==0)
  32.             {
  33.               second++;
  34.               if(second==60)
  35.                 {
  36.                   second=0;
  37.                 }
  38.               dispbuf[0]=second%10;
  39.               dispbuf[1]=second/10;
  40.               while(P0_0==0);
  41.             }
  42.         }
  43.       if(P0_1==0)
  44.         {
  45.           for(i=5;i>0;i--)
  46.           for(j=248;j>0;j--);
  47.           if(P0_1==0)
  48.             {
  49.               minite++;
  50.               if(minite==60)
  51.                 {
  52.                   minite=0;
  53.                 }
  54.               dispbuf[3]=minite%10;
  55.               dispbuf[4]=minite/10;
  56.               while(P0_1==0);
  57.             }
  58.         }
  59.       if(P0_2==0)
  60.         {
  61.           for(i=5;i>0;i--)
  62.           for(j=248;j>0;j--);
  63.           if(P0_2==0)
  64.             {
  65.               hour++;
  66.               if(hour==24)
  67.                 {
  68.                   hour=0;
  69.                 }
  70.               dispbuf[6]=hour%10;
  71.               dispbuf[7]=hour/10;
  72.               while(P0_2==0);
  73.             }
  74.         }
  75.     }
  76. }
  77. void t0(void) interrupt 1 using 0
  78. {

  79.   mstcnt++;
  80.   if(mstcnt==8)
  81.     {
  82.       mstcnt=0;
  83.          
  84.       P3=0xff;      //關(guān)閉所有顯示
  85.       P1=dispcode[dispbuf[dispbitcnt]];
  86.       P3=dispbitcode[dispbitcnt];
  87.       dispbitcnt++;
  88.       if(dispbitcnt==8)
  89.         {
  90.           dispbitcnt=0;
  91.         }
  92.     }
  93.   tcnt++;
  94.   if(tcnt==4000)
  95.     {
  96.       tcnt=0;
  97.       second++;
  98.       if(second==60)
  99.         {
  100.           second=0;
  101.           minite++;
  102.           if(minite==60)
  103.             {
  104.               minite=0;
  105.               hour++;
  106.               if(hour==24)
  107.                 {
  108.                   hour=0;
  109.                 }
  110.             }
  111.         }
  112.       dispbuf[0]=second%10;
  113.       dispbuf[1]=second/10;
  114.       dispbuf[3]=minite%10;
  115.       dispbuf[4]=minite/10;
  116.       dispbuf[6]=hour%10;
  117.       dispbuf[7]=hour/10;
  118.     }
  119. }
復(fù)制代碼

Keil4代碼與Proteus8.8仿真下載:
數(shù)字電子鐘設(shè)計.zip (1.52 MB, 下載次數(shù): 47)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表