1、基于2K位串行CMOS 的EEPROM AT24C02的数字密码锁的设计;基于SPI接口实时时钟芯片DS1302的电子日历的设计以及基于无线收发芯片nrf24L01的简单无线通讯系统的设计。关键词:单片机 DS18B20 AT24C02 DS1302 NRF24L01 摘要.1目录.2第1章 基于DS18B20的数字温度计设计.31.1 设计要求.31.2 系统组成.31.3 系统设计.31.3.1 硬件设计.31.3.2软件设计.41.4 设计结果.6第2章 基于AT24C02的电子密码锁设计.72.1 设计要求.72.2 系统组成.72.3 系统设计.82.3.1 硬件设计.82.3.2
2、软件设计.92.4 设计结果.9第3章 基于DS1302的电子日历的设计.113.1 系统功能.113.2 系统组成.113.3 系统设计.113.3.1 硬件设计.113.3.2 软件设计.133.4 设计结果.14第4章 基于NRF24L01的无线通信系统的设计.154.1 系统功能.154.2 系统组成.154.3 系统设计.154.3.1 硬件设计.154.3.2 软件设计.164.4 设计结果.16总结.17第1章 基于DS18b20的数字温度计设计1.1 设计要求 (1)采用DS18b20与单片机STC89C52相结合设计数字温度计,实现液晶屏实时显示当前温度;(2)读取并显示DS
3、18B20的序列码。1.2 系统组成本方案设计的系统由单片机系统、数字式温度传感器DS18B20和LCD1602显示模块组成。DS18B20:DS18B20是单线式数字温度传感器,与微处理器连接时仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯;有温度测量范围宽,测量精度高的特点;同时它的供电方式灵活,可以通过内部寄生电路从数据线上获取电源;测量参数可配置 ,其测量分辨率可通过程序设定为 912 位。LCD1602:1602液晶也叫1602字符型液晶,是一种专门用来显示字母、数字、符号的点阵型液晶模块,它由若干个5x7或者5x11的点阵字符位组成,每个点阵字符位都可以用显示一个字符
4、。1.3 系统设计1.3.1硬件设计图1-1 数字温度计硬件原理图在本次系统设计中,STC89C52单片机作为控制器,完成所有功能的控制,包括:(1)DS18B20数字温度传感器的初始化和读取温度值;(2)LCD1602显示驱动与控制。以数字式温度传感器DS18B20作为传感元件。DS18B20是单总线数字式温度传感器,采用单总线协议,即与单片机接口仅需占用一个I/O端口,无需任何外围器件,直接将温度转化为数字信号,以数字码形式串行输出。可由一根I/O数据线既供电又传输数据。DS18B20直接读取被测温度值,送到LCD1602上进行显示,LCD1602可以显示两行字符,每行16个字符,只能显示
5、ASCII码字符。本实验中需要显示的数据是温度和DS18B20的唯一序列码。总体架构如图1-1所示。将18B20的单总线DQ与单片机接口P2.2相连,通过时序控制首先对其进行初始化,然后发送读写和温度转换命令,使DS18B20内部温度传感器开始工作,最后从温度寄存器中读取两字节二进制码,转换为温度值后显示在LCD上。同理,对于序列码的读取,也要在18B20初始化成功的基础上,发送读ROM命令(该命令只适用于总线上存在单只DS18B20),将读取的字符显示在液晶屏上。1.3.2 软件设计主程序:图1-2 主程序流程图先进行初始化,该初始化包括DS18b20的初始化和液晶屏的初始化。DS18b20
6、的初始化是为器件应答准备,作为从器件的DS18B20在一上电后就一直在检测总线上是否有480960微秒的低电平出现,如果有,在总线转为高电平后等待1560微秒后将总线电平拉低60240微秒做出响应存在脉冲,告诉主机本器件已做好准备;液晶屏的初始化是为显示温度准备;调用显示子程序显示当前检测到的温度值;不断刷新温度数据进行实时显示。DS18B20的初始化:图1-3 DS18B20初始化时序图初始化流程:将总线拉低480us960us拉高总线,若DS18B20做出反应会将在15us60us后将总线拉低 等待DS18B20拉低总线图1-4 DS18B20初始化流程图DS18B20读字节和写字节子程序
7、:图1-5 写字节子程序流程图 图1-6 读字节子程序流程图写字节:写周期最少为60微秒,最长不超过120微秒。写周期一开始主机先把总线拉低1微秒表示写周期开始。随后若主机想写0,则将总线置为低电平,若主机想写1,则将总线置为高电平,持续时间最少60微秒直至写周期结束,然后释放总线为高电平至少1微秒给总线恢复 。而DS18B20则在检测到总线被拉底后等待15微秒然后从15us到45us开始对总线采样,在采样期内总线为高电平则为1,若采样期内总线为低电平则为0。读字节:读周期是从主机把单总线拉低1微秒之后开始,先释放单总线为高电平,以让DS18B20把数据传输到单总线上。作为从机DS18B20在
8、检测到总线被拉低1微秒后,便开始送出数据,若是要送出0就把总线拉为低电平直到读周期结束。若要送出1则释放总线为高电平。主机在一开始拉低总线1微秒后释放总线,然后在包括前面的拉低总线电平1微秒在内的15微秒时间内完成对总线进行采样检测,采样期内总线为低电平则确认为0。采样期内总线为高电平则确认为1。完成一个读时序过程,至少需要60微秒才能完成。读取温度子程序:图1-7 读取温度子程序流程图读取温度流程:跳过ROM操作 (0CCH)发送温度转换命令 (044H) 跳过ROM操作 (0CCH) 发送读取温度命令 (033H) 读取温度值 (0BEH)1.4 设计结果能够在液晶屏的第一行显示DS18b
9、20的序列码,在第二行显示温度并且不断刷新实时显示,分辨率设置为12位。图1-8 设计测试结果图第2章 基于AT24C02的数字密码锁设计2.1 设计要求(1)设置初始密码为“000000”(2)进入密码锁后,按键S11修改密码,并在液晶显示密码(3)S12为确定键,修改成功(4)S13为重新设置键(5)S14为退出密码锁(6)在未进入密码锁时,S11,S12,S13,S14无效2.2系统组成本设计由STC89C52单片机芯片和具有2K位串行CMOS 的EEPROM AT24C02以及LED数码管显示模块组成。AT24C02:(1)模块原理图图2-1 AT24C02模块原理图(2)发送器件地址
10、的格式图2-2 发送器件地址的格式图高四位1010是24Cxx系列的固定器件地址,接下来是A2、A1、A0是根据器件连接来决定,我们的原理图都接地所以是000。R/W为是选择读还是写,1的时候是读,0的时候是写。(3)芯片工作时序初始化(scl=H,sda=H)写入过程发送器件地址(0XA0):SendByte(0xa0);发送要写入24C02的内存地址:SendByte(addr);发送要写入的数据: SendByte(dat);读出过程发送写入的器件地址(0XA0)发送要读的24C02的内存地址发送读出的器件地址(0XA1)读取数据(4)AT24C02的数据发送时序总线起始信号 图2-3 总线起始信号时序图 总线应答信号总线结束信号
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1