資源簡介
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
- 下一篇:植被覆蓋度遙感反演
評論
共有 條評論