333 基于单片机智能存柜储物柜存储柜系统设计【毕设课设】

完整版 电路图和程序代码 下载地址

https://pan.baidu.com/s/116h4v0djsz9LgpiwemWzyA?pwd=8888

部分代码展示

#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 = P3^3;  //代表密码输入错误的红灯IO  高电平熄灭,低电平点亮
sbit LEDGREEN = P3^4;  //代表密码输入正确的绿灯IO  高电平熄灭,低电平点亮
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;
   uchar passwd;
    
   	uchar key_value = 0;
	uchar temp_key_value = 0xff;
	Lock = 1;  //刚上电 锁是需要保持闭合
	Timer0_init();	//定时器初始化
 	lcd_init();	//LCD1602初始化
   
	while(1)	//进入不断循环
	{
	   	temp_key_value = Calkey_scan();	  //读取矩阵按键的键值
		if(temp_key_value != 0xff)
		{
			key_value = temp_key_value;
		}
		switch(global_state)
		{
			case 0:	 //初始化状态
				display1();	 //显示欢迎语句	-- "welcome"
			

				if(key_value == 13)  //存包按键被按下
				{
				    key_value = 0xff;  //将按键值清除
					Lock = 0;    //开锁
					
					display3();    //显示关门提示语	-- "close door!"
				    delay(1900);    //等待关门 大约3秒
					Lock = 1;   //关门
					clear();		 //清屏,准备下一屏的显示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值