新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 多功能智能控制器

        多功能智能控制器

        作者: 時間:2016-11-18 來源:網絡 收藏
        一、使用說明:

        本《多功能智能控制器》是我業余時間設計的一款小型智能控制器。此控制器主要是利用AT89C52作為主控制器件,以2*8LCD作為顯示,具有手動、遙控、定時等方式控制繼電器,且具有溫度顯示功能等。可以放在任何需要智能控制的地方。

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

        功能說明:

        定時器的基本功能:

        1.使用2*8LCD液晶模塊顯示器顯示現在的時間。

        2.顯示格式為“HH:MM:SS”,在第二行顯示時間。

        3.由WLED和冒號閃動來做秒計數表示。

        手動按鍵的基本功能:

        1.操作鍵K1:進入或退出設置現在的時間。

        2.操作鍵K2:整點報時開關。并有相應的指示燈DLED顯示(DLED亮則整點報時,DLED滅則不整點報時)。

        3.操作鍵K3:鬧鈴控制開關。并有相應的指示燈CLED顯示(CLED亮則鬧鈴開啟,DLED滅則關閉鬧鈴)。

        4.操作鍵K4:進入或退出鬧鈴時間設置。

        5.操作鍵K5:繼電器1手動開關。并有相應的指示燈顯示。

        6.操作鍵K6:繼電器2手動開關。

        注:以上按鍵說明都是按鍵的第一功能按鍵。K2的第二功能是小時的加;K3的第二功能時分鐘的加。

        遙控按鍵的基本功能:

        現在時間設置:

        1.TIME:進入設置現在的時間。

        2.下一首歌按鍵:表示分鐘的加。

        3.上一首歌按鍵:表示小時的加。

        4.停止按鍵:表示退出現在時間設置。

        開關功能:

        R/L:表示整點報時開關。

        P/N:表示鬧鈴開關。

        鬧鈴時間設置:

        1.RETURN:進入鬧鈴時間設置。

        2.向前快進:表示小時加。

        3.向后快進:表示分鐘加。

        4.停止按鍵:表示退出鬧鈴時間設置。

        二、三D圖:

        三、程序:

        1.系統頭文件:

        #ifndef __CONFIG_H__

        #define __CONFIG_H__

        /********************************/

        /* "以下為系統配置" */

        /********************************/

        #include

        #include

        #include

        #include "ir.h"

        #include "lcd1602.h"

        #include "ds18b20.h"

        #define RELAY P3_5 // 繼電器1引腳

        #define FELAY P3_6 // 繼電器2引腳

        #define F_LED P2_3 // 繼電器2工作指示燈

        #define Y_LED P2_4 // 繼電器1工作指示燈

        #define C_LED P2_5 // 定時控制指示燈

        #define D_LED P2_6 // 整點報時指示燈

        #define W_LED P2_7 // 時鐘工作指示燈

        #define K1 P1_0 // 當前時間的設置與結束

        #define K2 P1_1 // 整點報時開關/小時加1

        #define K3 P1_2 // 鬧鈴控制開關/分鐘加1

        #define K4 P1_3 // 鬧鈴時間的設置與結束

        #define K5 P1_4 // 手動控制繼電器1

        #define K6 P1_5 // 手動控制繼電器2

        uchar hour,min,sec; // 當前時間寄存器

        uchar armhour,armmin,armsec; // 控制時間寄存器

        uchar con_1s; // 時間計數器

        uchar data Time[8]={0x30,0x30,0x3a,0x30,0x30,0x3a,0x30,0x30}; // 顯示時間暫存

        void turn_on_information(void);//開機信息信息

        // 時間控制部分

        void TimeOut(void);//到點工作

        void O_clock(void);//整點報時

        void Scan(bit mark,bit line,uchar arr[]);//顯示

        // 手動控制部分函數

        void Keyscan(void); // 手動按鍵掃描

        void Set_time(void); // 手動設置當前時間

        void Set_ctrltime(void); // 手動設置控制時間

        // 遙控部分函數

        void Telecontrol(void); // 遙控按鍵掃描

        void Tele_Set_time(void); // 遙控設置當前時間

        void Tele_Set_ctrltime(void); // 遙控設置控制時間

        // 密碼鎖部分函數

        void Coded_lock(void);

        /*****************************************************

        函 數 名:void Clearmen(void)

        功 能:系統初始化

        說 明:對系統引腳變量及中斷進行初始化

        入口參數:無

        返 回 值:無

        *****************************************************/

        void Clearmen(void)

        {

        //***************** 中斷初始化 *****************

        // 中斷允許寄存器IE

        /*----------------------------------------------------

        | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |

        - - - - - - - - - - - - - - - - - - - - - - - -

        | EA | | ET2 | ES | ET1 | EX1 | ET0 | EX0 |

        -----------------------------------------------------*/

        IE = 0x00; // "清除中斷"

        EX0 = 1; // 0"外部中斷0允許"

        ET0 = 1; // 1"定時器0中斷允許"

        EX1 = 0; // 2"外部中斷1允許"

        ET1 = 1; // 3"定時器1中斷允許"

        ES = 0; // 4"串行中斷允許"

        ET2 = 0; // 5"定時器2中斷允許"-52才有

        EA = 1; // "中斷總允許"

        // 中斷優先級管理寄存器IP

        /*----------------------------------------------------

        | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |

        - - - - - - - - - - - - - - - - - - - - - - - -

        | | | PT2 | PS | PT1 | PX1 | PT0 | PX0 |

        -----------------------------------------------------*/

        IP = 0x00; // "清除中斷優先級"

        PS = 0; // "串行中斷優先"

        PX0 = 0; // "外部中斷0"

        PT0 = 1; // "定時器中斷0"

        PX1 = 0; // "外部中斷1"

        PT1 = 0; // "定時器中斷1"

        // 定時器控制寄存器TCON

        /*----------------------------------------------------

        | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |

        - - - - - - - - - - - - - - - - - - - - - - - -

        | TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |

        - - - - - - - - - - - - - - - - - - - - - - - -

        | 用于定時器 | 用于外中斷 |

        -----------------------------------------------------*/

        TCON = 0x00;

        IT0 = 1; // "外部中斷0觸發方式 0=電平 1=邊沿"

        IE0 = 0; // "外部中斷0申請標志"

        IT1 = 0; // "外部中斷1觸發方式 0=電平 1=邊沿"

        IE1 = 0; // "外部中斷1申請標志"

        TR0 = 0; // "T0運行控制"

        TF0 = 0; // "T0溢出標志"

        TR1 = 0; // "T1運行控制"

        TF1 = 0; // "T1溢出標志"

        // 定時器模式控制寄存器TMOD

        /*----------------------------------------------------

        | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |

        - - - - - - - - - - - - - - - - - - - - - - - -

        |GATE| C/T| M0 | M1 |GATE | C/T | M0 | M1 |

        - - - - - - - - - - - - - - - - - - - - - - - -

        | 高4位用于T1 | 低4位用于T0" |

        -----------------------------------------------------*/

        TMOD=0x11; // 定時器T0、T1為16位定時模式1

        TH0=0x3C;TL0=0xB0; // 定時器0賦初值

        TH1=0x3C;TL1=0xB0; // 定時器1賦初值

        ET0=1;TR0=1;EA=1; // 開定時器0

        //***************** 變量及引腳初始化 **********************************

        hour=0; min=0; sec=0; // 當前時間初始化

        armhour=0;armmin=0;armsec=0; // 控制時間初始化

        IRIN=1;BEEP=1;RELAY=1; FELAY=1;

        W_LED=1;D_LED=1;C_LED=1; // 指示燈初始化

        F_LED=1;Y_LED=1;

        Adjust_Res(0x5f); // 調整18B20的分辨率 0x1f:0.5; 0x3f:0.25; 0x5f:0.125

        }

        /*****************************************************

        函 數 名:void Delay_50us(uint t)

        功 能:延時函數

        說 明:系統用延時

        入口參數:無

        返 回 值:無

        *****************************************************/

        void Delay_50us(uint t)

        {

        uchar j;

        for(;t>0;t--)

        for(j=19;j>0;j--)

        ;

        }

        /*****************************************************

        函 數 名:void Work_led(uchar count)

        功 能:工作指示燈閃爍提示

        說 明:閃爍以提示工作狀態

        入口參數:無

        返 回 值:無

        *****************************************************/

        Work_led(uchar count)

        {

        while(count--)

        {

        W_LED=~W_LED; //工作燈取反

        Delay_50us(3000);

        }

        C_LED=1;

        }

        /*****************************************************

        函 數 名:void turn_on_information(void)

        功 能:開機顯示信息

        說 明:第1行顯示產品名;第2行動態顯示作者信息

        入口參數:無

        返 回 值:無

        *****************************************************/

        uchar code string[]=" 2008-1-20";

        void turn_on_information(void)

        {

        uchar num=30;

        uchar *cp;

        cp=string;

        do

        {

        WriteCommandLCM(0x01,1); // 顯示清屏

        Delay_50us(100);

        DisplayListChar(0,0,"zhao jun");

        DisplayListChar(0,1,cp);

        Delay_50us(8000);

        cp++;

        if(*cp==

        主站蜘蛛池模板: 柘荣县| 安宁市| 沙田区| 蓝山县| 哈巴河县| 临桂县| 顺平县| 安仁县| 临猗县| 海南省| 靖远县| 高平市| 多伦县| 含山县| 句容市| 讷河市| 遵化市| 蛟河市| 门头沟区| 女性| 临猗县| 通海县| 广饶县| 铜陵市| 吴忠市| 永福县| 高密市| 西宁市| 凤凰县| 龙江县| 吉木乃县| 新昌县| 皮山县| 长宁区| 彩票| 无锡市| 新泰市| 永平县| 克拉玛依市| 称多县| 洛川县|