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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求助用單片機(jī)C語言寫一個按鍵計數(shù)器設(shè)計

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:213119 發(fā)表于 2017-6-20 22:29 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 Elvis 于 2017-6-22 09:15 編輯


操作要求:KEY1 、KEY2分別用于加減預(yù)置計數(shù)次數(shù),按下一次數(shù)字分別加減一,如果連續(xù)按下超過2秒,則數(shù)字快速連續(xù)加減變化;
KEY3用于計數(shù)器啟動/預(yù)置狀態(tài)切換,按第一次進(jìn)入預(yù)置狀態(tài),再按一次回到計數(shù)狀態(tài);
KEY4用于模擬單片機(jī)外部計數(shù)脈沖,每按下一次顯示的設(shè)置加一,如果計數(shù)次數(shù)到預(yù)置數(shù),則數(shù)字閃爍,蜂鳴器發(fā)音
幫我看看有什么問題吧!

按鍵計數(shù).zip

56.41 KB, 下載次數(shù): 62

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

相關(guān)帖子

回復(fù)

使用道具 舉報

沙發(fā)
ID:213119 發(fā)表于 2017-6-22 09:16 | 只看該作者
能寫出程序流圖最好了。
回復(fù)

使用道具 舉報

板凳
ID:34298 發(fā)表于 2019-9-2 18:53 | 只看該作者
#include<reg51.h> #include<INTRINS.h> #define u16 unsigned int #define u8 unsigned char   u16 count=0;   //計數(shù)設(shè)定值 u16 countTemp=0;//計數(shù) u8 zt=0;       //狀態(tài) sbit fmq=P1^0; //蜂鳴器 u16 jsflag=0;  //閃爍計時用     /*********************************************************/ u8 ds[4]; //數(shù)碼管顯示緩存 //共陰 code u8 w[]={0xf1,0xf2,0xf4,0xf8};    //位碼 code u8 d[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//斷碼 void dispaly(){//顯示函數(shù)     static u8 a;     if(++a>3)a=0;     P0=0xFF;     P2=w[a];     P0=d[ds[a]]; }     /****************************************/ void init()    //初始化函數(shù) {   TMOD=0x01;     TH0=(65536-1000)/256;     TL0=(65536-1000)%256;     EA=1;     ET0=1;   }   /******************************************/ u8 key=0xff;//消抖后的有效按鍵值 u8 key_down=0x00;//按鍵下降沿掃描結(jié)果,1有效 u8 key_up=0x00;     //上升沿掃描結(jié)果,1有效 u8 key_sc=0xff;//上次掃描的按鍵值 //檢測端下降沿檢測    sbit k1=P2^4; sbit k2=P2^5; sbit k3=P2^6; sbit k4=P2^7; //按鍵掃描程序 void scanKey(){     static u8 temp0;     static u8 ms;     u8 temp=0;     if(k1==1)temp|=0x01;     if(k2==1)temp|=0x02;     if(k3==1)temp|=0x04;     if(k4==1)temp|=0x08;     if(temp==temp0){// 按鍵消抖         if(++ms>=5){//連續(xù)5次掃描的值一樣,則認(rèn)為是穩(wěn)定狀態(tài)             key=temp;             ms=0;           }     }else {         temp0=temp;         ms=0;     }     key_down=key_sc&(~key);//下降沿掃描     key_up=(~key_sc)&key;//下降沿掃描     key_sc=key; }   u8 readPIN(u8 port,u8 pin){     code u8 tab[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,};      return ((port&tab[pin])==0?0:1); }   /***********************************/ //預(yù)置狀態(tài) u16 anjs=0;//長按計數(shù)標(biāo)志 void yzzt(){     ds[0]=count/1000%10;//設(shè)置值送入顯示緩存     ds[1]=count/100%10;     ds[2]=count/10%10;     ds[3]=count%10;     if(readPIN(key,0)==0){//k1按下         if(readPIN(key_down,0)==1){//下降沿,即剛按下             if(++count>9999)count=0;//加1             anjs=2000;//倒計時2s         }         if(anjs==0){//倒計時到             anjs=200;//倒計時0.2s             if(++count>9999)count=0;//加1         }     }       //減1     if(readPIN(key,1)==0){         if(readPIN(key_down,1)==1){             if(--count>9999)count=9999;             anjs=2000;         }         if(anjs==0){             anjs=200;             if(--count>9999)count=9999;         }     }       if(readPIN(key_down,2)==1){//計入計數(shù)         zt=2;     } }   //計數(shù)狀態(tài) void jszt(){     if((countTemp==count)&&(jsflag<=500)){//閃爍        ds[0]=10;         ds[1]=10;         ds[2]=10;         ds[3]=10;     }else {//正常顯示           ds[0]=countTemp/1000%10;         ds[1]=countTemp/100%10;         ds[2]=countTemp/10%10;         ds[3]=countTemp%10;     }     fmq=(countTemp==count?1:0);//蜂鳴器       if(readPIN(key_down,2)==1){//計入預(yù)置狀態(tài)         zt=1;     }     if(readPIN(key_down,3)==1){//計數(shù)         if(++countTemp>9999)countTemp=0;     } } /*****************************/ void main()//主函數(shù) {     while(1){         if(zt==0){             fmq=0;             init();//系統(tǒng)初始化              TR0=1; //定時器開始計時             zt=1;         }else if(zt==1){             yzzt();         }else if(zt==2){             jszt();         }         scanKey();     }   }     /****************************/ void timer0() interrupt 1//1ms定時器 {        TH0=(65536-1000)/256;//重載初值     TL0=(65536-1000)%256;     dispaly();//顯示     if(++jsflag>=1000)jsflag=0;     if(anjs!=0)anjs--;   }
回復(fù)

使用道具 舉報

地板
ID:34298 發(fā)表于 2019-9-2 18:54 | 只看該作者
#include<reg51.h>
#include<INTRINS.h>
#define u16 unsigned int
#define u8 unsigned char

u16 count=0;   //計數(shù)設(shè)定值
u16 countTemp=0;//計數(shù)
u8 zt=0;       //狀態(tài)
sbit fmq=P1^0; //蜂鳴器
u16 jsflag=0;  //閃爍計時用


/*********************************************************/
u8 ds[4]; //數(shù)碼管顯示緩存
//共陰
code u8 w[]={0xf1,0xf2,0xf4,0xf8};    //位碼
code u8 d[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//斷碼
void dispaly(){//顯示函數(shù)
    static u8 a;
    if(++a>3)a=0;
    P0=0xFF;
    P2=w[a];
    P0=d[ds[a]];
}


/****************************************/
void init()    //初始化函數(shù)
{   TMOD=0x01;
    TH0=(65536-1000)/256;
    TL0=(65536-1000)%256;
    EA=1;
    ET0=1;

}

/******************************************/
u8 key=0xff;//消抖后的有效按鍵值
u8 key_down=0x00;//按鍵下降沿掃描結(jié)果,1有效
u8 key_up=0x00;     //上升沿掃描結(jié)果,1有效
u8 key_sc=0xff;//上次掃描的按鍵值
//檢測端下降沿檢測   
sbit k1=P2^4;
sbit k2=P2^5;
sbit k3=P2^6;
sbit k4=P2^7;
//按鍵掃描程序
void scanKey(){
    static u8 temp0;
    static u8 ms;
    u8 temp=0;
    if(k1==1)temp|=0x01;
    if(k2==1)temp|=0x02;
    if(k3==1)temp|=0x04;
    if(k4==1)temp|=0x08;
    if(temp==temp0){// 按鍵消抖
        if(++ms>=5){//連續(xù)5次掃描的值一樣,則認(rèn)為是穩(wěn)定狀態(tài)
            key=temp;
            ms=0;  
        }
    }else {
        temp0=temp;
        ms=0;
    }
    key_down=key_sc&(~key);//下降沿掃描
    key_up=(~key_sc)&key;//下降沿掃描
    key_sc=key;
}

u8 readPIN(u8 port,u8 pin){
    code u8 tab[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,};
     return ((port&tab[pin])==0?0:1);
}

/***********************************/
//預(yù)置狀態(tài)
u16 anjs=0;//長按計數(shù)標(biāo)志
void yzzt(){
    ds[0]=count/1000%10;//設(shè)置值送入顯示緩存
    ds[1]=count/100%10;
    ds[2]=count/10%10;
    ds[3]=count%10;
    if(readPIN(key,0)==0){//k1按下
        if(readPIN(key_down,0)==1){//下降沿,即剛按下
            if(++count>9999)count=0;//加1
            anjs=2000;//倒計時2s
        }
        if(anjs==0){//倒計時到
            anjs=200;//倒計時0.2s
            if(++count>9999)count=0;//加1
        }
    }

    //減1
    if(readPIN(key,1)==0){
        if(readPIN(key_down,1)==1){
            if(--count>9999)count=9999;
            anjs=2000;
        }
        if(anjs==0){
            anjs=200;
            if(--count>9999)count=9999;
        }
    }

    if(readPIN(key_down,2)==1){//計入計數(shù)
        zt=2;
    }
}

//計數(shù)狀態(tài)
void jszt(){
    if((countTemp==count)&&(jsflag<=500)){//閃爍
       ds[0]=10;
        ds[1]=10;
        ds[2]=10;
        ds[3]=10;
    }else {//正常顯示
          ds[0]=countTemp/1000%10;
        ds[1]=countTemp/100%10;
        ds[2]=countTemp/10%10;
        ds[3]=countTemp%10;
    }
    fmq=(countTemp==count?1:0);//蜂鳴器

    if(readPIN(key_down,2)==1){//計入預(yù)置狀態(tài)
        zt=1;
    }
    if(readPIN(key_down,3)==1){//計數(shù)
        if(++countTemp>9999)countTemp=0;
    }
}
/*****************************/
void main()//主函數(shù)
{
    while(1){
        if(zt==0){
            fmq=0;
            init();//系統(tǒng)初始化
            TR0=1; //定時器開始計時
            zt=1;
        }else if(zt==1){
            yzzt();
        }else if(zt==2){
            jszt();
        }
        scanKey();
    }

}


/****************************/
void timer0() interrupt 1//1ms定時器
{   
    TH0=(65536-1000)/256;//重載初值
    TL0=(65536-1000)%256;
    dispaly();//顯示
    if(++jsflag>=1000)jsflag=0;
    if(anjs!=0)anjs--;

}
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: av 一区二区三区 | 亚洲 成人 在线 | 日韩精品久久久久久 | 国产精品久久久久无码av | 性色网站 | 久久精品成人 | 国产露脸对白88av | 日本在线视频一区二区 | 嫩草研究影院 | 国产精品极品美女在线观看免费 | 国产精品第2页 | 四虎影院在线播放 | 真人毛片| 成人欧美一区二区三区黑人孕妇 | 久久伊人一区二区 | 色综合色综合色综合 | 久久久久电影 | 中文字幕一区二区视频 | 中国大陆高清aⅴ毛片 | 日日干天天操 | 欧美高清一级片 | 免费观看黄色片视频 | 51ⅴ精品国产91久久久久久 | 日韩视频 中文字幕 | 精品综合久久久 | 337p日本欧洲亚洲大胆鲁鲁 | 亚洲精品视频在线 | 国产激情一区二区三区 | 国产精品久久国产精品 | 国产乱码久久久久久一区二区 | 午夜精品在线观看 | 国产精品视频97 | 中文字幕在线观看国产 | 成年网站在线观看 | 鸡毛片| 成人性视频免费网站 | 日韩成人精品一区二区三区 | 成人三级视频 | 成人1区2区 | 玖玖国产 | 精品成人|