本设计采用STC89C51单片机为主控芯片,采用数字型温度传感器DS18B20检测环境温度,通过LCD1602实时显示温度值吗,并且能通过串口发送指令调节风扇转速。系统添加了几个按键,用户可以通过按键进行设置温度的上、下限值,并将数据保存在单片机EEPROM中做到掉电存储的功能。当所采集温度超过上限值时,蜂鸣器鸣叫、LED灯亮、风扇全速转动;当所采集温度低于下限值时,蜂鸣器鸣叫、LED灯亮、风扇停止运转;当所采集温度介于上下限温度之间时,蜂鸣器、LED灯停止工作、风扇中速运转。这个设计简单、成本低、具有实用性。
关键词:智能风扇;DS18B20;温度传感器
设计要求:检测仓库温度,当大于28度时驱动电机低速转动,当大于30度时驱动电机中速转动,当大于35度时驱动电机高速转动;检测仓库温度,将温度数据上传至上位机,上位机收到温度后做出以下反应:当大于28度时发送命令01驱动电机低速转动,当大于30度时发送命令02驱动电机中速转动,当大于35度时发送命令03驱动电机高速转动。(可加分)
创新部分:
(1)添加蜂鸣器和按键,利用按键控制温控系统的上下限。
(2)将驱动电机改为步进电机,利用步进电机直接驱动变频散热风扇。
1 引言
1.1 设计的目的及意义
随着电子制造业的不断发展,社会对生产率的要求越来越高,各行业都需要精良高效、高可靠性的设备来满足要求。作为一种老式家电,电风扇曾一度被认为是空调产品冲击下的淘汰品;但电风具有价格便宜、摆放方便、体积轻巧等特点。由于大部分家庭消费水平的限制,电风扇作为成熟的家电行业的一员,在中小城市以及乡村将来一段时间内仍然会占有市场的大部分份额,但老式电风扇功能简单,不能满足智能化的要求。为提高电风扇的市场竞争力,使之在技术含量上有所提高,且更加安全可靠,智能电风扇随之被提出。
传统电风扇具有以下缺点:风扇不能随着环境温度的变化自动调节风速,这对那些昼夜温差大的地区是致命的缺点,尤其是人们在熟睡时,不但浪费资源,还很容易使人感冒生病;传统电风机械的定时方式常常会伴随着机械运动的声音,特别是夜间影响人们的睡眠,而且定时范围有限,不能满足人们的需求。鉴于这些缺点,我们需要设计一款智能的电风扇温度控制系统来解决。
1.2 国内外研究现状
电风扇在中国仍然具有很大的市场,所以我国对电风扇的优化研究是很积极的。智能电风扇已经开始投入市场,目前这方面的技术已经成熟。下一阶段的研究将是使其更加人性化,更好的满足不同群体的人的需求。美的等家电企业相继推出了大厦扇和学生扇,这是针对不同的人群而专门研制的,具有智能化控制系统的电风扇。 国外在电风扇方面的研究相对我国不那么积极,但是在智能化电器方面的研究却比我国更加成功。“智能化电器”包含三个层次:智能化的电器元件,如智能化断路器、智能化接触器和智能化磁力启动器等,智能化开关柜和智能化供配电系统。智能化开关柜包含多台断路器,而且供电系统的控制与用电设备的控制关系很密切。这两个层次上的智能化工作重点是:加强网络功能,最大限度地提高配电系统和用电设备的自动化水平。
新型的智能化电器元件的发展趋势:采用微处理器及可编程器件,大量功能“以软代硬”实现,并具有“现场”设计的能力。充分增加智能化电器元件的“柔性”与 适应性。例如一种采用FPGA器件构成的专用功能集成电路已投入应用。
2 系统硬件方案选择
我们小组经过长时间的讨论,本章节主要介绍系统所用到的器件的选择与对比,进行综合的对比考虑选择出最适合本设计的一组方案。
2.1 硬件方案的选择
由组长牵头,在硬件电路的搭建之前必须明确设计的方案,通过各个模块之间进行比较选择出最适合本设计的硬件,以发挥器件的最大功效。
2.1.1 主控芯片的选择
方案一:
采用STC89C51单片机作为主控芯片。STC89C51是宏晶科技公司生产的一款低功耗、高性能的八位CMOS微处理器,片内具有8k在线编程Flash存储器。STC89C51单片机的内核采用的是MCS-51内核,指令完全兼容MCS-51,但是该单片机越做了升级使得芯片具有很多传统的51单片机不具备的功能,例如该芯片还有4K的EEPROM存储,在需要使用到掉电存储数据的时候就可以直接使用单片机内部的存储,不在需要在外接存储芯片进行存储。STC89C51单片机具有的开发简单、可在线编程下载、成本低是非常不错的选择。
方案二:
采用MSP430单片机作为主控芯片。MSP430单片机称之为混合信号处理器,它可以将多个不同功能的模拟电路、数字电路模块和微处理器集成在一个芯片上,MSP430系列单片机是美国德州仪器 (TI)1996年开始推向市场的一种16位超低功耗、具有精简指令集(RISC)的混合信号处理器(Mixed Signal Processor)。该系列单片机多应用于需要电池供电的便携式仪器仪表中。而却开发难度相对比较大、价格昂贵。所以在一些简单的设计中不宜采用。
方案三:
采用PIC16F877A单片机作为主控芯片。PIC16F877A是由Microchip公司所生产开发的新产品,属于PICmicro系统8位单片机微机,具有Flash程序内存功能,可反复擦写程序。但是开发成本高,难度相对大。综合上述的描述,考虑到资源的合理利用和成本以及开发的难易程度最终决定采用宏晶科技的STC89C51单片机作为主控芯片。
2.1.2 显示器件的选择
方案一:
采用LED数码管动态扫描显示。LED数码管的价格适中,对于显示数字或者简单的字母会比较合适。但是采用动态扫描法与单片机连接时占用CPU的I/O口较多,并且由于单片机的IO口输出电流不够,所以需要一个驱动电路,通过驱动电路放大电流后控制数码管,还有就是采用数码管进行显示的话显示的内容多了对于电路的焊接机会增大难得容易焊接错误。
方案二:
采用LCD1602液晶显示屏。LCD1602液晶又叫LCD1602字符型液晶。液晶显示功能强大,可以同时显示出16*2即32个字符,可包括数字、字母、符号、或者自定义字符。LCD1602液晶显示器中的每一个字符都是由5*7的点阵组成。LCD1602采用并行数据传输也可以采用串行数据传输,控制简单,和市面上的大多基于HD44780液晶的控制原理完全相同。
方案三:
采用LCD12864液晶显示屏。带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集。利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4行16×16点阵的汉字,也可完成图形显示,低电压低功耗是其又一显著特点。虽然LCD12864液晶显示的功能强大,但是显示的内容偏大造成了,显示空间的浪费,再来该液晶的成本高。
综合上述的描述,最终根据本设计中的功能要求考虑采用LCD1602液晶显示器比较合理。
2.1.3 温度传感器的选择
方案一:
使用热敏电阻作为传感器,用热敏电阻与一个相应阻值电阻相串联分压,利用热敏电阻阻值随温度变化而变化的特性,采集这两个电阻变化的分压值,并进行A/D转换。此设计方案需用A/D转换电路,增加硬件成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生较大的测量误差。
方案二:
采用模拟温度传感器AD590,该传感器的输出电流会随温度的变化而变化,从而需要设计电路转换成电压的变化,进而通过A/D转换后接到单片机中,这种方法固然麻烦,而却费用比较高,而却在电流电压转换和A/D转换中会产生误差。
方案三:
采用数字式温度传感器DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以去除A/D模块,降低硬件成本,简化系统电路。另外,数字式温度传感器还具有测量精度高、测量范围广等优点。
所以最终我们采用数字型DS18B20作为温度采集芯片。
2.1.4 数据存储芯片的选择
方案一:
采用STC89C51单片机内部EEPROM存储数据。STC89C5X芯片内部带有2*Xk字节的EEPROM功能,STC89C5X内部通过ISP/IAP技术读写内部FLASH来实现EEPROM。但是在需要将数据写单片机内部EEPROM时先要将该扇区擦除后在写入,否则无法正常的写入。所以该方案不宜使用在存储数据量大的场合。但是可以节省外围电路的搭建,也降低了成本。
方案二:
采用AT24C02存储数据。AT24C02是一个2K位串行CMOS E2PROM,内部含有256个8位字节,CATALYST公司的先进CMOS技术实质上减少了器件的功耗。AT24C02有一个16字节页写缓冲器。该器件通过IIC总线接口进行操作,有一个专门的写保护功能。适合在存储大的时候,使用简单,方便。
综合考虑本设计使用到存储空间比较小所以选择了单片机内部EEPROM进行存储。
2.2 系统总体方案
本设计采用STC89C51单片机为主控芯片,采用数字型温度传感器DS18B20检测环境温度,通过LCD1602实时显示温度值,并且能通过串口发送指令调节风扇转速。系统添加了几个按键,用户可以通过按键进行设置温度的上、下限值,并将数据保存在单片机EEPROM中做到掉电存储的功能。当所采集温度超过上限值时,蜂鸣器鸣叫、LED灯亮、风扇全速转动;当所采集温度低于下限值时,蜂鸣器鸣叫、LED灯亮、风扇停止运转;当所采集温度介于上下限温度之间时,蜂鸣器、LED灯停止工作、风扇中速运转。
本设计的具体的系统方案如下图2.1所示。

图2.1 系统方案
3 系统硬件电路设计
本章节主要介绍本设计中各个部分电路的设计原理。通过各个模块的功能描述了解其工作原理以及在设计的中作用。
3.1 STC89C51单片机系统设计
3.1.1 STC89C51的概述
STC89C51是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。STC89C51使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU和在系统可编程Flash,使得STC89C51为众多嵌入式控制应用系统提供高灵活、非常有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。
3.1.2 STC89C51单片机的最小系统
单片机最小系统说的通熟易懂的话就是以最少的元器件组成能让单片机工作起来的系统,接下来开始介绍51单片机最小系统必备的器件及其作用。
首先电源这对于一个电子产品的话是必不可少,它提供能源给系统运作,在本设计中由于51单片机的工作电压在4.5~5.5V之间都可以正常工作所以我们采用了USB电源线连接手机充电器插头或者5V的移动电源给系统进行供电。
其次晶振电路,XTAL1和XTAL2 是独立的输入和输出反相放大器,它们可以被配置为使用石英晶振的片内振荡器,或者是器件直接由外部时钟驱动。图3.1中采用的是内时钟模式,即采用利用芯片内部的振荡电路,在XTAL1、XTAL2 的引脚上外接定时元件(一个石英晶体和两个电容),内部振荡器便能产生自激振荡。一般来说晶振可以在1.2~12MHz 之间任选,甚至可以达到24MHz 或者更高,但是频率越高功耗也就越大。在本实验套件中采用的12M 的石英晶振。和晶振并联的两个电容的大小对振荡频率有微小影响,可以起到频率微调作用。当采用石英晶振时,电容可以在20 ~40pF 之间选择(本设计使用30pF);当采用陶瓷谐振器件时,电容要适当地增大一些,在30~50pF 之间。通常选取30pF 的陶瓷电容就可以了。
再来就是复位电路,复位电路分为:上电自动复位和开关复位。图3.2 中所示的复位电路就包括了这两种复位方式。上电瞬间,电容两端电压不能突变,此时电容的负极和RESET 相连,电压全部加在了电阻上,RESET 的输入为高,芯片被复位。随之+5V电源给电容充电,电阻上的电压逐渐减小,最后约等于0,芯片正常工作。并联在电容的两端为复位按键,当复位按键没有被按下的时候电路实现上电复位,在芯片正常工作后,通过按下按键使RST管脚出现高电平达到手动复位的效果。一般来说,只要RST 管脚上保持10ms 以上的高电平,就能使单片机有效的复位。图中所示的复位电阻和电容为经典值,实际制作是可以用同一数量级的电阻和电容代替,读者也可自行计算RC 充电时间或在工作环境实际测量,以确保单片机的复位电路可靠。
3.2 LCD1602液晶显示电路设计
3.2.1 LCD1602的概述
LCD1602液晶也叫LCD1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形。LCD1602液晶模块采用HD44780控制器,HD44780具有简单而功能较强的指令集,可以实现字符移动,闪烁等功能,LCD1602与单片机MCU通讯可采用8位或4位并行传输两种方式,HD44780控制器由两个8位寄存器,指令寄存器(IR)和数据寄存器(DR)忙标志(BF),显示数RAM(DDRAM),字符发生器ROMA(CGOROM)字符发生器RAM(CGRAM),地址计数器RAM(AC)。IR用于寄存指令码,只能写入不能读出,DR用于寄存数据,数据由内部操作自动写入DDRAM和CGRAM,或者暂存从DDRAM和CGRAM读出的数据,BF为1时,液晶模块处于内部模式,不响应外部操作指令和接受数据,DDTAM用来存储显示的字符,能存储80个字符码,CGROM由8位字符码生成5*7点阵字符160中和5*10点阵字符32种.8位字符编码和字符的对应关系, CGRAM是为用户编写特殊字符留用的,它的容量仅64字节,可以自定义8个5*7点阵字符或者4个5*10点阵字符,AC可以存储DDRAM和CGRAM的地址,如果地址码随指令写入IR,则IR自动把地址码装入AC,同时选择DDRAM或CGRAM,LCD1602液晶实物图如图3.4所示。
3.2.2 LCD1602的引脚说明
LCD1602液晶显示器引脚功能描述见表3-1。
表3-1 LCD1602引脚
|
排号 |
名称 |
定义 |
排号 |
名称 |
定义 |
|
1 |
Vss |
工作电压负极 |
9 |
D2 |
数据端 |
|
2 |
Vcc |
工作电压正极 |
10 |
D3 |
数据端 |
|
3 |
VL |
调节液晶显示对比度 |
11 |
D4 |
数据端 |
|
4 |
RS |
数据/命令端(H/L) |
12 |
D5 |
数据端 |
|
5 |
R/W |
读/写端(H/L) |
13 |
D6 |
数据端 |
|
6 |
E |
使能信号端 |
14 |
D7 |
数据端 |
|
7 |
D0 |
数据端 |
15 |
Bla |
背景灯正端 |
|
8 |
D1 |
数据端 |
16 |
Blk |
背景灯负端 |
2组电源:一组为液晶背光灯的电源;另一组是液晶工作的电源;两者均由5V供电。
RS:为数据/命令选择端。该引脚为高电平时进行数据传输;该引脚为低电平时进行写命令。
RW:为读/写选择端。该端口为高时液晶向外围执行读操作;该引脚为低时单片机向液晶执行写操作。
VO:为对比度调节端。在硬件上通过接一个电位器的调节端可以通过调节电位器来调节显示对比度。
E:为使能端。E引脚接收外部高脉冲将数据传送给液晶显示。
D0—D7:为8位数据总线。
3.2.3 LCD1602的工作原理
LCD1602一共具有11条指令,单片机发送这些指令到LCD1602上就可以完成一些特定的功能,比如清屏,开关显示等等。LCD1602自己带有字库在显示的时候可以直接调用字库进行显示,当然如果字库中没有的字符也可以根据需要自己自定义字符写入CGROM中,自定义字符的分辨率为5*8而却自定义字符数量有限需要合理的安排使用,最多可以自定义8个字符,将自定义字符字模写入LCD的CGROM中后就可以随意的调用,调用的方式和正常显示字符是一样的。
控制LCD1602液晶显示器只要会对LCD1602进行读状态操作、写指令操作、读数据操作、写数据操作即可具体的操作对应的引脚电平如表3-2所示。
表3-2 LCD1602操作指令对应的引脚电平
|
|
读状态 |
写指令 |
读数据 |
写数据 |
|
输入 |
RS=L,R/W=H,E=H |
RS=L,R/W=L,D0-D7=指令码,E=高脉冲 |
RS=H,R/W=H,E=H |
RS=H,R/W=L,D0-D7=数据,E=高脉冲 |
|
输出 |
D0-D7=状态 |
无 |
D0-D7=数据 |
无 |
上表中E为使能端;RS为寄存器选择,当RS=H时表示选择数据寄存器,RS=L时选择指令寄存器;R/W为信号线,R/W=H时执行读操作,R/W=L时执行写操作。
在使用时候将D0-D7连接到51单片机的P0上方便进行数据的传输,而VL口接一个可调电位器,当调节电位器位置改变时接入VL的电压也随之变化进行显示的清晰度也随之变化,所以在实际时采用电位器而不采用固定阻值的电阻就是为了能够方便的调节以使用在电压不同的场合。
3.3 DS18B20温度传感器的设计
3.3.1 DS18B20的概述
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。DS18B20的性能特点如下:独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在惟一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压范围为3.0~5.5v;零待机功耗;温度以9或12位二进制数字表示;用户可定义报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
3.3.2 DS18B20的工作原理
根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行 复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后 释放,当DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。下面表3-3为ROM指令表,表3-4位RAM指令表。
表3-3 DS18B20 ROM指令表
|
指令 |
约定代码 |
功能 |
|
读ROM |
33H |
读DS1820温度传感器ROM中的编码(即64位地址) |
|
符合ROM |
55H |
发出此命令之后,接着发出 64 位 ROM 编码,访问单总线上与该编码相对应的 DS1820 使之作出响应,为下一步对该 DS1820 的读写作准备。 |
|
搜索ROM |
0FOH |
用于确定挂接在同一总线上 DS1820 的个数和识别 64 位 ROM 地址。为操作各器件作好准备。 |
|
跳过ROM |
0CCH |
忽略 64 位 ROM 地址,直接向 DS1820 发温度变换命令。适用于单片工作。 |
|
告警搜索命令 |
0ECH |
执行后只有温度超过设定值上限或下限的片子才做出响应。 |
表3-4 DS18B20 RAM指令表
|
指 令 |
约定代码 |
功 能 |
|
温度变换 |
44H |
启动DS1820进行温度转换,12位转换时最长为750ms(9位为93.75ms)。结果存入内部9字节RAM中。 |
|
读暂存器 |
0BEH |
读内部RAM中9字节的内容 |
|
写暂存器 |
4EH |
发出向内部RAM的3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据。 |
|
复制暂存器 |
48H |
将RAM中第3、4字节的内容复制到EEPROM中。 |
|
重调 EEPROM |
0B8H |
将EEPROM中内容恢复到RAM中的第2、3字节。 |
|
读供电方式 |
0B4H |
读DS1820的供电模式。寄生供电时DS1820发送“0”,外接电源供电 DS1820发送“1”。 |
当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625℃/LSB形式表示。
当符号位s=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位s=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。输出的二进制数的高5位是符号位,最后4位是温度小数点位,中间7位是温度整数位。表3-5是一部分温度值对应的二进制温度数据。
表3-5 DS18B20输出的温度值
|
温度值 |
二进制输出 |
十六进制输出 |
|
+125℃ |
0000 0111 1101 0000 |
07D0h |
|
+85℃ |
0000 0101 0101 0000 |
0550h |
|
+25.0625℃ |
0000 0001 1001 0001 |
0191h |
|
+10.125℃ |
0000 0000 1010 0010 |
00A2h |
|
+0.5℃ |
0000 0000 0000 1000 |
0008h |
|
0℃ |
0000 0000 0000 0000 |
0000h |
|
-0.5℃ |
1111 1111 1111 1000 |
FFF8h |
|
-10.125℃ |
1111 1111 0101 1110 |
FF5Eh |
|
-25.0625℃ |
1111 1110 0110 1111 |
FF6Fh |
|
-55℃ |
1111 1100 1001 0000 |
FC90h |
3.4 风扇驱动电路的设计
本设计采用机组风扇模拟实际风扇的运作。该风扇的额定电流为0.1A,而51单片机IO口输出电流在4~20mA之间,所以采用直接控制是无法驱动的。需要添加一个电流放大电路。本设计选用L9110S驱动芯片带动风扇转动。
L9110S具有两个输入端和两个输出端,输出端接电机,输入端接单片机IO口,单片机在控制端输入两个相反的电平,就可以驱动电机正转或反转。当输入两个一样的电平,比如都输入0或都输入1,电机会处于停止状态。它有很强的电流驱动能力,每个通道能直接提供800mA的驱动电流。
本设计中驱动电路图如图3.12所示,由于L9110的IA引脚接高电平,而单片机控制口IN接L9110的IB引脚,所以当单片机IO口输出低电平,电机转动;当单片机IO口输出高电平时,电机停止。
3.5 蜂鸣器电路的设计
蜂鸣器选用5V电磁式有源蜂鸣器,由于蜂鸣器的工作电流一般比较大,以至于单片机的I/O口是无法直接驱动的,所以要利用三极管开关电路来驱动。本处选用的是8550三极管,它是一个PNP型的三极管。基极串联一个1K的电阻连接到单片机的I/O口时。当I/O口输出低电平时,三极管导通,蜂鸣器鸣叫;当I/O口输出高电平时,三极管截止,蜂鸣器停止鸣叫。
3.6 独立按键电路的设计
本设计中设置有按键电路,通过几个独立按键进行人机交互。按键通过一点连接单片机的I/O口一端连接电源地。这样设计是因为单片机的I/O在悬空没有作为输出的情况下是默认高电平的,在按键没有按下则相当于该I/O处于悬空状态。当按下后I/O口的电平就会被拉低,这样单片机只需要进行循环的检测I/O口是否有出现低电平就可以判断是否有按键按下,当然这种按键是金属解除的方式所以会有抖动纹波的情况,所以在程序中需要适当的加上短暂的延时消抖。
三个按键的功能分别为:
第一个按键:按下后进入设置上下限。
第二个按键:在设置模式下,对应参数加一。
第三个按键:在设置模式下,对应参数减一。
3.7 系统硬件测试
系统硬件电路的测试主要是检测电路是否出现漏焊、短路、断路、虚焊、一些具有方向的元件是否方向弄错、电路设计错误等情况。
对于漏焊、元件方向弄错的检测方法是将实物电路板对照着PCB图的线路,检查每一个元件和导线在实物上是否有出现。如果发现没有或者对不上的情况下需及时的重新对照确定漏焊时及时的补焊。
对于短路、断路、虚焊这些情况采用数字万用表。将数字万用表打到二极管档位,然后通过红表笔和黑表笔碰一起,万用表会发出鸣叫警示。根据这个原理就可以用来检测短路、断路、虚焊。在需要检测的元件或导线的两端用两根表笔检测,如果导通蜂鸣器会鸣叫,如果断开蜂鸣器不叫。这样根据我们所需要检测的情况,在结合检测的现象就可以测出线路是否有问题。
4 系统软件部分设计
4.1 软件开发环境的介绍
本设计采用 Keil μVision4进行编程实现。Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
4.2 系统重要函数的介绍
4.2.1 主函数的设计
主函数void main()是程序的入口函数,一个完整的程序必须要包含该函数。在该函数的开头一般都是先对单片机和一些外围器件需要进行初始化才能正常使用的器件进行初始化和重新赋值一些变量,初始化完后进去死循环,如果不进入死循环程序运行一次就会退出,如果加入死循环程序就会不断地进行循环达到实时检测执行的目的。在主程序的设计中需要注意的是主函数中不宜放过多的代码,具体的代码一般都是采用函数进行封装然后在主函数进行调用,这样也可以方便阅读修改。
4.2.2 LCD1602显示函数的设计
LCD1602的显示只需要严格的按照厂家的时序要求进行编程就可以完成显示。LCD602的液晶显示首先需要将需要显示地方的地址通过命令写入,然后将数据按顺序的进行写入即可。在写入地址后显示第一个内容后地址会自动加一。函数名lcd1602_write_character(uchar x,uchar y,uchar *p),参数为x,y,*s,其中的x,y表示在液晶显示屏上的位置坐标,*s是需要显示的字符数组。软件根据输入需要显示的位置坐标计算出地址。
4.2.3 DS18B20温度采集函数的设计
首先需要对温度传感器DS18B20进行采集温度需要在主函数开始的时候先对DS18B20进行初始化,初始化的目的是配置传感器的寄存器使DS18B20的转换精度为12位。初始化完成后就可以对DS18B20进行操作读取温度。对DS18B20读取温度先需要让DS18B20复位然后如果总线上只有一个传感器的话可以跳过读系列号直接进行启动温度转换,然后在进行一次复位同样跳过系列号的匹配,然后发送读取温度指令,最后读取温度寄存器。读取完后将数据进行转换成实际温度即可。
4.3 系统软件测试
测试所需的工具:KEIL软件、系统硬件、PL2303下载器等。
系统的软件方面通过KEIL软件进行编写,将编写好的程序生成.HEX文件后通过PL2303下载器下载到单片机中。通过观察整个系统运行的状态,然后进行反复的修改调试程序,最终得到一个完善的程序。
在系统软件调试上主要遇到以下几个问题:
(1)在向LCD1602液晶发送清屏指令的时候,LCD1602并未成功的清楚屏幕。
解决方法:通过查阅LCD1602的使用手册,得到清屏的指令的确是0x01和程序上写的完全相同,而却显示屏可以显示出内容这表明程序发送指令是没有错误的,但是显示并未清屏。于是怀疑是否发送了清屏指令后里面进去下一个内容的显示,而LCD1602的处理速度不够,所以并未正真的执行清屏指令。通过添加40ms的延时后,重新下载进程序后发现清屏指令被执行了。通过仔细的阅读手册发现,LCD1602清屏的确需要1.64ms的执行时间,最终程序采用了4ms的延时。
(2)无法向单片机内部的EEPROM正确存储数据,当时数据会变。
解决方法:通过使用现有的显示器件进行观察发现第一次的时候数据为0x00然后存储0xf0进去后断电在上电读取出来的数据的确为0xf0,然后在进行存储0x0f进去后断电在上电读取出来的数据竟然变成了0xff,之后存储什么数据读取出来的都是0xff。最后通过查阅STC89C5X单片机的芯片手册发现51单片机的EEPROM在写入数据之前需要先进行擦除扇区,因为在在原本地址如果是0的可写入0和1,如果为1时只能写入1而0是写入不了的,最终发现这个问题后及时的修改程序在每次存储数据之前先进行擦除一下所要使用的扇区,最终解决了该问题。
5 结论
经过制作设计的这段时间的努力终于将本设计方案要求基本实现。由于时间、水平和经验有限,设计的作品还存在着一些的不足之处。
要想实现一个系统,那必须对整个系统的设计有整体的思路。设计电路是系统功能实现的前提,合理的选用芯片十分关键,合理设置元器件参数更是一个难点。所以需要有扎实的知识基础,既懂软件又懂硬件,会写程序能搭电路,对常用元器件比较了解。焊接电路路需要扎实的基础功及较强的耐心,调试电路是必须认真细心。如有问题,耐心排查,任何小的问题都会影响系统的最终功能,所以必须注意细节,同时完成设计需要投入大量时间和精力,需要极强的毅力。整个设计过程中团队的合作最为重要、各队员既要完成好各自负责的模块也要小组内成员互相协作。在这次的实训中遇到了很多困难,也很努力的去解答。终于明白了“世上无难事,只怕有心人”的意义所在。在遇到问题时首先不能畏惧或躲避,要通过不断的学习及资料的收集来解决问题。成功没有捷径,上帝只垂青那些为目标执着追求的人。
对于这次设计来说既是一次机遇,又是一次挑战。在这次的设计过程中,本次实训学到了很多东西,通过自己的实践,增强了动手能力。通过实际工程的设计也使我了解到书本知识和实际应用的差别。在实际应用中遇到很多的问题,这都需要我们对问题进行具体的分析,并一步一步地去解决它
本设计采用STC89C51单片机,结合DS18B20温度传感器检测环境温度,通过LCD1602液晶实时显示,并能调节风扇转速。系统具备温度上下限设置功能,超过设定值时会触发蜂鸣器和LED灯。硬件电路包括主控芯片选择、显示器件、温度传感器和数据存储等模块的设计,软件部分涉及LCD显示和温度采集函数。
5434

被折叠的 条评论
为什么被折叠?



