资源简介
这是本人自己平时闲暇时编写的,设计一个电子密码锁,设计报告包含16页,严肃哦文件中包含KEIL编程,PROTEUS仿真和设计报告。非常详细,5分绝对值得,我不会像有些人那样敲诈大家的呵呵。觉得不错的话记得好评啊,就是想要个好评呵呵。。。

代码片段和文件信息
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define lcd1602_data P0 //Lcd1602的位定义
sbit rs=P3^0;
sbit rw=P3^1;
sbit en=P3^2;
sbit BJ=P1^7;//报警位定义,当密码输入错误时报警位置1
sbit QD=P3^3;
uchar key; //存键值
uchar count=0;//用于记录输入的密码位数
uchar mima[6]={0};//存密码值
uchar mimabuf[6]={0}; //存输入的数字
uchar gongneng_flag=0;//功能选择位标志,为1时为Set,为2时为Open密码正确打开
bit key_flag=0; //有按键按下标志位
bit mima_error=0;//密码输入错误标志位
uchar code table1[]=“Welcome... “;
uchar code table2[]=“Select Mode... “;
uchar code table3[]=“1: SET 2: OPEN “;
uchar code table4[]=“Previous number “;
uchar code table5[]=“New number is: “;
uchar code table6[]=“Number is “;
uchar code table7[]=“ It is wrong!!! “;
uchar code table8[]=“Set is OK !!! “;
uchar code table9[]=“The number is OK“;
//判断LCD1602的状态即状态字最高位STA7
uchar Lcd1602Busy(void)
{
register unsigned char lcdbusy;
rs=0;
rw=1;
en=1;
_nop_();
lcdbusy=lcd1602_data;
_nop_();
en=0;
return(lcdbusy&0x80);
}
//向LCD1602内写命令
void WriteCmdLcd1602(unsigned char command)
{
while(Lcd1602Busy());
rs=0;
rw=0;
en=1;
_nop_();
lcd1602_data=command;
_nop_();
en=0;
}
//向LCD1602内写数据
void WriteDatLcd1602(unsigned char dat)
{
while(Lcd1602Busy());
rs=1;
rw=0;
en=1;
_nop_();
lcd1602_data=dat;
_nop_();
en=0;
}
//将坐标定位在第row行第column列
void Goto_xy(unsigned char rowunsigned char column)
{
if(row==1)
WriteCmdLcd1602(0x80+column-1);
else if(row==2)
WriteCmdLcd1602(0x80+0x40+column-1);
}
//延时约1S
void delay(void)
{
uchar ijk;
for(i=0;i<20;i++)
for(j=0;j<125;j++)
for(k=0;k<250;k++);
}
//初始化函数
void InitLcd1602(void)
{
WriteCmdLcd1602(0x38);
WriteCmdLcd1602(0x01);
WriteCmdLcd1602(0x0f);
WriteCmdLcd1602(0x06);
}
//在液晶上显示字符串
void PutStrLcd1602(char *string)
{
unsigned char i;
for(i=0;string[i]!=‘\0‘;i++)
{
WriteDatLcd1602(string[i]);
_nop_();
}
}
//延时10ms
void delay10ms(void)
{
uchar ij;
for(i=0;i<25;i++)
for(j=0;j<250;j++);
}
void KeyScan(void) //键盘扫描程序,key应定义为全局无符号字符型
{
uchar itemptemp1=0xfe;
for(i=0;i<4;i++)
{
P2=temp1;
temp=P2&0xf0;
if(temp!=0xf0)
{
delay10ms();
temp=P2&0xf0;
if(temp!=0xf0)
{
while((P2&0XF0)!=0xf0);
switch(temp)
{
case 0xe0:key=4*i+0;break;
case 0xd0:key=4*i+1;break;
case 0xb0:key=4*i+2;break;
case 0x70:key=4*i+3;break;
}
key_flag=1;
break;
}
}
temp1=(temp1<<1)|0x01;
}
}
//状态1,在第一行输出“Welcome...”
void state1(void)
{
uchar i;
Goto_xy(11);
PutStrLcd1602(table1);
Goto_xy(21);
for(i=0;i<16;i++)
{
WriteDatLcd1602(‘ ‘);
_nop_();
}
}
//状态2,第一行输出“Select Mode... ”,第二行输出“1: SET 2: OPEN ”
void state2(void)
{
Goto_xy(11);
PutStrLcd1602(table2);
Goto_xy(21);
PutStrLcd1602(table3);
}
//状态3,第一行输出“Previous number ”,并将下一个输出字符定位在第二行第一列
void state3(void)
{
WriteCmdLcd1602(0x01);
Goto_xy(11);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 14307 2011-08-02 00:50 基于51的电子密码锁设计\Keil\基于51单片机的电子密码锁设计
文件 5704 2011-08-02 00:50 基于51的电子密码锁设计\Keil\基于51单片机的电子密码锁设计.c
文件 3197 2011-08-02 00:50 基于51的电子密码锁设计\Keil\基于51单片机的电子密码锁设计.hex
文件 88 2011-08-02 00:50 基于51的电子密码锁设计\Keil\基于51单片机的电子密码锁设计.lnp
文件 14764 2011-08-02 00:50 基于51的电子密码锁设计\Keil\基于51单片机的电子密码锁设计.LST
文件 23078 2011-08-02 00:50 基于51的电子密码锁设计\Keil\基于51单片机的电子密码锁设计.M51
文件 17252 2011-08-02 00:50 基于51的电子密码锁设计\Keil\基于51单片机的电子密码锁设计.OBJ
文件 199 2011-08-04 00:19 基于51的电子密码锁设计\Keil\基于51单片机的电子密码锁设计.plg
....... 55321 2011-08-04 00:22 基于51的电子密码锁设计\Keil\基于51单片机的电子密码锁设计.uvopt
....... 13337 2011-07-31 23:44 基于51的电子密码锁设计\Keil\基于51单片机的电子密码锁设计.uvproj
....... 55317 2011-08-02 11:10 基于51的电子密码锁设计\Keil\基于51单片机的电子密码锁设计_uvopt.bak
....... 13333 2011-07-31 17:34 基于51的电子密码锁设计\Keil\基于51单片机的电子密码锁设计_uvproj.bak
文件 109751 2011-08-02 00:24 基于51的电子密码锁设计\proteus\Last Loaded 基于51单片机的电子密码锁设计.DBK
文件 109751 2011-08-02 00:51 基于51的电子密码锁设计\proteus\基于51单片机的电子密码锁设计.DSN
文件 1078 2011-08-02 16:14 基于51的电子密码锁设计\proteus\基于51单片机的电子密码锁设计.PWI
文件 435200 2011-08-02 11:08 基于51的电子密码锁设计\基于51单片机的电子密码锁设计.doc
目录 0 2011-08-04 00:22 基于51的电子密码锁设计\Keil
目录 0 2011-08-02 16:14 基于51的电子密码锁设计\proteus
目录 0 2011-08-02 11:10 基于51的电子密码锁设计
----------- --------- ---------- ----- ----
871677 19
- 上一篇:课程设计——路由与交换
- 下一篇:基于小波变换的声波信号包络提取
相关资源
- 51 单片机 红外避障小车 大集合136
- 最新的北京地铁shp文件75146
- 程序员专用字体YaHei.Consolas.1.11b42517
- STC8951系列单片机中方指南
- 基于MCS_51单片机的工业屏柜散热方案
- 清翔电子MCS51开发板资料_新版 01_开发
- MCS_51单片机与8255A的接口设计
- Rtx51_tiny_RTOS中文版.pdf
- 飞思卡尔单片机MC9S12XS12G128驱动(硬件
- 51单片机PWM程序,占空比、周期可调整
- 单片机和adc0809数字电压表
- PIC单片机完成的电子密码锁
- 单片机、ADC0808809设计简易数字电压表
- 51单片机多功能自行车测速仪
- 单片机做的6位时分秒数字钟
- 单片机电子时钟 闹钟 日历
- proteus仿真 AT89C51输出各种波形
- 音乐代码转换软件 单片机编程时用
- 单片机课程设计 篮球计分器
- 00
- 用51单片机实现G代码翻译
- 简易的电阻电容测量电路
- 单片机与温度传感器DS18B20的程序设计
- 51单片机基于protues的几个仿真实例
- 基于52单片机的直流电压测量
- 38k单片机红外发送代码、keil
- 51单片机PCB设计图
- PC -- 单片机的串口数据传输系统设计
- 51模拟SPI读写SD卡(包括Fat和Fat32文件
- NRF24L01实现51与STM32双向通讯
评论
共有 条评论