【51单片机】【protues仿真】 基于51单片机储物箱系统
目录
一、主要功能
二、使用步骤
三、硬件资源
四、软件设计
五、实验现象
一、主要功能
1、LCD12864液晶显示存储状态
2、矩阵按键输入进行存取
3、管理员可以进行直接取物和修改管理员密码
4、指示灯和蜂鸣器进行显示
5、掉电存储功能
二、使用步骤
基于51单片机的储物箱系统设计通常包含密码锁控制、状态显示、柜门开关指示灯等核心功能。
三、硬件资源
1、51单片机核心模块
2、按键模块
3、24c02芯片
4、蜂鸣器模块
5、继电器模块
6、LCD12864显示模块
四、软件设计
#include <STC89C5xRC.H>
#include <intrins.h>
#include "LCD12864_No_font_library.h"
#include "zi_ku.h"
#include "24C02.h"
uchar system_time=0;
bit s0=0;
uchar beep_time=0; //蜂鸣器端口定义
sbit beep=P0^5; //蜂鸣器端口定义
uchar key_back=16; //按键返回值变量
uchar ms=0; //按键返回值变量
bit key_flag=0;
uchar Box_number=0;
uchar xdata password[6] ={0,0,0,0,0,0}; //存储密码的数组
uchar xdata password_flsh[6]={0,0,0,0,0,0}; //存储密码的数组
uchar password_count=0; //存储密码的数组计数变量
uchar xdata Password_flsh2[6]; //这个存储的是,要修的密码密码的时候,再次输入的密码
bit Modify=0; //这个标志位是修改密码用的
uchar Box_state[8];
uchar Surplus=0;
uchar admin[6];
uchar state=0;
uchar state_clear=0;
bit clear_flag=1;
sbit led0=P3^0;
sbit led1=P3^1;
sbit led2=P3^2;
sbit led3=P3^3;
sbit led4=P3^4;
sbit led5=P3^5;
sbit led6=P3^6;
sbit led7=P3^7;
uchar led0_time=0;
uchar led1_time=0;
uchar led2_time=0;
uchar led3_time=0;
uchar led4_time=0;
uchar led5_time=0;
uchar led6_time=0;
uchar led7_time=0;
void Uart1Data(uchar dat) //串口数据发送
{
SBUF=dat;
while(!TI);
TI=0;
}
void delay(unsigned int T)
{
while(T--);
}
void memory_Pass(uchar dat1,dat2,dat3,dat4,dat5,dat6,Num) //保存密码
{
unsigned char tab[6];
tab[0]=dat1;
tab[1]=dat2;
tab[2]=dat3;
tab[3]=dat4;
tab[4]=dat5;
tab[5]=dat6;
Write_dat_24C02(tab,Num*6,6);
}
void read_Pass(Num) //读取密码
{
Read_dat_24C02(password_flsh,Num*6,6);
}
void memory_Box() //保存箱子状态
{
Write_dat_24C02(Box_state,100,8);
}
void read_memory_Box() //读箱子状态
{
Read_dat_24C02(Box_state,100,8);
}
void memory_admin() //保存箱子状态
{
Write_dat_24C02(admin,120,6);
}
void read_memory_admin() //读箱子状态
{
Read_dat_24C02(admin,120,6);
}
void main()
{
Time0_int();
// Uart_int();
EA=1;
LCD_initialize();
LCD_clear();
read_memory_Box();
read_memory_admin();
while(1)
{
key_back_dispose();
dispaly();
key_dispose();
}
}
void time0() interrupt 1
{
TH0=0x3C;
TL0=0xb0;
ms++;
led_dispose();
if(beep_time!=0)
{
if(beep_time!=0)
{
beep_time--;
beep=~beep;
}
}else beep=1;
if(ms%10==0) s0=~s0;
if(ms>=20)
{
ms=0;
if(system_time!=0) system_time--;
else
{
if(state==15||state==14)
{
system_time=10; state=8;
}
else state=0;
}
}
}
//void uart() interrupt 4
// {
// if(RI)
// {
// RI=0;
// }
// }
五、实验现象
演示视频: