找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機數(shù)碼管顯示數(shù)值,按鍵設(shè)置數(shù)值 源碼加proteus仿真

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:198345 發(fā)表于 2017-5-8 20:48 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
簡單的51練手,下面是proteus仿真原理圖:


單片機源程序:
  1.   #include<reg52.h>
  2.   #define uchar unsigned char
  3.   #define uint unsigned int
  4.   sbit key1=P3^4;
  5.   sbit key2=P3^5;
  6.   sbit wei4=P2^0;
  7.   sbit wei3=P2^1;
  8.   uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77};
  9.   void delayms(uint);
  10.   uchar numt0,num,flat;
  11.    void delayms(uint xms)
  12.    {   
  13.        uint i,j;
  14.            for(i=xms;i>0;i--)
  15.              for(j=110;j>0;j--);
  16.           }
  17.    void display(uchar numdis)
  18.   {
  19.     uchar shi,ge;
  20.         shi=numdis/10;
  21.         ge=numdis%10;
  22.         wei4=1;
  23.         wei3=1;
  24.         P1=table[shi];
  25.         wei4=1;
  26.         wei3=0;
  27.         delayms(5);
  28.         wei4=1;
  29.         wei3=1;
  30.         P1=table[ge];
  31.         wei4=0;
  32.         wei3=1;
  33.         delayms(5);
  34.         }
  35.         void init()
  36.         {
  37.        TMOD=0x01;
  38.            TH0=(65536-45872)/256;
  39.            TL0=(65536-45872)%256;
  40.            EA=1;
  41.            ET0=1;
  42.            }
  43.    void keyscan()
  44.    {
  45.       if(key1==0)
  46.           {
  47.             delayms(10);
  48.                 if(key1==0)
  49.                 {
  50.              num++;
  51.                  flat++;
  52.                  if(num==99)
  53.                      num=0;
  54.                 while(!key1);
  55.           }
  56.         }
  57.    if(key2==0);
  58.    {
  59.       delayms(10);
  60.           if(key2==0)
  61.           {
  62.              if(num==0)
  63.                    num=99;
  64.                    flat=99;
  65.                    flat--;
  66.                    num--;
  67.                    while(!key2);
  68.                    }
  69.         }
  70.   }
  71.   void main()
  72.   {init();
  73.    while(1)
  74.    {
  75.      keyscan();
  76.          display(num);
  77.          }}
  78.         void T0_time() interrupt 1
  79.         {TH0=(65536-45872)/256;
  80.          TL0=(65536-45872)%256;
  81.          numt0++;
  82.          if(numt0==20)
  83.          {numt0=0;
  84.          num++;
  85.          if(num==60)
  86.             num=0;

  87. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

下載:
按鍵控制數(shù)碼管顯示.rar (55.45 KB, 下載次數(shù): 25)

評分

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

查看全部評分

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

相關(guān)帖子

回復(fù)

使用道具 舉報

沙發(fā)
ID:149451 發(fā)表于 2017-5-10 07:19 | 只看該作者
LZ沒認(rèn)真跑過這個程序吧?怎的不能顯示99能,當(dāng)顯示98后再按一次就變00了。其次,每當(dāng)按鍵按下不抬起,十位就熄滅不亮,覺得不爽,
回復(fù)

使用道具 舉報

板凳
ID:192419 發(fā)表于 2017-5-10 12:42 | 只看該作者
支持一下。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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