检测技术课程设计电信061062.docx
《检测技术课程设计电信061062.docx》由会员分享,可在线阅读,更多相关《检测技术课程设计电信061062.docx(21页珍藏版)》请在冰点文库上搜索。
检测技术课程设计电信061062
检测技术课程设计
基于单片机的温度测量系统
王青云
南京工程学院
二〇〇九年五月
一、
课题要求
本课题要求利用温度传感器DS18B20进行温度测量,测量范围-50℃--100℃。
测量得到的温度值经单片机数据处理,最后利用数码管或液晶显示器显示测量结果。
二、系统硬件
系统硬件为带有温度传感器的单片机开发实验板,其主要模块包括:
1、单片机最小系统
图中晶振插座中可根据应用系统需要插入不同振荡频率的晶振。
单片机管脚通过J3、J4和J5引出。
2、温度检测电路
DS18B20数字温度传感器以9位数字量的形式反映器件的温度值。
它通过一根单数据线与中央处理器接口。
用于读写和温度转换的电源可以从数据线本身获得,也可以另加电源,传感器与单片机需要连接地线。
因为每个DS18B20都有一个独特的片序列号,所以多只DS18B20可以同时连在一根单线总线上,这样就可以把温度传感器放在许多不同的地方,在环境控制、探测建筑物、仪器或机器温度测量及过程控制等方面得到广泛的应用。
3、数码管显示
图中8位数码管由三极管Q2至Q9驱动,单片机管脚P20至P27实现位选、管脚P00至P07实现段选。
4、液晶显示
若选用1602液晶,将其插入J8中,若选用12864液晶,将其插入J6中。
液晶与单片机连线如图所示。
5、实验板其它硬件模块
6、接口及跳线说明
1)8个LED指示灯电路:
通过1K电阻与单片机P0口连接,当单片机加IO口输出为零电平时,LED发光。
2)4*4矩阵键盘电路:
直接与单片机的P1.0-----P1.7连接。
3)3个独立按键:
直接与单片机的P3.2-----P3.4连接。
4)8位数码管电路:
数码管的段选通过1K电阻与单片机的P0口连接,8位数码管的位选分别与P2.0------P2.7连接。
5)模数转换TLC549:
TLC549有三个端口与单片机相连,片选口与P1.0相连,IO与P1.1相连,TLC549数据输出与P3.2相连。
6)串口通信电路:
MAX232电路的输出分别与单片机的P3.0和P3.1连接。
7)液晶1602的数据端口通过直接与单片机P0口相连,RS端接p2.5,RW端接P2.6,E端接P2.7。
8)24C02电路:
24C02的SCL接P3.6,SDA接P3.7
9)蜂鸣器电路:
单片机的P3.5通过三极管控制蜂鸣器。
10)DS18B20温度传感电路:
输出端接单片机的P3.4。
11)DS1302时钟电路:
SCLK与P1.2连接,I/O与P1.3连接,RES与P1.4连接。
12)红外接收电路:
接受端与单片机的P3.3连接。
13)外接电源电路:
外接电源时,注意内正外负。
当外部电源为5V时,可以短接J12。
当外部电源高于5V时,一定不可短接J12。
14)JTAG下载电路:
分别与单片机的P1.5P1.6P1.7RST端连接。
15)J1:
LED电源跳线
16)J2:
AVR/51选择跳线,当选用的是51单片机(包括STC单片机),跳线跳到右边。
17)J7:
LCD电源跳线
18)J9:
TLC549输入电压跳线。
如果你不是测开发板上的可调电阻的电压时,可以取下短路帽,跳线又端连到你想测试电压的外部电路即可。
在跳线左边,有一个较大的焊盘,是输入到TLC549电压的实际值,可以用万用表测量。
测外部电压时,注意两个系统共地。
19)J10:
数码管电源跳线
20)J12:
外部跳线电源选择。
外接电源时,注意内正外负。
当外部电源为5V时,可以短接J12。
当外部电源高于5V时,一定不可短接J12,以免烧坏芯片。
21)单片机左上角跳线为5V电源。
22)单片机右上角跳线为地。
三、
测温软件设计
1、初始定义模块
#defineucharunsignedchar
#defineuintunsignedint
#definejump_ROM0xCC
#definestart0x44
#defineread_EEROM0xBE
sbitDQ=P3^4;//DS18B20数据口
sbitE=P2^7;//1602使能引脚
sbitRW=P2^6;//1602读写引脚
sbitRS=P2^5;//1602数据/命令选择引脚
unsignedcharTMPH,TMPL;
2、DS18B20复位模块(参阅DS18B20芯片手册)
voiddelay(uintN)
{
……;
}
ucharReset(void)
{
……;
}
3、DS18B20读1位(参阅DS18B20芯片手册)
ucharread_bit(void)
{
……;
}
4、DS18B20写1位(参阅DS18B20芯片手册)
voidwrite_bit(ucharbitval)
{
……;
}
5、DS18B20读1个字节(参阅DS18B20芯片手册)
ucharread_byte(void)
{
……;
}
6、DS18B20写1个字节(参阅DS18B20芯片手册)
voidwrite_byte(ucharval)
{
……;
}
7、1620LCD初始化(参阅液晶例程)
voiddelay_1()
{
……;
}
voidL1602_init(void)
{
……;
}
8、LCD1620数值翻转(参阅液晶例程)
ucharConvert(ucharIn_Date)
{
……;
}
9、LCD1620写函数(参阅液晶例程)
voidwrite(uchardel)
{
……;
}
voidL1602_char(ucharhang,ucharlie,charsign)
{
……;
}
voidL1602_string(ucharhang,ucharlie,uchar*p)
{
……;
}
10、测温及显示过程
Reset();
write_byte(jump_ROM);
write_byte(start);
Reset();
write_byte(jump_ROM);
write_byte(read_EEROM);
TMPL=read_byte();
TMPH=read_byte();
temp=TMPH;
temp<<=8;
temp=temp|TMPL;
temp=TMPL/16+TMPH*16;
……
附录1KEIL软件使用手册
KeilC51软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM语言和C语言的程序设计,界面友好,易学易用。
进入KeilC51后,屏幕如下图所示。
几秒钟后出现编辑界面。
简单程序的调试
学习程序设计语言、学习某种程序软件,最好的方法是直接操作实践。
下面通过简单的编程、调试,引导大家学习KeilC51软件的基本使用方法和基本的调试技巧。
1)建立一个新工程
单击Project菜单,在弹出的下拉菜单中选中NewProject选项。
2)然后选择你要保存的路径,输入工程文件的名字,比如保存到C51目录里,工程文件的名字为C51,如下图所示,然后点击保存。
3)这时会弹出一个对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择,keilc51几乎支持所有的51核的单片机,我这里还是以大家用的比较多的Atmel的89C51来说明,如下图所示,选择89C51之后,右边栏是对这个单片机的基本的说明,然后点击确定。
4)完成上一步骤后,屏幕如下图所示。
到现在为止,我们还没有编写一句程序,下面开始编写我们的第一个程序。
5)在下图中,单击“File”菜单,再在下拉菜单中单击“New”选项
新建文件后屏幕如下图所示。
此时光标在编辑窗口里闪烁,这时可以键入用户的应用程序了。
建议首先保存该空白的文件,单击菜单上的“File”,在下拉菜单中选中“SaveAs”选项单击,屏幕如下图所示,在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时,必须键入正确的扩展名。
注意,如果用C语言编写程序,则扩展名为(.c);如果用汇编语言编写程序,则扩展名必须为(.asm)。
然后,单击“保存”按钮。
6)回到编辑界面后,单击“Target1”前面的“+”号,然后在“SourceGroup1”上单
击右键,弹出如下菜单
然后单击“AddFiletoGroup‘SourceGroup1’”屏幕如下图所示。
选中Test.c,然后单击“Add ”屏幕如下图所示。
注意到“SourceGroup1”文件夹中多了一个子项“Text1.c”了吗?
子项的多少与所增加的源程序的多少相同。
7)现在,请输入如下的C语言源程序:
#include //包含文件
#include
voidmain(void) //主函数
{
SCON=0x52;
TMOD=0x20;
TH1=0xf3;
TR1=1; //此行及以上3行为PRINTF函数所必须
printf(“HelloIamKEIL.\n”); //打印程序执行的信息
printf(“Iwillbeyourfriend.\n”);
while
(1);
}
在输入上述程序时,Keilc51会自动识别关键字,并以不同的颜色提示用户加以注意,这样会使用户少犯错误,有利于提高编程效率。
程序输入完毕后,如下图所示。
8)在上图中,单击“Project”菜单,再在下拉菜单中单击“BuiltTarget”选项(或者使用快捷键F7),编译成功后,再单击“Project”菜单,在下拉菜单中单击“Start/StopDebugSession”(或者使用快捷键Ctrl+F5),屏幕如下所示。
9)调试程序:
在上图中,单击“Debug”菜单,在下拉菜单中单击“Go”选项,(或者使用快捷键F5),然后再单击“Debug”菜单,在下拉菜单中单击“StopRunning”选项(或者使用快捷键Esc);再单击“View”菜单,再在下拉菜单中单击“SerialWindows#1”选项,就可以看到程序运行后的结果,其结果如下图所示
至此,我们在KeilC51上做了一个完整工程的全过程。
但这只是纯软件的开发过程,如何使用程序下载器看一看程序运行的结果呢?
10)单击“Project”菜单,再在下拉菜单中单击“OptionsforTarget1”项,在下图中,单击“Output”中单击“CreateHEXFile”选项,使程序编译后产生HEX代码,供下载器软件使用。
把程序下载到AT89S51单片机中。
附录2 ISP下载软件使用说明
使用STC-ISP软件进行单片机程序烧写,具体步骤如下。
1、开发实验板接电源;
2、连接实验板串口与计算机USB口;
3、点击STC-ISP软件,打开STC单片机下载软件
4、单击下拉菜单,选择待烧写的芯片型号:
5、单击OpenFile按钮,选择要下载的文件:
6、选择下载端口和下载速度:
7、选择下载后芯片选项:
8、选择点击Download/下载按钮:
9、断开开发实验板电源,使芯片彻底失电;
10、接通开发实验板电源,使芯片重新上电,软件继续下载并提示下载完成。