多功能智能控制器
本《多功能智能控制器》是我業(yè)余時(shí)間設(shè)計(jì)的一款小型智能控制器。此控制器主要是利用AT89C52作為主控制器件,以2*8LCD作為顯示,具有手動(dòng)、遙控、定時(shí)等方式控制繼電器,且具有溫度顯示功能等??梢苑旁谌魏涡枰悄芸刂频牡胤?。
本文引用地址:http://www.ex-cimer.com/article/201611/315655.htm功能說(shuō)明:
定時(shí)器的基本功能:
1.使用2*8LCD液晶模塊顯示器顯示現(xiàn)在的時(shí)間。
2.顯示格式為“HH:MM:SS”,在第二行顯示時(shí)間。
3.由WLED和冒號(hào)閃動(dòng)來(lái)做秒計(jì)數(shù)表示。
手動(dòng)按鍵的基本功能:
1.操作鍵K1:進(jìn)入或退出設(shè)置現(xiàn)在的時(shí)間。
2.操作鍵K2:整點(diǎn)報(bào)時(shí)開(kāi)關(guān)。并有相應(yīng)的指示燈DLED顯示(DLED亮則整點(diǎn)報(bào)時(shí),DLED滅則不整點(diǎn)報(bào)時(shí))。
3.操作鍵K3:鬧鈴控制開(kāi)關(guān)。并有相應(yīng)的指示燈CLED顯示(CLED亮則鬧鈴開(kāi)啟,DLED滅則關(guān)閉鬧鈴)。
4.操作鍵K4:進(jìn)入或退出鬧鈴時(shí)間設(shè)置。
5.操作鍵K5:繼電器1手動(dòng)開(kāi)關(guān)。并有相應(yīng)的指示燈顯示。
6.操作鍵K6:繼電器2手動(dòng)開(kāi)關(guān)。
注:以上按鍵說(shuō)明都是按鍵的第一功能按鍵。K2的第二功能是小時(shí)的加;K3的第二功能時(shí)分鐘的加。
遙控按鍵的基本功能:
現(xiàn)在時(shí)間設(shè)置:
1.TIME:進(jìn)入設(shè)置現(xiàn)在的時(shí)間。
2.下一首歌按鍵:表示分鐘的加。
3.上一首歌按鍵:表示小時(shí)的加。
4.停止按鍵:表示退出現(xiàn)在時(shí)間設(shè)置。
開(kāi)關(guān)功能:
R/L:表示整點(diǎn)報(bào)時(shí)開(kāi)關(guān)。
P/N:表示鬧鈴開(kāi)關(guān)。
鬧鈴時(shí)間設(shè)置:
1.RETURN:進(jìn)入鬧鈴時(shí)間設(shè)置。
2.向前快進(jìn):表示小時(shí)加。
3.向后快進(jìn):表示分鐘加。
4.停止按鍵:表示退出鬧鈴時(shí)間設(shè)置。
二、三D圖:
三、程序:
1.系統(tǒng)頭文件:
#ifndef __CONFIG_H__
#define __CONFIG_H__
/********************************/
/* "以下為系統(tǒng)配置" */
/********************************/
#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 // 定時(shí)控制指示燈
#define D_LED P2_6 // 整點(diǎn)報(bào)時(shí)指示燈
#define W_LED P2_7 // 時(shí)鐘工作指示燈
#define K1 P1_0 // 當(dāng)前時(shí)間的設(shè)置與結(jié)束
#define K2 P1_1 // 整點(diǎn)報(bào)時(shí)開(kāi)關(guān)/小時(shí)加1
#define K3 P1_2 // 鬧鈴控制開(kāi)關(guān)/分鐘加1
#define K4 P1_3 // 鬧鈴時(shí)間的設(shè)置與結(jié)束
#define K5 P1_4 // 手動(dòng)控制繼電器1
#define K6 P1_5 // 手動(dòng)控制繼電器2
uchar hour,min,sec; // 當(dāng)前時(shí)間寄存器
uchar armhour,armmin,armsec; // 控制時(shí)間寄存器
uchar con_1s; // 時(shí)間計(jì)數(shù)器
uchar data Time[8]={0x30,0x30,0x3a,0x30,0x30,0x3a,0x30,0x30}; // 顯示時(shí)間暫存
void turn_on_information(void);//開(kāi)機(jī)信息信息
// 時(shí)間控制部分
void TimeOut(void);//到點(diǎn)工作
void O_clock(void);//整點(diǎn)報(bào)時(shí)
void Scan(bit mark,bit line,uchar arr[]);//顯示
// 手動(dòng)控制部分函數(shù)
void Keyscan(void); // 手動(dòng)按鍵掃描
void Set_time(void); // 手動(dòng)設(shè)置當(dāng)前時(shí)間
void Set_ctrltime(void); // 手動(dòng)設(shè)置控制時(shí)間
// 遙控部分函數(shù)
void Telecontrol(void); // 遙控按鍵掃描
void Tele_Set_time(void); // 遙控設(shè)置當(dāng)前時(shí)間
void Tele_Set_ctrltime(void); // 遙控設(shè)置控制時(shí)間
// 密碼鎖部分函數(shù)
void Coded_lock(void);
/*****************************************************
函 數(shù) 名:void Clearmen(void)
功 能:系統(tǒng)初始化
說(shuō) 明:對(duì)系統(tǒng)引腳變量及中斷進(jìn)行初始化
入口參數(shù):無(wú)
返 回 值:無(wú)
*****************************************************/
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"定時(shí)器0中斷允許"
EX1 = 0; // 2"外部中斷1允許"
ET1 = 1; // 3"定時(shí)器1中斷允許"
ES = 0; // 4"串行中斷允許"
ET2 = 0; // 5"定時(shí)器2中斷允許"-52才有
EA = 1; // "中斷總允許"
// 中斷優(yōu)先級(jí)管理寄存器IP
/*----------------------------------------------------
| D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
- - - - - - - - - - - - - - - - - - - - - - - -
| | | PT2 | PS | PT1 | PX1 | PT0 | PX0 |
-----------------------------------------------------*/
IP = 0x00; // "清除中斷優(yōu)先級(jí)"
PS = 0; // "串行中斷優(yōu)先"
PX0 = 0; // "外部中斷0"
PT0 = 1; // "定時(shí)器中斷0"
PX1 = 0; // "外部中斷1"
PT1 = 0; // "定時(shí)器中斷1"
// 定時(shí)器控制寄存器TCON
/*----------------------------------------------------
| D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
- - - - - - - - - - - - - - - - - - - - - - - -
| TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |
- - - - - - - - - - - - - - - - - - - - - - - -
| 用于定時(shí)器 | 用于外中斷 |
-----------------------------------------------------*/
TCON = 0x00;
IT0 = 1; // "外部中斷0觸發(fā)方式 0=電平 1=邊沿"
IE0 = 0; // "外部中斷0申請(qǐng)標(biāo)志"
IT1 = 0; // "外部中斷1觸發(fā)方式 0=電平 1=邊沿"
IE1 = 0; // "外部中斷1申請(qǐng)標(biāo)志"
TR0 = 0; // "T0運(yùn)行控制"
TF0 = 0; // "T0溢出標(biāo)志"
TR1 = 0; // "T1運(yùn)行控制"
TF1 = 0; // "T1溢出標(biāo)志"
// 定時(shí)器模式控制寄存器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; // 定時(shí)器T0、T1為16位定時(shí)模式1
TH0=0x3C;TL0=0xB0; // 定時(shí)器0賦初值
TH1=0x3C;TL1=0xB0; // 定時(shí)器1賦初值
ET0=1;TR0=1;EA=1; // 開(kāi)定時(shí)器0
//***************** 變量及引腳初始化 **********************************
hour=0; min=0; sec=0; // 當(dāng)前時(shí)間初始化
armhour=0;armmin=0;armsec=0; // 控制時(shí)間初始化
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); // 調(diào)整18B20的分辨率 0x1f:0.5; 0x3f:0.25; 0x5f:0.125
}
/*****************************************************
函 數(shù) 名:void Delay_50us(uint t)
功 能:延時(shí)函數(shù)
說(shuō) 明:系統(tǒng)用延時(shí)
入口參數(shù):無(wú)
返 回 值:無(wú)
*****************************************************/
void Delay_50us(uint t)
{
uchar j;
for(;t>0;t--)
for(j=19;j>0;j--)
;
}
/*****************************************************
函 數(shù) 名:void Work_led(uchar count)
功 能:工作指示燈閃爍提示
說(shuō) 明:閃爍以提示工作狀態(tài)
入口參數(shù):無(wú)
返 回 值:無(wú)
*****************************************************/
Work_led(uchar count)
{
while(count--)
{
W_LED=~W_LED; //工作燈取反
Delay_50us(3000);
}
C_LED=1;
}
/*****************************************************
函 數(shù) 名:void turn_on_information(void)
功 能:開(kāi)機(jī)顯示信息
說(shuō) 明:第1行顯示產(chǎn)品名;第2行動(dòng)態(tài)顯示作者信息
入口參數(shù):無(wú)
返 回 值:無(wú)
*****************************************************/
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==看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();