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

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

QQ登錄

只需一步,快速開始

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

求助大神一個(gè)用兩個(gè)按鍵控制的程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:202586 發(fā)表于 2017-12-12 06:50 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
程序是這樣控制的兩個(gè)按鍵,按第一個(gè)按鍵選擇1~9顯示在一位數(shù)碼管上,也就是加1,單位為加一秒,選擇幾就是想定時(shí)幾秒。選擇好定時(shí)秒數(shù)后按第二個(gè)按鍵就是啟動(dòng)選擇的定時(shí)秒數(shù),例如:第一個(gè)按鍵選擇顯示6,按第二個(gè)按鍵后打開輸出IO口定時(shí)6秒關(guān)閉,只要不按第一個(gè)按鍵選擇顯示秒數(shù),按第二個(gè)按鍵可以一直循環(huán)執(zhí)行選擇的定時(shí)秒數(shù),求各位大神賜教,謝謝
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:213173 發(fā)表于 2017-12-13 09:57 | 只看該作者
不知道你用的什么MCU和外圍電路,只能按51給你寫了程序,端口定義根據(jù)實(shí)際電路自行修改。
#include <AT89X52.H>
#define uchar unsigned char
#define uint unsigned int      
sbit OUT=P1^0;                                //輸出
sbit key1=P3^4;                        //鍵1
sbit key2=P3^5;                        //鍵2
sbit dula=P2^6;                        //段選
sbit wela=P2^7;                        //位選
uchar code table[]={                //共陰數(shù)碼管0~f
        0x3f,0x06,0x5b,0x4f,
        0x66,0x6d,0x7d,0x07,
        0x7f,0x6f,0x77,0x7c,
        0x39,0x5e,0x79,0x71};
uchar Cnt50ms=0,Cnt1s=0;
uchar Time=0;
bit   flag=0;

void Timer0Init();
void keycan();
void display();
void Countdown();

void main()
{
        Timer0Init();        //初始化定時(shí)器
        while(1)
        {
                keycan();        //按鍵掃描
                display();        //顯示
                Countdown();//倒計(jì)時(shí)
        }
}

void Timer0Init()        //50毫秒@12.000MHz
{
        TMOD= 0x01;                //設(shè)置定時(shí)器模式
        TL0 = 0xB0;                //設(shè)置定時(shí)初值
        TH0 = 0x3C;                //設(shè)置定時(shí)初值
//        TF0 = 0;                        //清除TF0標(biāo)志
//        TR0 = 1;                        //定時(shí)器0開始計(jì)時(shí)
        EA=1;                                //開總中斷
        ET0=1;                         //開T0中斷
}

void keycan()
{
        static bit key1_sign=0,key2_sign=0;        //按鍵自鎖標(biāo)志
        static uchar count1=0,count2=0;                //消抖計(jì)數(shù)變量                       

        if(!key1)                //檢測(cè)按鍵1如果按下為0
        {
                if((key1_sign==0)&&(flag==0))        //按鍵自鎖標(biāo)志為0
                {
                        count1++;                                        //消抖計(jì)數(shù)
                        if(count1>=250)                        //消抖延時(shí)
                        {
                                key1_sign=1;                        //按鍵自鎖標(biāo)志置1
                                Cnt50ms=0;
                                Time++;                                        //定時(shí)時(shí)間變量+1
                                if(Time>=10)
                                        Time=0;
                        }
                }
        }
        else
        {
                key1_sign=0;                                //按鍵自鎖標(biāo)志清0
                count1=0;                                        //消抖計(jì)數(shù)清0
        }

        if(!key2)                                        //檢測(cè)按鍵2如果按下為0
        {
                if(key2_sign==0)                //按鍵自鎖標(biāo)志為0       
                {
                        count2++;                                        //消抖計(jì)數(shù)
                        if(count2>=250)                        //消抖延時(shí)
                        {
                                key2_sign=1;                //按鍵自鎖標(biāo)志置1
                                Cnt1s=Time;                        //傳遞定時(shí)時(shí)間
                                if(Cnt1s>0)
                                {
                                        OUT = 0;                        //低電平輸出
                                        flag= 1;                        //禁止key1操作
                                        TR0 = 1;                        //開啟定時(shí)器
                                }
                        }
                }
        }       
        else
        {
                key2_sign=0;                                //按鍵自鎖標(biāo)志清0
                count2=0;                                        //消抖計(jì)數(shù)清0
        }
}

void display()
{
        if(flag==0)
                P0=table[Time];                //顯示定時(shí)時(shí)間
        else
                P0=table[Cnt1s]|0x80;//加點(diǎn)表示倒計(jì)時(shí)工作中
        dula=1;
        dula=0;
       
        P0=0x7e;        //6位數(shù)碼管只使用第1位
        wela=1;
        wela=0;
}      

void Countdown()                //倒計(jì)時(shí)
{
        if(flag==1)
        {       
                if(Cnt1s==0)
                {
                        TR0 = 0;                //關(guān)閉定時(shí)器
                        OUT = 1;                //停止輸出
                        flag= 0;                //允許key1操作
                }
        }
}

void Timer0() interrupt 1
{
        TL0 = 0xB0;                //設(shè)置定時(shí)重裝值
        TH0 = 0x3C;                //設(shè)置定時(shí)重裝值
        Cnt50ms++;
        if(Cnt50ms>=20)//1秒
        {
                Cnt50ms=0;
                Cnt1s--;
        }
}
回復(fù)

使用道具 舉報(bào)

板凳
ID:260579 發(fā)表于 2017-12-13 11:51 | 只看該作者
向大神學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

地板
ID:202586 發(fā)表于 2017-12-24 08:23 | 只看該作者
wulin 發(fā)表于 2017-12-13 09:57
不知道你用的什么MCU和外圍電路,只能按51給你寫了程序,端口定義根據(jù)實(shí)際電路自行修改。
#include
#def ...

謝謝您非常感謝,我會(huì)好好學(xué)習(xí)的
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品永久 | 欧美lesbianxxxxhd视频社区 | 国产精品亚洲综合 | 91亚洲精| 久久久久se | 黑人巨大精品欧美一区二区免费 | 天天干夜夜拍 | 久久久久网站 | 中文字幕精品一区 | www.四虎.com | 一区二区久久 | 亚洲在线一区二区三区 | 国产视频一区在线观看 | 日韩精品久久久久久 | 欧美日韩精品一区二区 | 美女艹b | 国产午夜精品一区二区三区在线观看 | 天堂一区在线观看 | 中文字幕视频在线免费 | 性高湖久久久久久久久aaaaa | 久久中文一区二区 | 精品国产青草久久久久96 | 日韩精品在线看 | 国产精品99视频 | 在线观看av中文字幕 | 狠狠热视频 | 国产成人精品午夜视频免费 | 亚洲欧美在线视频 | 毛片网在线观看 | .国产精品成人自产拍在线观看6 | 一a级片 | 亚洲人成一区二区三区性色 | 精品久久久久久亚洲国产800 | 91视频一88av| 美女黄色在线观看 | 美女久久久久久久 | 欧美日韩三区 | 国产精品a久久久久 | 阿v视频在线观看 | 黄色片a级 | 欧美日韩国产一区二区三区 |