• 大小: 28KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-05
  • 语言: 其他
  • 标签: 单片机  c51  

资源简介

c51编写单片机电子密码锁 6位密码 功能齐全 proteus仿真

资源截图

代码片段和文件信息

#include “Absacc.h“	
#include 
#include
#include
#define C8255_A XBYTE[0x7F00] //8255 端口地址定义
#define C8255_B XBYTE[0x7F01]
#define C8255_C XBYTE[0x7F02]
#define C8255_CON XBYTE[0x7F03]
#define Clk 0x070000
#define trytime 3
#define uchar unsigned char
#define uint unsigned int
uchar a[] = {0x3f 0x06 0x5b 0x4f 0x66 0x6d 0x7d 0x070x7f 0x6f 0x77 0x7c 0x39 0x5e 0x79 0x710x000x40};//数码管显示编码
uchar L_value[2][8] = {0x0E0 0x0C0 0x0D0 0x090 0x0B0 0x030 0x070 0x0600x060 0x070 0x030 0x0B0 0x090 0x0D0 0x0C00x0E0};//步进电机正反转表
sbit P20 = P2^0; //扬声器控制引脚
uchar data val_H; //计数器高字节
uchar data val_L; //计数器低字节

sbit red_light=P3^2;//红指示灯
sbit control=P2^3;//锁死控制
sbit E=P3^5;//LCD控制
sbit RW=P3^4;
sbit RS=P3^3;

uchar b[] = {0x0C 0x10 0x10 0x100x100x10}; //显示缓冲
uchar inputp[]={0xff 0xff 0xff 0xff 0xff 0xff};//输入的密码
uchar changep[]={0x00 0x00 0x00 0x00 0x00 0x00};//修改密码
uchar password[]={0x00 0x00 0x00 0x00 0x00 0x00};//密码
uchar key_down;
uchar key_value;
uchar key_count;
bit right_flag; //输入的密码正确标志
uchar wrong_time; //错误次数
uchar xiugai_flag;//进行修改标志
bit password_visable;//密码可见控制
void bujin(void);
void sound(unsigned char keep_time);
void display(void);
void writebuffer(void);
void que_ren(void);
void delete(void);
void xiugai(void);
void shutdown(void);
void visable(void);
char bijiao(uchar a[]uchar b[]);

//--------------------------------------------------------
//lcd模块
void delay(unsigned int time)
{
unsigned int i;
for(i=0; i// display();   
}

void lcd_com(uchar com)//写指令
{
RS=0;
RW=0;
P1=com;
delay(500);
E=1;
delay(500);
E=0;
}

void lcd_data(uchar dat)//写数据
{
RS=1;
RW=0;
P1=dat;
delay(500);
E=1;
delay(500);
E=0;
}
void disp_str(uchar nuchar yuchar *p)
{
if(n==0)
lcd_com(0x80+y);
else
lcd_com(0xc0+y);
while(*p)
lcd_data(*p++);
}

void int_lcd(void)//初始化
{
     lcd_com(0x01); //清屏
 lcd_com(0x3c);//8位,双列字,5X10字形
 lcd_com(0x0c);//显示器开关 显示器开,关闭光标、字符不闪烁
}
//--------------------------------------------------------------

void keyscan()  //按键扫描函数
{
unsigned char cc;
C8255_A = 0x00;  //X1~X4 置0
cc = C8255_C;  //得到Y1~Y4 的值
key_down = (~cc) & 0x0f;
}
void display() //显示函数
{
unsigned char i j = 0xDF;
for(i=0; i<6; i++)
{
C8255_A = 0xFF;
C8255_B = a[b[i]]; //查表输出显示
C8255_A = j;
delay(0x100);
j = (j>>1)|(j<<7);
}
}
void clear()  //清屏
{
C8255_B = 0x00;
}

void chushihua(uchar the_threeuchar the_twouchar the_one)
{
  unsigned char i;
for(i=0; i<6; i++)
{ if(i==0)
b[i]=the_one;
else if(i==1)
  b[i]=the_two;
else
b[i]=the_three;
}
   key_count=5;
}


void getkey() //得到按键值
{
unsigned char value;
unsigned char i j = 0xFE;
for(i=0; i<4; i++)
{
C8255_A = j;
value = C8255_C;
if(!(value & 0x01)) //行1
{
key_value = i + 0;
writebuffer();
return;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     169431  2015-12-30 22:51  lock\jianpanjiaxianshi.DSN

     文件       9054  2015-12-30 10:52  lock\mimasuo.c

     目录          0  2016-12-30 23:01  lock

----------- ---------  ---------- -----  ----

               178485                    3


评论

共有 条评论