温度检测实训报告.docx
《温度检测实训报告.docx》由会员分享,可在线阅读,更多相关《温度检测实训报告.docx(22页珍藏版)》请在冰豆网上搜索。
温度检测实训报告
电子系统综合设计报告
设计课题:
温敏电阻数字温度计的设计
专业班级:
15电气工程
(1)班
学生姓名:
傅XX
指导教师:
罗XX
设计时间:
2016.12.5-2016.12.14
物理与电子工程学院
温敏电阻数字温度计的设计
一、设计任务与要求
设备整机结构及硬件电路框图根据设计要求与设计思路,设计硬件电路框图如下图所示,按照系统设计功能的要求,确定系统由4个模块组成:
主控制器、测温电路、显示电路和报警电路。
AT89C51对LCD1602初始化、温度采集、温度转换、液晶显示屏显示、蜂鸣器的驱动。
本装置详细组成部分如下:
a.主控模块:
AT89C51片机;
b.测温电路:
103温敏电阻;
c.显示电路:
LCD1602液晶显示屏;
d.报警电路:
无源蜂鸣器。
5.设计目标:
(1)搭建一个单片机最小系统;
(2)通过温敏电阻检测温度,拟合曲线频率和温度的关系,通过程序,将温度显示在LCD1602上。
二、方案设计与论证
1.单片机选择
采用STC89C52芯片,STC89C52是我们较为常用的一种单片机,对其烧写调试都比较熟悉,所以选之为本次使用的单片机,避免给本次设计带来新的设计压力。
2.测温电路:
103温敏电阻、555震荡电路
103温敏电阻的特点:
1)搭配555振荡电路即可产生一定频率的脉冲;
2)电气性能佳,可焊性好;
3)测量温度范围在-40℃到+125℃之间;
4)价钱合适,性价比高
热敏电阻与温度对照表:
已知条件
B常数
3380
单位
k
创建人:
LXF 日期:
2008-6-11
R值
10
计算公式:
Rt =R*EXP(B*(1/T1-1/T2)
说明:
1、Rt 是热敏电阻在T1温度下的阻值;
2、R是热敏电阻在T2常温下的标称阻值;
3、B值是热敏电阻的重要参数;
4、EXP是e的n次方;
5、这里T1和T2指的是K度即开尔文温度,K度=273.15(绝对温度)+摄氏度;
温度T1
阻值Rt
温度T1
阻值Rt
温度T1
阻值Rt
温度T1
阻值Rt
-40
235.83075593
2
25.795966881
44
5.070437823
86
1.4580779678
-39
221.67240981
3
24.673611964
45
4.9034011598
87
1.4204703156
-38
208.47382602
4
23.607666567
46
4.7428627464
88
1.3840329328
-37
196.16305694
5
22.594945784
47
4.5885344983
89
1.3487237721
-36
184.67403487
6
21.632463086
48
4.4401425688
90
1.314502486
-35
173.94605364
7
20.717416866
49
4.2974265762
91
1.2813303512
-34
163.92329912
8
19.847177965
50
4.1601388769
92
1.2491701959
-33
154.55442376
9
19.019278111
51
4.028043881
93
1.2179863314
-32
145.79216068
10
18.231399185
52
3.9009174074
94
1.1877444861
-31
137.59297352
11
17.481363273
53
3.7785460774
95
1.1584117439
-30
129.91673843
12
16.767123414
54
3.6607267421
96
1.1299564843
-29
122.72645506
13
16.086755023
55
3.5472659437
97
1.1023483265
-28
115.9879839
14
15.438447903
56
3.4379794071
98
1.075558075
-27
109.66980711
15
14.820498836
57
3.3326915609
99
1.0495576687
-26
103.74281093
16
14.231304683
58
3.2312350849
100
.024*******
-25
98.180087362
17
13.669355966
59
3.1334504839
101
0.99981952932
-24
92.956753436
18
13.133230897
60
3.0391856852
102
0.97603091812
-23
88.049786313
19
12.621589814
61
2.9482956581
103
0.95293030945
-22
83.437872835
20
12.133170007
62
2.8606420555
104
0.93049462625
-21
79.1012721
21
11.666780884
63
2.7760928748
105
0.90870166515
-20
75.021689902
22
11.221299475
64
2.6945221372
106
0.88753005982
-19
71.182163924
23
10.795666238
65
2.6158095855
107
0.86695924602
-18
67.566958717
24
10.388881138
66
2.539840398
108
0.84696942817
-17
64.161469566
25
10
67
2.4665049172
109
0.8275415475
-16
60.952134444
26
9.628131096
68
2.3956983947
110
0.80865725166
-15
57.926353332
27
9.2724319585
69
2.3273207488
111
0.79029886564
-14
55.072414241
28
8.9321064055
70
2.261276335
112
0.77244936406
-13
52.379425349
29
8.6064017588
71
2.19747373
113
0.75509234467
-12
49.837252709
30
8.2946062436
72
2.1358255255
114
0.73821200302
-11
47.436463044
31
7.9960465557
73
2.0762481341
115
0.72179310832
-10
45.168271181
32
7.710085586
74
2.0186616054
116
0.70582098028
-9
43.024491729
33
7.4361202907
75
1.9629894509
117
0.69028146703
-8
40.997494622
34
7.1735796969
76
1.9091584793
118
0.67516092404
-7
39.080164223
35
6.9219230346
77
1.8570986391
119
0.66044619385
-6
37.26586165
36
6.6806379874
78
1.8067428702
120
0.64612458683
-5
35.54839008
37
6.4492390516
79
1.7580269629
121
0.63218386263
-4
33.921962772
38
6.2272659994
80
1.7108894244
122
0.61861221257
-3
32.381173574
39
6.0142824362
81
1.6652713514
123
0.60539824268
-2
30.920969714
40
5.809874448
82
1.62111631
124
0.59253095752
-1
29.536626693
41
5.6136493318
83
1.5783702214
125
0.57999974472
0
28.223725086
42
5.4252344036
84
1.5369812533
126
0.56779436007
1
26.978129124
43
5.2442758792
85
1.4968997166
127
0.55590491342
555振荡电路的特点:
电源接通时,555的3脚输出高电平,接至单片机T0口。
同时电源通过R1R2向电容C充电,当C上的电压到达555集成电路6脚的阀值电压(2/3电源电压)时,555的7脚把电容里的电放掉,3脚由高电平变成低电平。
当电容的电压降到1/3电源电压时,3脚又变为高电平,同时电源再次经R1R2向电容充电。
这样周而复始,形成振荡。
电路简单并且稳定性好。
3.显示模块的选择:
LCD1602液晶显示
LCD1602特点:
a.耗电量较传统CRT相比较小
b.体积轻巧,不占地方
c.显示内容丰富
d.可以精简为四线传输
各个拐角作用如下表:
4.报警电路:
蜂鸣器
蜂鸣器优点:
1.程序控制方便
2.频率可调
三、单元电路设计与参数计算
1.振荡电路的设计
晶体和电容决定了单片机的工作时间精度为1微秒。
晶体可在1.2-12MHz
之间选择。
由于本次设计涉及到串口通信模块,考虑其波特率设置问题,所以本次设计采用12MHz的石英晶体片。
对电容无严格要求,但它的取值对振荡频率输出的稳定性、大小及振荡电路起振速度有一点影响。
C1和C2可在20-100PF之间取值,一般情况取20PF。
振荡电路的电路图如图1所示。
Y1为12MHz的晶振,C1与C2是22PF的普通电容。
C1、C2、Y1三者一起构成了石英振荡器。
图1:
晶振模块
2.显示电路的设计
1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。
它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。
1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
市面上字符液晶大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。
具体电路如图3所示:
图2:
LCD1602
3.测温电路的设计
通过555定时器和103温敏电阻结合,设计测温电路。
具体电路如图3所示:
图3:
测温模块
4.报警电路的设计
连接一个无源蜂鸣器在设计需要的情况下进行报警。
其具体电路如图4所示:
图4:
报警电路模块
五、原理图、PCB、仿真运行图及元件清单(附录)
六、硬件设计调试
1.检测元器件
在领到元件后,我们必须首先确保所领的元件都是能正常工作的,从而能减少焊接后的许多调试的麻烦。
如何检测元器件是否能正常工作呢,我觉得最好的方法就是将器件放在成品的电路板上测试,以验证其是否能正常工作时最好的方法。
若没有成品电路,我们则只能做一些最基本的外科式的检测,如用电压表检测其引脚测试其阻抗,以及接上电源后其,各个引脚的电压是否正常。
2.焊接及调试
在单面板上涂一层助焊剂,对照原理图将元件合理安装在单面板上,检查元件位置是否正确。
检查无误后,用电烙铁将每个元件用焊锡焊牢,保证每个元件不虚焊。
在焊元件时根据不同元件耐热性能尽量减少焊接时间。
焊集成块时,先焊插槽。
焊接完毕后用万用表检查是否短路和断路。
通电后检测各个引脚上的电压是否与期望值相符或相近。
七、软件设计调试
1.程序流程图:
图8:
实物图
八、结论与心得
在做之前,我以为很简单,就像以前做物理实验一样,做完实验能够两下子就将实验报告做完。
直到板子做出来,我才知道其实并不容易做,但学到的知识与难度成正比,使我受益匪浅。
做的时候一定要一步一步来,仿真要通过了才能进行下一步实物的制作。
期间学到了电容的读数,因为电容使用的不正确,所以一直无法达到预期效果。
程序部分我学到一个很方便的显示语句比原先书上的简单很多。
两周的实训让我学到了不少使用的知识,更重要的是,这个过程,还有思考问题的方法,这是通用的。
期间培养了良好的工程素质和科学道德,例如合作精神、交流能力、独立思考、测试前沿信息的捕获能力等;提高了自己动手能力,培养理论联系实际的作风,增强创新意识。
经过这次实训设计,我觉得自己学到了不少东西。
以前我们基本上是学习书本上的知识,只懂得理论,通过这次实际的操作和锻炼,学会了怎样查阅资料和利用工具书,怎样制作电路图。
当在设计过程中需要用一些不曾见过的东西或不曾学过的知识时,我就会去有针对性地进行查找资料,然后加以利用,把它搞清楚,以提高自己的应用能力,而且还能增长自己见识,补充最新的专业知识,并学会了用PROTEL软件画电路图。
通过本次设计,我觉得我还需要进一步的学习,特别在软件程序方面更要重视,以便在以后的学习或工作中,能够学有所用。
附录
附录1:
总原理图
附录2:
PCB图
附录3:
+LCD1602
元件清单
附录4:
仿真运行截图
附录5:
程序清单:
/****************************************************************
//频率检测,得到电阻,得到温度
#include
#include
#include
//#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitrs=P2^0;
sbitrw=P2^1;
sbitep=P2^2;
sbitbeep=P2^3;
uchardispcount,a;
//uchartem;
//ucharres;
//ucharm,n,l;
ucharT0count,timecount;
bitflag;
floatx,y;//频率x,温度y
//ucharcodedis1[]={"rate:
"};
//ucharcodedis1[]={"rate:
"};
//ucharcodedis2[]={"tem:
"};
voiddelay(uintms)
{
uinti;
while(ms--)
{
for(i=0;i<120;i++);
}
}
voidcmp()
{
if(flag==1)
{
flag=0;
x=T0count*65536+TH0*256+TL0;//频率x
//if(x>9999)dispcount=x/10;
//if(x>99999)dispcount=x/100;
TH0=0;
TL0=0;
//TH1=(65536-50000)/256;
//TL1=(65536-50000)%256;
timecount=0;
T0count=0;
TR0=1;
//TR1=1;
y=22.487*(log10(x))/(log10(exp
(1)))-121.44;
}
}
voidtimer0()interrupt1
{
T0count++;
}
voidtimer1()interrupt3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
timecount++;
if(timecount==20)
{
TR0=0;
//TR1=0;
flag=1;
timecount=0;
}
}
voidTime_init()
{
TMOD=0x15;
TH0=0;
TL0=0;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
ET0=1;
ET1=1;
EA=1;
TR1=1;
TR0=1;
}
ucharBusy_Check(void)
{
ucharLCD_Status;
rs=0;//忙检状态
rw=1;//忙检状态
ep=1;
_nop_();
_nop_();
_nop_();
_nop_();
LCD_Status=P0&0x80;//最高是0
ep=0;
returnLCD_Status;
}
voidlcd_wcmd(ucharcmd)
{
while(Busy_Check());
rs=0;
rw=0;
ep=0;
_nop_();
_nop_();
P0=cmd;
_nop_();
_nop_();
_nop_();
_nop_();
ep=1;//产生一个上升沿交换数据
_nop_();
_nop_();
_nop_();
_nop_();
ep=0;
}
voidlcd_wdat(uchardat)
{
while(Busy_Check());
rs=1;
rw=0;
ep=0;
P0=dat;
_nop_();
_nop_();
_nop_();
_nop_();
ep=1;
_nop_();
_nop_();
_nop_();
_nop_();
ep=0;
}
voidlcd_init(void)//初始化
{
lcd_wcmd(0x38);
delay
(1);
lcd_wcmd(0x0c);//光标不闪烁
delay
(1);
lcd_wcmd(0x06);//读写后指针加一!
!
delay
(1);
lcd_wcmd(0x01);//清屏
delay
(1);
}
voidlcd_string(ucharlin,uchark[])//lin是位置,k[]是字符数据
{
chari=0;
lcd_wcmd(lin+0x80);//显示位置
while(k[i])
{
lcd_wdat(k[i++]);//写字符数据
}
}
voidLCD_disp()
{
uchartab1[12]={0};
uchartab2[12]={0};
if((y<38)&(y>0))
{
sprintf(tab1,"pinlv:
%.2fHz",(float)x);//把数据写入某个字符串缓冲区,就是前面的tab1
lcd_string(0x00,tab1);
sprintf(tab2,"wendu:
%.2fC",((float)y));
lcd_string(0x40,tab2);
}
else
{
beep=0;
delay
(1);
beep=~beep;
delay
(1);
sprintf(tab1,"warning!
!
!
");
lcd_string(0x03,tab1);
delay(10);
lcd_wcmd(0x01);//清屏
delay
(1);
}
}
voidmain(void)
{
lcd_init();
delay(10);
Time_init();
delay(10);
while
(1)
{
cmp();
LCD_disp();
}
}