1、单片机课程设计说明书1正文1.设计内容和要求。随着社会的进步和工业技术的发展,人们越来越重视温度因素,许多产品对温度范围要求严格,而目前市场上普遍存在的温度检测仪器大都是单点测量,同时有温度信息传递不及时、精度不够的缺点,不利于工业控制者根据温度变化及时做出决定。在这样的形式下,开发一种能够同时测量多点,并且实时性高、精度高,能够综合处理多点温度信息的测量系统就很有必要。本课题以 STC89C52 单片机系统为核心,能对多点的温度进行实时巡检。DS18B20 是一种可组网的高精度数字式温度传感器,由于其具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠
2、。本文结合实际使用经验,介绍了 DS18B20 数字温度传感器在单片机下的硬件连接及软件编程,并通过 LCD1602 显示当前温度,实现实时温度测量。2、系统总体结构系统的系统设计方框图如图 1-1 所示,它主要由三部分组成:控制部分主芯片采用单片机 STC89C52;显示部分采用 LCD1602 以动态扫描方式实现温度显示;温度采集部分的温度传感器采用 DS18B20 智能温度温度传感器。DS18B20 进行温度采集和转换输出数字型的温度值,然后通过数据引脚传到单片机的 P3.7 口,单片机通过 P2 口将数据扫描到 LCD1602 显示屏上。图 2-1单 片 机DS18B20传感器LCD
3、显示驱动控制单片机课程设计说明书23、硬件设计3.1 控制模块本设计采用单片机基于数字温度传感器 DS18B20 的系统。单片机 STC89C52具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用。温度传感器 DS18B20 利用单总线的特点可以方便的实现多点温度的测量,组建传感器网络,且系统的抗干扰性好、设计灵活、方便,而且能在恶劣的环境下进行现场温度检测。3.2 温度采集模块这一部分主要完成对温度信号的采集和转换工作,由 DS18B20 数字温度传感器及其与单片机的接口部分组成。DS18B20 智能温度温度传感器进行温度采集和转换输
4、出数字型的温度值,然后通过数据引脚传到单片机的 P3.7 口,单片机接受温度并存储。DS18B20 是美国 DALLAS 半导体公司最新推出的一种单线智能温度传感器,属于新一代适配微处理器的智能温度传感器,它可将温度信号直接转换为数字信号,实现了与单片机的直接接口,从而省去了信号调理和A/D 转换等复杂模/数转换电路。DS18B20 构成的温度采集模块电路简单、功能可靠、测量效率高,很好地弥补了传统温度测量方法的不足可广泛用于工业、民用、军事等领域的温度测量及控制仪器、测控系统和大型设备中。它具有集成度高、模拟输入数字输出、抗干扰能力强、体积小、接口方便、传输距离远测温误差小等特点。如图 3-
5、1.图 3-13.3 温度显示模块本课程设计的显示模块采用 LCD1602 液晶显示器显示温度数据,整数进行显示,从 P0 口送数,P2 口扫描。显示当前测量的温度。单片机课程设计说明书33.4 电源220V 的交流变压器经过变压器转换成 10V 的交流电,经过整流电路得到 5V的直流电,供给电路使用。4 软件设计按照硬件设计中的模块划分,软件设计业可分为三部分:DS18B20 模块程序设计,LCD1602 驱动程序设计,单片机主程序设计。其中前两部分是本例软件设计的关键,而相比较,主程序设计则比较简单。下面分别为主程序流程图,DS18B20 流程图和 LCD1602 液晶模块程序流程图。如图
6、 4-1.4.1 单片机主程序单片机课程设计说明书4开始液晶模块初始化延时While(1)DS18B20 初始化Ds18b20 温度转换读取温度值温度值处理温度值显示单片机课程设计说明书5图 4-14.2 DS18B20 模块程序设计在主程序流程图中,先初始化液晶模块,然后延时几百微秒,进入 While循环,先初始化 DS18B20,然后启动温度转换,读取转换后的温度值,并进行处理,最终将温度显示在 LCD 屏幕上。DS18B20 是 1-wire 单线器材,即在一根数据线上实现数据的双向传输,这就需要严格的通信协议来保证各位数据传输的正确性和完整性。单片机操作单线器材 DS18B20 的流程
7、图如图 4-2 所示。NYDS18B20初始化跳过 ROM 匹配温度转换延时,等待温度转换完成跳过 ROM 匹配结束应答脉冲?读暂存器转换为显示码单片机课程设计说明书6图 4-2首先 DS18B20 初始化。复位 DS18B20,然后单片机等待 DS18B20 的应答脉冲,一旦单片机监测到应答脉冲,变发起跳过 ROM 匹配操作命令。成功执行了ROM 操作命令后,就可以使用内存操作命令,启动温度转换,延时一段时间后,等待温度转换完成。再发起跳过 ROM 匹配操作命令,然后读暂存器,将转换结果读出,并转换为显示码,送液晶显示。需要注意的是:复位要求主 CPU 将数据线下拉 500 微秒,然后释放,
8、DS18B20 收到信号后等待 1660 微秒左右,后发出 60240 微秒的存在低脉冲,主 CPU 收到此信号表示复位成功。4.3 LCD1602 驱动程序设计用 LCD1602 液晶显示模块显示字符或字符串之前必须对其进行初始化,LCD1602 液晶显示模块的初始化程序流程图如图 4-3 所示。 单片机课程设计说明书7NYNNYNLCD1206延时 15ms写指令 38H延时 5ms写指令 38H延时 5ms写指令 38HLCD 空闲?显示模式设置LCD 空闲?显示关闭LCD 空闲?显示清屏LCD 空闲?单片机课程设计说明书8YN YNYNY图 4-3上电复位以后,延时 15ms,写 3
9、次 38H 指令,写指令前不监测忙标志位。当 3 次写 38H 指令完成后,开始进行显示模式设置操作,此时必须先监测忙标志位,只有当其为空闲时,才能进行显示模式设置。伺候依次为显示关闭。显示清屏,显示光标移动设置和显示开关及光标设置。同写显示模式设置一样,每次写之前,都必须先检测忙标志位。5,系统调试5.1 综述单片机应用系统的硬件调试和软件调试是分不开的许多硬件故障只有通过软、硬件联调才能发现,但一般是先排除系统中比较明显的硬件故障后才和软件一起联调。常见的硬件故障. 5.2 常见问题显示光标移动设置LCD 空闲?显示开关及光标位置LCD 空闲?结束单片机课程设计说明书9逻辑错误 样机硬件的
10、逻辑错误是由于设计错误和加工过程中的工艺错误而造成的,包括错线、开路、短路、相位错误、时序错误等,其中最常见的是短路故障。 2 元器件错误 元器件错误的原因有器件损坏或性能不符合要求,电解电容、二极管的极性接反或集成块装反等。 3 可靠性差 应用系统可靠性差的原因很多,如金属化孔、接插件接触不良、内部和外部的干扰、电压纹波系数过大、器件负载过重等均会造成系统的可靠性差。另外,走线和布置的不合理也会造成系统可靠性差。 4 电源故障 电源故障包括:电压值不符合设计要求、电源功率不足、负载能力差、纹波太重等。 5.3硬件调试力法 (1)脱机调试 脱机调试是在加电前,先用万用表等工具,按图纸仔细核对样
11、机线路是否正确,并对元器件的安装、型号、规格等进行仔细检查,特别注意印制板加工和焊接时有无走线之间相互短路等。 (2)联机调试 联机前先切断电源,把仿真插头插到样机的单片机插座上,检查一下开发机与样机之间的电源、接地是否良好。一切正常后,即可打开电源。通电后执行开发机读写 指令,对用者样机的存储器 IO 口进行读写操作,进行逻辑检查。若有故障,可用示波器观察有关点的波形,寻找和分析故障原因,并进一步排除故障。 在用者系统的样机(主机部分)调试好后,便可按入用者系统的其它外围部件,如键盘、显示器等,再进一步进行调试。 5.4 软件调试方法: 软件调试与所选用的软件结构有关,如果采用模块程序设计技
12、术,则逐个模块调好后再进行系统程序总调。如果采用实时多任务操作系统,一般是逐个任务单片机课程设计说明书10进行调试。 对于模块结构程序要一个个子程序分别调试。调试时,一定要符合入口条件和出口条件,调试可用单步运行和断点运行方式,通过检查用者系统的 CPU 现场情况、 RAM 的内容和 IO 口的状态,检测程序执行结果是否符合设计要求,有无循环错误、有无机器码错误以及转移地址的错误,同时,还可以发现用者系统中存在的 硬件设计错误和软件算法错误。 各程序模块通过后,则可以把相关功能块连在一起进行总调。这个阶段若有故障,可以考虑各子程序运行时是 否破坏了现场,缓冲单元、工作寄存器是否发生冲突,标志位
13、的建立和清除是否有误,堆栈区是否有溢出,输入设备的状态是否正常等等,若用者系统是在开发机的 监控程序下运行时,还要考虑用者缓冲单元是否和监控程序的工作单元发生冲突。 单步和断点调试后,还应进行连续调试,用以确定定时精度、CPU 的实时响应等问题。对于实时多任务操作系统的调试方法和模块结构的调试方法类似,只是需逐个任务进行调试,在调试某一个任务时,同时也调试相关的子程序、中断服务程序。逐个任务调试好后,再使各个任务同时运行。 当全部调试和修改完成后,将用者程序固化到 EPROM 中,插入用者样机后,用者系统即能独立工作,至此,单片机应用系统研制完成。6,设计小结本设计使用的温度控制器结构简单、测
14、温准确,具有一定的实际应用价值。该智能温度控制器只是 DS18B20 在温度控制领域的一个简单实例,还有许多需要完善的地方,例如可以将测得的温度通过单片机与通讯模块相连接,以手机短消息的方式发送给用户,使用户能够随时对温度进行监控。此外,还能广泛地应用于其他一些工业生产领域,如建筑,仓储等行业。本温度控制系统可以应用于多种场合,像花房的多点温度、育婴房的温度、水温的检测与控制。用户可灵活选择本设计的用途,有很强的实用价值。由衷感谢我们的老师,教予了我诸多传感器的理论知识。指导了我顺利的独立地完成了这一次的课程设计。期间,让我学到了许多在实践中需注意的问题。怎样思考问题,然后如何去收集整理资料。
15、再次特别感谢庄老师对我们的帮助,以及平日对我们的谆谆教诲。7:参考文献及资料1肖洪兵. 跟我学用单片机M北京:北京航空航天大学出版社,2002.8单片机课程设计说明书112 何立民. 单片机高级教程 第 1 版M北京:北京航空航天大学出版社,2001 3赵晓安. MCS-51 单片机原理及应用m 天津:天津大学出版社,2001.3 4李广第 单片机基础 第 1 版M北京:北京航空航天大学出版社,1999 5徐惠民、安德宁 单片微型计算机原理接口与应用M 第 1 版 北京:北京邮电大学出版社,1996 6何立民从 Cygnal 80C51F 看 8 位单片机发展之路J 单片机与嵌入式系统应用,2
16、002 年,第 5 期:P58 7常敏 ,51 单片机应用程序开发与实践 M 电子工业出版社 2009.3四,附录1) 元器件清单序号 名称 型号,参数 备注 价格 数量单片机课程设计说明书121 CPU STC89C52 DIP40 封装 7 12 管座 DIP-40 0.5 13 晶振 12MHz 49S 型 0.5 14 整流桥 2W10 2A 圆桥 1 15 稳压 IC LM7805 TO-220 1 16 元片电容 30pf 0.5 27 电解电容 1000uf/16V 0.5 18 电解电容 470uf/16V 0.5 19 电解电容 10uf/16V 0.5 110 独石电容 0
17、.47uf 0.5 211 自锁开关 8*8 自锁开关-6P 8mm8mm 1 112 电阻 10K/0.25W 金属膜 1/4W 0.5 113 单排排针 直针 1*40 2.54mm 2 414 杜邦线 5 3015 温度传感器 DS18B20 5 116 LCD 显示屏 LCD1602 20 117 变压器 温州升龙变压 12 118 焊锡丝 5 119 单排座 1 120 短路子 跳线帽 2.54mm 2 若干成本总价 57 元2) 原理图单片机课程设计说明书133) 程序清单#include#define uchar unsigned char#define uint unsigne
18、d intsbit DQ=P37;/ds18b20 与单片机连接口sbit RS=P30;sbit RW=P31;sbit EN=P32;unsigned char code str1=“temperature: “;unsigned char code str2=“ “; uchar data disdata5;uint tvalue;/温度值uchar tflag;/温度正负标志单片机课程设计说明书14/*lcd1602 程序*/void delay1ms(unsigned int ms)/延时 1 毫秒(不够精确的)unsigned int i,j;for(i=0;i0;i-) DQ =
19、 0; /给脉冲信号dat=1;DQ = 1; /给脉冲信号if(DQ)dat|=0x80;delay_18B20(10);单片机课程设计说明书17return(dat);void ds1820wr(uchar wdata)/*写数据*/unsigned char i=0;for (i=8; i0; i-) DQ = 0;DQ = wdatadelay_18B20(10);DQ = 1;wdata=1;read_temp()/*读取温度值并转换*/uchar a,b;ds1820rst(); ds1820wr(0xcc);/*跳过读序列号*/ds1820wr(0x44);/*启动温度转换*/d
20、s1820rst(); ds1820wr(0xcc);/*跳过读序列号*/ ds1820wr(0xbe);/*读取温度*/ a=ds1820rd();b=ds1820rd();tvalue=b;tvalue#define uchar unsigned char#define uint unsigned intsbit DQ=P37;/ds18b20 与单片机连接口sbit RS=P30;sbit RW=P31;sbit EN=P32;unsigned char code str1=“temperature: “;unsigned char code str2=“ “; uchar data d
21、isdata5;uint tvalue;/温度值uchar tflag;/温度正负标志/*lcd1602 程序*/void delay1ms(unsigned int 1ms)/延时 1 毫秒(不够精确的)unsigned int i,j;for(i=0;i0;i-) DQ = 0; /给脉冲信号dat=1;DQ = 1; /给脉冲信号if(DQ)dat|=0x80;delay_18B20(10);return(dat);void ds1820wr(uchar wdata)/*写数据*/unsigned char i=0;for (i=8; i0; i-) DQ = 0;DQ = wdatad
22、elay_18B20(10);DQ = 1;wdata=1;单片机课程设计说明书22read_temp()/*读取温度值并转换*/uchar a,b;ds1820rst(); ds1820wr(0xcc);/*跳过读序列号*/ds1820wr(0x44);/*启动温度转换*/ds1820rst(); ds1820wr(0xcc);/*跳过读序列号*/ ds1820wr(0xbe);/*读取温度*/ a=ds1820rd();b=ds1820rd();tvalue=b;tvalue=8;tvalue=tvalue|a;if(tvalue0x0fff)tflag=0;elsetvalue=tval
23、ue+1;tflag=1;tvalue=tvalue*(0.625);/温度值扩大 10 倍,精确到 1 位小数return(tvalue);/*单片机课程设计说明书23*/void ds1820disp()/温度值显示 uchar flagdat;disdata0=tvalue/1000+0x30;/百位数disdata1=tvalue%1000/100+0x30;/十位数disdata2=tvalue%100/10+0x30;/个位数disdata3=tvalue%10+0x30;/小数位if(tflag=0)flagdat=0x20;/正温度不显示符号elseflagdat=0x2d;/
24、负温度显示负号:-if(disdata0=0x30)disdata0=0x20;/如果百位为 0,不显示if(disdata1=0x30)disdata1=0x20;/如果百位为 0,十位为 0 也不显示wr_com(0xc0);wr_dat(flagdat);/显示符号位wr_com(0xc1);wr_dat(disdata0);/显示百位wr_com(0xc2);wr_dat(disdata1);/显示十位 wr_com(0xc3);wr_dat(disdata2);/显示个位 wr_com(0xc4);单片机课程设计说明书24wr_dat(0x2e);/显示小数点 wr_com(0xc5
25、);wr_dat(disdata3);/显示小数位/*主程序*/void main() init_play();/初始化显示delaynms(100);while(1)read_temp();/读取温度ds1820disp();/显示4) 实物图单片机课程设计说明书25单片机课程设计说明书26五:任务书二级学院: 电子信息与电气工程学院 班 级: 11 电卓 姓 名: 翟俊先 学 号: 11060328 指导教师: 庄志红 职 称: 副教授 项目名称 密码锁起止时间 2014 年 6 月 8 日2014 年 6 月 20 日 指标类型 A课题内容及其目标(指标 )要求1 开发一种能够同时测量多点,并且实时性高、精度高,能够综合处理多点温度信息的测量系统2.目标:利用温度传感器 DS18B20 测量温度并通过液晶显示进程安排第 1 天:下达任务书、课题需求分析,收集和消化相关资料;第 2-3 天:方案论证、比较和拟定,具体方案设计,元器件采购;第 4-5 天:硬件原理图绘制、实物制作和调试;第 6-7 天:软件流程图绘制、程序编制和调试;第 8 天:系统联调和优化;第 9 天:撰写设计报告;第 10 天:作品演示、答辩。设计地点 秋白楼 五楼