欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機控制的簡易樓梯照明燈設計

[復制鏈接]
跳轉到指定樓層
樓主
ID:312085 發表于 2018-4-20 08:02 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
自己做的樓梯照明燈,希望各位朋友捧捧場實驗目的:

  實現樓道間照明燈的方便控制,一個照明燈,在樓上和樓下各有一個(閉合式)開關控制。開關的閉合并不直接決定燈的亮滅,而開關狀態的改變才是決定燈亮滅的關鍵。即不管兩個開關當前的狀態如何,只要有一個開關狀態發聲變化,都會使照明燈在打亮或者熄滅兩種狀態間切換。比如當有人要上樓,若之前燈是滅的,在按下樓下開關后(此后開關為閉合狀態),燈會打亮;當到樓上后,再按樓上開關,燈會熄滅。而當后來又有人上樓時,再按次樓下開關(此后開關為打開狀態),燈同樣會打亮;此試驗中,用P1口相連的第一個led來模擬照明燈,而用s2和s3來模擬兩個開關。注意,因為實際樓道中的開關為閉合式的,而HL-1的開關為反彈式的,所以實驗時,請用手一直按著按鍵演示開關的閉合。



程序:
#include <reg52.h>

sbit light=P1^0;
sbit s1=P3^4;
sbit s2=P3^5;

bit change,s1sta,s2sta;//s1sta,s2sta為開關s1和s2前一時刻的狀態,用來和當前的s1與s2狀態進行對比,
                                           //進而判決兩個開關的狀態有無發生變化。
bit keyscan()
{
        if((s1^s1sta)||(s2^s2sta)) //^為異或,若兩者不同,則結果為1。即若兩開關中,任一開關的狀態發生變化,則此條件即為真。
                change=1;
        return change;
}

void main()
{        
        s1sta=s1;
        s2sta=s2;
        while(1)
        {
                keyscan();                   //掃描按鍵狀態是否變化,即是否有人更改了按鍵狀態。
                if(change)
                {
                        change=0;           //清零
                        light=~light;  //一旦發現有開關狀態發生了變化,則燈的狀態就取反。(若以前亮,則熄滅;反之則打亮)
                        s1sta=s1;           //同時,將s1和s2的當前狀態送給s1sta和s2sta,為以后的比較做準備。
                        s2sta=s2;
                }        
        }
}

全部資料51hei下載地址:
【實驗14】樓梯照明燈.zip (10.83 KB, 下載次數: 25)


評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表