单片机课程设计实验报告_1.docx
单片机课程设计实验报告课程设计报告学号:1328403028姓名:张帅华班级:13电子信息工程指导教师:邓晶苏州大学电子信息学院2016年4月随着时代的进步和发展,单片机技术已经成为一种比拟成熟的技术,普及到我们生活、工作、科研等各个领域。本次课程设计包含四个基于STC89C52单片机的设计,分别是:基于单总线数字式温度传感器DS18b20的数字温度计的设计;基于2K位串行CMOS的EEPROMAT24C02的数字密码锁的设计;基于SPI接口实时时钟芯片DS1302的电子日历的设计以及基于无线收发芯片nrf24L01的简单无线通讯系统的设计。关键词:单片机DS18B20AT24C02DS1302NRF24L01摘要(1)目录(2)第1章基于DS18B20的数字温度计设计(3)1.1设计要求(3)1.2系统组成(3)1.3系统设计(3)1.3.1硬件设计(3)1.3.2软件设计(4)1.4设计结果(6)第2章基于AT24C02的电子密码锁设计(7)2.1设计要求(7)2.2系统组成(7)2.3系统设计(8)2.3.1硬件设计(8)2.3.2软件设计(9)2.4设计结果(9)第3章基于DS1302的电子日历的设计(11)3.1系统功能(11)3.2系统组成(11)3.3系统设计(11)3.3.1硬件设计(11)3.3.2软件设计(13)3.4设计结果(14)第4章基于NRF24L01的无线通信系统的设计(15)4.1系统功能(15)4.2系统组成(15)4.3系统设计(15)4.3.1硬件设计(15)4.3.2软件设计(16)4.4设计结果(16)总结(17)第1章基于DS18b20的数字温度计设计1.1设计要求1采用DS18b20与单片机STC89C52相结合设计数字温度计,实现液晶屏实时显示当前温度;2读取并显示DS18B20的序列码。1.2系统组成本方案设计的系统由单片机系统、数字式温度传感器DS18B20和LCD1602显示模块组成。DS18B20:DS18B20是单线式数字温度传感器,与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯;有温度测量范围宽,测量精度高的特点;同时它的供电方式灵敏,能够通过内部寄生电路从数据线上获取电源;测量参数可配置,其测量分辨率可通经过序设定为912位。LCD1602:1602液晶也叫1602字符型液晶,是一种专门用来显示字母、数字、符号的点阵型液晶模块,它由若干个5x7或者5x11的点阵字符位组成,每个点阵字符位都能够用显示一个字符。1.3系统设计1.3.1硬件设计图1-1数字温度计硬件原理图在本次系统设计中,STC89C52单片机作为控制器,完成所有功能的控制,包括:1DS18B20数字温度传感器的初始化和读取温度值;2LCD1602显示驱动与控制。以数字式温度传感器DS18B20作为传感元件。DS18B20是单总线数字式温度传感器,采用单总线协议,即与单片机接口仅需占用一个I/O端口,无需任何外围器件,直接将温度转化为数字信号,以数字码形式串行输出。可由一根I/O数据线既供电又传输数据。DS18B20直接读取被测温度值,送到LCD1602上进行显示,LCD1602能够显示两行字符,每行16个字符,只能显示ASCII码字符。本实验中需要显示的数据是温度和DS18B20的唯一序列码。总体架构如图1-1所示。将18B20的单总线DQ与单片机接口P2.2相连,通过时序控制首先对其进行初始化,然后发送读写和温度转换命令,使DS18B20内部温度传感器开场工作,最后从温度寄存器中读取两字节二进制码,转换为温度值后显示在LCD上。同理,对于序列码的读取,也要在18B20初始化成功的基础上,发送读ROM命令该命令只适用于总线上存在单只DS18B20,将读取的字符显示在液晶屏上。1.3.2软件设计主程序:图1-2主程序流程图先进行初始化,该初始化包括DS18b20的初始化和液晶屏的初始化。DS18b20的初始化是为器件应答准备,作为从器件的DS18B20在一上电后就一直在检测总线上能否有480960微秒的低电平出现,假如有,在总线转为高电平后等待1560微秒后将总线电平拉低60240微秒做出响应存在脉冲,告诉主机本器件已做好准备;液晶屏的初始化是为显示温度准备;调用显示子程序显示当前检测到的温度值;不断刷新温度数据进行实时显示。DS18B20的初始化:图1-3DS18B20初始化时序图初始化流程:将总线拉低480us960us拉高总线,若DS18B20做出反响会将在15us60us后将总线拉低等待DS18B20拉低总线图1-4DS18B20初始化流程图DS18B20读字节和写字节子程序:图1-5写字节子程序流程图图1-6读字节子程序流程图写字节:写周期最少为60微秒,最长不超过120微秒。写周期一开场主机先把总线拉低1微秒表示写周期开场。随后若主机想写0,则将总线置为低电平,若主机想写1,则将总线置为高电平,持续时间最少60微秒直至写周期结束,然后释放总线为高电平至少1微秒给总线恢复。而DS18B20则在检测到总线被拉底后等待15微秒然后从15us到45us开场对总线采样,在采样期内总线为高电平则为1,若采样期内总线为低电平则为0。读字节:读周期是从主机把单总线拉低1微秒之后开场,先释放单总线为高电平,以让DS18B20把数据传输到单总线上。作为从机DS18B20在检测到总线被拉低1微秒后,便开场送出数据,若是要送出0就把总线拉为低电平直到读周期结束。若要送出1则释放总线为高电平。主机在一开场拉低总线1微秒后释放总线,然后在包括前面的拉低总线电平1微秒在内的15微秒时间内完成对总线进行采样检测,采样期内总线为低电平则确以为0。采样期内总线为高电平则确以为1。完成一个读时序经过,至少需要60微秒才能完成。读取温度子程序:图1-7读取温度子程序流程图读取温度流程:跳过ROM操作(0CCH发送温度转换命令(044H)跳过ROM操作(0CCH)发送读取温度命令(033H)读取温度值(0BEH)1.4设计结果能够在液晶屏的第一行显示DS18b20的序列码,在第二行显示温度并且不断刷新实时显示,分辨率设置为12位。图1-8设计测试结果图第2章基于AT24C02的数字密码锁设计2.1设计要求1设置初始密码为“0000002进入密码锁后,按键S11修改密码,并在液晶显示密码3S12为确定键,修改成功4S13为重新设置键5S14为退出密码锁6在未进入密码锁时,S11,S12,S13,S14无效2.2系统组成本设计由STC89C52单片机芯片和具有2K位串行CMOS的EEPROMAT24C02以及LED数码管显示模块组成。AT24C02:1模块原理图图2-1AT24C02模块原理图2发送器件地址的格式图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)读取数据4AT24C02的数据发送时序总线起始信号图2-3总线起始信号时序图总线应答信号总线结束信号图2-4总线结束信号时序图2.3系统设计2.3.1硬件设计图2-5硬件原理图单片机是电子密码锁系统的主控制器。AT24C02是密码储存电路,它的SCL、SDA端分别接单片机的P2.1、P2.0端口,用于与单片机之间读写操作的数据传输;WP接低电平表示单片机能够对器件进行正常的读/写操作;A0、A1、A2是器件地址输入端,都接低电平表示只要一个AT24C02被器件寻址。用户设置的密码存放在AT24C02中,当需要更改或读取用户密码时,只需对AT24C02里的数据更改或读取。矩阵键盘电路主要作用是对密码进行输入、修改、确定等操作,它由行线和列线组成,按键位于行、列的穿插点上,行列分别连接到按键开关的两端。无按键按动作时列线处于高电平状态;有按键按下时,交点的行线和列线相通,列线电平状态将由与此列线相连的行线电平决定。显示电路由LED数码管和LED指示灯组成。2.3.2软件设计主程序:图2-6主程序流程图先对数码管的显示进行初始化;按键扫描判定能否输入密码,假如输入密码并且输入正确,则密码锁开启;按键扫描判定能否进行密码的更改或者密码锁的关闭;输入更改后的密码,若正确则密码锁开启;假设系统断电或密码锁关闭按键按下则密码锁关闭。AT24C02子程序:图2-7AT24C02子程序流程图2.4设计结果功能键:S1-S10数字键0-9S11-更改密码S12-更改密码完毕后确认S13-重试密码、重新设定S14-关闭密码锁初始密码:000000密码位数:6位密码锁的初始密码为000000,密码输入正确后可启动密码锁对密码进行修改的操作,六为密码分别对应LED灯D1,D2,D3,D4,D5,D6,密码所有位数