基于51单片机的超市存包密码柜锁proteus仿真程序设计

源文件:http://www.jh-tec.cn/archives/7104

前言:

之前讲了密码锁,接下来讲一下类似的超市存包密码柜,本次设计的方式是存包之后会自动随机生成一个密码,下次取包的时候输入该密码即可完成取包。

硬件设计

0.本系统采用STC89C52作为单片机
1.显示器采用的是LCD1602液晶,作为人机交互界面,显示密码输入情况
2.按键采用的是矩阵键盘,具有取包 存包 清楚 确认以及数字按键等功能
3.系统采用两个LED作为密码指示灯,红灯亮起表示密码错误,绿灯亮起表示密码正确
4.采用DC002作为电源接口可直接输入5V给整个系统供电
5.电磁锁是通过继电器来控制

以下是整体仿真图,矩阵键盘作为输入,具有蜂鸣器和LED作为声光报警器,采用一路继电器作为模拟密码柜的闭合和开启。
在这里插入图片描述
在这里插入图片描述

程序设计:

#include <reg51.h>
#include <intrins.h>
#include <stdlib.h>
#include <string.h>
#include<absacc.h>
#include "lcd1602.h"
#include "main.h"
#include "key.h"

sbit Lock = P3^7;  //代表锁控的继电器IO   高电平关锁,低电平开锁
sbit LEDRED = P2^0;  //代表密码输入错误的红灯IO  高电平熄灭,低电平点亮
sbit LEDGREEN = P2^1;  //代表密码输入正确的绿灯IO  高电平熄灭,低电平点亮
sbit beep=P1^5;	 
uchar genPasswd[4];           //存储生成的四位随机数密码
uchar inpPasswd[4];           //存储取包时输入的四位密码
uchar code welcome[8]="welcome";  //开机显示的欢迎标语
uchar code set[7]="Passwd";    //显示生成的密码标题
uchar code  close[12]="close door!";   //提示关门
uchar code 	input[13] = "input passwd";   //提示请输入密码

/****************定时器设置相关的变量***********************/
unsigned char TL0_temp;	 /*暂存TL0的初值*/
unsigned char TH0_temp;	 /*暂存TH0的初值*/
#define INT_CLOCK 10    /*INT_CLOCK为定时值,单位为ms ,此处定义为10ms*/
#define CRY_FREQUENCY 11059200 /*CRY_FREQUENCY为晶振频率,单位为Hz*/





/*延时程序*/
void delay(uint z)		
{
	unsigned int i,j;
   for(i=0;i<z;i++)
    for(j=0;j<100;j++);
}
/******************************
显示首页 welcome
******************************/
void display1()
{
   unsigned char i;
   for(i = 0;i < 7;i++)
   {
   		wr_com(0x85+i);
		wr_dat(welcome[i]);
   }
}


/************************************
显示密码生成界面
************************************/
void display2()
{
   unsigned char i;
   
   for(i = 0;i < 6;i++)
   {
   		wr_com(0x85+i);
		wr_dat(set[i]);
   }
   for(i = 0;i < 4;i++)
   {
   		wr_com(0xc6+i);
		wr_dat(genPasswd[i]+0x30);
		
   }
}

/************************************
显示请关门界面
************************************/

void display3()
{
     unsigned char i;
   for(i = 0;i < 11;i++)
   {
   		wr_com(0x83+i);
		wr_dat(close[i]);
   }

}


/************************************
显示密码输入界面
************************************/
void display4()
{
   unsigned char i;
   for(i = 0;i < 12;i++)
   {
   		wr_com(0x82+i);
		wr_dat(input[i]);
   }
   for(i = 0;i < 4;i++)
   {
   		wr_com(0xc6+i);
		wr_dat(inpPasswd[i]+0x30);
		
   }

}
	




/***********************************
定时器0初始化
***********************************/
void Timer0_init()
{
	unsigned long T0_temp;                                     /*暂存T0的初始值	*/
	T0_temp = 65536-((INT_CLOCK *CRY_FREQUENCY /1000)/12);    /*T0初始值计算公式,参考教科书*/
	TL0_temp = T0_temp & 0xff;
	TH0_temp = T0_temp >> 8;
	TL0 = TL0_temp;
	TH0 = TH0_temp;
	TMOD |= 0x01;
	TR0 = 1;  	              /*开定时器0中断*/
	ET0 = 1;  
	EA = 1;                    /*开总中断*/                                       

}






/*主函数*/
uchar global_state = 0;
uchar count_num = 0;  //输入的数字个数
void main()
{  
   uchar i,j;
   uchar passwd;
    
  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java智能柜锁控板通讯协议是一种通过Java编程语言实现的通讯协议,用于智能柜锁控板与其他设备(如电脑、服务器等)之间的通信。 该通讯协议基于Java的网络编程技术,使用TCP/IP协议进行数据传输。通讯的两端分别是智能柜锁控板和其他设备,它们通过互联网或局域网连接,并建立Socket连接。 通讯协议定义了智能柜锁控板与其他设备之间的消息格式和数据交互规则。根据协议,智能柜锁控板会发送各种指令和数据给其他设备,其他设备收到指令后会执行相应的操作,并将执行结果返回给智能柜锁控板。 通讯协议中定义了各种指令的格式和含义,例如开锁指令、查询指令、用户验证指令等。通讯协议还规定了指令的传输方式、数据包的结构和校验方式。 在Java编程中,可以使用Socket类来实现与智能柜锁控板的通讯。通过创建Socket对象并指定智能柜锁控板的IP地址和端口号,就可以与之建立连接。之后,可以使用输入流和输出流来进行数据的读写操作。 通过Java智能柜锁控板通讯协议,可以实现智能柜锁控板与其他设备之间的高效通信。这种通讯方式可用于各种应用场景,如物流柜、快递柜、智能储物柜等,提高了智能柜系统的可靠性和稳定性。同时,使用Java编程语言实现通讯协议,也方便了开发人员对系统进行扩展和维护。 ### 回答2: Java智能柜锁控板通讯协议是一种用于控制智能柜锁板与其他设备之间进行数据通信的规范。该协议定义了数据的传输格式、通信方式以及相应的指令集。 通常,Java智能柜锁控板通讯协议基于串口通信或者网络通信进行数据传输。在串口通信中,通过Java串口通信库来实现与智能柜锁控板之间的数据交互。而在网络通信中,可以利用Java的网络编程技术,通过TCP/IP或者UDP协议与智能柜锁控板进行通信。 在通信过程中,Java智能柜锁控板通讯协议规定了数据的传输格式。这通常包括数据帧的格式,如起始标志、源地址、目的地址、帧长度、校验等字段。对于指令的传输,会定义相应的指令码,并规定了指令码与具体功能之间的映射关系。 同时,Java智能柜锁控板通讯协议会定义相应的指令集,用于控制智能柜锁控板的功能操作。这包括开锁、关锁、查询锁状态等指令,并规定了每个指令所需的参数、返回结果的格式等。通过遵循通讯协议规定的指令集,其他设备可以与智能柜锁控板进行可靠的数据交互。 总的来说,Java智能柜锁控板通讯协议是一种规范,用于定义智能柜锁控板与其他设备之间的数据通信方式。它通过定义数据传输格式和指令集,确保通信的可靠性和稳定性。使用该协议,可以方便地实现与智能柜锁控板之间的数据交互和功能控制。 ### 回答3: Java智能柜锁控板通讯协议是指控制智能柜锁的锁控板与后台服务器或其他设备之间进行数据交互时所遵循的一套规定。这套协议旨在确保锁控板与其他设备之间的通讯能够高效稳定地进行。 Java智能柜锁控板通讯协议通常可以分为两个部分:物理层协议和应用层协议。 在物理层协议方面,主要负责定义锁控板与其他设备之间的物理连接方式和电信号传输规范。例如,可以使用串口、USB、以太网等接口来实现连接,约定使用的数据线和接口的标准。这些规范有助于确保通讯的稳定性和可靠性。 在应用层协议方面,主要定义了数据的格式和交互方式。通常采用类似于HTTP或TCP/IP协议的方式进行数据传输。协议规定了发送和接收数据的格式、数据的编码方式以及通讯的认证和加密等安全措施。通过这些规范,可以确保锁控板与其他设备能够正确、高效地进行数据传输和交换。 Java智能柜锁控板通讯协议的实现需要根据具体的应用场景和需求来选择和定制。在实际开发中,可以使用Java语言编写相应的程序来实现协议的解析和数据的发送与接收。同时,还需要按照协议规范编写相应的测试用例,用于验证通讯的正确性和稳定性。 总之,Java智能柜锁控板通讯协议是一套规范,用于定义智能柜锁控板与其他设备之间进行数据交互时的物理连接方式、数据格式和交互方式等。通过遵循这套协议,可以确保锁控板与其他设备之间的通讯能够稳定、高效地进行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值