本設(shè)計包含兩個51單片機和一個proteus自帶的紅外組件IRLINK來模擬實現(xiàn)紅外通信:1)一個單片機模擬發(fā)送密碼信號;
2)一個單片機接收密碼信號并通過電磁線圈控制鎖的開或者關(guān);
3)使用proteus自帶的紅外組件IRLINK的發(fā)射端模擬第一個單片機發(fā)射紅外信號;
4)使用proteus自帶的紅外組件IRLINK的接收端模擬接紅外信號并經(jīng)過光電轉(zhuǎn)換成電信號送入第二個單片機(紅外電子密碼鎖的控制器)
以下是電路圖的設(shè)計:
電路圖設(shè)計
以下是仿真運行結(jié)果:
仿真
以下是附件的文件清單:包括電路圖和keil程序
以下是紅外通信的部分程序,感興趣請下載附件:
#include "reg52.h" //此文件中定義了單片機的一些特殊功能寄存器
typedef unsigned int u16; //對數(shù)據(jù)類型進行聲明定義
typedef unsigned char u8;
sbit LOCK=P2^0; //開鎖控制接口
sbit IRIN=P3^2; //紅外通訊與單片機的接口,采用外部中斷0控制
u8 IrValue[4]; //實際只用4位
u8 code1=0x00; //存放原始關(guān)鎖密碼:00000000;
u8 code2=0xff; //存放原始開鎖密碼:11111111;
u8 Time; //存放中間變量
/*******************************************************************************
* 函 數(shù) 名 : delay
* 函數(shù)功能 : 延時函數(shù),i=1時,大約延時10us
*******************************************************************************/
void delay(u16 i)
{
while(i--);
}
/*******************************************************************************
* 函數(shù)名 : IrInit()
* 函數(shù)功能 : 初始化紅外線接收
* 輸入 : 無
* 輸出 : 無
*******************************************************************************/
void IrInit()
{
IT0=1;//下降沿觸發(fā)
EX0=1;//打開中斷0允許
EA=1; //打開總中斷
IRIN=1;//初始化端口
}
/*******************************************************************************
* 函 數(shù) 名 : main
* 函數(shù)功能 : 主函數(shù)
* 輸 入 : 無
* 輸 出 : 無
*******************************************************************************/
void main()
{
IrInit();
while(1)
{
if(IrValue[2] == code1) LOCK=1; //關(guān)門
if(IrValue[2] == code2) LOCK=0; //開門
}
}
/*******************************************************************************
* 函數(shù)名 : ReadIr()
* 函數(shù)功能 : 讀取紅外數(shù)值的中斷函數(shù)
* 輸入 : 無
* 輸出 : 無
*******************************************************************************/
void ReadIr() interrupt 0
{
u8 j,k;
u16 err;
Time=0;
. . . . . .
全部資料51hei下載地址:
Infra-code Lock.rar
(60.62 KB, 下載次數(shù): 56)
2020-9-24 02:33 上傳
點擊文件名下載附件
全套程序
|