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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機數碼管有顯示按鍵就沒作用的問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:348282 發表于 2019-5-17 16:24 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
以下的程序功能,當取消數碼管顯示后,按鍵就有作用了LED1會亮和滅,如一起執行按鍵就沒作用,本來想用按鍵調數碼管數字加減變化的。現在請各位高手指點下,看那里出問題了。thanks!

單片機源程序如下:
include"STC15W.H"
#include"intrins.h"
#define uchar unsigned char  
#define uint unsigned int
void digplay(uint hig);
void key();
sbit PWM=P1^7;
sbit LED1=P5^5;
sbit up=P1^4;
sbit down=P1^5;
sbit ba=P1^1;
sbit sh=P1^0;
sbit ge=P1^2;
sbit dn=P1^3;
uint hig=250;
uchar code LED[]={0xCF,0x81,0xEA,0xE3,0xA5,0x67,0x6F,0xC1,0xEF,0xE7,0x5e};
/************延時子程序*************/
void delayxms(uint z)
{
uint y,x;
for(y=z;x>0;x--)
   for(y=110;y>0;y--);
   }
void KeyScan(void)//按鍵掃描
{
  static uchar key1_lock=0;//自鎖標志
  static uint count1=0;//計數延時
  static uchar key2_lock=0;//
  static uint count2=0;//
if(up==0)
  {
   if((count1++>=5)&&(key1_lock==0))
     {
     key1_lock=1;
          LED1=~LED1;
        }
         }
  else
      {
           key1_lock=0;
           count1=0;
           }
        if(down==0)
        {
          if((count2++>=5)&&(key2_lock==0))
          {
            key2_lock=1;
                LED1=~LED1;
}
        }
        else
           {
            key2_lock=0;
                count2=0;
                }
          }
void Init2()//定時器2初始化
{
AUXR&=0x04;        //12T
   T2L=0x78;        //延時5MS
   T2H=0xec;        //
   
   IE2|=0x04;
   AUXR|=0x10;        //開始計時
   EA=1;
   }        

void digplay(uint hig)//數碼管動態掃描
{
  
          static uchar i=0;
         
          P3=0x00;
         switch(i)
         {
          case 0:
                P3=LED[hig/100];
                        P1=0x02;
                        P1=0x00;
                        i++;
                        break;
          case 1:
                P3=LED[hig/10%10];
                        P1=0x01;
                        P1=0x00;
                        i++;
                        break;
          case 2:
                P3=LED[hig%10];
                        P1=0x04;
                        P1=0x00;
                        i++;
                        break;
                case 3:
                    P3=0x5e;
                        P1=0x08;
                        P1=0x00;
                        i=0;
                        break;
                        }
                        delayxms(5);
             }
void main()//主程序
{
Init2();
P5M0=0xff;
  P5M1=0x00;
  P3M0=0xff;
  P3M1=0x00;
  P1M0=0xff;
  P1M1=0xf0;
while(1)
  {

    digplay(hig);
   }
}
void t2int() interrupt 12
{
   KeyScan();
}


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

使用道具 舉報

沙發
ID:348282 發表于 2019-5-17 16:36 | 只看該作者
用最古老的按鍵程序(if(........==0)delay(10),都試過,還是沒作用。搞到頭暈了。
回復

使用道具 舉報

板凳
ID:123289 發表于 2019-5-18 08:27 | 只看該作者
把你的程序畫成框圖,看看框圖上的邏輯是否混亂,你就明白了。
回復

使用道具 舉報

地板
ID:348282 發表于 2019-5-18 09:31 | 只看該作者
多謝,已經找到原因了。
回復

使用道具 舉報

5#
ID:213173 發表于 2019-5-18 09:56 | 只看該作者
law110 發表于 2019-5-17 16:36
用最古老的按鍵程序(if(........==0)delay(10),都試過,還是沒作用。搞到頭暈了。

樓主定時器初始化設置不當
void Init2()                //5毫秒@12.000MHz
{
        AUXR &= 0xFB;        //12T模式16位自動重載
        T2L = 0x78;                //設置定時初值
        T2H = 0xEC;                //設置定時初值
//        IE2|=0x04;
        AUXR |= 0x10;               //定時器2開始計時
        EA=1;                        //開總中斷
        ET2=1;                        //開T2中斷
}
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本午夜在线视频 | 色噜噜亚洲男人的天堂 | 国产成在线观看免费视频 | 久久国产视频网站 | 天天澡天天操 | 日韩有码一区二区三区 | 国产一区2区 | 精品国产一区二区国模嫣然 | 国产日韩精品一区 | 日韩精品在线视频免费观看 | 欧美日韩一区在线 | 国产成人精品久久久 | 亚洲午夜视频在线观看 | 精品国产乱码久久久久久丨区2区 | 中文字幕亚洲区 | 日韩欧美三区 | 一区二区三区四区在线 | 男人视频网站 | 天天干夜夜操 | 中文字幕日韩在线 | 9999国产精品欧美久久久久久 | 羞羞视频网页 | 日韩中文字幕 | 天堂视频一区 | a欧美 | 九色91视频 | 日韩三区在线观看 | 日韩三区在线观看 | 在线观看日韩av | 亚洲精品视频在线播放 | 一区在线视频 | 久久精品国产a三级三级三级 | 狠狠热视频| 一级毛片观看 | 亚洲日韩中文字幕一区 | 午夜精品久久久 | 久久综合九色综合欧美狠狠 | 亚洲视频免费一区 | 成人av一区二区亚洲精 | 久久久精品一区 | 日韩精品在线观看视频 |