赞
踩
目录
通过课程设计,我们更进一步掌握微机原理及应用课程的有关知识,巩固课本理论知识,提高应用微机解决问题的能力,加深对微机应用的理解。通过查阅资料及相关文件的使用手册,结合所学知识进行软、硬件的设计,使我们初步掌握应用微机解决问题的步骤及方法。养成仔细阅读芯片原理图,使用手册,软件代码设计的习惯,为以后我们结合专业从事微机应用设计奠定基础。
总体设计目的是设计一个基于蓝牙的温度检测器,并具有以下功能:
1)读出并显示温度传感器温度值,通过蓝牙将温度值显示在计算机或手机上;
2)计算机或手机通过蓝牙向实验箱发送单个温度数据获取指令,每发一次,将获取一个实时温度值;
3)计算机或手机通过蓝牙向实验箱发送温度数据连续获取指令,每发一次,将连续获取实时温度值,间隔时间2s; 具有温度数据连续发送暂停、终止指令,暂停指令将暂停数据连续发送,终止指令将终止数据发送过程;
4)实验箱测至少具备温度测试启动、暂停功能按键;
5)具有简单电子表功能,可显示年、月、日、星期、时、分、秒等(根据实际显示方式的不同,可选择部分或全部功能);
6)具有电子表的校准功能;
7)扩展功能:
a、可利用开发板上其他硬件模块资源增加功能;
b、可利用主板芯片的增强性功能进行开发和设计;
c、可外接扩展模块增加功能(模块可采用实验室已有模块,也可自备);
d、自定义其他功能,要求具有一定难度、创新性和综合性;
本次微机应用设计的题目为基于蓝牙的温度检测器,由以上的具体要求,我采用了拆分题目要求,分多次实现独立功能后,再进行功能整合,实现功能之间的相互独立,互不干扰,并能够完美运行的方式进行设计。
采用这种方法的很大一部分原因也是自己的设计经验较为薄弱,在此之前本人并未对这类综合设计有过很多经验,仅仅对例程中的某些单独的功能有过调试经验,所以对我来说,本次设计的主要挑战就是在于对例程中没有的代码的编写,如蓝牙串口的驱动调试,以及手机端数据传输控制等功能,最后所有子代码的整合对项目的最终完成来说也是一个不小的挑战。
因此我的主要设计方法就是整个功能拆分成了多个子设计内容,将每个单独的功能调试完毕,并确定没有存在问题后,再将所有的子设计内容整合,保其互工作没有干扰后,在进一步完善其代码的编写与相关函数的打包,封装,使得主函数尽量整洁,最终达到本微机综合设计项目的综合功能实现。
基于上述的设计方法与本次设计项目的实际要求,我将这次的为其综合设计过程分成了四个主要的小设计过程。
第一是温度检测功能。通过DS18b20检测温度数据,并在LCD12864上显示温度监测数据。
第二是蓝牙串口传输数据功能,通过蓝牙串口与手机连接,与手机之间相互收发数据。
第三是电子时钟功能,通过HC595数码管显示时钟,并具备时钟设置与定时闹钟功能。
第四这也是本项目最重要的一个内容,就是将以上三个功能进行整合,确保其代码之间相互没有干扰,能够实现总体的设计功能。
最终本设计实现的功能如下:
打开电源,电子时钟与闹钟功能先工作,HC595数码管显示当前时钟与日期信息,并可以通过矩阵按键s6~s11进行日期设置更改和闹钟时间定义,能够实现自定义闹钟时间,并在该时间驱动扬声器发出持续两秒的响声。首先会出现的是数码管显示时间,时间显示的是16点30分0秒,这是我们设置的初始时间,在DS1302初始化之后,它会正常的记时,然后我们会定个一秒的标志,每隔一秒把时间读取出来显示到数码管上面。KEY6用来设置闹钟,每按一下切换一个设置位。KEY8用来将当前进行设置的位的数加一,KEY11则相反是减一。KEY7保存闹钟并退出设置模式。KEY9进入到时间校准的模式,和闹钟一样。KEY10退出时间并显示我们校准后的时间。然后通过KEY14按键切换工作模式,切换到蓝牙的温度检测器,此时KEY14的作用是暂停以及继续温度检测,KEY13退出温度检测并切换到电子时钟。再进行温度检测时,当我们手机通过蓝牙软件与单片机连在一起,发送一个字符D,单片机会给我们手机发送一个当前的温度值,发送一个字符H,单片机会每隔两秒给我们发送一个温度,发送其他的字符则会终止发送。
系统共有九个按键,各自的作用如下:
KEY6:闹钟设置键,点击之后,可以开始进行闹钟调节,从时分秒依次调节,每点击一次按键换一个位置。
KEY7:退出闹钟设置,并显示当前时间
KEY8:调节时间时数字增加键
KEY9:时间校准键,点击之后,可以开始进行时间校准,从时分秒依次调节,每点击一次按键换一个位置。
KEY10:退出时间校准,并显示校准之后的时间。
KEY11:调节时间时数字减小键。
KEY12:12小时进制切换24小时
KEY13:24小时进制切换12小时,以及温度检测模式切换电子时钟
KEY14:在电子时钟模式下,切换温度检测,温度检测暂停以及启动键。
在电子时钟和闹钟功能运行时,可以按压s14按键,使其切换到蓝牙温度检测功能,此时HC595数码管停止工作,所有灯管熄灭,LCD12864打开,显示初始化信息,并在0.5秒后显示温度信息。注:此时数码管虽不显示内容,但时钟和闹钟功能仍在继续运行。
LCD12864显示屏上的温度信息每一秒更新一次当前所测得温度值,此时我们可以通过电脑端烧录软件上的串口助手或者手机端蓝牙串口的调试助手,通过发送相关指令的方式接受当前的温度值。
蓝牙串口HC-05芯片上电后即可工作,可在手机端蓝牙串口APP上,将手机与蓝牙芯片配对连接。连接好并在单片机进入蓝牙温度检测功能后,即可实现在手机端发送指令,而在手机端实现单个接收温度数值或定时连续接受温度数据的功能。以下为蓝牙温度检测功能详述:
当在手机上发送GB18030编码格式的字符D时,手机端串口助手会接收到单片机发送的单个以GB18030编码格式的温度数据,每发送一个地,就会接收一个温度数据。
当在手机上发送GB18030编码格式的字符H时,手机端串口助手会接收到单片机发送的,每两秒一个的,以GB18030编码格式的,温度数据。
当在机上发送其他字符,电机便会停止两秒一次的温度数据传输,再次输入D或H可重新进入两种模式。
此外,蓝牙温度检测器工作时也具备暂停,启动和切换功能。当按下s14按键,温度检测器会暂停工作:内部计数器暂停工作,且屏幕显示暂停界面。当再次按下s14按键温度检测器会恢复工作。当按下s13按键,温度检测器会停止工作而切换到电子时钟和闹钟功能,此时LCD12864的显示界面会保持上次的工作界面不变,HC595数码管会恢复显示时间,由于温度检测器工作时电子时钟和闹钟计时仍在后台保持继续运行,故并不存在时间出错的问题。
对于本次“基于蓝牙的温度检测器”的项目设计,项目中要求实现蓝牙温度检测与电子时钟的两大功能。基于以上两个主要目标,我的总体设计方案为:
在硬件设计上:使用IAP15F2K61S2单片机作为中控芯片,使用HC595数码管显示电子时钟,使用LCD12864显示屏显示温度测量数据,使用DS18B20温度检测传感器采集温度数据,使用HC-05蓝牙串口芯片作为串口传输芯片,使用板载有源蜂鸣器发出声音,使用矩阵键盘S6~S14用作功能切换输入与外部中断输入。
而在软件设计上,使用手机端SPP蓝牙串口调试软件,实现对于单片机的蓝牙串口调试目标。而其他基于两种主要目标的其他功能实现,如温度数据的传输模式切换,电子时钟的设置,闹钟的定时,同样也是依赖软件代码实现,在后续的子模块设计中将会详细介绍。
1、DS18B20温度检测模块
DS18B20数字温度传感器提供9-Bit到12-Bit的摄氏温度测量精度和一个用户可编程的非易失性且具有过温和低温触发报警的报警功能。DS18B20采用的1-Wire通信即仅采用一个数据线(以及地)与微控制器进行通信。该传感器的温度检测范围为-55℃至+125℃,并且在温度范围超过-10℃至85℃之外时还具有+-0.5℃的精度。此外,DS18B20可以直接由数据线供电而不需要外部电源供电。
每片DS18B20都有一个独一无二的64位序列号,所以一个1-Wire总线上可连接多个DS18B20设备。因此,在一个分布式的大环境里用一个微控制器控制多个DS18B20是非常简单的。这些特征使得其在HVAC环境控制,在建筑、设备及机械的温度监控系统,以及温度过程控制系统中有着很大的优势。
传感器具有以下工作特性:
·独特的1-Wire总线接口仅需要一个管脚来通信。
·每个设备的内部ROM上都烧写了一个独一无二的64位序列号。
·多路采集能力使得分布式温度采集应用更加简单。
·无需外围元件。
·能够采用数据线供电;供电范围为3.0V至5.5V。
·温度可测量范围为:-55℃至+125℃(-67℉至+257℉)。
· 温度范围超过-10℃至85℃之外时具有+-0.5℃的精度。
· 内部温度采集精度可以由用户自定义为9-Bits至12-Bits。
传感器的总体设计原理框图
传感器中传输温度数据采用1-Wire单总线协议
电路结构图
2、LCD12864显示屏模块
LCD12864是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8x4行16×16点阵的汉字.也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多。
器件具有以下特性:
·低电源电压(VDD:+3.0-+5.5V)显示分辨率:128×64点
·内置汉字字库,提供8192个16×16点阵汉字(简繁体可选)
·内置128个16×8点阵字符
·2 MHz时钟频率
·显示方式:STN、半透、正显
·驱动方式:1/32 DUTY,1/5 BIAS
·视角方向:6点
·背光方式:侧部高亮白色LED,功耗仅为普通的1/5--1/10
·通讯方式:串行、并口可选
·内置DC-DC转换电路,无需外加负压无需片选信号,简化软件设计
·工作温度:0℃-+55℃,存储温度:-20℃-+60℃
方框图:
电路结构图:
3、H-05蓝牙串口模块
HC-05 嵌入式蓝牙串口通讯模块(以下简称模块)具有两种工作模式:命令响应工作模式和自动连接工作模式,在自动连接工作模式下模块又可分为主(Master)、从(Slave)和回环(Loopback)三种工作角色。当模块处于自动连接工作模式时,将自动根据事先设定的方式连接的数据传输;当模块处于命令响应工作模式时能执行下述所有 AT 命令,用户可向模块发送各种 AT 指令,为模块设定控制参数或发布控制命令。通过控制模块外部引脚(PIO11)输入电平,可以实现模块工作状态的动态转换。
HC-05蓝牙模块的特点:
·采用CSR主流蓝牙芯片,蓝牙V2.0协议标准;
·输入电压:3.6V--6V,禁止超过7V;
·波特率为1200,2400,4800,9600,19200,38400,57600,115200用户可设置;
·带连接状态指示灯,LED快闪表示没有蓝牙连接;LED慢闪表示进入AT命令模式;
·板载3.3V稳压芯片,输入电压直流3.6V~6V,未配对时,电流约30 mA(因LED灯闪烁,电流处于变化状态);配对成功后,电流大约10 mA)。
·用于GPS导航系统,水电煤气抄表系统,工业现场采控系统;
·可以与蓝牙笔记本电脑、电脑加蓝牙适配器等设备进行无缝连接。
电路结构图:
4、HC595数码管显示模块
74HC595是一款漏极开路输出的CMOS移位寄存器,输出端口为可控的三态输出端,亦能串行输出控制下一级级联芯片。
74HC595特点:
·高速移位时钟频率Fmax>25MHz;
·标准串行(SPI)接口;
·CMOS串行输出,可用于多个设备的级联;
·低功耗:TA =25℃时,Icc=4 u A (MAX);
电路结构图:
5、板载有源蜂鸣器模块
接入5v电源,当端口给低电平时,该有源蜂鸣器会发出蜂鸣,在设计中作为闹钟功能;
电路结构图:
6、矩阵键盘模块
矩阵键盘共包含9个按键,均可作为行列按键,通过扫描的方式作为键盘输入,其中S13、S14按键由于连接在P3^2和P3^3管脚上,因此还可以作为外部中断0和外部中断1的外部输入口。
电路原理图:
使用Proteus添加相关器件(仅作为演示,并未进行连线与软件仿真)
开发板总体原理图
打开电源,默认进入电子时钟与闹钟功能,HC595数码管显示当前时钟与日期信息。
在电子时钟和闹钟功能运行时,可以按压s14按键,使其切换到蓝牙温度检测功能,此时HC595数码管停止工作,所有灯管熄灭,LCD12864打开,显示初始化信息,并在0.5秒后显示温度信息。注:此时数码管虽不显示内容,但时钟和闹钟功能仍在继续运行。
蓝牙串口HC-05芯片上电后即可工作,可在手机端蓝牙串口APP上,将手机与蓝牙芯片配对连接。连接好并在单片机进入蓝牙温度检测功能后,即可实现在手机端发送指令,而在手机端实现单个接收温度数值或定时连续接受温度数据的功能。当按下s14按键,温度检测器会暂停工作:内部计数器暂停工作,且屏幕显示暂停界面。当再次按下s14按键温度检测器会恢复工作。
当按下s13按键,温度检测器会停止工作而切换到电子时钟和闹钟功能,此时LCD12864的显示界面会保持上次的工作界面不变,HC595数码管会恢复显示时间,由于温度检测器工作时电子时钟和闹钟计时仍在后台保持继续运行,故并不存在时间出错的问题。
1、DS18B20温度检测模块
选用板载的DS18B20温度传感器,由于使用单总线通讯协议,故可以使用P1^5口线作为数据线,并采用外部电源供电方式,进行传感器与单片机的数据交换。
2、LCD12864显示屏模块
选用外接的LCD12864液晶显示屏,使用P0端口作为数据传输,P4^2口线作为寄存器选择位RS,P4^1口线作为读写控制位RW,P3^7口线作为读写数据使能位,以上端口实现LCD内容的显示。
3、H-05蓝牙串口模块
由于学校下发的模块损坏无法使用,故蓝牙模块选用自费购买的HC-05蓝牙串口模块,其上布有6个端口,而我们的项目设计只涉及到其中的四根口线,连接方式固定,电源的正负依次连接后,改变RXD和TXD和单片机上RXD(P3^0)和TXD(P3^1)的连接顺序即可在蓝牙模块的管理模式和正常工作模式之间切换:
同名相接时即为管理模式,在此模式下相当于模块芯片和烧录软件的串口助手之间相互传输指令,即可对蓝牙芯片的命名,传输波特率,主从机标志位设置,连接密码等进行设置;
交叉相连时即为正常工作模式,在此模式下,相当于串口助手和手机端app作为蓝牙模块的两个串口输出端,当单片机通过串口输出数据时,串口助手和手机端app均会收到同样的数据,故在调试时,可以将蓝牙芯片暂时断开连接,仅使用串口助手进行调试即可。
4、HC595数码管显示模块
选用板载的两块74HC595移位寄存器,分别驱动板载两块4位数码管,使用P3^7作为串行数据线,P4^2作为移位时钟线,P4^1作为锁存时钟线,P4^5作为输出允许线,以上端口实现74HC595对于数码管的驱动显示功能.
5、板载有源蜂鸣器模块
选用板载的有源蜂鸣器,蜂鸣器的高压端连接+5V电源,低压端连接单片机的P1^6口线,控制口线的电平高低即可实现对于蜂鸣器的驱动。
6、矩阵键盘模块
选用板载的3x3矩阵键盘,按键分别对应S6~S14,通过P3^2~P3^6口线与单片机连接,在设计中当处于电子时钟功能时,用作常规矩阵键盘,采用行列扫描的方式判断键盘中按键是否按下;而当处于蓝牙温度检测功能时,键盘用作外部中断输入按键,仅使用了与外部中断0,1相连的S13和S14按键。
FD51F_DB_V3开发板
LCD12864液晶显示屏
HC-05蓝牙串口芯片
打开电源,电子时钟与闹钟功能先工作,HC595数码管显示当前时钟与日期信息,并可以通过矩阵按键s6~s11进行日期设置更改和闹钟时间定义,能够实现自定义闹钟时间,并在该时间驱动扬声器发出持续两秒的响声。
在电子时钟和闹钟功能运行时,可以按压s14按键,使其切换到蓝牙温度检测功能,此时HC595数码管停止工作,所有灯管熄灭,LCD12864打开,显示初始化信息,并在0.5秒后显示温度信息。注:此时数码管虽不显示内容,但时钟和闹钟功能仍在继续运行。
LCD12864显示屏上的温度信息每一秒更新一次当前所测得温度值,此时我们可以通过电脑端烧录软件上的串口助手或者手机端蓝牙串口的调试助手,通过发送相关指令的方式接受当前的温度值。
蓝牙串口HC-05芯片上电后即可工作,可在手机端蓝牙串口APP上,将手机与蓝牙芯片配对连接。连接好并在单片机进入蓝牙温度检测功能后,即可实现在手机端发送指令,而在手机端实现单个接收温度数值或定时连续接受温度数据的功能。以下为蓝牙温度检测功能详述:
当在手机上发送GB18030编码格式的字符D时,手机端串口助手会接收到单片机发送的单个以GB18030编码格式的温度数据,每发送一个地,就会接收一个温度数据。
当在手机上发送GB18030编码格式的字符H时,手机端串口助手会接收到单片机发送的,每两秒一个的,以GB18030编码格式的,温度数据。
当在机上发送其他字符,电机便会停止两秒一次的温度数据传输,再次输入D或H可重新进入两种模式。
此外,蓝牙温度检测器工作时也具备暂停,启动和切换功能。当按下s14按键,温度检测器会暂停工作:内部计数器暂停工作,且屏幕显示暂停界面。当再次按下s14按键温度检测器会恢复工作。当按下s13按键,温度检测器会停止工作而切换到电子时钟和闹钟功能,此时LCD12864的显示界面会保持上次的工作界面不变,HC595数码管会恢复显示时间,由于温度检测器工作时电子时钟和闹钟计时仍在后台保持继续运行,故并不存在时间出错的问题。
在选取本次微机设计的题目时,本想选择一个较为简单的设计,想着快速做完交差,结果却高估了自己的硬件编程水平,在硬件设计时遇到了很多意料之外的问题,让原本预期的顺利过程频频受阻。
由于我们的设计编程经验不充足,对于设计的总体方案想的都比较天真,就比如一开始选题时,我们想着,例程中摆着温度检测器和电子时钟两个程序,我们只需要分工一下,每人做一半的功能,做完后把两个文件粘贴到一块,再加上个蓝牙串口输出,就可以大功告成。这种想法现在想来未免太过搞笑了,当然这么做的结果结果也确实给我们上了一课——这么天真的想法压根就不可能实现!相互之间必然存在着时序问题和逻辑的交叉。
仅仅在蓝牙模块一个内容上,就遇到了诸如蓝牙芯片的连接,初始化设置,如何与手机连接,连接后传输数据乱码如何解决,如何实现串口数据单个传输模式与定时连续传输模式切换,传输模式如何手动控制等多个问题,其他模块的问题更是不必多说。
而最后各个模块完成后,相互之间如何整合到同一个程序文件中,不相互干扰,如何切换自如,也是耗费了我们小组很大的功夫才得以较完美的解决,我们也是一而再,再而三的简化着最终完成的效果——原本预期达到温度显示在LCD12864的同时,电子时钟在HC595上同时显示,当在实际操作后,我们发现如果照搬例程中的时序,将两个功能同时实现,相互之间的时序会相互影响,干扰互相的实现效果,而且口线的重复占用也是一个很大硬件问题,没法通过代码编程解决(如两个功能,都涉及到单片机的读写使能端口,若要同时工作,则必然会造成相互之间的干扰)
最终在我和搭档讨论后,决定采用了最最简单的方式,即两种功能分别实现,通过按键进行切换,而仅仅这种最简化的实现方式,对我们两个新手而言也是困难重重,最终通过自己和搭档翻阅单片机课本,查阅相关使用手册以及网上搜集信息找到了问题的症结所在,就是在切换过程中需要完全关闭上一功能中的所有中断使能位,才可以实现两功能之间来回切换,最后也算是很大程度上实现了初期要求中的所有功能。
在做完了整个项目设计后,回望这学期初编程设计的自己,这个过程还是让我学会了很多此前并不具备的能力:我学会了依据手册上的时序信息编写初始化文件,知晓模块的工作逻辑,以及如何避免与其他模块的冲突等要点;设计遇到困难先查阅数据手册,可以解决很大一部分的问题;对于单片机的设计首先要基于对于单片机的总体硬件原理有理解,如定时计数器的工作位设置,中断的打开关闭,某个SFR中某一位的设置对于某模块工作的影响等等;多个模块设计时,要注意工作口线是否有复用,在复用的情况下要通过适当的方式解决冲突。
硬件设计总体来说还是一个很有意思的过程,可以通过实践动手完成项目的最终设计,虽然对于我们这两个新手来说算是困难重重,但是完成后的成就感,也是让此前反复失败的失落一扫而空。不管怎么说,能够独立完成一个小小的设计对我来说也是一个很大的鼓励希望往后的时间里,能够以此为基础,做成更加有趣的设计,也希望能将这一过程中学会的能力运用到往后的研究领域中去。
[1]FD51F_V3开发板原理图.pdf
[2]HC-05蓝牙芯片数据手册.pdf
[3]DS18B20温度检测芯片数据手册.pdf
[4]郭天祥.51单片机C语言教程—入门、提高、开发、扩展全攻略[M].北京:电子工业出版社,2009.12
[5]丁向荣.增强型8051单片机原理与系统开发(C51版)[M]:清华大学出版社,2013.09
个人课程设计作业,自己放在学校的板子上是可以跑的,完整工程文件如下,仅供参考哦。
有用的话给我点点赞哦,谢谢各位啦!
链接:https://pan.baidu.com/s/1PTaNRw6qVBw8OF2kWcvA5g
提取码:1111
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。