序
毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。
为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是:基于51单片机的室内温度控制系统的设计
1 系统硬件电路设计
1.1 AT89C51
单片机选用ATMEL公司的可在线编程的AT89C51,用于温度采集及数据通讯。AT89C51是一个功耗低,性能高的CMOS 8位单片机,片内含8k Bytes ISP(In-system programmable)Flash只读程序存储器,芯片内集成了通用8位中央处理器和ISP Flash存储单元。AT89C51具有如下特征:40个引脚,4k Bytes Flash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中级优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
AT89C51有3个并行I/O端口,P0:P0.0~P0.7、P1.0~P1.7、P2.0~P2.7。P0端口在没有片内存储器时,可以作为普通I/O口使用,外接存储器时作为地址线/数据线使用。P1端口可以作为普通I/O使用,同时P1.0、P1.1、P1.5~P1.7还具备特殊功能,如表3.12所示。P2端口在没有片外存储器时,可以作为普通I/O使用,外接存储器作为高8位地位使用。
表 1.11 AT89C51 P1端口的特殊功能
引脚 |
特殊功能 |
P1.0 |
T2:定时器/计数器2的外部计数器输入 |
P1.1 |
T2EX:定时器/计数器2的捕捉/重载触发及方向控制 |
P1.5 |
MOSI:用于在线编程(ISP) |
P1.6 |
MOSI:用于在线编程(ISP) |
P1.7 |
SCK:用于在线编程(ISP) |
表 1.12 AT89C51 P3端口的特殊功能
引脚 |
特殊功能 |
P3.0 |
RXD(串行口输入) |
P3.1 |
TXD(串行口输入) |
P3.2 |
INT0(外部中断输入0) |
P3.3 |
INT1(外部中断输入1) |
P3.4 |
T0(定时器0外部输入) |
P3.5 |
T1(定时器1外部输入) |
P3.6 |
WR(外部数据存储器写控制) |
P3.7 |
RD(外部数据存储器读控制) |
此方案以AT89C51为核心,通过DS18B20检测房间温度,将信号传输至单片机,用思维LED数码管显示温度,同时通过将检测的温度与标准设定温度的偏差来控制电阻丝通断时间的长短,从而达到恒温控制的目的。
AT89C51单片机在本房间温度监控系统中主要用于通讯及温度采集。P3.0接DS18B20。P0口用于温度显示接口的设计。单片机与控制电路共用一个外部时钟,采用片内存储器,设有上电复位功能。单片机最小系统如图1.2.1:
图 1.2.1单片机最小系统图
1.2传感器接口电路设计
DS18B20具有系统简单、精度高、连接方便、占用口线少等优点,但在实际应用中也需要注意如下几个方面的问题:
(1)系统的硬件虽然简单但还需要相对复杂的软件进行补偿,在对DS18B20进行读写编程时,一定严格的保证读写时序,否则测温结果将不能被读出。
(2)当单总线上所挂DS18B20超过8个小时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。
(3)连接DS18B20的总线电缆有长度限制。在试验中,如果采用普通信号电缆传输长度超过50cm,读取的温度数据就会发生错误。如果将总线电缆改为双绞线带屏蔽电缆,正常通讯距离将达到150m。
DS18B20有PR-35和SOIC两种封装形式,管脚排列如表1.2.1所示。本系统选用PR-35封装形式。DS18B20返回温度值虽然只有9位,如表1.2.1所示。
表 1.2.1 DS18B20管脚排列
管脚 |
管脚定义 |
说明 |
|
8脚SOIC |
3脚PR-35 |
||
2 |
1 |
GND |
接地 |
1 |
2 |
I/O |
数据输入端 |
8 |
3 |
VCC |
电源 |
3 4 5 6 7 |
NC |
空脚 |
表 1.2.2 DS18B20温度值表示方法
MSB LSB
D15 |
D14 |
D13 |
D12 |
D11 |
D10 |
D9 |
D8 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
D9为符号位,0表示正,1表示负,高字节的其它位(D10~D15)是以符号位的扩展位表示的;D0~D8为数据位,用二进制补码表示。温度是以1/2℃LSB形式表示的。表1.2.3为数值和温度的关系。
表 1.2.3 DS18B20数值和温度的关系
温度 |
数据(二进制) |
数据(十六进制) |
+125 |
0000 0000 1111 1010 |
00FAH |
+25 |
0000 0000 0011 0010 |
0032H |
+0.5 |
0000 0000 0000 0001 |
0001H |
0 |
0000 0000 0000 0000 |
0000H |
-0.5 |
1111 1111 1111 1111 |
FFFFH |
-25 |
1111 1111 1100 1110 |
FFCEH |
-55 |
1111 1111 1001 0010 |
FF92H |
因房间环境温度不能出现负温情况,因此本系统不考虑负温情况,这样在硬件选取上可以考虑选用商业级器件,不必要选用工业级器件,可以大幅度降低成本。因此单片机读取温度信息后,只需将低字节(D0~D8)送入上位机和控制电路即可。
1.3LED显示接口电设计
选用四位数码管动态实时显示房间温度,显示精度为0.1℃。具体电路图如图3.3:
图 1.3显示电路图
1.3.1 LED数码管
LED显示管即为发光二极管显示器,具有显示醒目、成本低、配置灵活、接口方便等特点,单片机应用系统常用它来显示系统的工作状态和采集的信息输入数值等。
LED显示管按其发光管排布结构的不同,可分为LED数码管显示其和LED点阵显示器。LED数码管主要用来显示数字及少数字母和符号,LED点阵显示器可显示数字、字母、汉字和图形等。LED点阵显示器虽然显示灵活,但其占用的单片机系统软件、硬件资源远大于LED数码管。因此除专门的应用大屏幕LED点阵显示或有特殊显示要求场合外,几乎所有单片机应用系统都采用LED数码管显示。本系统选用的是LED数码管显示器。
数码管显示器共有两种工作方式——静态显示方式和动态显示方式。静态显示方式程序非常简单,占用CPU时间资源很少,只是在显示字符改变时调用一下显示程序。但硬件电路繁多,每个数码管需要一个8位I/O口、一个8位驱动、8个限流电阻。一般用于数码管位数较少的场合。LED静态显示由于使用的元器件较少,在数码管显示器较多的场合,电路显得繁琐,为了简化线路,减少成本,本系统选用的是动态扫描显示方式。
动态扫描显示方式的工作原理是:逐个的循环点亮各位显示器,也就是说在任意时刻只有1位显示器在显示。为了使人看到所有显示器都在显示,就得加快循环点亮各位显示器的速度(提高扫描频率),利用人眼的视觉残留效应,给人感觉到与全部显示器持续点亮的效果一样。动态扫描显示电路如图1.3.1:
图1.3.1动态扫描图
1.4温度控制电路的设计
图 1.4温度控制电路
将温度控制电路与单片机的复位接口相连,通过调节脉冲宽度来控制双向可控硅的通断。当脉冲宽度变宽(占空比增大)时,双向可控硅的导通时间延长,电阻丝加热时间延长从而使温度升高。反之脉冲宽度变窄(占空比减小)时,双向可控硅的导通时间缩短,电阻丝的加热时间缩短使得温度降低。以此方法来控制温度的恒定不变。
2 系统软件调试
2.1目测
1.有无短路处。
2.对照电路图看有无接错、漏接处。
3.有无虚焊处。
4元件是否都对
2.2 硬件调试
首先应进行上电前的准备。为了防止硬件的损坏,应在电路板上电前进行电路检查,包括:对芯片的焊接方向进行检查,对芯片的引脚进行短路和断路检查。在经过检查确认芯片的焊接没有任何问题的情况下,进行上电检查,在电源打开后,先判断电路是否存在异常,如出现芯片过热等现象,应及时切断电源,检查电路故障。在上电无异常状况的前提下,可以用万用表和示波器进行测量。首先测量电源芯片的输出电压是否正常,然后用示波器分别测量各个主要芯片电源引脚,察看电源的波形情况,如有纹波,则在预先留出的位置上焊上退耦电容以消除纹波,保证芯片工作正常。电源测量完毕后,进一步用示波器测量有源晶振的输出脚,其输出是频率为8MHz的波形(非方波,类似正弦波)。在确定晶振起振后,按住复位键,使单片机始终保持在复位状态,同时测量其各个引脚的电平情况,并同数据手册上表述的复位时的芯片引脚状态进行比对,由此可判断单片机是否正常。确认单片机正常之后就可以通过仿真器连接用户板进行调试。
2.3 软件的调试
由于软件的编写都是根据各个模块进行的,我们在进行软件的系统模拟调试时应,先确认硬件的接口标记是否在软件程序中一一对应,而且要检测所编写的软件有没有知识性的错误。在觉得基本没有问题后我们通过电脑将程序编译进入系统核心AT89S52单片机,检验软件与硬件各部分是否协调的工作。出现问题时我们要耐心的检查程序并作出适当的修改,直到软件系统的完全契合硬件电路,那我们软件就调试成功了。
1、测试环境
环境温度28摄氏度,室内面积20平方米
测试仪器:数字万用表,温度计0----100摄氏度
2、测试方法
使系统运行,采用温度计同时测量室内度变化情况,得出系统测量的温度。
3、测试结果
设定温度由0摄氏度到40摄氏度
标定温差<=1摄氏度 调节时间 15s(具体视现场情况)
静态误差<=0.5摄氏度 最大超调量1摄氏度
4、通过测试分析,对于实际室内的温度控制,可以再提出以下 2 点方法 :
Ⅰ增加传感器个数,对各个温度传感器采集的数据进行求算术平均,可得到较为准确的温度值。
Ⅱ对实际室内的温度控制,可采用功率较大的电炉,并且通过风扇对箱内温度进行充分搅和,降温设备可采用空气压缩机等制冷设备。
2.4 注意事项
(1)测驱动电路的过程中发现数码管不能正常显示的状况,经检验发现主要是由于接触不良的问题。其中包括线的接触不良和芯片的接触不良,在实验过程中,数码管有几段时隐时现。用万用表检测发现有线接触不良,重焊后就可正常显示。而芯片接触不良用万用表欧姆档检测有几个引脚本该相通的地方却未通,其解决方法为把芯片拔出正对万能板孔均匀用力插入。
(2)由于焊接时的大意损坏了元件,在调试是我们怎么都找不到问题的所在,我们是用排除法一个一个元件的测试的找出损坏的元件,重新换上新的元件,故障得以解决。
(3)还有关于程序调试过程中出现的问题。执行程序是发现程序执行不稳定,排除软件的错误外,经老师的指导才发现单片机的EA管脚没有接地。因为次程序只用到片内程序存储器,所以在程序执行时一定要把管脚接的,这样程序才能只执行片内的,不然程序会乱跳,从而导致程序执行不稳定。
(4)接三极管的过程中,发现电路不管程序是什么,数码管都是显示8字,经查除发现原来是三极管的极端弄错了,从新调整极端顺序。
(5)在电路调试时由于我们选用的是对射型的光电传感器由于没正对好使的调试一度中断,最后我们通过反复的调试解决了问题
(6)调试时由于线路的繁杂,没有仔细的找到对应部分的线路,使的调试的结果与预期出现很大的误差,我们通过梳理线路后就调试成功了并达到了预期的效果。
(7)在调试时几个模块的电路调试都不是很好,我们就要对线路的硬件连接做仔细的检查,调试的时候我们首先要确定连接的电路没有错误,各个元件管脚间没有虚连,那样我们的调试才会更顺利。