新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機工程實踐--第3章 74HC595+ULN200

        51單片機工程實踐--第3章 74HC595+ULN200

        作者: 時間:2016-11-25 來源:網絡 收藏
        首先上圖,有圖才有真相。實驗中的圖片。

        1、剛上電,繼電器不動作,很穩定。這是工程上需要的結果。

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

        2、按下KEY1,繼電器1吸合,其它繼電器斷開。

        3、按下KEY2,繼電器2吸合,其它繼電器斷開。


        #include
        #include


        sbit KEY_IN1 = P2 ^ 4; // 輸入按鍵 接10K上拉電阻
        sbit KEY_IN2 = P2 ^ 5;
        sbit KEY_OUT1 = P2 ^ 3; // 輸出按鍵
        sbit KEY_OUT2 = P2 ^ 2;

        sbit BUZZER_OUT = P1 ^ 7; // 蜂鳴器
        sbit LED = P0 ^ 7; // LED


        sbit HC595_SCK_OUT = P1 ^ 0;// 74HC595數據輸入時鐘線
        sbit HC595_RCK_OUT = P1 ^ 1;// 74HC595輸出存儲器鎖存時鐘線
        sbit HC595_OE_OUT = P1 ^ 2;// 74HC595輸出使能端 接10K上拉電阻
        sbit HC595_SI_OUT = P1 ^ 3;// 74HC595數據線


        typedef unsigned char uint8;
        typedef unsigned int uint16;

        typedef unsigned char u8;
        typedef unsigned int u16;

        #define CNT_DELAY_CNT1 25 // 按鍵去抖動延時閥值
        #define CNT_DELAY_CNT2 5 // 按鍵列輸出信號穩定的小延時

        #define CNT_BUZZER_TIME 40



        void interrupt_init(void);
        void key_scan(void);
        void key_service(void);
        void relay_status_clear(void);
        void relay_status_set_1(void);
        void relay_status_set_2(void);
        void relay_status_set_3(void);
        void relay_status_set_4(void);
        void relay_drive(void);
        void delay(void);


        u8 key_step = 1; // 按鍵掃描步驟變量,在switch()括號里面
        u8 key_lock1 = 0; // 按鍵自鎖標志
        u8 key_sec = 0; // 按鍵被觸發的變量
        u16 delay_cnt1 = 0; // 延時計數器的變量
        u16 delay_cnt2 = 0; // 延時計數器的變量
        u16 buzzer_time_cnt = 0; // 蜂鳴器聲音長短的計數延時
        u16 relay_status = 0;// 繼電器狀態寄存器

        int main(void)
        {
        interrupt_init();


        HC595_OE_OUT = 1;// 置1,595輸出口為高阻態,ULN2003輸入口內部有下拉電阻,所以把595輸出口拉低了
        relay_status_clear();// 把relay_status清零
        relay_drive();// 繼電器驅動程序,relay_status映射繼電器的狀態
        HC595_OE_OUT = 0;// 輸出使能端拉低,595輸出口有效

        BUZZER_OUT = 1;// 上電關閉蜂鳴器

        while(1)
        {
        key_service();// 按鍵服務函數
        }


        return 0;
        }


        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 石门县| 新宁县| 大渡口区| 施秉县| 正安县| 芦溪县| 双辽市| 读书| 义乌市| 工布江达县| 文昌市| 贵德县| 宜兴市| 全南县| 彭泽县| 六安市| 瑞昌市| 浙江省| 九台市| 沂水县| 蛟河市| 镇沅| 清丰县| 花莲市| 资兴市| 武清区| 赤水市| 二连浩特市| 于田县| 长丰县| 浪卡子县| 大余县| 陆丰市| 仁布县| 阳谷县| 广东省| 大冶市| 鹤山市| 三台县| 平山县| 临西县|