一.实训目的:
同学们已经掌握了单片机基本的使用方法,但是教材上的例子比较简单,扩展的空间不大,因此此次实训的目的是为了加强同学们对单片机开发流程的认识,加深对单片机I/O口扩展与外围器件的使用,加强同学们的职业素养,加强同学们的实际动手能力与调试能力,从而实现从理论到实践的升华。
二.实验设备:
1.单片机实验板
2.计算机
3.ISIS 7 Professional 、SuperPro等相关调试编程软件
4. 5V电源
5. 烧录器
三. 实训要求:
本次实训的项目是使用单片机制作一个数字温度计,2位7段数码管用以显示两位温度数据。实训过程先使
用仿真软件实现电路的仿真,再使用万用板焊接电路,实现功能。要求仿真通过,实训态度认真,制作电路整洁,能实现功能。
设计要求:使用热敏电阻作为温度传感器,单片机作为处理芯片,根据佛山的气候,要求温度显示数据范围为从0℃~45℃,分辨率为1℃,数码管显示采用动态扫描显示方式。
四.实训电路:
五.设计过程:
根据开发的要求,热敏电阻作为温度传感器,必须使用直流偏置电路和AD转换器,单片机接收AD转换器的数据,对照预先做好的温度数据查表,查到了相应的温度数据,送到数码管动态显示。硬件结构图如下图。
数码管
51单片机
数据
AD转换器
电压
热敏电阻偏置电路
控制
因此该系统重点解决的问题是热敏电阻的使用与AD转换器的使用,而多位7段数码管的动态显示已经非
常熟悉了,因此不做过多的阐述。下面对一些重点问题进一步进行分析。
1.热敏电阻:
热敏电阻器有NTC与PTC两种,NTC是Negative Temperature Coefficient的缩写,意思是负的温度系数,泛指负温度系数很大的半导体材料或元件,所谓NTC热敏电阻器就是负温度系数热敏电阻器。它是以锰、钴、镍和铜等金属氧化物为主要材料,采用陶瓷工艺制造而成的。这些金属氧化物材料都具有半导体性质,因为在导电方式上完全类似锗、硅等半导体材料。温度低时,这些氧化物材料的载流子(电子和孔穴)数目少,所以其电阻值较高;随着温度的升高,载流子数目增加,所以电阻值降低。NTC热敏电阻器在室温下的变化范围为100~
1M,温度系数为−2%~−6.5%。NTC热敏电阻器可广泛应用于温度测量、温度补偿、抑制浪涌电流等场合。
NTC热敏电阻专业术语:
(1)零功率电阻值R T()
R T指在规定温度T时,采用引起电阻值变化相对于总的测量误差来说可以忽略不计的测量功率测得的电阻值。
电阻值和温度变化的关系式为
R T = R N expB(1/T − 1/T N)
R T:在温度T(K)时的NTC热敏电阻阻值。
R N:在额定温度T N(K)时的NTC热敏电阻阻值。
T:规定温度(K)。
B:NTC热敏电阻的材料常数,又叫热敏指数。
exp:以自然数e为底的指数(e = 2.71828…)。
该关系式是经验公式,只在额定温度T N或额定电阻阻值R N的有限范围内才具有一定的精确度,因为材料常数B本身也是温度T的函数。
(2)额定零功率电阻值R25()
根据国家标准规定,额定零功率电阻值是NTC热敏电阻在基准温度25℃时测得的电阻值R25,这个电阻值就是NTC热敏电阻的标称电阻值。通常所说的NTC热敏电阻多少阻值,亦指该值。
(3)材料常数(热敏指数)B值(K)
B值被定义为
R T1:温度T1(K)时的零功率电阻值。
R T2:温度T2(K)时的零功率电阻值。
T1,T2:两个被指定的温度(K)。
对于常用的NTC热敏电阻,B值的范围一般为2 000K~6 000K。
本次实训所使用NTC(负温度系数)热敏电阻型号为MF58-503-390,其标称阻值R25为50KΩ,材料常数B值为3900K(见型号的最后的三位数,补0)。
根据上述公式,我们可以推算出MF58-503-390在0~99℃的电阻值,可以使用excel表格公式推算,十分方便,当然也可以参见课本的数据表格。
(4)热敏电阻偏置电路
热敏电阻本身是无源元件,只是温度变化导致电阻值变化,因此使用时必须外接偏置电路,从而实现温度变化导致电压(电流)的变化。最理想的情况是使用电流源串联热敏电阻,电流恒定,电阻变化直接导致热敏电阻两端电压与热敏电阻呈线性变化,但是电流源电流相对复杂,使用的元器件太多,因此在温度计这样精度不高的场合并不适合。
简单的偏置电路可以使用右图的电路,电路简单,而且线性化较好,比较适合于简单的测温电路。因此我们采用这种偏置电路。
2.AD转换器:
本次实训使用ADC0809芯片,在设计电路的时候一定要预先规划好0809的使用方式,具体使用查询方法、中断方法还是定时访问方法可以自己选择,因此电路的灵活性很强,编程也随着硬件变化而变化。3. 数码管显示
数码管显示使用动态扫描方式,为了减少干扰和提高单片机的稳定性,驱动数码管使用一个74LS04(非门)驱动。
六.实训程序:
ORG 0000H
LOOP: CLR P2.2
SETB P2.2
JNB P2.1,$
CLR P2.0
MOV A,P0
SETB P2.0
CLR C
SUBB A,#2CH
MOV DPTR,#TEMPTAB
MOVC A,@A+DPTR
SETB P3.1
SETB P3.2
MOV B,#10
DIV AB
MOV R3,A
MOV R4,B
MOV DPTR,#DIGITTAB
MOV A,R3
MOVC A,@A+DPTR
MOV P1,A
CLR P3.2
ACALL DELAY
MOV A,R4
MOVC A,@A+DPTR
SETR P3.2
MOV P1,A
CLR P3.1
ACALL DELAY
AJMP LOOP
DELAY: MOV R6,#2
D1: MOV R7.#250
D2: NOP
DJNZ R7,D2
DJNZ R6,D1
RET
DIGITTAB:
DB 0C0H
DB 0F9H
DB 0A4H
DB 0B0H
DB 099H
DB 092H
DB 082H
DB 0F8H
DB 080H
DB 090H
DB 08EH
TEMPTAB:
单片机编程100例详解
DB 90,89,88,97,100,86,85,84,83,100,82,81,100,80
DB 79,100,78,77,100,76,75,100,74,100,73,100,72,71
DB 100,70,100,69,100,68,100,67,100,66,100,65,100,64
DB 100,63,100,62,100,61,100,60,100,100,59,100,58,100
DB 57,100,100,56,100,55,100,54,100,100,53,100,52,100
DB 100,51,100,50,100,100,49,100,48,100,100,47,100,46
DB 100,100,45,100,100,44,100,43,100,100,42,100,100,41
DB 100,40,100,100,39,100,38,100,100,37,100,100,36,100
DB 35,100,100,34,100,100,33,100,32,100,100,31,100,30
DB 100,100,29,100,28,100,100,27,100,26,100,100,25,100
DB 24,100,100,23,100,22,100,21,100,20,100,100,19,100
DB 18,100,17,100,16,100,15,100,14,100,13,100,12,100
DB 11,100,10,9,100,8,100,7,6,100,5,4,100,3
DB 2,1,100,0
END
七.实训心得:
通过几天的实训和刘志远老师精心备课的教导,我在理论的基础上更深刻的掌握了单片机的深层内容及实际生活中的应用,实训锻炼了自己动手能力和思维能力。经过这几个星期的实训,我懂了单片机温度显示器的工作原理:天气的高低靠热敏电阻来反应出分压后出来相对应的电压用ADC0809数模转换的芯
片把相对应的电压反馈到单片机里,单片机内部程序已经编译好温度的精度(即是分辨率)然后用动态七段数码管显示出相对应的温度来,最后焊接出实物,用手紧贴住热敏电阻温度随手贴的时间不断上升放手后温度恢复成室温的温度,调试成功。
实训让我对单片机控制系统的研究产生浓厚的兴趣,还让我了解了怎样制作单片机烧录器及程序的烧录,在此以后,我会更多的去了解这个奇妙的领域。