多功能智能控制器
本《多功能智能控制器》是我业余时间设计的一款小型智能控制器。此控制器主要是利用AT89C52作为主控制器件,以2*8LCD作为显示,具有手动、遥控、定时等方式控制继电器,且具有温度显示功能等。可以放在任何需要智能控制的地方。
功能说明:
定时器的基本功能:
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 |
------------------------------------------
多功能智能控制 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)