找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機制作數(shù)碼管代碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:201801 發(fā)表于 2017-5-17 16:50 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式


  1. #include <reg51.h>
  2. #include <intrins.h>
  3. #define DataPort P1
  4. unsigned char code table[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
  5. sbit SMG1=P3^4;//第一個數(shù)碼管的位選
  6. sbit SMG2=P3^5;//第2個數(shù)碼管的位選
  7. sbit SMG3=P3^6;//第3個數(shù)碼管的位選
  8. sbit SMG4=P3^7;//第4個數(shù)碼管的位選
  9. void  delayms(unsigned int t) //t ms
  10. {
  11.   unsigned int num,count;
  12.    for(num=t;num>0;num--)
  13.      for(count=200;count>0;count--)
  14.             {
  15.                         _nop_();
  16.                 }
  17. }
  18. //display(1234);
  19. void display(unsigned int num)
  20. {
  21.         DataPort=table[num/1000];
  22.         SMG1=1;          //第一個亮
  23.         delayms(5);
  24.         SMG1=0;

  25.         DataPort=table[num%1000/100];
  26.         SMG2=1;          //第二個亮
  27.     delayms(5);
  28.     SMG2=0;

  29.     DataPort=table[num%100/10];
  30.         SMG3=1;          //第3個亮
  31.     delayms(5);
  32.     SMG3=0;

  33.         DataPort=table[num%10];
  34.         SMG4=1;          //第4個亮
  35.     delayms(5);
  36.     SMG4=0;
  37. }
  38. void timer0_init()
  39. {
  40.         EA=1;//打開總中斷
  41.         ET0=1;//打開定時器0的中斷
  42.         TMOD|=0x01;//設(shè)置成工作方式1 16位定時器
  43.         TH0=(65535-10000)/256; //設(shè)置初值
  44.     TL0=(65535-10000)%256;
  45.     TR0=1;//打開定時器
  46. }
  47. unsigned char count;
  48. void main()
  49.   {
  50.    SMG1=SMG2=SMG3=SMG4=0;//數(shù)碼管的
  51.    timer0_init();
  52.    while (1)
  53.    {
  54.     display(count);
  55.    }
  56.   }
  57. //中斷服務(wù)函數(shù)
  58. void timer0_int()  interrupt 1
  59. {
  60.         static unsigned char num;
  61.         TH0=(65535-10000)/256; //設(shè)置初值
  62.     TL0=(65535-10000)%256;
  63.         num++;
  64.         if (num==100)
  65.         {
  66.          num=0;
  67.          count++;
  68.          if(count==60)
  69.          {
  70.           count=0;
  71.          }
  72.         }
  73. }  

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

相關(guān)帖子

回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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