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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關于單片機AD轉換中按鍵控制的問題

[復制鏈接]
跳轉到指定樓層
樓主
這個程序不加按鍵可以正常顯示,加上按鍵之后按鍵不起作用,按鍵功能是按一下采集一個數,想問一下怎么解決?
程序如下:
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code zixingma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar code weixuan[]={0x10,0x20,0x40,0x80};

sbit ST=P3^0;
sbit OE=P3^1;
sbit EOC=P3^2;
sbit ALE=P3^3;
sbit P07=P0^7;
sbit key=P3^5;
void key_scan(void);
void caiji(void);   
void delay5ms(void)
{
        unsigned char i,j;
        for(i=10;i>0;i--)
                for(j=248;j>0;j--);
}               
uchar flag;                 
void delay(uchar t)
{
        while(t--);
}
void disp(uint num)
{
        uchar i,zheng,dian1,dian2,dian3;
        zheng=num/1000;
        dian1=num%1000/100;
        dian2=num%100/10;
        dian3=num%100%10;
        for(i=0;i<4;i++)
        {
                P1=0xff;
                switch(i)
                {
                        case 0:P2=weixuan[ i];P0=zixingma[zheng];P07=0;break;
                        case 1:P2=weixuan[ i];P0=zixingma[dian1];break;
                        case 2:P2=weixuan[ i];P0=zixingma[dian2];break;
                        case 3:P2=weixuan[ i];P0=zixingma[dian3];break;
                }
                delay(200);
        }
}
uint ADC0809(void)
{
        uint n;
        OE=0;
        ST=0;
        ALE=0;
        ST=1;
        ALE=1;
        ST=0;
        ALE=0;        
        delay(10);
        while(!EOC);
        OE=1;
        n=P1;
        OE=0;
        return n;
}
void main()
{
        while(1)
        {
                key_scan();
                switch(flag)
                {
                        case 0:caiji();        disp(ADC0809()*19.6078);break;
                }
        }
}
void key_scan()
{
        if(key==0)
        {
                delay5ms();
                if(key==0)
                {
                        flag=0;
                        while(key==1)
                                delay5ms();
                        
                }
        }
}
void caiji()
{
        uint ADC0809(void);        
}

X7NV7PFTL(O3DV)U9((IGOU.png (39.93 KB, 下載次數: 95)

X7NV7PFTL(O3DV)U9((IGOU.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:716292 發表于 2020-5-18 14:57 | 只看該作者
寫消抖程序
回復

使用道具 舉報

板凳
ID:749362 發表于 2020-5-18 15:18 | 只看該作者
根據以上的代碼,可以發現,按鍵理應沒有作用。
因為你定義了一個變量flag,沒有進行初始化,所以編譯器會默認為0,此時按鍵根據程序會執行caiji();        disp(ADC0809()*19.6078);break;
運行后,按下按鍵時,flag也會置0,此時仍然會執行caiji();    文中缺少了flag =1 ;的語句!
建議,在按鍵中,添加Flag置1的語句或者在執行完caiji()后對flag進行置1操作。以實現按鍵沒有按下時,不執行ADC轉換函數。

以上希望對你有所幫助。

評分

參與人數 1黑幣 +30 收起 理由
admin + 30 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一区综合 | 欧美日韩国产精品一区二区 | 国产91黄色 | 久草在线视频中文 | 亚州精品天堂中文字幕 | 黄色片视频网站 | 久久999| 国产精品日韩欧美 | 伦理一区二区 | 欧美男人天堂 | 亚洲一区免费 | 亚洲啊v在线 | 一级免费毛片 | 国产精品一区二区av | 免费一区 | 成人一区二区在线 | 国产精品一区一区 | 91精品久久久久久久久中文字幕 | 亚洲一区欧美一区 | 精品久久99 | 91精品国产91久久综合桃花 | 人和拘一级毛片c | 日韩淫片免费看 | 欧美一级黄色片 | 天天久 | 欧美国产中文字幕 | 日韩成人影院在线观看 | 欧美成人手机视频 | 在线视频一区二区三区 | 一级一级毛片免费看 | 欧美一级在线观看 | 在线亚洲人成电影网站色www | 日韩二区 | 国产成人影院 | 精品久久久久久久久久久久 | 99久久久国产精品 | 久久久91精品国产一区二区精品 | 国产精品视频www | 日本精品一区二区三区视频 | 亚洲综合成人网 | 欧美黑人巨大videos精品 |