⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.h

📁 程序概述: 这是个具体产品程序
💻 H
📖 第 1 页 / 共 2 页
字号:
// --------------------------------------------------------------------------
// Main.h
// --------------------------------------------------------------------------

#ifndef __MAIN_H__
#define __MAIN_H__

/*----------------------------------------------------------------------------+
| Include files                                                               |
+----------------------------------------------------------------------------*/
#include "STC89C54.h"
#include <intrins.h>
#include <string.h>
#include "WDT.h"
#include "Define.h"
#include "Message.h"
#include "Timer.h"
#include "I2C_512.h"

/*----------------------------------------------------------------------------+
| Type Definition & Macro                                                     |
+----------------------------------------------------------------------------*/
// 如果采用AT89S5x系列单片机,则需要宏定义AT89
// #define AT89  1
/*---------------------------------------------------------------------------*/
#define SYS_CLOCK 24000         // 24000KHz = 24MHz

#define N_DIV     12            // 单片机一个指令周期包含多少个机器周期,默认为12个

#define TIMER2_INTERVAL    10       // 10ms

// Timer2 reload value
#define TIMER2_H  (65536-(SYS_CLOCK/N_DIV)*TIMER2_INTERVAL)>>8
#define TIMER2_L  (65536-(SYS_CLOCK/N_DIV)*TIMER2_INTERVAL)&0xFF


// 定义键盘的输入输出管脚
#define KEY_COL1   P0_3         // 键盘矩阵第1列
#define KEY_COL2   P0_2         // 键盘矩阵第2列
#define KEY_COL3   P0_1         // 键盘矩阵第3列
#define KEY_COL4   P0_0         // 键盘矩阵第4列
#define KEY_ROW1   P0_4         // 键盘矩阵第1行
#define KEY_ROW2   P0_5         // 键盘矩阵第2行
#define KEY_ROW3   P0_6         // 键盘矩阵第3行
#define KEY_ROW4   P0_7         // 键盘矩阵第4行

#define BEEP		P4_0		//轰鸣器管脚
#define ReadBit	    P4_1		//读卡模块数据发送管脚

//定义压簧的管脚
#define KEY_HANDLE  P4_2		// 定义连接手柄的管脚 
#define KEY_CALL	P1_5 		// 定义压簧上的呼叫按键
#define Key_UNLOCK	P1_6 		// 定义压簧上的开锁按键
		
#define SW_B       P1_0         // CD4052地址B脚
#define SW_A       P1_1         // CD4052地址A脚

#define P_AUDIO    P2_2         // 音频电路电源控制管脚
#define P_VIDEO    P2_3         // 显示屏电源控制管脚
#define MUSIC_TRIG P2_4         // 音乐芯片触发管教
#define P_MUSIC    P2_5         // 音乐芯片电源控制管脚

#define GREEN_LED  P2_7         // 绿色LED控制管脚
#define RED_LED    P2_6         // 红色LED控制管脚


#define P_ON    0
#define P_OFF   1

// 定义按键
typedef enum {
	Key_Zero = 0,               // 0
	Key_One,                    // 1
	Key_Two,                    // 2
	Key_Three,                  // 3
	Key_Four,                   // 4
	Key_Five,                   // 5
	Key_Six,                    // 6
	Key_Seven,                  // 7
	Key_Eight,                  // 8
	Key_Nine,                   // 9
	Key_Cancel = 11,            // 取消, 11
	Key_Setup,                  // 设置, 12
	Key_View,                   // 监视, 13
	Key_Call,                   // 呼叫, 14
	Key_Unlock,                 // 开锁, 15
	Key_Find,                   // 查询, 16
	Key_HandUp,                 // 摘机, 17
	Key_HandDown,               // 挂机, 18

	Key_PCall,                  // 呼叫, 压簧按键19,

	Key_None = 0xFF             // 没有按键
} e_Key;


// 定义命令字,应答字节将最高位置1
/*
typedef enum {
	Command_Disconnect = 0,     // 中断连接命令
	Command_CallRequest,        // 通话请求命令
	Command_HandUp,             // 摘机命令
	Command_ViewRequest,        // 视频请求命令
	Command_Alarm,              // 报警命令
	Command_CancelAlarm,        // 取消报警
	Command_Unlock,             // 开锁命令
	Command_AddRFCard,          // 增加射频卡,由管理机发向门口机
	Command_DelRFCard,          // 删除射频卡,由管理机发向门口机
	Command_CheckRFCard,        // 验证该卡是否可以开门,由门口机发向管理机

	Command_Busy = 0x40,        // 应答忙信号
	Command_Ack = 0x80          // 应答信号
} e_Command;
*/
#define Command_Disconnect    0x00     // 中断连接命令
#define Command_CallRequest   0x01     // 通话请求命令
#define Command_HandUp        0x02     // 摘机命令
#define Command_ViewRequest   0x03     // 视频请求命令
#define Command_Alarm         0x04     // 报警命令
#define Command_CancelAlarm   0x05     // 取消报警
#define Command_Unlock        0x06     // 开锁命令
#define Command_AddRFCard     0x07     // 增加射频卡,由管理机发向门口机
#define Command_DelRFCard     0x08     // 删除射频卡,由管理机发向门口机
#define Command_CheckRFCard   0x09     // 验证该卡是否可以开门,由门口机发向管理机

#define Command_Heartbeat     0x20     // 门口机正常心跳信号,每隔一定的时间会发来一个心跳信号,
                                       // 当超过一定时间没有收到心跳信号则认为门口机掉线,
                                       // 如果带参数则是门口机发来的被拆信号

#define Command_Busy          0x40     // 应答忙信号
#define Command_Ack           0x80     // 应答信号


// 定义枚举类型的系统状态
typedef enum {
	Status_Init = 0,                // 正在系统初始化
	Status_Idle,                    // 空闲状态
	Status_ShowingMessage,          // 正在显示临时的消息,
	Status_Menu,                    // 显示菜单

	Status_ViewBefore,              // 监视之前的输入单元号的状态
	Status_ViewSendingRequest,      // 正在向门口机发送监视请求,等待应答
	Status_Viewing,                 // 正在监视
	Status_ViewCanceling,           // 发送取消监视的命令,等待门口机应答

	Status_CallBefore,              // 呼叫门室内分机之前的输入房间号的状态
	Status_CallSendingRequest,      // 正在向室内分机发送呼叫请求,等待应答
	Status_CallCanceling,           // 正在中断这一次通话

	Status_UnlockSendingRequest,    // 正在向门口机发送开锁请求,等待应答

	Status_bCallingIn_M,            // 有门口机正在呼叫管理中心
	Status_bCallingIn_F,            // 有室内分机正在呼叫管理中心
	Status_Calling,                 // 管理机正在呼叫室内分机
	Status_Talking,                 // 正在和门口机或室内分机进行通话

	Status_Alarming_M,              // 门口机报警
	Status_Alarming_F,              // 分机报警

	Status_SetupEnterPassword,      // 进入设置菜单前面的输入密码的界面,只有输入了正确的密码之后才能够进行设置
	Status_SetupMenu,               // 进入到设置的主菜单界面

	Status_SetupTime,               // 正在设置系统时间的界面

	Status_SetupPasswordBefore,     // 正在设置系统密码前的输入管理员密码的界面
	Status_SetupPasswordFirst,      // 第一次输入密码

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -