欢迎来到天天文库
浏览记录
ID:56417644
大小:806.50 KB
页数:20页
时间:2020-06-17
《遥控电子密码锁剖析.ppt》由会员上传分享,免费在线阅读,更多相关内容在PPT专区-天天文库。
1、遥控电子密码锁整体设计思想:P0.0~P0.7D0~D78051液晶1602RSP3.5ENP3.4RWP3.6红外INT0/P3.2SDASCLP2.0P2.1AT24C02I2C总线协议I2C总线协议定义如下1.只有在总线空闲时才允许启动数据传送2.在数据传送过程中当时钟线为高电平时数据线必须保持稳定状态不允许有跳变时钟线为高电平时数据线的任何电平变化将被看作总线的起始或停止信号启动、停止I2C总线voidinit()//24c02初始化子程序{scl=1;nop();sda=1;nop();}voidstart(
2、)//启动I2C总线{sda=1;nop();scl=1;nop();sda=0;nop();scl=0;nop();}voidstop()//停止I2C总线{sda=0;nop();scl=1;nop();sda=1;nop();}总线时序选择读时序voidwritebyte(unsignedcharj)//写一个字节{unsignedchari,temp;temp=j;for(i=0;i<8;i++){temp=temp<<1;scl=0;nop();sda=CY;//temp左移时,移出的值放入了CY中nop()
3、;scl=1;//待sda线上的数据稳定后,将scl拉高nop();}scl=0;nop();sda=1;nop();}unsignedcharreadbyte()//读一个字节{unsignedchari,j,k=0;scl=0;nop();sda=1;//初始化for(i=0;i<8;i++){nop();scl=1;nop();if(sda==1)j=1;elsej=0;k=(k<<1)
4、j;scl=0;}nop();return(k);}voidrespons()//I2C总线时钟{unsignedchari=
5、0;scl=1;nop();while((sda==1)&&(i<255))i++;scl=0;nop();}////////从24c02的地址address中读取一个字节数据/////unsignedcharread24c02(unsignedcharaddress){unsignedchari;start();writebyte(0xa0);respons();writebyte(address);respons();start();writebyte(0xa1);//最低位为1,读操作respons();i=re
6、adbyte();stop();delay1(100);return(i);}//////向24c02的address地址中写入一字节数据info/////voidwrite24c02(unsignedcharaddress,unsignedcharinfo){start();writebyte(0xa0);//最低为0,写操作respons();writebyte(address);respons();writebyte(info);respons();stop();delay1(5000);//这个延时一定要足够长
7、,否则会出错。因为24c02在从sda上取得数据后,还需要一定时间的烧录过程。}AT24C02CAT24WC02是一个2K位串行CMOSE2PROM。本实验是利用24c02的第110到115地址单元作为密码存储区,同时掉电可记忆。液晶模块初始化过程/*------------------------------------------------初始化函数------------------------------------------------*/voidLCD_Init(void){LCD_Write_Com(
8、0x38);/*显示模式设置*/DelayMs(5);LCD_Write_Com(0x38);DelayMs(5);LCD_Write_Com(0x38);DelayMs(5);LCD_Write_Com(0x38);LCD_Write_Com(0x08);/*显示关闭*/LCD_Write_Com(0x01);/*显示清屏*/LCD_Write_Com(0x06);/*显示光标移动设置*/DelayMs(5);LCD_Write_Com(0x0C);/*显示开及光标设置*/}/*-------------------
9、-----------------------------写入字符函数------------------------------------------------*/voidLCD_Write_Char(unsignedcharx,unsignedchary,unsignedcharData){if(y==0){LCD_Wri
此文档下载收益归作者所有