单片机课程设计实验报告 单片机实验课实验报告

时间:2023-08-15 16:21:18 文档下载 投诉 投稿

      课程设计报告

      学号: 1328403028

                      姓名: 张帅华

                      班级: 13电子信息工程

                  指导老师: 邓晶

      苏州大学      电子信息学院

      2016年4月

      摘要

      随着时代的进步和发展,单片机技术已经成为一种比较成熟的技术,普及到我们生活、工作、科研等各个领域。本次课程设计包含四个基于STC89C52

      单片机的设计,分别是:基于单总线数字式温度传感器DS18b20的数字温度计的设计;基于2K位串行CMOS EEPROM AT24C02的数字密码锁的设计;基于SPI接口实时时钟芯片DS1302的电子日历的设计以及基于无线收发芯片nrf24L01的简单无线通讯系统的设计。

      关键词单片机  DS18B20  AT24C02  DS1302  NRF24L01       

      摘要..............................................................1

      目录..............................................................2

      1.2 系统组成...................................................3

      1.3 系统设计...................................................3

      1.3.1 硬件设计..............................................3

      1.3.2 软件设计..............................................4

      1.4 设计结果...................................................6

      2.3.2 软件设计..............................................9

      2.4 设计结果...................................................9

      ...................15

      4.1 系统功能...................................................15

      4.2 系统组成...................................................15

      4.3 系统设计...................................................15

      4.3.1 硬件设计..............................................15

      4.3.2 软件设计..............................................16

      4.4 设计结果...................................................16

      总结..............................................................17

      (1)采用DS18b20与单片机STC89C52相结合设计数字温度计,实现液晶屏实时显示当前温度;

      (2)读取并显示DS18B20的序列码。

      1.2 系统组成

      本方案设计的系统由单片机系统、数字式温度传感器DS18B20和LCD1602显示模块组成。

      DS18B20:DS18B20是单线式数字温度传感器,与微处理器连接时仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯;有温度测量范围宽,测量精度高的特点;同时它的供电方式灵活,可以通过内部寄生电路从数据线上获取电源;测量参数可配置 ,其测量分辨率可通过程序设定为 9~12 位。LCD1602:1602液晶也叫1602字符型液晶,是一种专门用来显示字母、数字、符号的点阵型液晶模块,它由若干个5x7或者5x11的点阵字符位组成,每个点阵字符位都可以用显示一个字符。

      1.3 系统设计

      1.3.1硬件设计

      图1-1  数字温度计硬件原理图

      在本次系统设计中,STC89C52单片机作为控制器,完成所有功能的控制,包括:

      (1)DS18B20数字温度传感器的初始化和读取温度值;

      (2)LCD1602显示驱动与控制。

      以数字式温度传感器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-3  DS18B20初始化时序图初始化流程:

      将总线拉低480us~960us

      拉高总线,若DS18B20做出反应会将在15us~60us后将总线拉低

      等待DS18B20拉低总线图1-4  DS18B20初始化流程图

      DS18B20读字节和写字节子程序:

      图1-5  写字节子程序流程图            图1-6  读字节子程序流程图

      写字节:写周期最少为60微秒,最长不超过120微秒。写周期一开始主机先把总线拉低1微秒表示写周期开始。随后若主机想写0,则将总线置为低电平,若主机想写1,则将总线置为高电平,持续时间最少60微秒直至写周期结束,然后释放总线为高电平至少1微秒给总线恢复 。而DS18B20则在检测到总线被拉底后等待15微秒然后从15us45us开始对总线采样,在采样期内总线为高电平则为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  设计结果

      能够在液晶屏的图1-8  设计测试结果图

      (6)在未进入密码锁时,S11,S12,S13,S14无效

      2.2 系统组成

      本设计由STC89C52单片机芯片和具有2K位串行CMOS EEPROM AT24C02以及LED数码管显示模块组成。

      AT24C02:

      (1) 模块原理图图2-1  AT24C02模块原理图

      (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)

      读取数据

      (4)AT24C02的数据发送时序

      总线起始信号                                               

                              图2-3  总线起始信号时序图                                         

      总线应答信号

      总线结束信号图2-4  总线结束信号时序图

      2.3 系统设计

      2.3.1 硬件设计

      图2-5  硬件原理图

      单片机是电子密码锁系统的主控制器。

      AT24C02是密码储存电路,它的SCLSDA端分别接单片机的P2.1、P2.0端口,用于与单片机之间读写操作的数据传输;WP接低电平表示单片机可以对器件进行正常的读/写操作;A0、A1、A2是器件地址输入端,都接低电平表示只有一个AT24C02被器件寻址。用户设置的密码存放在AT24C02中,当需要更改或读取用户密码时,只需对AT24C02里的数据更改或读取。

      矩阵键盘电路主要作用是对密码进行输入、修改、确定等操作,它由行线和列线组成,按键位于行、列的交叉点上,行列分别连接到按键开关的两端。无按键按动作时列线处于高电平状态;有按键按下时,交点的行线和列线相通,列线电平状态将由与此列线相连的行线电平决定。

      显示电路由LED数码管和LED指示灯组成。

      2.3.2 软件设计主程序:

      图2-6  主程序流程图

      先对数码管的显示进行初始化;

      按键扫描判断是否输入密码,如果输入密码并且输入正确,则密码锁开启;

      按键扫描判断是否进行密码的更改或者密码锁的关闭;输入更改后的密码,若正确则密码锁开启;

      假如系统断电或密码锁关闭按键按下则密码锁关闭。

      AT24C02子程序:

                      图2-7  AT24C02子程序流程图

      2.4 设计结果

      功能键:

      S1---S10    数字键0-9

      S11---更改密码  S12---更改密码完毕后确认    S13---重试密码、重新设定S14---关闭密码锁

      初始密码:000000    密码位数:6位

      密码锁的初始密码为000000,密码输入正确后可启动密码锁对密码进行修改的操作,六为密码分别对应LED灯D1,D2,D3,D4,D5,D6,密码所有位数输入正确则六个LED等被点亮,并且D7,D8也被点亮;若某一位密码不正确,则所对应的LED灯不亮且D7,D8两个LED灯也不亮。                      图2-8  设计测试结果图

      (3)显示当前调节对象

      (4)日期时间加调整与保存。

      3.2  系统组成

      本设计由STC89C52单片机最小系统、实时时钟芯片DS1302以及显示液晶LCD1602组成。DS1302采用SPI三线接口与CPU进行通信,仅用到三根信号线:RST(复位),I/O(数据线),SCLK(同步串行时钟)。并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。

      3.3  系统设计

      3.3.1  硬件设计

      图3-1 电子日历硬件原理图

      本系统主要由ST89C52主控模块、时钟复位电路模块、DA1302电路模块、按键扫描模块和LCD1602液晶显示模块组成。DS1302与51单片机的连接只需要利用单片机的三个I/O引脚对DS1302的SCLK、I/O、和RST进行控制,51单片机的P2.0,P2.1和P2.4分别与DS1302 的SCLK,I/O和RST相连,DS1302的主电源VCC2与系统电源VCC相连。

      DS1302实时时钟:

      DS1302时钟芯片包括实时时钟(日历)和31字节的静态RAM,它通过一个简单的串行接口与微处理器通信,实时时钟提供秒,分,时,日,周,月,年等信息,对于小于30天的月和月末的日期自动进行调整,还包括闰年校正的功能,时钟的运行可以采用24h或带AM/PM的12h格式。

      (1)DS1302的控制字格式

      图3-2  DS1302的控制字格式DS1302的时钟控制字最高有效位(位7)必须是逻辑1,如果它为逻辑0,则不能把数据写到DS1302中;位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5 ~ 1(A4——A0)指示操作单元的地址,最低有效位(位0)为0表示进行写操作,为1表示进行读操作。控制字总是从最低位开始进行输入/输出。

      (2)DS1302的读/写时序

      图3-3  DS1302的读/写时序图在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始;同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。

      (3)DS1302的时钟寄存器

      图3-4  DS1302的时钟寄存器图

      DS1302共有12个寄存器,其中有七个寄存器与日历,时钟相关,存放的数据位为BCD码形式。

      时钟寄存器的主程序:

      图3-5  主程序流程图

      液晶初始化显示DS1302设定的初始化时间;

      按键扫描更改显示时间,使之与当前实际时间对应;

      将更改后的时间送到液晶显示,启动计时。时间调整程序:

      图3-6  时间调整子程序流程图

      调整时间用四个调整按键,分别定义为选择键,数值加键,数值减键,返回键。在调整时间过程中,首先要按下选择键,在显示屏上会显示对应的要调试的时间项光标闪烁,然后可对数值进行加或减的操作,时间调整结束后按返回键从当前调整的时刻开始计时。时间调整程序流程图如图3-6所示。

      3.4 实验结果

      将程序下载到系统,加电后液晶屏显示程序设置的初始化时间,通过按键选择、加、减可对年、月、日、周、时、分、秒几个时间进行更改,更改完成后按下返回键从更改的时间处开始计时。          图3-7  设计测试结果图

      收发模块实现无线数据传输。整个系统有发送和接收两部分,当主机设置为发送模式时,通过SPI时序给既定的发送缓冲区写入数据。当从机设置为接受模式时,通过SPI从相应的接收缓冲区读出数据,并在数码管上显示。

       4.3  系统设计

      4.3.1  硬件设计

      图4-1  无线通讯硬件原理图

      在该系统中,键盘输入是人机交换的接口,其主要功能是设置nRF24L01的工作模式和实现键盘输入字符、数字等。单片机是主控模块实现数据的储存、处理,将各模块联系起来协调各模块的工作。LCD1602主要功能就是显示作用,将键盘输入或接收到的信息显示出来。

      NRF24L01模块:

      nrf24L01模块实际上就是一个芯片,连了一些必要的电容电阻电感和一个天线,然后留出了和单片机通信的SPI口和IRQ中断引脚。NRF24L01,任何单片机可以驱动,带硬件SPI口的单片机,可以配置好SPI外设以后驱动,没有硬件SPI口的单片机,可以用IO口模拟SPI时序通信。

      NRF24L01是一个数字芯片,内部有若干寄存器,例如数据寄存器、配置寄存器、状态寄存器等。单片机通过SPI口,首先配置好NRF24L01的配置寄存器,诸如频道,通道,地址,接收还是发送模式等等。然后分两种情况

      (1)如果配置为了发送模式,就可以发送数据了,发送完数据以后,IRQ引脚会拉低,所以观察IRQ引脚就可以知道有没有发送成功;

      (2)如果配置为了接收模式,就需要不断的观察IRQ引脚,IRQ引脚正常是高电平,如果接收到数据,就会变成低电平,所以观察这个引脚就知道有没有接收到数据。

      在做NRF24L01的通信程序时,最好拿两个相同的单片机,做相同的程序(除了一个配置未发送,一个配置为接收)。首先要确保单片机和NRF24L01能够正常的SPI通信,这就需要验证。验证方法是:找一个可读可写的寄存器先写进去,然后再读出来,如果数据一样,那么SPI通信就正常如果读出来的数据和写进去的数据不一样,说明无法通信。两个nrf24l01通信,需要满足3个条件相同:
(1)频道相同(设置频道寄存器RF_CH
(2)地址相同(设置TX_ADDRRX_ADDR_P0相同)
(3)每次发送接收的字节数相同(如果设置了通道的有效数据宽度为n,那么每次发送的字节数也必须为n,当然,n<=32NRF24L01可以进行一对多相互通信,官方手册上说,nrf24l01可以一对六,指的是自身的通道有6个,而且这种模式只能是16发,不能16收。我们一般用nrf24l01的通道0,通过改变频道和地址来实现1对多的互发。它属于2.4G芯片,但实际上,可以在2.4G2.5G之间的频道上通信,一共有125个频道,它的地址是5字节的。所以用这种方式,可以实现一对无数的通信。但这只是理论数值,实际上由于环境中的各种干扰,通信太多就会混乱。实现一对多通信的一种最常用的办法就是跳频通信,其实就是换频道。原理是:假设现在110通信相互收发数据,给10个节点的NRF24L01设置为不同的频道,如10 20 30 ……主机的NRF24L01,要想获得某个节点的数据,就设置为某个节点的频道,然后收发数据,完成以后,可以再去和另外一个节点通信。由于单片机运行速度快,挨个获取10个节点的数据,所用的时间也很短。

      4.3.2 软件设计

      图4-2  主程序流程图

      4.4  实验结果

      能实现个两个系统之间的通信。按下其中一个板子的K1~ K4键,另一个板子的数码管分别显示1~ 4;最大通信距离约为室内27米。

      设计总结

      在本次的设计中,共有四次设计的实现。设计基本由MCU最小系统模块(包含电源电路、时钟电路和复位电路)、按键电路模块、显示电路模块和具体的功能模块电路组成。完成设计的前提是熟练掌握每一个模块的操作并将它们有机地结合起来。

      对于单片机最小系统,作为所设计系统的主控制器,需要了解其不同的端口功能及连接;对于按键电路,需要掌握按键扫描的原理,包括独立按键和矩阵按键;显示电路主要包括数码管显示和LCD液晶屏显示,应熟悉其初始化方法及显示原理,为所涉及的系统选择较为合理的显示器件模块;具体的功能模块是四次设计中分别用到的DS18B20模块、AT24C02模块、DS1302模块和NRF24L01模块,这是我们学习与研究的重点,要学会各模块芯片的初始化、写、读等时序并将其转换为可执行的程序。

【单片机课程设计实验报告 单片机实验课实验报告】相关文章:

AUTOCAD实训报告 cad实训报告总结范文08-15

CAD实验报告怎么写 cad实验报告怎么写出来08-15

cadcam实验报告 cadcam实训报告08-15

计算机辅助设计CAD-实验报告 道路工程计算机辅助设计实验报告08-15

工程制图CAD实验报告 制图cad实训报告08-15

工作报告之大学单片机实验报告 石家庄铁道大学单片机实验报告08-15

单片机课程设计实验报告 单片机实验课实验报告08-15

单片机实验报告 单片机实验报告怎么写08-15

单片机实验报告 单片机实验报告keil软件的使用08-15

安徽大学历次单片机实验报告 安徽工业大学单片机实验报告08-15

2023电子商务运营实习报告范文08-15

电子商务的实习报告三篇08-15

电商运营助理实习报告08-15