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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

單片機(jī)數(shù)碼管一閃一閃的,按鈕除了復(fù)位和K5能按,其它都按不了,而且也沒(méi)啥反應(yīng)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
數(shù)碼管一閃一閃的,按鈕除了復(fù)位和K5能按,其它都按不了,而且也沒(méi)啥反應(yīng)····

單片機(jī)源程序如下:
  1. #include<reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. sbit SPK=P1^5;
  5. sbit K1=P2^0;
  6. sbit K2=P2^1;
  7. sbit K3=P2^2;
  8. sbit K4=P2^3;
  9. sbit K5=P2^4;
  10. sbit A1=P1^0;
  11. sbit A2=P1^1;
  12. sbit A3=P1^2;
  13. sbit A4=P1^3;
  14. uchar miao_g,miao_d,fen_g,fen_d;
  15. uchar code Num[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xf8,0x80,0x90};
  16. uchar num1;
  17. uchar code song[]={0x58,0x84,0xA8,0x84,0x68,0x82,0x62,0x5C,0xA4,0xA4,0xA4,0xA4,0x93,0x81,0x9C,0x9C,0xC8,0xC4,0xC8,0xD2,0xC2,0xA8,0x92,0x82,0x6B,0xC4,0xC4,0xC4,0xA8,0x94,0x8C,0xFF};
  18. //音律部分,前四位為音階,后四位為節(jié)拍,其中以1/4節(jié)拍為單位節(jié)拍;
  19. uchar m;
  20. uchar code yinjie[]={0xff,0xff,0xFC,0x4A,0xFC,0xAE,0xFD,0x08,0xFD,0x30,0xFD,0x80,0xFD,0xC6,0xFE,0x02,0xFE,0x2A,0xFE,0x5C,0xFE,0x84,0xFE,0x98,0xFE,0xC0,0xFE,0xE8,0xFF,0x06};
  21. //音階所對(duì)應(yīng)的計(jì)時(shí)器初值,前兩位是占位,中間14位是中音1~7,后面14位是高音1~7,晶振為12MHz;
  22. uchar ding;
  23. void delay_1();//1/4節(jié)拍函數(shù)聲明;
  24. void delay(uint k);//計(jì)數(shù)器延時(shí)函數(shù)聲明;
  25. void display(uint fen_g,uint fen_d,uint miao_g,uint miao_d);//數(shù)碼管顯示函數(shù)聲明;
  26. void music();//音樂(lè)函數(shù)聲明;
  27. void delayxiaodou(int n);//消抖函數(shù)聲明,用于主函數(shù)K5;
  28. //數(shù)碼管部分
  29. void delay(uint k)          //延時(shí)函數(shù),用于計(jì)時(shí)器計(jì)算1s部分和數(shù)碼管延時(shí)顯示部分
  30. {  uint x,y;
  31.     for(x=k;x>0;x--)
  32.            for(y=125;y>0;y--);
  33.            }         
  34. void delayxiaodou(int n)
  35. {
  36.      while(n--);
  37. }
  38. void display(uint fen_g,uint fen_d,uint miao_g,uint miao_d)   //數(shù)碼管顯示時(shí)間
  39. {   
  40.   
  41.             P0=0xFF;                 //消隱;
  42.      A1=1;A2=0;A3=0;A4=0;
  43.          P0=Num[fen_g];
  44.          delay(1);
  45.          P0=0xFF;
  46.          A1=0;A2=1;A3=0;A4=0;
  47.          P0=Num[fen_d];
  48.          delay(1);
  49.          A1=0;A2=0;A3=1;A4=0;
  50.          P0=0xFF;
  51.          P0=Num[miao_g];
  52.          delay(1);
  53.          A1=0;A2=0;A3=0;A4=1;
  54.          P0=0xFF;
  55.          P0=Num[miao_d];
  56.          delay(1);
  57.          TR0=0;
  58.          
  59. }
  60. //倒計(jì)時(shí)部分
  61. void timer()interrupt 1        //定時(shí)器0,方式1
  62. {
  63.    TH0=0x3C;  //50ms倒計(jì)時(shí)
  64.    TL0=0xB0;
  65.    num1++;
  66.    if(num1==20) //50ms*20=1s
  67.    {   num1=0;
  68.        miao_d--;
  69.            if(miao_d==-1)
  70.            {   miao_d=9;
  71.                miao_g--;
  72.                    if(miao_g==-1)
  73.                    {  miao_g=5;
  74.                       fen_d--;
  75.                           if(fen_d==-1)
  76.                           {  fen_d=9;
  77.                              fen_g--;
  78.                                  if(fen_g==-1)
  79.                                  {
  80.                                     fen_g=5;}}}}}}
  81. //音樂(lè)部分
  82. void music()
  83. {  uint data j=0;
  84.     uchar data g;
  85.         uchar data i;
  86.         while (*(song+j)!=0xff)//歌曲的停頓;
  87.         {   g=*(song+j)&0x0F;//低4位,節(jié)拍;
  88.             m=*(song+j)>>4;         //高4位,音階;
  89.                 TH1=yinjie[2*m];
  90.                 TL1=yinjie[2*m+1];
  91.                 TR1=1;
  92.                 if((yinjie[2*m]==0xff)&&(yinjie[2*m+1]==0xff))
  93.                 {  TR1=0;
  94.                    SPK=1;}
  95.                 for(i=g;i>0;i--)
  96.                 {  delay_1();
  97.                    TR1=0;
  98.                    j++;
  99.                    }}}                                                  
  100. void delay_1()//1/4        節(jié)拍所需要用的時(shí)間,約187ms;
  101. {  uchar m,n,p;
  102.    for(m=100;m>0;m--)
  103.      for(n=20;n>0;n--)
  104.            for(p=15;p>0;p--);
  105. }
  106. void timer0() interrupt 3        //半個(gè)周期后,SPK處的脈沖反相,得到音階;
  107. { TH1=yinjie[2*m];
  108.   TL1=yinjie[2*m+1];
  109.   SPK=!SPK;
  110.   }
  111. //核心處理模塊
  112. void main()
  113. {
  114.    TMOD=0x01; //啟動(dòng)定時(shí)器,初值為50ms;
  115.    TH0=0x3C;
  116.    TL0=0xB0;
  117.    ET0=1;     //定義中斷;
  118.    ET1=1;
  119.    EA=1;
  120.    TR0=0;          //時(shí)鐘初始化;
  121.    miao_g=miao_d=fen_g=0;
  122.    fen_d=1;
  123.    ding=0;
  124.    while(1)
  125.    {
  126.       display(fen_g,fen_d,miao_g,miao_d);
  127.           if(K5!=0)
  128.           {
  129.           if(K1==0)                   //K1按鍵:在1分鐘基礎(chǔ)上遞增,可自定義計(jì)時(shí)時(shí)間;
  130.            {  delayxiaodou(100);
  131.               if(K1==0)
  132.                   { miao_g=miao_d=0;
  133.                     fen_d++;
  134.                         if(fen_d==10)
  135.                         {  fen_d=0;
  136.                            fen_g++;
  137.                            if(fen_g==6)
  138.                            {fen_d=0;
  139.                            }}}}
  140.                            while(!K1);
  141.           if(K2==0)                        //K2按鍵:初值為5分鐘;
  142.            {  delayxiaodou(100);
  143.                if(K2==0)
  144.                    {  
  145.                       miao_g=miao_d=0;
  146.                       fen_d=5;
  147.                           fen_g=0;
  148.                
  149.                           }
  150.                           }
  151.                           while(!K2);
  152.           if(K3==0)                        //K3按鍵:初值為15分鐘;
  153.             {  delayxiaodou(100);
  154.                    if(K3==0)
  155.                    { miao_g=miao_d=0;
  156.                      fen_d=5;
  157.                          fen_g=1;
  158.                         
  159.                          }
  160.                          }
  161.                          while(!K3);
  162.                 if(K4==0)                 //K4按鍵:初值為20分鐘;
  163.                 {  delayxiaodou(100);
  164.                    if(K4==0)
  165.                    {  miao_g=miao_d=0;
  166.                       fen_d=0;
  167.                           fen_g=2;
  168.                           
  169.                           }
  170.                           }
  171.                           while(!K4);
  172.                           }
  173.                 if(K5==0)                  //K5按鍵:初值設(shè)定好后,啟動(dòng)倒計(jì)時(shí);
  174.                  {  delayxiaodou(1);
  175.                     if(K5==0)
  176.                         {  ding++;
  177.                            if(ding==2)
  178.                            { ding=5;}
  179.                            }}
  180.                            while(!K5);
  181.                    if(ding==5)
  182.                         TR0=1;
  183.                                  //倒計(jì)時(shí)結(jié)束;
  184.                         display(fen_g,fen_d,miao_g,miao_d);
  185.                         if(fen_g==0&&fen_d==0&&miao_g==0&&miao_d==0)
  186.                           music();
  187.         }
  188.         }
復(fù)制代碼


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

使用道具 舉報(bào)

沙發(fā)
ID:636538 發(fā)表于 2020-6-24 11:48 | 只看該作者
當(dāng)你說(shuō)數(shù)碼管一閃一閃,我的想法就是去找你的延時(shí)函數(shù),發(fā)現(xiàn)你的延時(shí)時(shí)間太長(zhǎng),一般是2ms。你這里1s肯定是這個(gè)效果。其余懶得看程序,你把按鍵找個(gè)單獨(dú)的IO先測(cè)試,先別復(fù)用,測(cè)試效果好,再?gòu)?fù)用IO引腳,
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 一区二区免费在线视频 | 日韩精品免费一区二区在线观看 | 国产高清免费视频 | 国产成人精品午夜 | 日韩一区二区三区视频 | 中文字幕亚洲一区二区三区 | 日韩视频一区在线观看 | 亚洲免费在线视频 | 久久99精品久久久久久狂牛 | 国产欧美二区 | 久久一起草| 成人av色| 三级在线视频 | 欧美 视频| 免费日韩av| 国产日韩精品一区二区 | 中文字幕日韩av | a免费视频| 欧美一区二区视频 | 国产香蕉视频在线播放 | 久久av网| a在线观看 | 国产激情视频在线观看 | 成人精品视频在线观看 | 天天操天天干天天爽 | 国产在线二区 | 国产在线视频一区二区 | 日韩av.com | 中文字幕视频在线观看 | 男女视频在线观看网站 | 亚洲国产精品人人爽夜夜爽 | 亚洲 中文 欧美 日韩 在线观看 | 一区二区三区免费网站 | www亚洲免费国内精品 | 精品在线一区 | 丁香婷婷在线视频 | 成人精品久久 | 综合婷婷 | 亚洲 欧美 日韩在线 | 美日韩视频 | 国产欧美一区二区久久性色99 |