找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3346|回复: 1
收起左侧

基于51单片机的红外电子密码锁的设计与仿真(电路图设计+C51程序+proteus仿真)

[复制链接]
ID:822631 发表于 2020-9-24 02:34 | 显示全部楼层 |阅读模式
本设计包含两个51单片机和一个proteus自带的红外组件IRLINK来模拟实现红外通信1)一个单片机模拟发送密码信号;         
2)一个单片机接收密码信号并通过电磁线圈控制锁的开或者关;
3)使用proteus自带的红外组件IRLINK的发射端模拟第一个单片机发射红外信号;
4)使用proteus自带的红外组件IRLINK的接收端模拟接红外信号并经过光电转换成电信号送入第二个单片机(红外电子密码锁的控制器)

以下是电路图的设计:

电路图设计

电路图设计



以下是仿真运行结果:
  

仿真

仿真


以下是附件的文件清单:包括电路图和keil程序
51hei图片1.png

51hei图片2.png


以下是红外通信的部分程序,感兴趣请下载附件:
#include "reg52.h"                         //此文件中定义了单片机的一些特殊功能寄存器
        
typedef unsigned int u16;         //对数据类型进行声明定义
typedef unsigned char u8;

sbit LOCK=P2^0;  //开锁控制接口

sbit IRIN=P3^2;         //红外通讯与单片机的接口,采用外部中断0控制

u8 IrValue[4];  //实际只用4位
u8 code1=0x00;   //存放原始关锁密码:00000000;
u8 code2=0xff;   //存放原始开锁密码:11111111;
u8 Time;    //存放中间变量

/*******************************************************************************
* 函 数 名         : delay
* 函数功能                   : 延时函数,i=1时,大约延时10us
*******************************************************************************/
void delay(u16 i)
{
        while(i--);        
}


/*******************************************************************************
* 函数名         : IrInit()
* 函数功能                   : 初始化红外线接收
* 输入           : 无
* 输出                  : 无
*******************************************************************************/

void IrInit()
{
        IT0=1;//下降沿触发
        EX0=1;//打开中断0允许
        EA=1;        //打开总中断
        IRIN=1;//初始化端口
}


/*******************************************************************************
* 函 数 名       : main
* 函数功能                 : 主函数
* 输    入       : 无
* 输    出             : 无
*******************************************************************************/
void main()
{        
        IrInit();
        
        while(1)
        {        
          if(IrValue[2] == code1) LOCK=1; //关门
          if(IrValue[2] == code2) LOCK=0; //开门
        }               
}

/*******************************************************************************
* 函数名         : ReadIr()
* 函数功能                   : 读取红外数值的中断函数
* 输入           : 无
* 输出                  : 无
*******************************************************************************/

void ReadIr() interrupt 0
{
        u8 j,k;
        u16 err;
        Time=0;                                         

         . . . . . .


全部资料51hei下载地址:
Infra-code Lock.rar (60.62 KB, 下载次数: 54)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:102963 发表于 2020-10-16 20:57 | 显示全部楼层
楼主的程序不全,没有发送端源程序!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表