摘 要
本课题设计了一个基于单片机技术的新型书包装置。它用于解决书包过重而带给中小学生的负担,解放双肩。
本新型书包包括装置本体;感应模块,包括RFID射频感应器和身份识别IC卡【3】;驱动模块;主控模块;供电模
块。驱动模块包括驱动模块和速度选择按钮【29】;其中驱动模块适于驱动位于装置本体底部的车轮转动;当主控
模块接收到射频感应器感应识别成功的信号后,控制供电模块为驱动模块和速度选择按钮供电;以及用户根据自己
的行走速度选择相应的速度挡位,使装置本体按对应速度移动,当因操作不当导致速度过快时,还会引起超速警
示;供电模块包括太阳能光伏组件和蓄电池;蓄电池用于为新型书包供电,并适于储存太阳能光伏组件提供的电
能;警示模块包括蜂鸣器和红外对管;蜂鸣器用于发出警报音;红外对管,用于检测装置本体距离地面的距离,并
在距离地面的距离发生变化时,反馈距离变化信号至主控模块;以及若主控模块当前未接收到射频感应器感应识别
成功的信号时在,则控制蜂鸣器发出警报音;新型书包还包括显示模块;显示模块包括运行显示灯和非运行显示灯
还显示蓄电池的剩余电量,以及显示当前的速度挡位。
通过上述功能器件,实现了新型书包的减负功能,另外本设计还通过RFID读写器和电子标签实现新型书包的防
遗忘功能【5】;通过在书包侧边设计一个RFID读写器,其用来解锁装置和识别贴在书本上的电子标签,当早上要上
学时至于要按动新型书包上的按钮,就能实现一键扫描,如果有遗忘,将会通过蜂鸣器鸣叫提醒用户。
关键词:身份识别;动力驱动;新型警示;解放双肩
第1章 绪论
1.1 研究背景及现状分析
随着科学技术的发展,人们已经倾向于用机器代替人力完成多种工作。相比于人力,机器不但省时省力,还简
单快捷,以至于生活节奏越来越快,人们不得不节省时间来完成更多的事情,已满足人们生活的需要。对于中小学
生来说,社会竞争越来越加剧的情况下,家长老师对学生的要求一再提高,各种课外辅导书籍一再增多,书包重量
不断增加,中小学生负担与日俱增,严重阻碍了中小学生的健康发展;以及课本的增多,学生根本无法再每天早上
短短的时间内记忆起所有应该携带的书籍。
目前为了应对这类问题,国家严厉禁止各种辅导机构的教学。但在这个大趋势下,这种现象依旧无法彻底根
除。现在在市场上流动的书包,大都偏向于提高书包的容量性、舒适性、便携性,美观性,根本没解决书包过重所
带来的严重问题。书包的容量不断增加,中小学生的脊梁不断弯曲,每天上下学都成了巨大负担,沉重的书包剥夺
了他们上下学的短暂喘息。所以基于以上情况,迫切需要一款既能减轻学生压力又能同时兼顾学习的新型书包。
传统的书包主要是用来收纳书籍,只起到了一个收纳作用,没有解决书包过重带来的问题。而目前市面上也出
现了一些新型书包,但他们的设计是通过自动跟随来实现书包的移动,但在很多情况下,自动跟随的风险太大,很
容易造成交通事故,特别是在城市人流量多的地方。而本新型书包是通过手握速度挡位来自行控制移动,大大增加
了安全性和可靠性。
1.2 本课题的主要工作
本装置设计主要是为了解决市场上传统书包不能减轻学生负担、不能够新型提醒遗忘带书籍方面而做出的改
进,在完全依靠电力驱动的情况下,解放双肩,消除书包对学生的负担,同时新型提醒系统能够保证学生能够不忘
记携带应该要带的书籍,为中小学生学生健康发展保驾护航。
该装置现在以STC51单片机作为装置的核心芯片,采用驱动模块实现装置本体的移动,同时采用速度按键控制装
置的启停和速度,蜂鸣器模块作为警示装置,显示模块用来实时显示电量和忘记携带的书本以及速度挡位,采用电
源模块以及太阳能模块为装置供电。当用IC卡与RFID读写器实现装置的解锁后,按动装置本体上的按钮,红外扫描
模块快速扫描贴在书本上的电子标签,并将结构送入主控模块中,主控模块再将其与上一次的输入数据进行比较,
若两次结果不一样,将控制蜂鸣器发出警示,并将缺失或者多余的通过显示模块显示出来。
第2章 装置整体设计
2.1 方案设计
整个装置采用STC89C52RC芯片来控制各个部分,驱动装置采用28BYJ48步进驱动模块装置,警示模块采用
TCRT5000红外传感器和SHD4216蜂鸣器,身份识别装置采用RC522识别模块,显示装置采用LCD1602显示器,供电模块
采用锂电池供电,一共五种装置。
2.2 芯片选型论证
单片机芯片是整个装置的核心,能够保证装置按照自己的设计来运行。只有选择合适的芯片,程序的执行才会
稳定。下表2.1表示控制芯片的选择。
表2.1 控制芯片的选型论证
控制芯片优点 缺点 应用范围
Arduino
Mage2560
1.Mage2560是Arduino系列AVR的8位单片机
2.包含16MHZ的晶振,处理速度快,且单片
机的外拓引脚数量多,功能强大
1.功耗大
2.芯片发热明显
适合没有编程基础的小
白做一些简单的电子开
发
MSP430单
片机
1.电压低,功耗低,3.3V供电
2.16位处理器,指令运行速度快,内置硬
件乘法器,乘除法运算都为单周期指令,
3.片内集成资源丰富,具有两组普通I\O且
具有中断功能,且I/O口的阻抗和灵敏度较
高。
1.初学者入门较难,同时官方提供的
资源有限,不适合在短时间内进行开
发。
2.所占用的指令空间较大。
3.片内无EEPROM
在低功耗及超低功耗的
工业场合应用的比较
多。
通过以上分析,该装置采用STC51系列的单片机,更适合作为该装置的核心芯片。
STC51系列的单芯片机器有各种各样的模型和样式,可以根据需要选择。表2.2是STC51单片机分类。
CPU数 系列 描述
AT89C51 入门级
AT89C52 低电压、高性能
AT89C53 低电压、高性能
AT89C55 低功耗、高性能
AT89LV52 低电压
AT89S51 高性能
表2.2 STC51单片机分类
在了解STC51单片机的类型和各自优缺点后,我们可以根据系统设备的需要,选择适合设备类型的STC51单片机
。确定大致方向后,下一步就是根据自己的实际要求选择具体芯片。首先确定STC51单片机的引脚数,在单片机中,
如果有大量的引脚,其芯片功能就会更多,但由于价格的考虑,引脚只要够用就行。确定管脚数量后,应选择芯片
的FLASH大小。就像引脚的数量一样,FLASH的尺寸也足够用就行。FLASH大小的选择必须参考设备所需的程序大小。
STC STC—前缀,表示芯片为STC公司生成的产品
8 表示该芯片为8051内核的芯片
9 表示内部含FLASH存储器,还有如80C51中的0表示内部含Mask ROM(掩模ROM)存储器
C 表示该器件为CMOS产品
5 固定不变
2 表示该芯片内部程序存储空间的大小
RC 表示单片机内部RAM的代销
表2.3 STC89C52RC命名解释
引脚分类 引脚说明
电源 VCC、GED
外接晶振 XTAL1、XTAL2
控制引脚 RST/VPP、ALE/PROG、PSEN、EA/VPP
输入/输出IO P0、P1、P2、P3
复位IO NRST,用于外部复位
上面5部分IO组的系统我们也叫最小系统
GPIO
专用器件接到专用的总线,比如I2C,SPI,SDIO,FSMC,DCMI这些总线的器件需要接到专用的IO
普通的元器件接到GPIO,比如蜂鸣器,LED,按键等元器件用普通的GPIO
如果还有剩下的IO,可根据项目需要引出或者不引出
表2.4 STC89C52RC的引脚功能说明
此装置包括多个传感器模块,如警示模块、LCD1602显示模块、身份识别模块等,对芯片的引脚数量和驱动IO端
口的功率有很高的要求。因此,在选择单片机型号时,不要过分追求性能过剩,也不应导致资源浪费。根据实际需
求选择合适的芯片。
综上所述,本装置中使用 STC89C52RC型号的单片机。
2.4驱动模块选型论证
2.4.1 驱动模块选型论证
在本设计中,整体装置采用电机驱动,故采用的电机要能够带动整个装置的前行,根据常用的电机驱动类型,
在综合上述驱动型号对比后,本装置采用步进驱动作为驱动装置,步进驱动作为一种高度精准的驱动,不仅控
制相对简单,且能够通过输入的脉冲数来控制转动的度数,符合整体装置中对驱动模块的控制。
2.4.2 驱动模块选型论证
根据上述所选择的驱动类型,我们需要选择对应的电机驱动模块,因此列下三种类型进行对比。
芯片型
号
简介 优点 缺点
L298N
是一款接受高电压的驱动模块器,直流驱动和步进
驱动都可以直接驱动,是一款常见的驱动模块。
一款L298N驱动模块可以同时驱
动两个直流减速驱动,且操作它
们进行不同的指令动作
发热严重,即使模块
本身自带散热铜片,
但长时间工作后温度
依然很高。
TB6600
原装全新日本东芝驱动芯片。246是内置MOS管,
249外置MOS管,两者控制程序完全兼容,只是电路
差异比较大。要求高的地方可以考虑,价格比较
贵,同类驱动芯片算是最高的。
电路简单; 过热,过流短路保
护;程序控制简单;电流由拨码
开关选择;八种细分可调;噪声
低,运动平滑。
价格贵。
ULN2003
是高耐压、大电流达林顿陈列,由七个硅NPN达林
顿管组成
1.步距值不会受到其他干扰因素
带来的影响
2.误差不会随着时间的增长而增
加
3.启停、翻转都是在较少脉冲时
间内完成,ULN2003在一定的频
率范围内运作时,启动任何运动
方式都不会丢步。
只能驱动小功率步进
驱动
表2.7 驱动模块选型论证
综合上述电机驱动模块的论证,我决定采用28BYJ48系列步进电机,这种类型电机功率消耗低,控制精准,满足
本装置实验的需求,同时配套ULV2003步进电机驱动模块进行电机驱动。
2.5 显示器的选择论证
在整体装置中使用显示屏来实时显示实时电量和未携带的课本,方便使用者观察,当RF感应器收集到的数据反
馈给主控模块,主控模块再与上一次数据进行对比,若确实或新增都会通过显示器显示出来,并通过蜂鸣器发出警
示。所以显示模块在装置整体中起着十分重要的作用,是不能缺少的的重要组成部分。下面通过对比不同的显示模
块来选择适合的显示模块。
名称 简介 优点 缺点
CCFL(冷
阴极荧光
灯管)
LCD的背光光源采用CCFL方式。其
中LCD为液晶显示屏。 色彩表现良好。 功耗较高。
LED(发
光二极
管)
LCD的背光光源采用LED方式。其
中LCD为液晶显示屏。
体积小、功耗低,可以在保持自身薄度的情况
下保持高亮状态。
屏幕像素密度比较
低,色彩显示上不如
CCFL。
OLED(有
机发光二
极管)
有机半导体材料和发光材料在电
场驱动下,通过载流子注入和复
合导致发光的现象。
驱动电压低,较LCD更加轻薄、功耗更低、响应
更快、高亮度、发光效率高。
像素老化程度不一致
产生色差,容易出现
烧屏现象。
LCD1602-
LCD显示屏
每一液晶象素点都是由集成在其
后的薄膜晶体管来驱动的液晶显
示器上。
触摸效果更流畅,支持通过PWM控制背光,方便
自主调节背光,使用SPI控制,确保不会占用太
多的引脚资源,方便移植。
功耗相对比较大,成
本相对比较高。
表2.8 显示屏模块选型论证
在整体装置设计中,显示模块要一直显示蓄电池电量,防止装置没电导致要人工推动装置,起不到减轻压力的用。另外LCD1602价格低廉,易于编程,与单片机的兼容性好,OLED彩色显示屏的成本太高,CCFL显示屏的功耗比
LCD1602高,LED显示屏像素密度低,因此选择LCD1602屏幕。
2.6 感应模块的选择论证
在选择感应模块时,市面上大部分的感应装置都是采用MFRC522射频模块作为IC卡模块识别设备,其价格相对低
廉,运行稳定,采用13.56MHz的非接触读写芯片,支持CRYPT01加密算法,读取距离可达50mm。这是IC识别模块的首
选。
在进行对比发现,锂电池符合本装置中对于供电模块的基本要求,体积小、重量轻、安全性高,故使用锂电池
作为供电模块的蓄电池,并采用太阳能板为锂电池充电。
2.8 装置技术方案论证
该装置以STC89C520RC为核心芯片。STC89C52RC是STC公司生产的低功耗、高性能CMOS 8位微控制器。STC89C52
采用了经典的MCS-51核,但在芯片上做了很多改进,传统的51单片机功能已经不能满足设备的要求。
用于警示装置的红外传感器是TCRT5000模块。本实装置不受可见光干扰,易于组装,使用方便,适用于各种环
境。报警器使用SHD4216作为音源。SHD4216蜂鸣器体积小、价格低、安全可靠,TCRT5000红外传感器满足警示要
求。
驱动模块采用2BYJ48步进驱动,输入连续脉冲后保持旋转稳定,在稳定工作的基础上可以自由控制旋转角度。
L298N步进电机模块作为匹配驱动模块,通过PWM控制波形,2BYJ48步进电机控制启动、停止、换向等功能,可满足
装置对驱动模块设备的要求。
该装置采用MFRC522射频模块,功耗低,工作电压3.3V,数据传输稳定,读卡距离长。在大多数情况下,它适用
于身份识别的基本要求。模块读取IC卡号和用户的图书信息,通过显示模块允许用户查找图书和打开设备。满足设
备的身份ID要求。
LCD1602用于显示装置,减少了插针数量,节省了芯片资源。能实时显示RFID能量传输信息。满足本机显示装置
的要求。
该电源模块采用锂电池作为电池,具有体积小、重量轻、安全可靠等优点。因此,锂电池将用作储存能量,锂
电池将用太阳能电池板和充电器进行充电,满足设备的电源模块要求。
2.9 装置总体设计方案
对装置进行仔细分析之后,根据警示模块中的TCRT5000红外传感器和SHD4216蜂鸣器、28BYJ48步进驱动模块、
RC522身份识别解锁模块、LCD1602显示模块、供电模块共五种模块的要求,该装置的主控核心采用型号为
STC89C52RC的单片机。
具体装置框图如图2.10所示:
图2.10基于单片机技术的新型书包总体框架图
2.10 本章小结
本章讨论了一种以STC89C52RC单片机为核心的新型背包装置的设计。最后,验证了上述设备在满足使用要求的
同时,不会造成资源浪费,满足了单片机硬件选型的技术要求。
第3章 硬件电路设计
3.1 STC89C52RC单片机的电路设计
STC89C52RC是一款性价比高、处理能力强、资源丰富的单片机,STC89C52RC最小系统是对单片机硬件要求最低
的程序运行电路,在数据处理、通信接口、集成电路等方面发挥着重要作用,意义重大。以下详细说明了最小系统
的三个电路:
(1)电源电路
图3.1 STC89C52RC电源电路图
本装置采用的STC89C52RC单片机的电源采用5V的接口,直接用电脑的5V的USB接口直接供电。
(2)晶振电路
晶体振荡器是晶振的全称,其目的是为单片机系统提供参考时钟信号,STC89C52RC的所有内部工作都是取决于
晶振信号频率。STC89C52RC18和19引脚连接外部晶体振荡器,振荡器频率为12兆赫(每秒振荡12万次),加上两个
30pF的辅助电容。晶体振荡器可分为主动晶体振荡器和被动晶体振荡器两种。有源晶体振荡器是利用石英晶体的压
电效应而产生的一整套谐振振荡器。无源晶体振荡器需要内置的振荡电路共同工作,以产生振荡信号,两个
10pf~40pf的电容器必须放置在两侧(通常是30pf)。
(3)复位电路
图3.3 STC89C52RC的复位电路图
STC89C52RC单片机属于高电平复位,低压正常工作,此时单片机处于正常工作状态。此复位电路连接的单片机
第九引脚。下一个接下来的内容,重点讨论一下上电复位和手动复位。如下表3.2所示:
电容器C11的电路电压为5V,电容器C11的电路电压为0V。当与电容器一起的电阻R31开始逐渐充电时,就会
对电阻R31的总电压施加影响。RST端口电压5V。随着电容器容量的增加,充电电流会越来越小。此时RST端
口电压等于电阻乘以电流的R31,因此电压逐渐变小。对接端口电压等于现有电容器的GND电压,两端电压差
为0V,因此不会产生电流。
微动开关按下之前,RST电压为0V,开关按下之后电路导通,电容会在瞬间放电,RST电压值变化为4700 ×
VCC/(4700 + 18),此时处于高电平复位状态。开关松开之后经历的过程与上电复位类似,即首先电容充
电,然后电流逐渐减小直至RST端电压变为0V。按下微动开关的时间通常都会维持几百毫秒,完全满足复位
的时间要求。
图3.4 STC89C52RC 最小系统电路图
3.2 TCRT5000红外传感器电路设计
图3.5 TCRT5000红外传感器模块电路图及实物图
TCRT5000光电传感器模块输出信号由施密特电路组成整形,稳定可靠。TCRT5000光电传感器模块是一款红外反射式
光电开关。其由高发射功率和高灵敏度的光电晶体管组成。
TCRT5000模块共有三个引脚,与单片机相连,连接引脚如下表3.3所示:
表3.2 TCRT5000模块与单片机接线方式
引脚名称 VCC GND OUT
与单片机连接引脚 VCC GND P3^5
3.3 RFID-RC522传感器电路设计
图3.6 RFID-RC522传感器模块的电路图
3.9 本章小结
本章介绍了基于单片机技术的新型书包的设计与研究。本设计主要由RC522身份识别模块、SHD4216蜂鸣器警示
模块、电池、太阳能电池板模块、LCD1602显示模块和28BYJ48步进电机驱动模块五部分组成,保证了系统的稳定运
行。电路设计中充分考虑了器件设计的基本要求,如电压、工作温度、工作电流等。
第4章 程序算法设计
软件是单片机的核心,硬件结构是单片机的外设。只有硬件合格,程序正确,才能使单片机故障率最低,运行
更稳定。如果程序不合格,执行效果将达不到理想状态。它会导致系统崩溃,影响硬件的工作,甚至烧毁和破坏电
路。因此,使用稳定的程序是非常重要的。系统的主控芯片是STC89C52RC芯片,汇编程序为通用Keil MDK,编程语
言为通用C语言。本章介绍了软件开发环境、语言选择、系统设计和编程算法。
4.1系统开发软件的选择论证
常用于STC51开发的IDE有很多,本文仅对学生常用的两款开发软件做选择论证,其为Keil MDK和IAR。
下面通过表4.1比较两者的不同点,来进行系统软件的选择论证:
表4.1不同类型编程软件对比论证
ARM作为主流的开发工具,提供了一整套完善的开发方案,通过易操作的开发环境,便于用户迅速上手,同
Keil时其仿真功能强大。
MDK 优点:连接library,直接添加到文件夹即可;支持dynamic_cast<>运算符。
缺点: 不支持层叠文件夹,在文件夹的下一级中必须为文件。
用于开发嵌入式应用系统的编译调试工具。支持组件、C语言、C++语言,并提供集成开发环境,包括项目工
程管理器、编辑器、编译器和C-SPY调试器连接。全局编译器优化包括对特定芯片的底层优化,充分利用所
IAR 选芯片的所有特性,并确保较小的代码大小,以支持不同芯片制造商的生产。
优点:支持层叠,可以比较方便管理代码,理清层次;有debug和Release的快速选择。
缺点:不能采用相对路径;不支持dynamic_cast<>运算符。
综上所述,Keil MDK和IAR两款开发软件都具有良好的性能,都能够完成本次设计的要求,但而ST公司官方推荐
的STC51cube IDE由于才推出不久,各种错误层出不穷,而且我之前并没有系统学习过,因此不做选择。Keil MDK对
于我来说,学校系统教过这门课,所以会相对容易入门。而IAR之前并无接触,重新学习过于麻烦,所以选择Keil
MDK来作为本设计的开发环境。
4.2 开发语言
常见的开发语言有:Java、C++、C语言、net、C#、VB(Visual Basic)、VFP(Visual FoxPro )、ASP、JSP、
Python、PHP、PERL、Ruby、Ada、Lisp等。开发语言可以分成机器语言、汇编语言、高级语言三大类。编程语言是
一种统一的通信技术,它向计算机发送指令,定义计算机程序,使程序员能够准确地确定他们需要的数据,确定他
们应该采取的行动。在不同的情况下,计算机领域发明了成千上万种不同的编程语言,每年都会出现新的编程语
言。其中java语言应用广泛,可用于网络应用开发、项目管理软件、移动游戏、金融服务等应用。企业安全系统通
常基于Java语言。STC51是ARM嵌入式系统的核心,不支持Java环境,因此在开发中不使用该语言。Python语言主要
用于数据处理,而不是嵌入式开发。C语言应用广泛,许多语言是基于C语言开发的。其中C语言可用于操作系统开
发、驱动程序开发和嵌入式开发。用C语言访问硬件很方便,效率很高。
综上所述,本设计采用C语言来进行系统开发。
4.3 程序设计
C语言是一种汇编语言,可分7步编程。
1.确定项目目标。在写程序之前,先弄清楚该做什么。考虑程序需要的信息,计算和运行程序,以及程序需要报告
的信息。在这个规划阶段,我们应该考虑一般的概念问题,而不是具体的计算机语言术语。简而言之,这个计划的
目的是要考虑的。
2.设计程序。当从概念上理解一个程序需要做什么时,它需要定义程序应该做什么,用户界面应该是什么,程序应
该如何组织,目标用户是谁,需要多长时间。完成并执行程序。
3、编写代码。在程序有了清晰的设计后,就可以通过编写代码来实现它了。也就是说,将设计构思转变为C语言。
4、编译。下一个步骤是编译源代码。编译细节取决于编程环境,下面很快就会看到一些常见的环境,要做的事情有
一个—般性的了解。
5、运行程序。可执行文件就是打开之后可以直接能够运行的文件。
6、测试和调试程序。程序能够正常运行那是极好的,但有时候它也可能运行不正确。因此,应该进行检查,看程序
是否存在错误。
7、维护和修改程序。在为自己或为别人创建程序后,该程序可能会有更广泛的应用。如果是这样,你可能会发现需
要对其进行更改,也就是项目的维护和修改。在这里不得不提代码风格和注释的作用了,很多人都不喜欢写注释,
代码风格也极乱。
如果单片机没有预期的效果,则表示程序存在逻辑错误、时序不当错误或其他类型的错误。在这一点上,你一步一步地改正错误,找出问题所在。在此设备上,Keil MDK系统使用开发环境,STC51提供正式的库函数,在此基
础上启动新项目,然后调用正式的库函数进行初始化。然后开始编写用户程序。主设备工作流程:设备启动时,主
控制芯片初始化所有输入输出端口,然后驱动外围设备。
图4.1 主程序算法流程图
启动装置后,程序启动,电池启动,感应模块启动。RC522识别模块检测到IC卡后,会识别当前的识别信息,液
晶1602显示模块总是实时显示电池,感应模块将数据发送给单片机,单片机对比身份信息,一致则接通驱动模块的
供电,反之,蜂鸣器开始警报;当驱动模块接通电源后,用户可以根据自己的行走速度选择相应的速度挡位;当到
家后,用户按下检测按钮,MCF522开始检测书包中的电子标签,并发送数据给单片机;第二天早上要走时,再次按
下检测按键,MCF522再次检测书包中的电子标签,并将数据发送给单片机,单片机将两次数据进行对比,如果一致
将通过LCD1602显示装置显示出所携带的书籍,反之将通过蜂鸣器发出警示,并显示出多于或者少携带的书籍。
4.3.1 RC522身份识别模块程序设计
图4.2 RC522身份识别算法流程图
MCU接通电源后,初始化程序启动,读卡器开始接收初始化命令。要验证是否检测到IC卡,将IC卡置于MCF522读
卡器的前面,如果没有检测到卡片,则将继续检测;如果有,则防碰撞程序判断是否有多个IC卡在感应区,且识别
最优先的IC卡,在判断卡内的信息,并将信息传递到单片机中,如果通过验证,单片机将接通供电模块的供电,用
户就可以根据自己的行走速度驱动装置移动;如果没有通过验证则将继续读卡。
当装置解锁后,用户就可以按动电子标签检测按钮,MCF522读卡器将感应书包中电子标签,并将数据发送给单
片机;当用户再次按下检测按钮时,MCF522读卡器再次扫描书包中的电子标签,并将数据发送给单片机,单片机将
两次的数据进行对比,如果一致则通过显示装置显示出所携带的书籍;如果不一致,则将通过蜂鸣器警示,并显示
出多携带或者少携带的书籍。
4.3.2警示模块程序设计
图4.3 警示模块算法流程图
当单片机接入电源后,开始初始化IO口,装置默认上锁,且TCRT5000模块的红外检测端始终检测装置是否离
地,如果检测到,则直接接通蜂鸣器的电源,蜂鸣器持续鸣叫,起到警示的作用;若装置解锁后,红外对管将断开
电源,等待装置上锁后继续工作。
4.3.3步进驱动程序设计
图4.4 步进驱动模块算法流程图
当单片机通电时,所有的输入和输出端口都将初始化,ULN 2003驱动所有的输入和输出端口都将初始化,当输
入一定数量的脉冲时,步进电机根据脉冲的数量旋转一定角度,正向或反向旋转脉冲决定步进电机的正转或者反转
。步进电机的触发是否取决于显示屏上的IC卡,当IC卡与MCF522匹配时,用户通过速度按键持续发送电压给单片
机,单片机持续向步进驱动发送正向脉冲,驱动装置移动。
4.3.4显示器模块程序设计
图4.4 显示模块算法流程图
单片机接通电源后,各个输入端口和多个输出端口初始化,LCD1602显示屏上的数据重置,LCD1602显示屏上的
屏序列初始化,把要显示电量数据传递给LCD 1602显示屏。当用户两次按下检测按钮后,单片机对比两次数据的差
异,根据程序发送要现实的信息到LCD1602屏上。所有显示的汉字字符都是采用取模软件来生成16进制的数组,调用
该数组来完成显示想要的汉字字符操作。
4.4 本章小结
本章主要介绍了关于该装置所采用的开发语言和开发环境,以及各个模块所实现的算法流程,所有模块运行的代码
都是使用C语言和STC51官方所提供的库函数进行编写,移植简单。
第5章 测试与结果分析
5.1不同类型模块功能测试
5.1.1 RC522身份识别模块测试
RC522模块与单片机相连,单片机与电脑接口相连。实物测试阶段采用IC卡。将识别卡插入RC522模块的识别
端,可以读取指定区域的信息。该软件读取设置在IC卡上的解锁信息,然后通过传输通道传递给单片机,实现装置
的解锁。在调试阶段,采用PC机串口接收数据,采用SPI通信方式选择传输速率9600。
图5.1 RC522模块实物接线图
5.1.2 TCRT5000警示模块测试
TCRT5000红外对管与单片机P35和P33连接。测试阶段的有效距离约为10cm,当装置检测到离地时,就会发送
信号到单片机,单片机再控制蜂鸣器鸣叫,发出警示,防止装置被人拿走。
图5.3 TCRT5000模块实物接线图
5.1.3 驱动模块测试
图5.6 步进驱动模块实物接线图
步进驱动作为装置的执行部件,其转动的准确性值得研究,该型号为28式步进驱动,且通过ULN2003步进驱动模
块进行驱动,通过控制输入的脉冲数来调整转动的速度,在实际使用中,用户可以根据自己的行走速度选择相应的
速度。
5.2 装置联调
装置通电后各个模块将实现初始化,此时按键模块的键值会清零,当感应装置实现解锁后,用户按动S7按钮过
后,驱动装置开始运行,用户在按动S5按键,控制装置前行,在按动S3按键调整速度,到家后,按动S7关闭驱动装
置,取走IC卡,警示模块开始工作,警示装置开始运行。
5.3 调试与结果分析
虽然在调试过程中大部分功能都可以实现,但由于模块精度的原因,测量范围没有达到理想的距离,但基本上
可以实现警示功能。当显示模块单独调试时,由于程序需要传输大量的数据和信息,所以很遗憾只做出来了一些,
没能完全实现功能。IC卡读取的信息包括书籍名和开锁功能,以及实时监测的电量显示在显示屏。
5.4本章小结
在本章中,介绍了各个模块的调试以及模块的连接。然后对该装置进行了功能测试,并对测试结果进行了分
析。调试完成后,IC卡解锁装置主要通过身份识别实现解锁,用户再根据自己的速度选择合适的速度挡位,使机器
向前移动,能够放松肩膀,减轻压力。
第6章 总结与展望
6.1 总结
本文的主要工作是基于单片机技术的新型书包的设计与研究。主要有红外对管模块、RC522身份识别模块、
SHD4216蜂鸣器报警模块、电源模块、LCD1602显示模块、28BYJ48步进电动机驱动模块。在设计过程中完成了硬件的
选择、调试,最后完成了硬件的实现。
在调试过程中,对各个模块分别进行了调试,并将测试数据和结果写入表中,得到了与设备稳定运行相一致的
数据。然后结合组件调试代码和函数库编程思想,通过不断的改进和调试完成最终程序设计。在基本功能逐步完善
后,不断对软件缺陷进行优化和研究,在实践中不断更新整体功能设计方案。在该设备上,我充分利用了本科课程
的知识和硬件知识,最终达到了设计目标。本课题的优点如下:
(1)可以智能识别IC卡的使用者信息;
(2)能够智能警示,防止装置被盗窃;
(3)依靠动力驱动,完全解放双肩,极大的减轻了压力;
(4)能够新型提醒用户是否遗忘书籍,防止因为遗忘而少带书籍。
6.2 展望
通过毕业设计,我吸收了大量的硬件知识,提高了编程能力,对自己的本科知识有了进一步理解,并在此基础
上进行了深入的研究。但由于缺乏设计经验的基础,仍有许多问题需要解决。我希望将来我能进一步改进设备。关
于这个设计,我认为以下几个方面可以改进和完善:
(1)本毕业设计只考虑别人提起装置导致警示,距离实际应用还存在较大差距,警示装置功能有待完善。
(2)由于本人的能力有限,导致在毕业设计期间没能够完全达到自己的预定要求,在新型提醒功能上没有完全
实现程序的编写。
(3)在进行身份识别模块单独测试时,可在融合整体程序出现了大量BUG,导致程序无法正常运行,还是请教
了老师才解决这一难题。