久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

這是一段四位數(shù)碼管的單片機代碼,我想問問圖片里面那段是什么意思

[復制鏈接]
跳轉到指定樓層
樓主
ID:659173 發(fā)表于 2020-6-23 20:40 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式


  1. #include "reg51.h"
  2. #include "intrins.h"

  3. #define GPIO_DIG   P2                      //數(shù)據(jù)端

  4. #define uchar unsigned char              //重命名關鍵字
  5. #define uint unsigned int                     //重命名關鍵字

  6. sbit K1=P3^0;            //開始
  7. sbit K2=P3^1;            //暫停
  8. sbit K3=P3^2;            //復位

  9. sbit L1=P1^4;            //數(shù)碼管1位選
  10. sbit L2=P1^5;            //數(shù)碼管2位選
  11. sbit L3=P1^6;            //數(shù)碼管3位選
  12. sbit L4=P1^7;            //數(shù)碼管4位選

  13. sbit beep=P1^0;

  14. unsigned char code DIG_CODE[10] = {
  15. 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  16. 0x7f,0x6f};
  17. //0、1、2、3、4、5、6、7、8、9的顯示碼
  18. unsigned char code DIG_CODE2[10] = {
  19. 0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,
  20. 0xff,0xef};
  21. //0、1、2、3、4、5、6、7、8、9帶小數(shù)點的顯示碼
  22. unsigned char DisplayData[4];
  23. //用來存放要顯示的8位數(shù)的值

  24. uchar i,m;            //定義變量
  25. uchar min=0;
  26. long int k=0;
  27. uint Second_Counts;                     //定義變量

  28. void DigDisplay()                   //數(shù)碼管顯示子函數(shù)
  29. {
  30.          unsignedint j;              //定義變量

  31.          L1=0;                             //位選
  32.          L2=1;
  33.          L3=1;
  34.          L4=1;
  35.          GPIO_DIG= DisplayData[0];     //發(fā)送段碼
  36.          j= 1000;                                                    //掃描間隔時間設定
  37.          while(j--);
  38.          L1=1;                              //消隱
  39.          L2=1;
  40.          L3=1;
  41.          L4=1;               

  42.          L1=1;
  43.          L2=0;                             //位選
  44.          L3=1;
  45.          L4=1;
  46.          GPIO_DIG= DisplayData[1];     //發(fā)送段碼
  47.          j= 1000;                                                    //掃描間隔時間設定
  48.          while(j--);
  49.          L1=1;                              //消隱
  50.          L2=1;
  51.          L3=1;
  52.          L4=1;      

  53.          L1=1;
  54.          L2=1;
  55.          L3=0;                              //位選
  56.          L4=1;
  57.          GPIO_DIG= DisplayData[2];     //發(fā)送段碼
  58.          j= 1000;                                                    //掃描間隔時間設定
  59.          while(j--);
  60.          L1=1;                              //消隱
  61.          L2=1;
  62.          L3=1;
  63.          L4=1;      

  64.          L1=1;
  65.          L2=1;
  66.          L3=1;
  67.          L4=0;                              //位選
  68.          GPIO_DIG= DisplayData[3];     //發(fā)送段碼
  69.          j= 1000;                                                    //掃描間隔時間設定
  70.          while(j--);
  71.          L1=1;                              //消隱
  72.          L2=1;
  73.          L3=1;
  74.          L4=1;      

  75. }

  76. void main()
  77. {
  78. //      Second_Counts=570;
  79. //      min=9;
  80.          GPIO_DIG= 0x00;            //初始化數(shù)據(jù)口

  81.          TMOD=0x01;                               //定時器0方式1
  82.          TH0=(65536-50000)/256;                  //定時器0:50ms
  83.          TL0=(65536-50000)%256;
  84.          TH1=(65536-2000)/256;           
  85.          TL1=(65536-2000)%256;
  86.          EA=1;   
  87. //      ET1=1;
  88. //      TR1=1;         
  89.    while (1)
  90.     {
  91.                    if(K1==0)
  92.                    {
  93.                             ET0=1;
  94.                             TR0=1;               //開啟定時器
  95.                    }
  96.                    if(K2==0)
  97.                    {
  98.                             ET0=0;
  99.                             TR0=0;               //關閉定時器
  100.                    }
  101.                    if(K3==0)                                                 //復位按鍵按下時
  102.                    {
  103.                             ET0=0;
  104.                             TR0=0;               //關閉定時器
  105.                             DisplayData[0]= DIG_CODE2[0];      //清零顯示
  106.                             DisplayData[1]= DIG_CODE[0];         //清零顯示
  107.                             DisplayData[2]= DIG_CODE2[0];      //清零顯示
  108.                             DisplayData[3]= DIG_CODE[0];         //清零顯示
  109.                             i=0;                                                            //清零計數(shù)
  110.                             Second_Counts=0;                                 //清零秒
  111.                    }

  112.                    if((Second_Counts>0)&&(m==0))
  113.                    {
  114.                             ET1=1;
  115.                             TR1=1;   
  116.                    }

  117.                    if((min==9)&&(Second_Counts==599))
  118.                    {
  119.                             ET0=0;
  120.                             TR0=0;               //關閉定時器
  121.                             ET1=1;
  122.                             TR1=1;
  123.                    }

  124.                    DigDisplay();               //執(zhí)行數(shù)碼管顯示函數(shù)
  125.     }
  126. }


  127. //T0中斷函數(shù)
  128. void DSY_Refresh() interrupt 1
  129. {
  130.          TH0=(65536-50000)/256;                  //恢復定時器0初值
  131.          TL0=(65536-50000)%256;
  132.          i++;
  133.          m++;
  134.          if(m>=20)
  135.          {
  136.                    m=0;
  137.          }
  138.          if(i==2)                                  //50ms*2=0.1s轉換狀態(tài)
  139.          {
  140.                    i=0;
  141.                    Second_Counts++;
  142.                    if(Second_Counts>=600)
  143.                    {
  144.                             Second_Counts=0;
  145.                             min++;
  146.                    }

  147.                    DisplayData[0]= DIG_CODE2[min%10];   //顯示百位
  148.                    DisplayData[1]= DIG_CODE[Second_Counts/100%10];   //顯示十位
  149.                    DisplayData[2]= DIG_CODE2[Second_Counts/10%10];   //顯示個位
  150.                    DisplayData[3]= DIG_CODE[Second_Counts%10];                     //顯示小數(shù)點后一位
  151. //               if(Second_Counts==10000)Second_Counts=0;                            //當秒計數(shù)到1000秒又變?yōu)?
  152.          }
  153. }

  154. void DSY_Refresh2() interrupt 3
  155. {
  156.          TH1=(65536-2000)/256;           
  157.          TL1=(65536-2000)%256;
  158.          k++;
  159.          beep=!beep;
  160.          if(k>=300)
  161.          {
  162.                    ET1=0;
  163.                    TR1=0;
  164.                    k=0;
  165.          }
  166. }
復制代碼


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

使用道具 舉報

沙發(fā)
ID:143244 發(fā)表于 2020-6-23 21:36 | 只看該作者
圖片這段,是分鐘計數(shù)。中斷是50ms一次,if(i==2)是說兩次一計數(shù) 每次0.1S  計數(shù)600就是60S也就是1分鐘則分鐘計數(shù)變量min加1
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美亚洲另类在线 | 免费在线播放黄色 | 国产高潮好爽受不了了夜夜做 | 国产黄色麻豆视频 | 日韩国产免费观看 | 精品综合 | 久久国产精品久久久久久久久久 | 国产精品免费一区二区 | 观看av | 国产一区欧美 | 麻豆av一区二区三区久久 | 成人在线观看免费 | 国产欧美一区二区三区免费 | 日本小视频网站 | 成人在线免费网站 | 国产日韩一区二区 | 在线观看成人av | 亚洲成人一级片 | 熟女毛片 | 国产激情视频在线免费观看 | 国产一区 日韩 | 老外黄色一级片 | 日日日操 | 免费视频一区二区 | 国产欧美精品 | 在线啊v| 欧美一级免费 | 亚洲国产aⅴ精品 | 天堂在线免费视频 | 91久久精品国产 | 夜夜骑首页 | 国产成人免费视频 | 国内精品视频在线观看 | 久久久久国产 | 亚洲精品在线国产 | 日日日操| 日韩一二区 | 久久伊人在 | 国产成人精品网站 | 欧美精品91 | 祝你幸福电影在线观看 |