AT89C51单片机电子密码锁.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《AT89C51单片机电子密码锁.pdf》由会员分享,可在线阅读,更多相关《AT89C51单片机电子密码锁.pdf(31页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、AT89C51 单片机电子密码锁#include main.h /*LCD PART START*/5ms 延时 void Delay5Ms(void)unsigned int TempCyc=5552;while(TempCyc-);/读状态 unsigned char ReadStatusLCM(void)LCM_Data=0 xFF;LCM_RS=0;LCM_RW=1;LCM_E=0;LCM_E=0;LCM_E=1;Delay5Ms();while(LCM_Data&Busy);/检测忙信号 return(LCM_Data);/写数据 void WriteDataLCM(unsigned
2、 char WDLCM)ReadStatusLCM();/检测忙 LCM_Data=WDLCM;LCM_RS=1;LCM_RW=0;LCM_E=0;/若晶振速度太高能够在这后加小的延时 LCM_E=0;/延时 LCM_E=1;/写指令 void WriteCommandLCM(unsigned char WCLCM,BuysC)/BuysC 为 0 时忽略忙检测 if(BuysC)ReadStatusLCM();/根据需要检测忙 LCM_Data=WCLCM;LCM_RS=0;LCM_RW=0;LCM_E=0;LCM_E=0;LCM_E=1;/读数据 unsigned char ReadDat
3、aLCM(void)LCM_RS=1;LCM_RW=1;LCM_E=0;LCM_E=0;LCM_E=1;return(LCM_Data);void LCMInit(void)/LCM 初始化 LCM_Data=0;WriteCommandLCM(0 x38,0);/三次显示模式设置,不检测忙信号 Delay5Ms();WriteCommandLCM(0 x38,0);Delay5Ms();WriteCommandLCM(0 x38,0);Delay5Ms();WriteCommandLCM(0 x38,1);/显示模式设置,开始要求每次检测忙信号 WriteCommandLCM(0 x08,1
4、);/关闭显示 WriteCommandLCM(0 x01,1);/显示清屏 WriteCommandLCM(0 x06,1);/显示光标移动设置 WriteCommandLCM(0 x0C,1);/显示开及光标设置 /按指定位置显示一个字符,x 表示列,Y 表示行 void LCD_write_char(unsigned char X,unsigned char Y,unsigned char DData)Y&=0 x1;X&=0 xF;/限制 X 不能大于 15,Y 不能大于 1 if(Y)X|=0 x40;/当要显示第二行时地址码+0 x40;X|=0 x80;/算出指令码 WriteC
5、ommandLCM(X,0);/这里不检测忙信号,发送地址码 WriteDataLCM(DData);/按指定位置显示一串字符 void LCD_write_string(unsigned char X,unsigned char Y,unsigned char code*DData)unsigned char ListLength;ListLength=0;Y&=0 x1;X&=0 xF;/限制 X 不能大于 15,Y 不能大于 1 while(*DData)/若到达字串尾则退出 0就是 0 if(X=0 xF)/X坐标应小于 0 xF LCD_write_char(X,Y,*DData);
6、/显示单个字符 DData+;X+;/*/#include#include#define uchar unsigned char#define uint unsigned int /*LCD PART START*/void delay(uint z)/延时 uint x,y;for(x=z;x0;x-)for(y=124;y0;y-);sbit e=P25;sbit rw=P26;sbit sr=P27;uchar code name=zxs;uchar code name1=zcf;uchar code name2=zx;void write_com(uchar com)int rs;rs
7、=0;P0=com;delay(5);e=1;delay(5);e=0;void write_data(uchar date)int rs;rs=1;P0=date;delay(5);e=1;delay(5);e=0;void init()e=0;rw=0;write_com(0 x38);write_com(0 x0c);write_com(0 x06);write_com(0 x01);write_com(0 x80);void display()uchar i;for(i=0;i3;i+)write_data(namei);write_com(0 x80+0 x40);for(i=0;i
8、3;i+)write_data(name1i);void main()init();display();#include#define uchar unsigned char uchar starbuf10;uchar wordbuf8;uchar pw8=1,2,3,4,5,6,7,8;uchar pwbuf8;uchar count=0;/初始没有输入密码,计数器设为 0 uchar inputflag=0;/先处于密码输入状态,非密码修改状态 bit enterflag=0;/没有按下确认键 bit pwflag=0;/密码标志先置为 0 sbit warn=P36;#define lc
9、d_data P0 sbit rs=P27;sbit rw=P26;sbit e=P25;/LCD1602 驱动程序/void delay_1602(unsigned int i)while(i-);void enrw()rs=0;rw=0;e=0;delay_1602(250);e=1;write_data(uchar c)lcd_data=c;rs=1;rw=0;e=0;delay_1602(250);e=1;init_lcd(void)/初始化 lcd_data=0 x01;/清屏幕 enrw();lcd_data=0 x38;/数据长度为 8 位,双行显示,5*7 字符。enrw();
10、lcd_data=0 x0c;/打开显示开关 enrw();lcd_data=0 x06;/地址计数递增,显示屏不移动 enrw();write_cmd(uchar m)/写命令,注意与写数据的区别 lcd_data=m;enrw();display(uchar row,uchar colum,uchar*s)/行 列 字符 写字符串,简单的指针应用 uchar p;if(row=1)p=0 x82+colum-1;else p=0 xC0+colum-1;write_cmd(p);for(;*s!=0;s+)write_data(*s);void lcd_display(unsigned c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AT89C51 单片机 电子 密码锁
![提示](https://www.deliwenku.com/images/bang_tan.gif)
限制150内