新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 通過按鍵控制IO口操作

        通過按鍵控制IO口操作

        作者: 時間:2016-11-30 來源:網絡 收藏
        今天對單片機按鍵有了一定的認識,單片機分為獨立式鍵盤和矩陣式鍵盤,獨立式占用IO口資源比較大,適合按鍵少的控制操作,其優點是設計編程一目了然,比較簡單,矩陣式占用IO口比較少,適合對按鍵要求比較高而IO口資源比較寶貴的操作,這兩者各有其優點和缺點,以后應用時要根據需要進行設計,特別是矩陣式的要利用行線,和列線的高低電平檢測和處理數據信息的原理要記住。

        下面把今天學的一個簡單的通過按鍵控制IO口LED燈工作的程序寫一下,呵呵,可以加深我對按鍵操作(ELSE語句)的理解。

        本文引用地址:http://www.104case.com/article/201611/323750.htm

        #include
        #define uint unsigned int
        #define uchar unsigned char
        sbit DIPswitch1=P3^0;
        sbit DIPswitch2=P3^1;
        sbit redLED1=P1^0;
        sbit blueLED1=P1^1;
        sbit greenLED1=P1^2;
        sbit yellowLED1=P1^3;
        sbit redLED2=P1^4;
        sbit blueLED2=P1^5;
        sbit greenLED2=P1^6;
        sbit yellowLED2=P1^7;
        void delay(void)
        {uint i;
        for(i=0;i<35530;i++);
        }
        void main(void)
        {
        P1=0XFF;
        P3=0XFF;//置位
        while(1)
        {
        if(DIPswitch1==0)
        {
        redLED1=~redLED1;
        yellowLED2=~yellowLED2;//判斷按鈕1是否為低電平,如果是的話,實現P0口的1腳和7腳按位取反
        delay();}//延時操作
        else if(DIPswitch2==0)
        {
        P1=~P1;//按鍵2取低時,P0口所有位按位取反閃爍
        }
        else
        {
        P1=0X00;//如果按鍵1VS2都為高,則所有燈亮
        }

        }
        }

        工作原理是當按鍵1為低adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=17&is_app=0&jk=90ec16ab04311395&k=%B5%E7%C6%BD&k0=%B5%E7%C6%BD&kdi0=0&luki=5&n=10&p=baidu&q=98059059_cpr&rb=0&rs=1&seller_id=1&sid=95133104ab16ec90&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1831118&u=http%3A%2F%2Fwww%2E51hei%2Ecom%2Fmcu%2F1994%2Ehtml&urlid=0" id="3_nwl" mpid="3" target="_blank">電平時,P1口的1腳和7腳按位取反,實現LED燈的閃爍。當按鍵2為低電平的時候,P1口所有的燈實現按位取反功能,所有燈閃爍。當按鍵1和2都為高電平時,P1口為低電平,所有燈亮。

        這個硬件電路是P3^0和P3^1控制按鍵1和2;P1口控制八個LED燈。

        呵呵,數碼管的動態和靜態還在學習當中,現在基本的靜態控制應該是會了,動態的爭取這兩天把它學完。加油。
        由于時間關系,在這就不寫上單片機的工作系統了。


        有了這個程序和原理圖,我們也可以根據需要適當得改寫程序,達到我們想要的目的。



        關鍵詞: 按鍵控制IO口操

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 东乌珠穆沁旗| 嫩江县| 乐清市| 崇明县| 恩平市| 临海市| 中超| 稻城县| 鲁甸县| 原平市| 醴陵市| 河西区| 鹤岗市| 遂溪县| 平罗县| 平和县| 张家港市| 遵义县| 白朗县| 永仁县| 正安县| 罗平县| 淮阳县| 舞钢市| 孙吴县| 桓仁| 布拖县| 蕉岭县| 昆山市| 灵丘县| 文安县| 纳雍县| 额尔古纳市| 汝阳县| 中卫市| 安远县| 日喀则市| 南陵县| 长治市| 乾安县| 安阳市|