课题背景及其意义
红外测温仪采用非接触式手段,突破了传统测温模式,具有不扰动被测物体温度分布场,温度分辨率高、响应速度快、测温范围广,稳定性好、可同时测量环境温度和目标温度的特点。本设计拟采用51单片机为控制核心,负责控制启动温度测量,接收测量数据 ,计算温度值,并根据取得键值控制播放显示过程,主要由光学系统、光电探测器、信号放大器及51单片机信号处理、显示输出等部分组成实现。该课题能够考察我对单片机及其外围电路与软件编程、计算机辅助设计软件等知识的学习和掌握水平,使我在硬件设计及实现、辅助设计软件等方面的应用能力得到全面的训练和提高。单片机应用的发展及现状 在20世界50年代中期,全世界第一台用数字运算方式的计算机,自从美国著名大学实验室研究出来,从此以后电子计算机经过飞速的成长,主要有以下四个时期:第一代是电子管控制时期,第二代是晶体管控制时期,第三代是采用集成电路控制时期,第四代是采用超大规模集成电路控制时期。目前使用的计算机都是采用第四代超大规模集成电路控制方式的,由于是有很好的性能,主要表现在性价比高,体积小,性能稳定等特点;例外计算机发展趋向功能强大化,体积越小化,系统稳定化和功能人性化。体积越小化是目前计算机主要的研究方向,其中主要研究的是把控制器的组成部分融合在一块集成板上,因此就诞生了广泛大规模的集成控制器的微小电子计算机——简称单板小型数字控制器,英文缩写为MCU,因为MCU的主要运用场所是高性能智能化电子产品上,主要是大多数产品都是要内含嵌入的设备的系统。现在全世界有能力制造出数字控制器MCU的公司商主要是很多大型的国际公司,国内也有一些上市公司进行生产和研究数字控制器MCU,每个公司生产出来的单片机都有各自的特色,主要运用场合也不尽相同 。第二章 方案的设计与论证
控制方案的确定本设计由STC89C52单片机电路+1602液晶显示电路+MLX90614ESF红外非接触温度检测电路+按键电路+蜂鸣器报警电路。控制方式的选择 单片机芯片的选择方案一采用可编程逻辑器件CPLD作为控制器,CPLD可以实现各种复杂的功能、规模大、密度高、体积小、稳定性高、I/O资源丰富、易于进行功能扩展。采用并行的输入输出方式,提高了系统的处理速度,适合作为大规模控制系统的控制核心。但本系统不需要复杂的逻辑功能,对数据的处理速度的要求也不是非常高。且从使用及经济的角度考虑,最终放弃了此方案。方案二采用ST公司的STC89C52单片机作为主控制器,STC89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程 Flash 存储器。该单片机功耗低、接口丰富,成本低廉,完全能满足本设计要求。方案三采用单片机芯片控制MSP430单片机是美国德州仪器(TI)推出的一种16位超低功 耗的混合信号处理器(Mixed Signal Processor),主要是针对实际应用需求,把许多模拟电路、数字电路和微处理器集成在一个芯片上,以提供“单片”混合信号处理的解决方案。MSP430F149是一个16位的、具有精简指令集的、超低功耗的混合型单片机,具有可靠性高、功耗低、扩展灵活、体积小、价格低和使用方便等优点,广泛应用于仪器仪表、专用设备智能化管理及过程控制等领域,有效地提高了控制质量与经济效益,已成为众多单片机系列中一颗耀眼的新星。然而其成本太高,故舍弃。故选择方案二。声音报警电路方案的选择方案一采用语音集成芯片ISD4004报警,由于ISD4004需要扩充喇叭驱动电路且其本身控制比较繁琐、电路比较复杂,稳定性差。基于以上考虑,所以放弃了此方案。方案二通过蜂鸣器实现报警电路,具有电路简单,性能可靠、稳定等优点,最重要的是低成本,故选择方案二。方案三采用音乐片作为本系统门铃的音乐模块,音乐芯片是一种比较简单的语音电路,它通过内部的振荡电路,再外接小量分立元件,就能产生各种音乐信号,音乐芯片是语音集成电路的一个重要分支,目前广泛用于音乐卡、电子玩具、电子钟、电子门铃、家用电器等场合。其具有电路简单,成本低廉等优点。故选择方案二。显示方案的选择方案一采用LED数码管动态扫描,LED数码管价格适中,对于显示数字十分合适,采用动态扫描法与单片机连接时,虽然占用的单片机口线少,电路简单,性价比较高。然而本设计显示数据较多,数码管明显不符合要求,故舍弃。方案二采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,若采用在显示数字显得太浪费,且价格也相对较高,所以在此也不用此种作为显示。 方案三LCD液晶显示,由单片机驱动,它主要用来显示大量数据、文字、图形,能够显示的位数多,显示得清晰多样、美观,同时液晶显示器的编写程序简单,价格便宜,故采用此种方案。采用1602液晶显示屏,该液晶显示屏的显示功能强大,内置192种字符,可显示大量符号、数字,清晰可见,而且功率消耗小寿命长抗干扰能力强。故选择方案一。温度采集模块的选择方案一采用PT100铂电阻温度传感器,此传感器属于电阻式传感器,它的电阻随着温度的变化而变化。这种温度传感器有零度电阻值和电阻变化率,它性能比较稳定,测量范围达到-200℃~850℃,但是使用它要复杂的转换关系,要清楚的知道电阻和温度之间的关系。其采集电路主要采用的是电阻分压网络,在电阻分压网络的设计上,由于定值电阻随着测量环境温度变化时,其阻值会有所变化,这就会给系统带来误差,使系统采集的温度值产生偏差,并且其电压值要进行AD转换,增加了系统的复杂程度。PT100自身体积较大,温度变化时,反应速度会优先减慢,如果环境变化温度较快时,将会有部分的中间温度会被直接过滤掉,使实时温度信息不准,实时性较差。方案二采用AD590,AD590是现在温度测量较为常见的温度传感器,测量精度高、温度范围宽,但是成本很高,一般的廉价应用上不会使用。AD590是电流型温度传感器,在检测温度变化时,其两端的输出电流会有相应的改变。应用方法,一般是采用在输出端接一个定值电阻(当然这也要温漂较低的电阻),在测量电阻两端的电压(电压值=AD590输出电流×定值电阻阻值),这与PT100的测量方式相同,使用AD转换器,将模拟电压值转换为数字量。当然AD590的体积也稍大,也会有高速温度变化时产生出滤波效果,实时性降低。方案三采用DS18B20, DS18B20是数字式的温度传感器,测量的温度范围较广,精度高,成本低,稳定性较好。DS18B20采用单总线通信,减少了I/O的占用数量,减少了外围电路,通信简单。DS18B20的集成度高,体积较小。因为其体积小,可以测量到的温度值变化快,实时性就好。方案三选择MLX90614ESF非接触式红外测温模块对温度进行测量,真正实现了非接触式测温。本传感器体积小,成本低,易集成。可以无线测温。(医用)高精度校准,在所需的温度范围精度为°C,分辨率为°C。有单个 和双重区域版本。SMBus兼容数字接口用于快速读取温度并可建立传感器网络。故选择方案四。
【资料图】
硬件电路的设计
系统的功能分析及体系结构设计
系统功能分析本设计由STC89C52单片机电路+1602液晶显示电路+MLX90614ESF红外非接触温度检测电路+按键电路+蜂鸣器报警电路。1、液晶实时显示MLX90614ESF检测的环境温度值和被测物体温度值,显示中E环境温度,O物体温度。2、可以通过按键设置温度的阈值,如果MLX90614检测到的温度高于设置的阈值,则蜂鸣器报警,否则,蜂鸣器不报警。系统总体结构本系统具体框图如下图所示:
系统原理框图
模块电路的设计 STC89C52单片机核心系统电路设计STC89C52RC是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但是做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。
一、STC89C52主要特性如下:
(1)8K字节程序存储空间;(2)512字节数据存储空间;(3)内带4K字节EEPROM存储空间;(4)可直接使用串口下载。二、STC89C52主要参数如下:
(1)增强型8051单片机,6时钟/机器周期和12 时钟/机器周期可以任意选择,指令代码完全兼容传统8051;(2)工作电压:~(5V单片机)/~(3V 单片机);(3)工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作 频率可达48MHz;(4)用户应用程序空间为8K字节;(5)片上集成512 字节RAM;(6)通用I/O 口(32个),复位后为:P1/P2/P3 是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为 I/O口用时,需加上拉电阻;(7)ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/,TxD/)直接下载用户程序,数秒即可完成一片;(8)具有EEPROM功能;(9)共3个16 位定时器/计数器。即定时器T0、T1、T2;(10)外部中断4路,下降沿中断或低电平触发电路,Power Down 模式可 由外部中断低电平触发中断方式唤醒;(11)通用异步串行口(UART),还可用定时器软件实现多个UART;(12)工作温度范围:-40~+85℃(工业级)/0~75℃(商业级);(13)PDIP封装。三、STC89C52单片机相关引脚说明:
(1)VCC:供电电压。(2)GND:接地。(3) RXD(串行输入口)(4) TXD(串行输出口)(5) /INT0(外部中断0)(6) /INT1(外部中断1)(7) T0(记时器0外部输入)(8) T1(记时器1外部输入)(9) /WR(外部数据存储器写选通)(10) /RD(外部数据存储器读选通)(11)RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
(12)ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。(13)/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。(14)/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。(15)XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。(16)XTAL2:来自反向振荡器的输出。单片机引脚图如下图所示:
STC89C52单片机引脚图
四、STC89C52单片机最小系统说明:
STC89C52单片机最小系统电路由复位电路、时钟电路和电源电路。拥有这三部分电路后,单片机即可正常工作。单片机最小系统原理图如下图所示。
单片机最小系统原理图VCC和GND为单片机的电源引脚,为单片机提供电源:
复位电路由按键S1、电解电容EC1和电阻R1组成。具有手动按键复位和上电自动复位功能。系统上电复位按键接口采集到两个高端信号后进行手动复位,就是非自动的按键复位;系统检测到的电压由低电平上升到高电平的一段时间后,在这段时间过后,系统通过电阻与接地之间形成一条通路,然后自动把高电平进行拉低,使得单片机从高电位变为低电位,从而就是给单片机自动进行复位即上电复位。
时钟电路由晶振Y1、瓷片电容C1和C2组成。有控制芯片的数字电路正常工作是少不了TIME(时钟)电路的,我们需要时钟电路自动发出系统时间,让控制芯片正常工作。给控制芯片正常工作的时钟信号,一般把这种工作方式称为“拍”,以至于让整个控制系统能正常工作,由于要保证控制系统能正常工作,提高他的工作能力,我们经常用晶振和30PF的电容进行组合,电容为了帮助晶振起振的,满足了数字控制器上电以后可以正常工作。
JD1为单片机的下载接口。
5V电源电路设计本系统选择5V直流电源作为系统总电源,为整个系统供电,电路简单、稳定。DC为电源的DC插座,可以直接接USB电源线,一端插在DC插座上,另外一端可以插在5V电源上,如电脑USB、充电宝、手机充电器等等。LED为红色LED灯,作为系统是否有点的指示灯,电阻为1K电阻,起到限流作用,保护LED灯,以防电流过大烧坏LED灯。SW为自锁开关,开关按下后,红灯亮,此时系统电源5V直流输出。开关再次按下后,红灯灭,此时系统电源无5V电源输出。5V电源电路原理图 LCD1602液晶显示模块电路设计LCD显示器分为字段显示和字符显示两种。其中字段显示与LED显示相似,只要送对应的信号到相应的管脚就能显示。字符显示是根据需要显示基本字符。本设计采用的是字符型显示。系统中采用LCD1602作为显示器件输出信息。与传统的LED数码管显示器件相比,液晶显示模块具有体积小、功耗低、显示内容丰富等优点,而且不需要外加驱动电路,现在液晶显示模块已经是单片机应用设计中最常用的显示器件了。LCD1602可以显示2行16个汉字。一、LCD1602主要技术参数如下:
(1)显示容量为16×2个字符;(2)芯片工作电压为~;(3)工作电流为();(4)模块最佳工作电压为;(5)字符尺寸为×(W×H)mm。二、LCD1602采用标准的14脚,其接口的引脚说明如下:
(1)第1脚:VSS为地电源。(2)第2脚:VDD接5V正电源。(3)第3脚:V0为液晶显示器对比度调整端。(4)第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。(5)第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。(6)第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。(7)第7~14脚:D0~D7为8位双向数据线。(8)第15~16脚:空脚三、控制指令说明
LCD1602液晶模块内部的控制器共有11条控制指令,说明下表所示:
序号 | 指令 | RS | R/W | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
1 | 清显示 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
2 | 光标返回 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | * |
3 | 置输入模式 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | I/D | S |
4 | 显示开/关控制 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | D | C | B |
5 | 光标或字符移位 | 0 | 0 | 0 | 0 | 0 | 1 | S/C | R/L | * | * |
6 | 置功能 | 0 | 0 | 0 | 0 | 1 | DL | N | F | * | * |
7 | 置字符发生存贮器地址 | 0 | 0 | 0 | 1 | 字符发生存贮器地址 | |||||
8 | 置数据存贮器地址 | 0 | 0 | 1 | 显示数据存贮器地址 | ||||||
9 | 读忙标志或地址 | 0 | 1 | BF | 计数器地址 | ||||||
10 | 写数到CGRA或DDRAM) | 1 | 0 | 要写的数据内容 | |||||||
11 | 从CGRAM或DDRAM读数 | 1 | 1 | 读出的数据内容 |
表 控制命令表
四、1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)
(1)指令1:清显示,指令码01H,光标复位到地址00H位置(2)指令2:光标复位,光标返回到地址00H(3)指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。(4)指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁(5)指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标(6)指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符(7)指令7:字符发生器RAM地址设置(8)指令8:DDRAM地址设置(9)指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。(10)指令10:写数据(11)指令11:读数据系统中采用LCD1602作为显示器件输出信息。在本电路中电位器可以调节液晶显示的对比度即清晰度。其具体电路原理图如下图所示。
LCD1602液晶显示电路原理图其实物图如下图所示。LCD1602液晶实物图 蜂鸣器报警电路(低电平有效)设计有源蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。本系统所采用的报警模块为5V有源蜂鸣器模块,电路中采用三极管9012来驱动,只要单片机控制引脚为低电平,蜂鸣器就会鸣叫报警,反之则不鸣叫,可以通过控制单片机引脚方波输出形式控制蜂鸣器的鸣叫方式。电阻为限流电阻,保护作用。
系统软件设计
完整的控制系统由硬件系统和软件系统组成,前一章主要阐述了系统的硬件电路的设计方案,若要充分发挥系统的设计功能,则需要支持硬件平台的软件程序,即烧写到单片机内部的程序。
编程语言选择由于整个程序比较复杂,且计算量较大,用到了较多的浮点数计算,所以程序的编写采用了C语言。对于大多数51系列的单片机,使用C语言这样的高级语言与使用汇编语言相比具有如下优点:不需要了解处理器的指令集,也不必了解存储器结构。
寄存器分配和寻址方式由编译器进行管理,编程时不需要考虑存储器的地址和数据类型等细节。指定操作的变量选择组合提高了程序的可读性。可使用与人的思维更相近的关键字和操作函数。与使用汇编语言相比,程序的开发和调试时间大大缩短。C语言的库文件提供了许多标准的例程。通过C语言可实现模块化编程技术,从而可将已编制好的程序加到 新程序中。C语言可移植性好且非常普及,C语言编译器几乎适用于所有的目标系统,己完成的项目可以很容易的转换到其它的处理器或环境中与汇编语言相比,C语言在功能上、结构性、可读性、可移植性、可维护性上有明显的优势,易学易用。单片机程序开发环境
本设计中单片机开发环境是Keil uVision4,Keil uVision4开发软件是目前51系列单片机系统的主流程序开发软件,Keil uVision4是STC公司推出最新一代关于51系列单片机处理器的编译、连接和调试集成环境。可以降低开发周期,从而减少很多成本。Keil uVision4不仅提供了完整的Windows开发环境界面,支持C/C++语言开发,而且其C语言编辑效率很高,能够使开发者非常容易地使用C语言进行程序编程。其中Keil uVision4有以下特点:
(1)Keil uVision4软件同时支持WINXP和WIN7等多种操作系统,提供了丰富的库函数和功能强大的开发工具。(2)Keil uVision4可以完成从编辑、编译、到连接、调试的一套开发流程。(3)Keil uVision4 C51在Keil C51的基础上,增加了很多新的功能。如Keil uVision4更加增强了对内核微控制器的开发支持,并对Keil C51的开发形式和开发界面进行相应的改进。Keil uVision4软件界面如下图所示。Keil uVision4开发界面图 Keil uVision4软件开发流程首先,需要建立“Project”工程,点击Keil uVision4界面中菜单中“Project”,选择“New uVision Project”,为新建的工程命名后点击保存;然后选择开发单片机芯片的型号,本工程选择“STC89C52”,这样就完成了“Project”的建立;当工程建立完毕后,点击“Source Group”,可以往里面添加.c文件,点击Add就可以编辑了该文件了,也可以把常用的.c文件拷贝到建立的“Project”目录下面,最后一个完成的工程软件就建立完毕了。具体开发流程如图所示。Keil uVision4软件开发流程图 程序烧录软件介绍在Keil uVision4开发环境下,STC89C52RC芯片程序烧写软件使用的是烧录软件,它是一款集成了代码下载,在线仿真和串口查看于一起软件备,在51系列智能产品研发过程中得到了广泛使用,性能高,是目前51系列单片机控制系统研发中不可缺少的一部分。在Keil uVision4开发环境中,需要进行一定的配置才能使用,当把下载器(即PL2303串口烧写模块)、设备和PC连接好,首先需要在软件中选择单片机型号和串口号,并把波特率设置和程序软件一致。然后选在项目程序“hex”文件所在的地址,最后就可以点击程序下载按钮了。具体下载界面如下图所示。资料包括:
需要完整的资料可以加入我的纷传圈子,里面有资源压缩包的百度网盘下载地址及提取码。