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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機按鍵時,數碼管會閃爍一下。原因是什么

  [復制鏈接]
跳轉到指定樓層
樓主
ID:74603 發表于 2015-3-23 19:43 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar  tt,bai,shi,ge;
uint count=300;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
sbit dula=P2^6;
sbit wela=P2^7;
sbit key1=P3^4;
sbit key2=P3^5;
void delay(uchar z);
void init();
void key();
void display(uint count);
void main()
{
        dula=1;
        P0=0;
        dula=0;
        wela=1;
        P0=0xf8;
        wela=0;
        init();
        while(1)
        {
                key();
                display(count);
               
               
        }
}

void delay(uchar z)
{
        int i,j;
        for(i=z;i>0;i--)
                for(j=110;j>0;j--);
}

void init()
{
        TMOD=0x01;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        EA=1;
        ET0=1;

}

void timer_0() interrupt 1
{        
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        tt++;
        if(tt==20)
        {
                tt=0;
                count--;
        }        
}

void key()
{
        if(key1==0)
        {
                delay(10);
                if(key1==0)
                {
                        TR0=1;
               
                }
                while(!key1);
        }
}

void display(uint count)
{
            delay(10);
                bai=count/100;
                shi=(count-bai*100)/10;
                ge=count%10;

                dula=1;
                P0=table[bai];
                dula=0;
                P0=0xff;
                wela=1;
                P0=0xfe;
                wela=0;
                delay(2);

                dula=1;
                P0=table[shi];
                dula=0;
                P0=0xff;
                wela=1;
                P0=0xfd;
                wela=0;
                delay(3);

                dula=1;
                P0=table[ge];
                dula=0;
                P0=0xff;
                wela=1;
                P0=0xfb;
                wela=0;        
                        delay(3);
        
}

按鍵按下,數碼管只顯示最后一個個位,好無奈啊 ,試了好長時間!
剛開始學51,希望大蝦們詳細給說一下什么原因,要怎么修改。。。

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

使用道具 舉報

沙發
ID:1 發表于 2015-3-23 22:21 來自觸屏版 | 只看該作者
while(!key1);,你程序中的這一句,意思是,等待按鍵松手?梢娝恢痹趫绦兴姥h。所以這個時候,數碼管的掃描也停止了,因此,出現那只有一個數碼管亮的情況。不知道這樣說你能不能夠理解
回復

使用道具 舉報

板凳
ID:75575 發表于 2015-3-29 14:09 | 只看該作者
  1. if (K1==0)
  2.                 {
  3.                         delayms(10);
  4.                         if (K1==0)
  5.                         {
  6.                                 num=0;
  7.                                 while(!K1);
  8.                         }
復制代碼
感覺你應該在鍵盤檢測時候進行軟件延時消除抖動   比如這個程序

評分

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

查看全部評分

回復

使用道具 舉報

地板
ID:143116 發表于 2016-10-17 20:36 | 只看該作者
admin 發表于 2015-3-23 22:21
while(!key1);,你程序中的這一句,意思是,等待按鍵松手。可見他一直在執行死循環。所以這個時候,數碼管 ...

大神 請收下我的膝蓋 完美的解決了我的問題 太厲害了!!
回復

使用道具 舉報

5#
ID:74868 發表于 2016-11-26 15:07 | 只看該作者
應該把顯示時間延長一些
回復

使用道具 舉報

6#
ID:111634 發表于 2016-11-26 17:39 | 只看該作者
應該在保持顯示的同時,檢測鍵盤。
回復

使用道具 舉報

7#
ID:150381 發表于 2016-11-26 18:33 | 只看該作者
努力。細心點吧。加油
回復

使用道具 舉報

8#
ID:150658 發表于 2016-11-28 10:54 | 只看該作者
你好!你寫數碼管的顯示函數那部分都有bai shi ge 三個變量,則你在聲明函數時也要給三個參數.
回復

使用道具 舉報

9#
ID:150703 發表于 2016-11-28 11:10 | 只看該作者
死循環,等待按鍵松手,程序沒有執行掃描數碼管
回復

使用道具 舉報

10#
ID:150712 發表于 2016-11-28 12:05 | 只看該作者
分時復用了引腳吧
回復

使用道具 舉報

11#
ID:150728 發表于 2016-11-28 15:01 | 只看該作者
要貼上原理圖,才能更好理解你的程序。貌似key()函數里有問題:判斷KEY變量,啟動T0計時器,后面又是while循環語句。感覺MCU在這里耗時了,影響數碼管的動態掃描。
回復

使用道具 舉報

12#
ID:985389 發表于 2021-12-7 18:40 來自觸屏版 | 只看該作者
yyqwade1028 發表于 2016-10-17 20:36
大神 請收下我的膝蓋 完美的解決了我的問題 太厲害了。

怎么改的,大神,請詳細指教一下,我也是新手,多謝
回復

使用道具 舉報

13#
ID:161164 發表于 2021-12-9 14:16 | 只看該作者
阮經天下 發表于 2021-12-7 18:40
怎么改的,大神,請詳細指教一下,我也是新手,多謝

        if (K1==0)
                {
                        delayms(10);
                        if (K1==0 && K1_Bit == 0)
                        {
                                num=0;
                                K1_Bit = 1;//bit K1_Bit
                        }
        }else{
                K1_Bit = 0;
        }
回復

使用道具 舉報

14#
ID:968760 發表于 2021-12-9 15:26 | 只看該作者
消除按鍵抖動
回復

使用道具 舉報

15#
ID:523803 發表于 2021-12-13 08:54 | 只看該作者
把數碼管顯示放進定時器也行,同時在大循環運行會有影響
回復

使用道具 舉報

16#
ID:163125 發表于 2021-12-13 09:48 | 只看該作者
去GitHub找個按鍵的驅動吧,比自己寫的強多了,功能還多
回復

使用道具 舉報

17#
ID:899663 發表于 2021-12-13 18:18 | 只看該作者
你的按鍵是輪詢方式,將按鍵改用中斷處理,就不會有這個問題
回復

使用道具 舉報

18#
ID:843860 發表于 2021-12-13 18:41 | 只看該作者
加三極管和譯碼器了嗎,你得鎖住
回復

使用道具 舉報

19#
ID:893997 發表于 2021-12-30 15:59 | 只看該作者
循環被中斷了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 粉嫩一区二区三区四区公司1 | 亚洲精品在线播放 | 久久中文字幕一区 | 久久精品国产v日韩v亚洲 | 国产乱码高清区二区三区在线 | 久久国产区 | 亚洲精品一区二三区不卡 | 在线国产99 | 天天看夜夜 | 日韩成年人视频在线 | 欧美韩一区二区 | 成人免费网站在线 | 日韩欧美国产一区二区三区 | www.亚洲视频 | 国产精品a久久久久 | 国产在线资源 | 欧美91 | 电影91久久久 | 欧洲免费毛片 | 日本午夜网 | 一区二区三区在线电影 | 国产欧美日韩一区二区三区在线 | 日韩av一区在线观看 | 在线观看免费国产 | 久久精品视频播放 | julia中文字幕久久一区二区 | 欧美二区在线 | 日韩中文字幕视频在线观看 | 99久久夜色精品国产亚洲96 | 亚洲九色 | 天堂va在线观看 | 青青草一区 | 久久国产高清 | 欧美精品在欧美一区二区 | 欧美午夜精品理论片a级按摩 | 亚洲精品3| 久久久久久久久久久91 | 久久久久久综合 | 亚洲福利免费 | 岛国二区 | 国产日韩欧美在线观看 |