资源简介
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
- 上一篇:comsol 5 update
- 下一篇:植被覆盖度遥感反演
相关资源
- 89C51 单片机IO 口模拟串行通信的实现
- CCP协议源码
- AT89C51单片机在直流电机闭环调速系统
- c8051f系列单片机PCA实现PWM波输出
- ADC0809模数转换与显示(汇编程序)
- 基于单片机的按摩器的毕设
- 单片机程序加密的几种实用方法
- 单片机8-16位曼彻斯特编码
- 16x16汉字点阵字库,单片机编程用
- 51单片机SPWM输出程序
- 基于单片机全自动洗衣机毕业设计
- 基于51单片机的PWM直流电机调速prote
- 51单片机的OV7670摄像头驱动程序
- 单片机多功能秒表课程设计报告.doc
- 步进电机正反转及调速控制
- 51单片机52单片机封装库有PCB库
- keil c51 9.0-9.03 9x 注册机
- 基于AT89C51单片机电子体温计设计.ra
- STM32单片机简易计算器
- 单片机串口发送指令控制LED
- AT89C51的矩阵键盘、跑马灯和呼吸灯设
- STC单片机Altium Designer原理图库
- 51单片机蓝牙串口调试源代码
- 单片机MCU外文文献
- C51占空比测量
- ds2781单总线avr单片机程序
- 时间片轮转算法在单片机程序设计中
- MCS-51系列单片机中英文资料对照外文
- 基于AD&DA的proteus仿真
- 基于51单片机的密码锁Proteus仿真.rar
评论
共有 条评论