新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機學習之1-鎖存器驅動led燈

        51單片機學習之1-鎖存器驅動led燈

        作者: 時間:2016-11-30 來源:網絡 收藏

        真值表



        這表格分成兩個部分:INPUTS(輸入)、OUTPUT(輸出)。
        L:表示低電平 在INPUTS表示輸入低電平 在OUTPUT表示輸出低電平。
        H:表示高電平 在INPUTS表示輸入高電平在OUTPUT表示輸出高電平。
        X:表示無所謂是高電平還是低電平。
        Q0:表示維持原來的狀態不變。
        Z:高阻態 (接的是高電平則是高電平,接的是低電平則是低電平)當輸出高阻態時,說明芯片沒有工作。

        INPUTS(輸入):
        OE:OE上面有一條橫杠代表低電平有效。
        LE:鎖存控制。
        D:輸入端 即 D0 — D7

        OUTPUT(輸出):
        Q:輸出端 即 Q0 — Q7

        真值表解釋:
        第三行:OE=LLE=H D=H Q=H
        表示OE為低電平時,LE為高電平即不鎖存,那么D是高電平則Q也是高電平。
        第四行:OE=LLE=H D=L Q=L
        表示OE為低電平時,LE為高電平即不鎖存,那么D是低電平則Q也是低電平。
        第五行:OE=L LE=L D=X Q=Q0
        表示OE為低電平時,LE為低電平即鎖存,那么無論D是什么狀態,Q仍保持上一次的狀態。
        第六行:OE=H LE=X D=X Q=Z
        表示OE為高電平即停用芯片,LE無論是什么狀態,D無論是什么狀態,Q保持高阻態即不起作用。

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


        二、電路圖



        單片機的一組P0口要控制8個Led燈,首先需要將LE引腳置1,讓74HC573的Q輸出端與D輸入端關聯起來。這樣P0口的電平狀態會傳遞給D輸入端進而改變Q的電平狀態。

        8個Led的正極接在1k的排阻。相當于每個Led串入一個1k的電阻。這里的電阻起限流作用,硅發光二極管的發光壓降是0.7V;其發光的電流一般為3—10mA,而單片機(控制芯片)的I/O口有一個灌入電流一般為20mA左右(超過這個電流時,單片機內部PN節會被擊穿)。所以加一個1k電阻限流,避免流過Led的電流過大而燒毀Led。

        (單片機(控制芯片)的I/O口有一個灌入電流一般為20mA左右;超過這個電流時,單片機內部PN節會被擊穿。一般的繼電器驅動電流在40、50—120mA;一般常用9012的PNP(9013、NPN)三極管作為開關三極管,該三極管的驅動電流可以達到200mA左右,可以用來驅動繼電器。達林頓反向驅動器:ULN2001A—ULN2002A(ST)驅動電流500mA;(給低電平輸出高電平,給高電平輸出低電平))

        電阻的取值:

        當Led點亮后,Led會有一個電壓。一般情況下紅色直插LED應該是1.7V,剩下3.3V的電壓會加在電阻上。Led需要的電流是3.3ma(0.0033A)電壓除于電流3.3V/0.0033A=1000歐=1K。(不同的廠家生產的LED的電壓和電流可能略有差別)

        我們要讓Led亮,那么首先要明確的是,單片機是TTL電平,高電平為+5V低電平為0V,單片機供電也是5V,所以電源正極VCC應該為+5V負極為0V。Led的正極通過電阻接在VCC,Led的負極接在74HC573的Q輸出端。當單片機的IO口給低電平時即0V,并且74HC573LE為高電平,那么電流會從VCC→1K電阻→Led→74HC573Q→74HC573D→單片機的IO口,此時Led燈亮。

        按照上面的電路圖,程序代碼應為:

        #include

        sbitLed=P0^0;

        sbitLE=P1^6;//由于51單片機上電,IO口默認為高電平所以這句可省略。

        voidmain()

        {

        LE=1; //由于51單片機上電,IO口默認為高電平所以這句可省略。

        Led=0;//直接操作P0的0端口讓第一個Led燈亮

        //P0=0xFE;//操作P0一組IO口,0xFE==11111110,P0的0端口置0其余置1 效果和 Led=0 一樣。不同的是前者操作了一組端口后者只操作了一個端口
        P0=0x00; //P1端口全部置0即讓所有的LED燈亮。

        while(1); // 程序運行到這里的時候 一直無限循環。因為Keil 編譯后期產生的匯編代碼中,結尾有一條 LJMP main,就是不同的執行main函數。加上這一條就可以阻止它重復執行上面的代碼。


        上一頁 1 2 下一頁

        關鍵詞: 51單片機鎖存器led

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 巴塘县| 腾冲县| 阿拉善左旗| 景德镇市| 黄浦区| 观塘区| 靖安县| 澎湖县| 广丰县| 桃源县| 德化县| 南岸区| 青铜峡市| 桃园市| 石楼县| 肇东市| 延寿县| 武安市| 泰和县| 多伦县| 淮安市| 报价| 阿勒泰市| 琼结县| 政和县| 朝阳区| 高尔夫| 美姑县| 河南省| 南宫市| 巴东县| 阿巴嘎旗| 城步| 平舆县| 子长县| 吉林省| 铜梁县| 略阳县| 江华| 望都县| 伊金霍洛旗|