欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1574|回復: 0
打印 上一主題 下一主題
收起左側

數碼管單片機驅動程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:257272 發表于 2017-12-4 16:53 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
數碼管驅動
單片機源程序如下:
Main.c
  1. #include        "reg51.h"
  2. #include        "DisplayUnit.h"
  3. void        main(void)
  4. {
  5.         DISP_Init();
  6.         DISP_Number(1234);
  7.         EA        =        1;
  8.         while(1)               
  9.         {
  10.         }
  11. }
  12. Display。C
  13. #include        "reg51.h"
  14. char        code        cSegments[16]        =       
  15. {
  16. 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
  17. 0x7F,0x6F,0x40,0x08,0x00,0x5E,0x79,0x71
  18. };
  19. char        code        cBits[4]        =       
  20. {
  21. 0xFE,0xFD,0xFB,0xF7
  22. };
  23. char        vSegValue[4];
  24. char        vIndex;

  25. void        DISP_Init(void)
  26. {
  27.         int        i;
  28.         //初始化本單元的全局變量
  29.         for(i=0;i<4;i++)
  30.         {
  31.                 vSegValue[i]        =        0;
  32.         }
  33.         vIndex        =        0;
  34.         //初始化定時器T0
  35.         TMOD        =        0x01;
  36.         ET0                =        1        ;
  37.         EA                =        1        ;
  38.         TR0                =        1        ;
  39.         TH0                =        0xEC;
  40.         TL0                =        0x78;
  41. }

  42. void          DISP_T0_ISR(void)        interrupt        1
  43. {
  44.         //重新預置初值
  45.         TH0        =        0xEC;
  46.         TL0        =        0x78;
  47.         //根據索引的值,操作端口,顯示一位數字
  48.         P1        =        cBits[vIndex];
  49.         P0        =        vSegValue[vIndex];
  50.         //改變索引,當前正在顯示的位的編號。0~4之間
  51.         vIndex++;
  52.         if(        vIndex        >=        4        )
  53.                 vIndex        =        0;
  54. }

  55. void        DISP_BitNum(char        WhichBit,char        WhichNum)
  56. {
  57.         //根據當前位和數字的參數
  58.         //把該數字對應的段的字模,存入指定位的數組中          vsegValue[0]        =        cSegments[1];
  59.         vSegValue[WhichBit]        =        cSegments[WhichNum];
  60. }

  61. void        DISP_Number(int        Value)
  62. {         
  63.         char        Number;
  64.         //提取Vlue的個十百千位的數字
  65.         //調用        DISP_BitNum        (調用4遍)函數,把需要顯示的數字的字模,放入全局變量數組中
  66.         while        (Value        >=        1000)
  67.         {
  68.                 Number++;
  69.                 Value        -=        1000;
  70.         }
  71.         DISP_BitNum(0,Number);
  72.         Number        =        0;
  73.         while        (Value        >=        100)
  74.         {
  75.                 Number++;
  76.                 Value        -=        100;
  77.         }
  78.         DISP_BitNum(1,Number);
  79.         Number        =        0;
  80.         while        (Value        >=        10)
  81.         {
  82.                 Number++;
  83.                 Value        -=        10;
  84.         }
  85.         DISP_BitNum(2,Number);
  86.         DISP_BitNum(3,Value);
  87. }

  88. void        DISP_Low2(char        Value)
  89. {
  90.         //提取Value的個位十位
  91.         //調用 DISP_BitNum的函數兩遍
  92.         char        Number=0;
  93.         while(Value        >=        10)
  94.         {
  95.         Number++;
  96.         Value        -=        10;
  97.         }
  98.         DISP_BitNum(2,Number);
  99.         DISP_BitNum(3,Value);
  100. }

  101. void        DISP_High2(char        Value)
  102. {
  103.         //提取Value的個位十位
  104.         //調用 DISP_BitNum的函數兩遍
  105.         char        Number=0;
  106.         while(Value        >=        10)
  107.         {
  108.         Number++;
  109.         Value        -=        10;
  110.         }
  111.         DISP_BitNum(0,Number);
  112.         DISP_BitNum(1,Value);
  113. }


  114. D.h
  115. #ifndef                   __MY__Display__Unit_H___
  116. #define            __MY__Display__Unit_H___

  117. void        DISP_Init(void);
  118. void        DISP_BitNum(char        WhichBit,char        WhichNum);
  119. void        DISP_Number(int        Value);
  120. void        DISP_Low2(char        Value);
  121. void        DISP_High2(char        Value);

  122. #endif
復制代碼

所有資料51hei提供下載:
數碼管驅動.docx (16.18 KB, 下載次數: 4)


評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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