基于51单片机的红外遥控密码锁设计源程序

标签:
基于51单片机红外遥控密码锁密码锁设计 |
#include 'REG52.h'
#include 'intrins.h>
#define LCM_Data P0
#define uchar unsigned char
#define uint unsigned int
//#define w 6
//定义密码位数
//时间计算
#define Imax 14000
//此处为晶振为11.0592时的取值,
#define Imin 8000
//如用其它频率的晶振时,
#define Inum1 1450
//要改变相应的取值。
#define Inum2 700
#define Inum3 3000
sbit lcd1602_rs=P2^5;
sbit lcd1602_rw=P2^6;
sbit lcd1602_en=P2^7;
sbit Scl=P3^4;
//24C02串行时钟
sbit Sda=P3^5;
//24C02串行数据
sbit ALAM = P2^1;
//报警
sbit KEY = P3^6;
//开锁
sbit open_led=P2^2;
//开锁指示灯
bit operation=0;
//操作标志位
bit pass=0;
//密码正确标志
bit ReInputEn=0;
//重置输入充许标志
bit s3_keydown=0;
//3秒按键标志位
bit key_disable=0;
//锁定键盘标志
unsigned char countt0,second;
//t0中断计数器,秒计数器
//解码变量
unsigned char Im[4]={0x00,0x00,0x00,0x00};
//全局变量
uchar f;
unsigned char m,Tc;
unsigned char IrOK;
//void Delay5Ms(void);
unsigned char code a[]={0xFE,0xFD,0xFB,0xF7};
//控盘扫描控制表
unsigned char code start_line[]
=
{"password:
"};
unsigned char code name[]
= {"===Coded Lock==="};
//显示名称
unsigned char code Correct[]
= {"
correct
"};
//输入正确
unsigned char code Error[]
= {"
error "};
//输入错误
unsigned char code codepass[]
= {"
pass
"};
unsigned char code LockOpen[]
= {"
open
"};
//OPEN
unsigned char code SetNew[]
=
{"SetNewWordEnable"};
unsigned char code Input[]
= {"input:
"};
//INPUT
unsigned char code ResetOK[]
=
{"ResetPasswordOK "};
unsigned char code initword[]
= {"Init
password..."};
unsigned char code Er_try[]
= {"error,try again!"};
unsigned char code again[]
= {"input again
"};
unsigned char InputData[6];
//输入密码暂存区
unsigned char CurrentPassword[6]={1,3,1,4,2,0};
//当前密码值
unsigned char TempPassword[6];
unsigned char N=0;
//密码输入位数记数
unsigned char ErrorCont;
//错误次数计数
unsigned char CorrectCont;
//正确输入计数
unsigned char ReInputCont;
//重新输入计数
unsigned char code initpassword[6]={0,0,0,0,0,0};
//=====================5ms延时==============================
void Delay5Ms()
{
}
//===================400ms延时==============================
void Delay400Ms()
{
unsigned char TempCycA = 5;
unsigned int TempCycB;
while(TempCycA--)
{
}
}
//=============================================================================================
//================================24C02========================================================
//=============================================================================================
void mDelay(uint t) //延时
{
}
void Nop()
//空操作
{
}
void Start(void)
{
}
void Stop(void)
{
}
void Ack(void)
{
}
void NoAck(void)
{
}
void Send(uchar Data)
{
}
uchar Read()
{
void WrToROM(uchar Data[],uchar Address,uchar Num)
{
}
void RdFromROM(uchar Data[],uchar Address,uchar Num)
{
}
//==================================================================================================
//=======================================LCD1602====================================================
//==================================================================================================
#define yi 0x80
//LCD第一行的初始位置,因为LCD1602字符地址首位D7恒定为1(100000000=80)
#define er 0x80+0x40 //LCD第二行初始位置(因为第二行第一个字符位置地址是0x40)
//----------------延时函数,后面经常调用----------------------
void delay(uint xms)//延时函数,有参函数
{
}
//--------------------------写指令---------------------------
void write_1602com(uchar com)//****液晶写入指令函数****
{
}
//-------------------------写数据-----------------------------
void write_1602dat(uchar dat)//***液晶写入数据函数****
{
}
//-------------------------初始化-------------------------
void lcd_init()
{
}
//========================================================================================
//=========================================================================================
//==============将按键值编码为数值=========================
unsigned char coding(unsigned char m1,unsigned char hh)
{
//
case
(0xff): k='A';break;
//
//
case
(0x82): k='B';break;
//
//
case
(0x84): k='C';break;
//
//
default:;
//
default:;
}
//=====================按键检测并返回按键值===============================
unsigned char keynum()
{
}
//=======================一声提示音,表示有效输入========================
void OneAlam()
{
}
//========================二声提示音,表示操作成功========================
void TwoAlam()
{
}
//========================三声提示音,表示错误========================
void ThreeAlam()
{
}
//=====================显示输入的N个数字,用H代替以便隐藏============================
void DisplayOne()
{
//
DisplayOneChar(9+N,1,'*');
}
//=======================显示提示输入=========================
void DisplayChar()
{
}
void DisplayInput()
{
}
//========================重置密码==================================================
//==================================================================================
void ResetPassword()
{
}
//=======================输入密码错误超过三过,报警并锁死键盘======================
void Alam_KeyUnable()
{
}
//=======================取消所有操作============================================
void Cancel()
{
//
ErrorCont=0;
//密码错误输入次数清零
}
//==========================确认键,并通过相应标志位执行相应功能===============================
void Ensure()
{
}
//==============================主函数===============================
void main()
{
}
//*********************************中断服务函数**************************************
void time1_int() interrupt
3
{
}
//外部中断解码程序_外部中断0
void intersvr1() interrupt 2 using 1
{
}