ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:31.45KB ,
资源ID:21546507      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21546507.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机电子密码锁带时钟Word文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机电子密码锁带时钟Word文档格式.docx

1、uchar IS_Valid_User = 0;uchar code Title_Text=Your Password.;uchar DSY_BUFFER10= /显示缓冲uchar UserPassword10= /用户输入的密码void Initialize_LCD();void Set_Disp_Pos(uchar pos);void Write_LCD_Data(uchar dat);void Display_String(uchar *str,uchar LineNO); /在液晶指定行显示字符串void IIC_24C04_Init(); /IIC 初始化void Beep();v

2、oid yinyue();void Write_LCD_Command(uchar cmd);uchar RecString(uchar Slave,uchar Subsddr,uchar *Buffer,uchar N);/从IIC 读取数据uchar SendString(uchar Slave,uchar Subsddr,uchar *Buffer,uchar N);/向IIC 写入数据uchar Keys_Scan(); /键盘扫描void boss();sbit LED_OPEN=P24; /开锁亮灯sbit BEEP=P37; /蜂鸣器sbit RS=P27;sbit RW=P26

3、;sbit EN=P25;sbit SCL=P32;sbit SDA=P33;/-/延时void DelayXus(uint x)uchar i;while(x-) for(i=0;i120;i+);/蜂鸣器子程序void Beep()for (i=0;100;i+)DelayXus(1);BEEP=BEEP;BEEP=0;/- -/清除密码void Clear_Password()UserPassword0 = 0DSY_BUFFER0=void Display_String(uchar *str,uchar LineNO)Write_LCD_Command(LineNO|0x80);for

4、(i=0;=strlen(str);Write_LCD_Data(stri);/-/ 主程序void main()P0 = 0xFF;P1 = 0xFF;P2 = 0xFF;IE=0x82; /允许T0 中断TMOD=0x00;/ TMOD = 0x02; /T0 设置为8 位自动重装模式/ TH0 = 175;/ TL0 = 175;/ TR0 = 1; /启动T0DelayXus(10);Initialize_LCD(); /初始化LCDIIC_24C04_Init(); /初始化24C04Display_String(Title_Text,0x00); /在第1 行显示标题RecStri

5、ng(0xa0, 0 , IIC_Password, 6);IIC_Password0 =UserPassword0 =while(1) boss();Beep();DelayXus(100);P1= 0xF0;while (P1 != 0xF0); /如果有键未释放则等待while (P1 = 0xF0); /如果没有再次按下按键则等待/-LCD1602.C-/液晶控制与显示程序void DelayMS(uint ms)while(ms-) for(i=0;/-/忙检查uchar Busy_Check()uchar LCD_Status;RS=0; /RS 为寄存器选择,高电平1 时选择数据

6、寄存器、低电平0 时选择指令寄存器。RW=1; /R/W 为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作EN=1; /E(或EN)端为使能(enable)端,下降沿使能,下跳变时液晶屏开始执行命令DelayMS(1);LCD_Status=P0; /DB9 为高4 位三态、 双向数据总线 7 位(最高位)(也是busy flag)EN=0;return LCD_Status;/-/写LCD 命令/-void Write_LCD_Command(uchar cmd)while(Busy_Check()&0x80)=0x80); /忙等待 /低电平0 时选择指令寄存器RW=0;

7、/低电平(0)时进行写操作 /写指令时,E 为高脉冲,即让E 从0 到1 发生正跳变,应先置0P0=cmd; /产生正跳变/设置LCD 显示位置void Set_Disp_Pos(uchar pos)Write_LCD_Command(pos|0x80);/发送数据void Write_LCD_Data(uchar dat)RS=1; /高电平1 时选择数据寄存器P0=dat;/LCD 初始化void Initialize_LCD()Write_LCD_Command(0x38); /设置162 显示,57 点阵,8 位数据接口Write_LCD_Command(0x01); /显示清屏,数据

8、指针=0,所有显示=0Write_LCD_Command(0x06); /写指令06H 置字符输入模式:屏幕不动,字符后移Write_LCD_Command(0x0c); /显示开,关光标/*/-/显示字符串void ShowString(uchar x,uchar y,uchar *str)uchar i=0;if (y=0) Write_LCD_Command(0x80|x); /以下设置显示起始位置if (y=1) Write_LCD_Command(0xc0|x); /1602 型LCD 字符显示位置的确定方法规定为:80H+地址码,注意可以设置显示位置/第二行行首地址:80H+40H

9、=0CH 教材P28716;i+) /输出字符串*/-/1602 型LCD 内部地址参照教材P287,1602 型字符显示位置的确定方法规定为80H+地址码(00-0FH 40-4FH)/如要将字符显示在第2 行第6 列,则确定地址的指令代码应为80H+45H=C5H/-24C04.c-/24C04 IIC 读/写程序/-void DeslayMS(uint x)/-/起始位void Start()SDA=1;SCL=1;Delay4us();SDA=0;SCL=0;/停止位void Stop()/读取应答 每次传送一个字节完毕,必须接收从机发出的一个应答位void RACK()/发送应答信号

10、void ACK()/发送非应答信号void NO_ACK()/从芯片读取1 字节uchar Recbyte()uchar i,rd;rd=0x00;8;rd=1;rd |=SDA;return rd;/向芯片发送1 字节uchar SendByte(uchar wd)bit ack0;SDA=(bit)(wd & 0x80);wd /释放总线并准备读取应答ack0=!SDA; / 此SDA 为从机发来的应答信号,SDA 为0 表示应答,为1 则为无应答return ack0; /返回应答/向芯片发送多字节数据函数(写多字节)uchar SendString(uchar Slave,uchar

11、 Subaddr,uchar *Buffer,uchar N)Start();if (!SendByte(Slave) return 0; /0xa0 器件地址以及写入操作,0xa0 即为10100000BSendByte(Subaddr) return 0;N;SendByte(Bufferi) return 0;Stop();return 1;/接收多字节数据函数(读多字节)uchar RecString(uchar Slave,uchar Subaddr,uchar *Buffer,uchar N)SendByte(Slave+1) return 0; /0xa1 器件地址以及读取操作,

12、0xa1 即为1010 0001BN-1;Bufferi= Recbyte(); /接收数据ACK(); /发送应答位BufferN-1= Recbyte(); /NO_ACK(); /发送非应答位/向24C04 中写一个字节数据/数据先通过指令完成移位再从SDA 串行输出。按照时序要求,/数据在SCL 低电平时变化,高电平时稳定,每个时钟脉冲传送一位。void Write_A_Byte(uchar b)bSDA=CY; /反汇编可以看出左移是x/SDA = (bit)(b&0x80); /通过按位“与”运算将最高位数据?/因为传送时高位在前,低位在后RACK();/向指定地址写数据void

13、Write_IIC(uchar addr,uchar dat)Write_A_Byte(0xa0); /0xa0 器件地址以及写入操作,0xa1 即为1010 0000BWrite_A_Byte(addr); /芯片内存寻址Write_A_Byte(dat);DeslayMS(10);uchar Read_A_Byte()uchar i,b; /可以不要b|=SDA;return b;/从任意地址读取数据uchar Read_Current()uchar d;Write_A_Byte(0xa1);d=Read_A_Byte();return d;uchar Random_Read(uchar addr)return Read_Current();/-/中断发声换函数void T0_INT() interrupt 1BEEP=!BEEP;TH0=HI_LISTsidx;TL0=LO_LISTsidx;/IIC 总线初始化/-

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1