课程设计报告苏州大学大三下.docx
- 文档编号:10086275
- 上传时间:2023-02-08
- 格式:DOCX
- 页数:26
- 大小:2.30MB
课程设计报告苏州大学大三下.docx
《课程设计报告苏州大学大三下.docx》由会员分享,可在线阅读,更多相关《课程设计报告苏州大学大三下.docx(26页珍藏版)》请在冰豆网上搜索。
课程设计报告苏州大学大三下
课程设计报告
学号:
姓名:
班级:
指导老师:
苏州大学电子信息学院
2016年5月
摘要
随着时代的发展,单片机在生活中的应用越来越广泛,本次课程设计围绕四个实验展开,分别是基于DS18B20的数字温度计设计,基于AT24C02的电子密码锁设计,基于DS1302的电子日历的设计以及
基于NRF24L01的无线通信系统的设计。
四个实验均以STC89C52单片机为核心,以KeiluVision4为编程平台,通过C语言实现功能设计。
关键词:
STC89C52DS18B20AT24C02DS1302NRF24L01
摘要..............................................................1
目录..............................................................2
第1章基于DS18B20的数字温度计设计...............................3
1.1设计要求...................................................3
1.2系统组成...................................................3
1.3系统设计...................................................4
1.3.1硬件设计..............................................4
1.3.2软件设计..............................................4
1.4设计结果...................................................7
第2章基于AT24C02的电子密码锁设计...............................8
2.1设计要求...................................................9
2.2系统组成...................................................9
2.3系统设计...................................................10
2.3.1硬件设计..............................................11
2.3.2软件设计..............................................11
2.4设计结果...................................................12
第3章基于DS1302的电子日历的设计................................13
3.1设计要求...................................................14
3.2系统组成...................................................14
3.3系统设计...................................................15
3.3.1硬件设计..............................................15
3.3.2软件设计..............................................16
3.4设计结果...................................................16
第4章基于NRF24L01的无线通信系统的设计..........................17
4.1设计要求...................................................17
4.2系统组成...................................................17
4.3系统设计...................................................18
4.3.1硬件设计..............................................18
4.3.2软件设计..............................................19
4.4设计结果...................................................19
总结..............................................................20
第1章基于DS18b20的数字温度计设计
1.1设计要求
1)读取DS18b20的序列码。
2)利用DS18b20实现实时的温度的读取(不断刷新),并用LCD1602显示。
1.2系统组成
1)DS18b20系统
2)STC89C52单片机
3)LCD1602显示系统
4)独立键盘
1.3系统设计
1.3.1硬件设计
图1-1数字温度计硬件原理图
STC89C52单片机为主控器
1)完成DS18B20与LCD1602的初始化
2)实现对DS18B20温度读取,LCD1602的驱动。
DS18B20:
DS18B20数字温度计提供9-12位摄氏温度测量而且有一个由高低电平触发的可编程的不因电源消失而改变的报警功能。
DS18B20通过一个单线接口发送或接受信息,因此在MCU和DS18B20之间仅需一条连接线(加上地线)。
它的测温范围为-55~+125℃,并在-10~+85℃精度为±5℃。
除此之外DS18B20能直接从单线通讯线上汲取能量,除去了对外部电源的需求。
每个DS18B20都有一个独特的64位序列号,从而允许多只DS18B20同时连在一根单线总线上;因此,很简单就可以用一个微控制器去控制很多覆盖在一大片区域的DS18B20。
这一特性在探测建筑物、仪器或机器的温度以及过程监测和控制等方面非常有用。
LCD1602:
1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。
它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形。
1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
本实验通过LCD1602显示DS18B20的序列码以及实时温度。
仿真图
图1-2
1.3.2软件设计
主程序:
图1-3主程序流程图
1)初始化(DS18b20的初始化和液晶屏的初始化)。
DS18b20的初始化是为器件应答准备,作为从器件的DS18B20在一上电后就一直在检测总线上是否有480-960微秒的低电平出现,如果有,在总线转为高电平后等待15-60微秒后将总线电平拉低60-240微秒做出响应存在脉冲,告诉主机本器件已做好准备;液晶屏的初始化是为显示做准备。
2)调用显示子程序刷新显示当前检测到的温度值;
3)利用循环不断刷新温度数据进行实时显示。
图1-4DS18B20初始化时序图
初始化流程:
将总线拉低480us~960us
1)拉高总线,若DS18B20做出反应会将在15us~60us后将总线拉低
2)等待DS18B20拉低总线
图1-5DS18B20初始化流程图
DS18B20读字节和写字节:
图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读取温度子程序流程图
读取温度流程:
1)跳过ROM操作(0CCH)(本次实验只挂置一只DS18B20,所以无须确认序列码)
2)温度转换命令(044H)
3)跳过ROM操作(0CCH)
4)读取温度命令(033H)
5)读取温度值(0BEH)
6)温度格式转换
1.4设计结果
图1-8未按键时(初始化)
图1-9按下K1键时(不断刷新,实时温度的读取)
图1-10按下K2键时(序列码的读取)
第2章基于AT24C02的数字密码锁设计
2.1设计要求
1)掉电记忆
2)按键S14,输入密码,若正确则进入密码锁
3)按键S13,输入密码若正确则进入修改密码模式
4)按键S15,密码锁上锁(数字键失效)
2.2系统组成
1)STC89C52单片机芯片
2)2K位串行CMOS的EEPROMAT24C02
3)LCD1602显示模块
AT24C02:
(1)模块原理图
图2-1AT24C02模块原理图
(2)发送器件地址的格式
图2-2发送器件地址的格式图
高四位1010是24Cxx系列的固定器件地址,接下来是A2、A1、A0是根据器件连接来决定,原理图都接地所以是000。
R/W为是选择读或写模式,1为读,0为写。
(3)芯片工作时序
●初始化(scl=H,sda=H)
●写入过程
1)发送器件地址(0XA0):
SendByte(0xa0);
2)发送要写入24C02的内存地址:
SendByte(addr);
3)发送要写入的数据:
SendByte(dat);
●读出过程
1)发送写入的器件地址(0XA0)
2)发送要读的24C02的内存地址
3)发送读出的器件地址(0XA1)
4)读取数据
(4)AT24C02的数据发送时序
1)总线起始信号
SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号
图2-3总线起始信号时序图
2)总线应答信号
每一个字节必须保证是8位长度。
数据传送时,先传送最高位,每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。
如果主机一段时间内没有收到从机的应答信号,则自动认为从机已正确接收到数据。
图2-4总线应答时序图
3)总线结束信号
SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。
图2-4总线结束信号时序图
2.3系统设计
2.3.1硬件设计
图2-5硬件原理图
单片机是电子密码锁系统的主控制器。
AT24C02:
AT24C02是密码储存电路,它的SCL、SDA端分别接单片机的P2.1、P2.0端口,用于与单片机之间读写操作的数据传输;WP接低电平表示单片机可以对器件进行正常的读/写操作;A0、A1、A2是器件地址输入端,都接低电平表示只有一个AT24C02被器件寻址。
用户设置的密码存放在AT24C02中,当需要更改或读取用户密码时,只需对AT24C02里的数据更改或读取。
矩阵键盘电路:
主要作用是对密码进行输入、修改、确定等操作,它由行线和列线组成,又称为行列式键盘,按键位于行、列的交叉点上,行列分别连接到按键开关的两端。
无按键按动作时列线处于高电平状态;有按键按下时,交点的行线和列线相通,列线电平状态将由与此列线相连的行线电平决定。
显示电路为LCD1602显示模块。
仿真图
图2-6
2.3.2软件设计
主程序:
图2-7主程序流程图
1)LCD显示进行初始化;
2)按键S14扫描判断是否输入密码,如果输入密码并且输入正确,则密码锁开启;
3)按键S13扫描判断是否进行密码的更改或者关闭密码锁;
4)输入更改后的密码,若正确则密码锁开启;
5)按键S15按下则关闭密码锁。
2.4设计结果
功能键:
S1---S10数字键0-9
S13更改密码
S14进入密码锁
S15关闭密码锁(使数字键失效)
初始密码:
000000
密码位数:
6位(由宏定义设定)
密码锁的初始密码为000000,密码输入正确后可启动密码锁对密码进行修改。
密码锁掉电后记忆上一次设定的密码(掉电保护)。
图2-8按下S14输入密码
图2-9输入密码正确
图2-10输入密码错误
图2-11进入密码锁后修改新密码
图2-12关闭密码锁(数字键失效)
第3章基于DS1302的电子日历设计
3.1设计要求
(1)LCD1602上显示时间信息,即年、月、日、星期、时、分、秒
(2)具有时间的调校与保存功能
(3)显示当前调节对象
3.2系统组成
1)STC89C52单片机最小系统
2)实时时钟芯片DS1302
DS1302采用SPI三线接口与CPU进行通信,仅用到三根信号线:
RST(复位),I/O(数据线),SCLK(同步串行时钟)。
并可采用突发方式一次传送多个字节的时钟信号和RAM数据。
实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。
3)显示液晶LCD1602
4)按键扫描模块
3.3系统设计
3.3.1硬件设计
图3-1电子日历硬件原理图
硬件连接:
单片机的三个I/O引脚对应DS1302的SCLK、I/O、和RST进行控制,本次试验中单片机的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-2DS1302的控制字格式
DS1302的时钟控制字最高有效位(位7)必须是逻辑1,如果它为逻辑0,则不能把数据写到DS1302中;位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5~1(A4——A0)指示操作单元的地址,最低有效位(位0)为0表示进行写操作,为1表示进行读操作。
控制字总是从最低位开始进行输入/输出。
(2)DS1302的读/写时序
图3-3DS1302的读/写时序图
在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始;同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。
(3)DS1302的时钟寄存器
图3-4DS1302的时钟寄存器图
DS1302共有12个寄存器,其中有七个寄存器与日历,时钟相关,存放的数据位为BCD码形式。
时钟寄存器的第8个字节是写保护寄存器。
当WP为“1”的时候是开启写保护,这个时候是禁止对DS1302进行写操作的。
当WP为“0”的时候是关闭写保护,这个时候才能对DS1302进行写操作。
按键扫描电路:
按键扫描电路模块主要用于对日历时间的修改,由四个按键组成,分别是:
选择键,数值加键,数值减键和返回键。
其中,选择键用于选定要修改的时间项目,数值加键和减键用于对修改项的数值进行加减操作,返回键用于修改完成后的重启计时。
仿真图
图3-5
3.3.2软件设计
主程序:
图3-6主程序流程图
1)液晶初始化显示DS1302设定的初始化时间
2)按键扫描更改显示时间,使之与当前实际时间对应;
3)将更改后的时间送到液晶显示,启动计时
功能键:
S4键为选择键,通过按的次数来选择需要调整的项。
(顺序为:
秒,分,时,周,日,月,年)
S8为数字增大键。
S12为数字减小键。
在初始化设置时间时,首先要按下选择键,显示屏上对应的模块项光标闪烁,然后可对数值进行加或减的操作,时间调整结束后按返回键从当前调整的时刻开始计时。
3.4实验结果
烧录程序,上电后LCD显示程序已设置的初始化时间,通过S4按键选择、S8加、S12减可对年、月、日、周、时、分、秒几个时间项进行更改。
图3-7设计测试结果图(正常计时模式)
图3-8选择调校(选择项光标闪烁)
第4章基于nrf24L01的无线通讯系统的设计
4.1设计要求
1)利用NRF24L01实现两个单片机之间的通讯。
(最大通讯距离25米)
2)主机按下K1--K4,主机指示灯LED5闪烁(表示处于发送状态),从机的LED1--LED4对应点亮。
3)主机、从机可以根据需要随时调换角色。
4.2系统组成
1)单片机最小系统(控制)
2)无线收发芯片nrf24L01模块(数据传输)
发送模式(主机):
通过SPI时序给既定的发送缓冲区写入数据。
接受模式(从机):
通过SPI从相应的接收缓冲区读出数据,并点亮对应LED灯。
4.3系统设计
4.3.1硬件设计
图4-1无线通讯硬件原理图
本实验中独立键盘输入是人机交换的接口,其主要功能是设置nRF24L01的工作模式(扫描到有键输入即发送)和实现键盘输入信息。
AT89C52单片机是主控模块,实现数据的储存、处理,将各模块联系起来并协调各模块的工作。
NRF24L01模块:
nRF24.L01是一款新型单片射频收发器件,工作于2.4GHz~2.5GHzISM频段。
发射数据时,首先将nRF24L01配置为发射模式:
接着把接收节点地址TX_ADDR和有效数据TX_PLD按照时序由SPI口写入nRF24L01缓存区,TX_PLD必须在CSN为低时连续写入,而TX_ADDR在发射时写入一次即可,然后CE置为高电平并保持至少10μs,延迟130μs后发射数据;若自动应答开启,那么nRF24L01在发射数据后立即进入接收模式,接收应答信号(自动应答接收地址应该与接收节点地址TX_ADDR一致)。
如果收到应答,则认为此次通信成功,TX_DS置高,同时TX_PLD从TXFIFO中清除;若未收到应答,则自动重新发射该数据(自动重发已开启),若重发次数(ARC)达到上限,MAX_RT置高,TXFIFO中数据保留以便再次重发;MAX_RT或TX_DS置高时,使IRQ变低,产生中断,通知MCU。
最后发射成功时,若CE为低则nRF24L01进入空闲模式1;若发送堆栈中有数据且CE为高,则进入下一次发射;若发送堆栈中无数据且CE为高,则进入空闲模式2。
接收数据时,首先将nRF24L01配置为接收模式,接着延迟130μs进入接收状态等待数据的到来。
当接收方检测到有效的地址和CRC时,就将数据包存储在RXFIFO中,同时中断标志位RX_DR置高,IRQ变低,产生中断,通知MCU去取数据。
若此时自动应答开启,接收方则同时进入发射状态回传应答信号。
最后接收成功时,若CE变低,则nRF24L01进入空闲模式1。
本实验在两个相同的单片机中烧录相同的程序,一个配置为发送(主机),一个配置为接收(从机)。
nrf24l01点对点通信,需要满足3个条件相同
1)主机从机频道相同(设置频道寄存器RF_CH)
2)主机从机地址相同(设置TX_ADDR和RX_ADDR_P0相同)
3)每次发送接收的字节数相同(n<=32)
4.3.2软件设计
图4-2主程序流程图
4.4实验结果
主机:
按下K1按下K2按下K3按下K4
从机:
LED1点亮LED1点亮LED1点亮LED1点亮
设计总结
本次课程设计共涉及到以下几个模块:
1)单片机最小系统(包含电源电路、时钟电路和复位电路)
2)独立按键
3)矩阵键盘
4)LCD1602显示模块
5)LED灯模块
6)DS18B20数字温度计
7)AT24C02模块
8)实时时钟芯片DS1302模块
9)nrf24L01模块
实验心得:
1)注意单片机的引脚与模块接口的对应(如:
AT24C02的SCL、SDA端分别接单片机的P2.1、P2.0端口)
2)灵活利用宏定义(密码锁程序中密码位数由宏定义设定)
3)实验设计建立在对各模块初始化和具体原理的理解基础上,实验中需要将各模块有机地结合起来。
参考文献
单片机原理与接口技术陈蕾- 机械工业出版社 – 2012
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 报告 苏州大学 大三