




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、郑州大学西亚斯国际学院自动化专业毕业设计14目录目录1 绪论 .11.1 课题开发背景及意义.11.2 主要内容及设计要求.12 硬件系统设计 .22.1 系统设计框图.22.2 电源电路.22.3 系统硬件详细设计图.32.4 各芯片介绍.42.4.1 单片机 AT89C51 .42.4.2 DS18B20 简介.52.4.3 SHT15 简介.92.5 各功能模块电路的设计.112.5.1 温度测量电路 .112.5.2 湿度测量电路 .123 系统软件设计 .133.1 系统功能模块图及各模块介绍.133.1.1 温度获取模块 .133.1.2 湿度获取模块 .163.1.3 LCD 显
2、示控制模块 .183.2 主程序流程图.204 硬件电路和软件系统的调试 .224.1 印制电路板的设计与制作.224.2 系统软件调试.255 结论 .27参考文献 .28致谢 .29郑州大学西亚斯国际学院自动化专业毕业设计14附录 1 系统印制电路板 .30附录 2 程序源代码 .31郑州大学西亚斯国际学院自动化专业毕业设计14摘 要温度和湿度的测量在工业、农业、国防等行业有着广泛的应用。使用单片机技术的温度和湿度测量计有体积小,使用性强等优点,在本设计中对 LCD 数字式温度湿度测量计进行了分析设计。本论文针对所使用的 AT89C51 单片机的性能和使用做了比较详细的介绍,对本系统所使用
3、的温度芯片 DS18B20 和湿度芯片 SHT15 做了性能方面的简单说明。重点对硬件、软件的组成进行了划分、模块化设计。对各部分的电路一一进行了介绍分析,最终实现了该系统的硬件设计,绘制了电路原理图、印制电路板图。在软件设计方面绘制了各功能模块的流程图,并对需要实现的功能根据设计要求经过反复的模拟运行、调试、修改简化,得出一套完整的软件系统。关键词:关键词:单片机 AT89C51、温度传感器 DS18B20、湿度传感器 SHT15、液晶显示模块 LCD1602郑州大学西亚斯国际学院自动化专业毕业设计14AbstractThe test of temperature and moisture
4、has been widely used in industry, agriculture, National defense and so on. By the advantage of small volume and high reliance of Single Chip Micyoco temperature and moisture meter, the article has analyzed and designed the digital temperature and moisture meter in this designing.This system made det
5、ailed introduction about performance and development situation of Single Chip microcomputer AT89C51, and made simple explanation about the temperature chip DS18B20 and humidity chip SHT15. It has mainly analyzed and designed the composition of hardware and software carried on the item, modulation gr
6、adually. This system has introduced part of the electric circuit step by step, and has finally realized the hardware electric circuit of this system. It has protracted the electric circuit principle diagram, the printed circuit board chart. According to the function that must be realized in designin
7、g, by repeated simulation run and debugging, it has revised and simplified the software system, and finally has formed a set of complete program.Key words: Microcomputer AT89C51; Temperature Sensor DS18B20; Humidity Sensor SHT15; Liquid-Crystal Display LCD1602郑州大学西亚斯国际学院自动化专业毕业设计141 绪论1.1 课题开发背景及意义在
8、我们日常生活和生产中,经常要测量环境的温、湿度,传统的测量方式通常采用水银温度计或者干湿球湿度计查算法,存在着误差大,操作使用很不便等问题,采用工业级测量仪表价格非常昂贵。使用 AT89C51 和 DS18B20、SHT15 等组成的 LCD 数字式温度湿度测量计价格便宜和精度高等优点。1.2 主要内容及设计要求(1)熟悉的掌握单片机中断,定时器应用及各并行口的应用;(2)熟悉掌握单片机的湿度测量方法;(3)利用温度传感芯片 DS18B20 及单片机芯片 89C51 完成对温度的检测,利用SHT15 完成对湿度测量;(4)测量温度的范围:-10100精确度0.1,测量湿度速度:1S。2 硬件系
9、统设计2.1 系统设计框图系统硬件设计的原理框图如图 1 所示:AT89C51单片机 系统温度读取时钟湿度读取电源输入显示电路图图 1 温度湿度测量系统框图温度湿度测量系统框图郑州大学西亚斯国际学院自动化专业毕业设计14由图 1 可以看出该系统的原理,温度和湿度采集电路通过采集信号经单片机处理后再送至显示电路显示1。2.2 系统硬件详细设计图在图2所示电路中,AT89C51为主控制器,P0口和液晶显示器LCD1602相连,在AT89C51的控制下,由DS18B20、SHT15完成对温湿度信号的采集,由P0口输出送至液晶显示模块LCD1602显示6。琴键开关S1按下,使得RST端为高电平,AT8
10、9C51被复位。该电路采用的主要器件有:LCD1602为液晶显示器,显示当前的温度和湿度数据及系统时钟2;AT89C51控制信号的采集过程和实现系统的时钟显示;DS18B20是温度传感器,检测并完成温度的转换;SHT15是温度湿度传感器,其主要完成温度与湿度的转换及测量。系统整机电路图如图3所示:P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78RST /VPD9P3.0/RxD10P3.1/TxD11P3.2/INT012P3.3/INT113P3.4/T014P3.5/T115P3.6/WR16P3.7/RD17XTAL 218XTAL 119GND20P2.
11、021P2.122P2.223P2.324P2.425P2.526P2.627P2.728PSEN29ALE /PROG30EA/Vpp31P0.732P0.633P0.534P0.435P0.336P0.237P0.138P0.039VCC40AT89C5189C5112345678910111213141516P1Header 16Y112MVCCVCCC230pC330p331122S10DS18B20+C110uR210kS2SW-PB12J1CON2VCCVCCVCCR110k10kS1SW-PBVCCVCCVCC11223344J2SHT 15VCC图图2 数字温度湿度测量计整机电
12、路数字温度湿度测量计整机电路郑州大学西亚斯国际学院自动化专业毕业设计14在图2所示电路中,DS18B20作为温度采集电路,它输出为数字信号,可以很大程度的缩减外围电路,从而使得电路变得更加的简单,SHT15是温湿度采集电路3,也是数字输出,这样就把整个电路比较简单、明了,同时也节约了成本。2.3 各芯片介绍2.3.1 单片机 AT89C51 AT89C51是一个带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压、高性能CMOS8位微处理器。单片机的可擦除只读存储器可以反复擦除一百次,该器件
13、使用ATMEL高密度非易失存储器制造技术制造,和工业标准的MCS-51指令集和输出管脚兼容。将多功能8位CPU和闪烁存储器组合于单个芯片中,ATMEL的AT89C51是一种高效的微控制器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准的MCS-51指令系统,片内置有通用的8位中央处理器和Flash存储单元,内置功能非常强大的微型计算机的AT89C51提供了比较高性价比的解决方案。AT89C51单片机提供了一种灵活性高且价廉的方案4为很多的嵌入式控制系统。AT89C51元件的图形如图4所示:图图3 AT89C51的引脚排列图的引脚排列图管脚说明:郑州大学西亚斯国际学院自动化专业毕
14、业设计14(1)电源部分:VCC:供电电压GND:接地(2)晶振部分:XTAL1:内部时钟工作电路的输入及反向振荡放大器的输入XTAL2:来自反向振荡器的输出(3)接口电路部分:P0口:P0口是一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写入1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它被定义为数据/地址的第八位。当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高,在FIASH编程时,P0 口作为原码输入口。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器可接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用
15、作输入;P1口被外部下拉到低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入,作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)是由于上拉的缘故。(4)复位部分:RST:复位输入。当振荡器复位器件时,需要保持RST脚两个机器周期的高电平时间7。2.3.2 DS18B20 简介测温元件是采用新型的温度传感器DS18B20,DS18B20是由Dallas半导体公司生产的“一线总线”接口的温度传感器。一线总
16、线结构有简洁、经济的特点,可以使用户轻松地组建传感器网络,为测量系统的构建引入全新概念,DS18B20的测量温度的范围是-55到+125,在-10+85范围内,精度是0.0625,现场温度可直接由“一线总线”以数字方式传输,很大程度上提高了系统的抗干扰性。DS18B20适合于恶劣环境的实地温度测量,如环境控制、设备、过程控制、测温类消费电子产品等,工作在3V5.5V的电压范围,采用多种封装形式,从而让系统设计更加灵活、方便,设置分辨率以及用户郑州大学西亚斯国际学院自动化专业毕业设计14设定的报警温度存储在EEPROM中,掉电后依然保存5。DS18B20 的内部结构如图 4 所示:图图 4 DS
17、18B20 内部结构图内部结构图DS18B20 主要是由 4 部分组成:64 位 ROM、温度传感器、非易失性温度报警触发器 TH 与 TL、配置寄存器5。DS18B20 的封装形式及引脚排列如图 5 所示:图图 5 DS18B20 的引脚排列图的引脚排列图DS18B20 有 4 个主要的数据部件:(1)光刻 ROM 中的 64 位序列号是由出厂前被光刻好的,它可以看作为该 DS18B20的地址序列码。64 位光刻 ROM 的排列为:开始 8 位(28H)是产品类型标号,接着的郑州大学西亚斯国际学院自动化专业毕业设计1448 位是该 DS18B20 自身序列号,最终的 8 位是前面 56 位的
18、循环冗余校验码(CRC=X8+X5+X4+1) 。光刻 ROM 的作用使每一个 DS18B20 都各不相同,这样可以实现一根总线上挂接多个 DS18B20 的目的。(2)DS18B20 中的温度传感器可以完成对温度的测量,以 12 位转化为例:用 16 位符号扩展的二进制补码读数的形式提供,以 0.0625/LSB 形式表达,S 为符号位。其中GND是电源地;DQ是数字信号输入/输出端;VDD是外接供电电源输入端(采用寄生电源供电方式时接地)。表表1 DS18B20温度数据表温度数据表TEMPERATUREDIGITAL OUTPUT(Binary)DIGITAL OUTPUT(Hex)+12
19、50000 0111 1101 000007D0h+850000 0101 0101 00000550h+25.06250000 0001 1001 00010191h+10.1250000 0000 1010 001000A2h+0.50000 0000 0000 10000008h00000 0000 0000 00000000h-0.51111 1111 1111 1000FFF8h-10.1251111 1111 0101 1110FF5Eh-25.06251111 1110 0110 1111FF6Eh-551111 1100 1001 0000FC90h(3)DS18B20温度传感
20、器的存储器DS18B20温度传感器的内部存储器由一个高速暂存RAM与一个非易失性的可电擦除的EEPRAM组成,后者存放高温度和低温度触发器TH、TL和结构寄存器。(4)配置寄存器该字节各位的意义如下:表表2 配置寄存器结构配置寄存器结构TMR1R011111郑州大学西亚斯国际学院自动化专业毕业设计14低五位一直是1,TM为测试模式位,用于设置DS18B20在工作模式还是在测试模式,在DS18B20出厂时该位被设置0,用户不要去改动。R1和R0用于设置分辨率,如下表所示(DS18B20出厂时被设置为12位): 表表3 分辨率设置分辨率设置R1R0分辨率分辨率温度最大转换时间温度最大转换时间009
21、位93.75ms0110位187.5ms1011位375ms1112位750msDS18B20采用单总线工作方式,因为所有信号(控制和数据)都通过单总线传输,因此总线的时序逻辑必须特别严格,其工作时序如图6所示8:图图6 DS18B20工作时序工作时序郑州大学西亚斯国际学院自动化专业毕业设计142.4.3 SHT15 简介SHT15型传感器为单片、多用途的智能化传感器,其中不仅包含基于湿敏电容器的微型相对湿度传感器和基于带隙电路的微型温度传感器,而且还有14位的A/D转换器和2线串行接口。能输出经过校准的相对湿度和温度的串行数据,所以系统中不再使用传统设计需要的多路转换开关、A/D转换器及信号
22、调理电路,系统结构比较紧凑和简单,SHTl5能在同一位置测量相对湿度和温度。它的内部结构如图8所示:图图 7 SHT15 内部结构图内部结构图SHT15 的引脚比较少,使用方便,其引脚排列如图九所示。SHT15 型智能传感器的相对湿度测量范围是 0100%。分辨率达 0.03%,最高精度为2%RH,温度测量范围是-40+123.8,分辨率为 0.1。电源电压范围是+2.5V+5.5V,响应时间小于 3s。引脚功能如表 4 所示:郑州大学西亚斯国际学院自动化专业毕业设计14图图 8 SHT15 引脚排列图引脚排列图表表 4 SHT15 引脚功能表引脚功能表引脚号引脚名称功 能1GND接地端2DA
23、TA串行数据输入/输出端3SCK串行时钟输入端4VDD接电源端5,6,7,8NC不连接采用温湿度传感器 SHT15,SHT15 传感器是一款由多个传感器模块组成的单片全校准数字输出相对湿度的传感器。它采用了特有的专业级 CMOS 技术,保证了极高的可靠性和卓越的长期稳定性。整个芯片包括校准的相对温度和湿度传感器。它们与 1 个14 位的 A/D 转换器相连;此外还有一个 I2C 总线串行接口电路。 每一个传感器都是在极为精确的湿度室中进行校准。校准系数预先存放在 OTP 内存中。在测量校准的过程中都要用到这些系数9。其特点如下:电源引脚SHTxx 的供电电压为 2.45.5V。串行接口 (两线
24、双向)SHTxx 应用的的串行接口技术,在传感器信号读取及电源损耗方面都做了优化处理;但与 I2C 接口不兼容。串行数据(DATA)DATA 三态门用于数据的读取。DATA 在 SCK 时钟下降沿之后改变状态,并仅在SCK 时钟上升沿有效。数据传输期间,在 SCK 时钟高电平时,DATA 必须保持稳定。为避免信号冲突,微处理器应驱动 DATA 在低电平。需要一个外部的上拉电阻(例如:10k)将信号提拉至高电平。上拉电阻通常已包含在微处理器的 I/O 电路中。测量时序(RH 和 T)发布一组测量命令后,控制器要等待测量结束。这个过程需要大约 11/55/210ms,分别对应 8/12/14bit
25、 测量。确切的时间随内部晶振速度,最多有15%变化。SHTxx 通过下拉 DATA 至低电平,表示测量的结束。控制器在触发 SCK 时前,必须等待这个“数据备妥”信号。接着传输 2 个字节的测量数据和 1 个字节的 CRC 奇偶校验。uC 需要通过下拉 DATA 为低电平,以确认每个字节。郑州大学西亚斯国际学院自动化专业毕业设计14所有的数据从 MSB 开始,右值有效(例如:对于 12bit 数据,从第 5 个 SCK 时钟起算作 MSB;而对于 8bit 数据,首字节则无意义) 。用 CRC 数据的确认位,表明通讯结束。如果不使用 CRC-8 校验,控制器可以在测量值 LSB 后,通过保持确
26、认位 ack 高电平,来中止通讯。在测量和通讯结束后,SHTxx 自动转入休眠模式5。图图 9 SHT15 数字式温湿度传感器的性能指标数字式温湿度传感器的性能指标2.5 各功能模块电路的设计2.5.1 温度测量电路温度测量电路如图 11 所示:郑州大学西亚斯国际学院自动化专业毕业设计14P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78RST/VPD9P3.0/RxD10P3.1/TxD11P3.2/INT012P3.3/INT113P3.4/T014P3.5/T115P3.6/WR16P3.7/RD17XT AL 218XT AL 119GN D20P2.02
27、1P2.122P2.223P2.324P2.425P2.526P2.627P2.728PSEN29AL E/PROG30EA /Vpp31P0.732P0.633P0.534P0.435P0.336P0.237P0.138P0.039VCC40AT 89C5189C51Y112MVCCC230pC330p331122S10DS18B20VCCVCC图图 10 温度检测电路温度检测电路2.5.2 湿度测量电路湿度测量电路的设计如图 11 所示:图图 11 湿度检测电路湿度检测电路郑州大学西亚斯国际学院自动化专业毕业设计14N3 系统软件设计3.1 系统功能模块图及各模块介绍3.1.1 温度获取模
28、块温度显示模块程序流程图如图 12 所示:图图 12 温度测量流程图温度测量流程图18B20 温度测量部分程序如下10:void delays(uint i)while(i-);/初始化函数void Init_DS18B20(void)unsigned char x=0;DQ = 1; /DQ 复位delays(9); /稍做延时DQ = 0; /单片机将 DQ 拉低delays(55); /精确延时 511usDQ = 1; /拉高总线delays(6); /延时 70usx=DQ; /稍做延时后 如果 x=0 则初始化成功 x=1 则初始化失败 while(x); delays(48);
29、/读一个字节检测 DS18B20存在?开始初始化 DS18B20读 DS18B20 的序列号发送跳过 ROM 指令温度转换I=1,等待DS18B20 复位发送 DS18B20 编码读取温度数据Y郑州大学西亚斯国际学院自动化专业毕业设计14uchar ReadOneChar(void)uchar i=0;uchar dat = 0;for (i=8;i0;i-)DQ = 0; / 给脉冲信号dat=1; i+;i+;i+; i-;i-;i-;DQ = 1; / 接收信号if(DQ)dat|=0 x80;delays(5);return(dat);/写一个字节void WriteOneChar(u
30、nsigned char dat)unsigned char i=0;for (i=8; i0; i-)DQ = 0;DQ = dat&0 x01;delays(3);DQ = 1;dat=1; /delays(4);郑州大学西亚斯国际学院自动化专业毕业设计14/读取温度void ReadTemperature(void)uchar a=0;uchar b=0;uint t=0;Init_DS18B20();WriteOneChar(0 xCC); / 跳过读序号列号的操作WriteOneChar(0 x44); / 启动温度转换Init_DS18B20();WriteOneChar(0 xC
31、C); /跳过读序号列号的操作WriteOneChar(0 xBE); /读取温度寄存器等(共可读 9 个寄存器) 前两个就是温度a=ReadOneChar();b=ReadOneChar();t=b;t4;TempDec=CurrentTempValue/10;Temp1bit=CurrentTempValue%10;CurrentTempValue=(int)(t*0.625); TempDec=CurrentTempValue/100; Temp1bit=(CurrentTempValue/10)%10;TempDot= CurrentTempValue%10;DisplayArray2
32、=TempDec;DisplayArray1=Temp1bit; DisplayArray0=TempDot;3.1.2 湿度获取模块郑州大学西亚斯国际学院自动化专业毕业设计14湿度测量部分程序流程图如图 13 所示11:图图 13 湿度测量部分程序流程图湿度测量部分程序流程图其关键部分源代码如下:char s_read_byte(unsigned char ack) unsigned char i,val=0; DATA=1; for (i=0 x80;i0;i/=2) SCK=1; if (DATA) val=(val | i); SCK=0; DATA=!ack; SCK=1; _nop
33、_();_nop_();_nop_(); SCK=0; DATA=1; return val; DATA=1; SCK=0; _nop_(); SCK=1; _nop_(); DATA=0; _nop_(); SCK=0; _nop_();_nop_();_nop_();开始初始化 SHT15读 SHT15 的序列号发送跳过 ROM 指令湿度转换J=1,等待SHT15 复位发送 SHT15 编码检测 SHT15存在?读取湿度数据YN郑州大学西亚斯国际学院自动化专业毕业设计14 SCK=1; _nop_(); DATA=1; _nop_(); SCK=0;3.1.3 LCD 显示控制模块显示部分
34、程序流程图如图 14 所示:图图 14 显示部分程序流程图显示部分程序流程图显示部分程序主要包括个三方面的操作:(1)LCD 的初始化void lcd_init() lcd_wcmd(0 x38); /设置显示模式:delay(2);/延时 2 秒lcd_wcmd(0 x08); /显示开/关设置 delay(1);lcd_wcmd(0 x01); /清除 LCD 的显示内容delay(1);lcd_wcmd(0 x06); /文字不动,光标自动右移 delay(1);lcd_wcmd(0 x0c); /显示器开、光标关、光标不允许闪烁delay(1);(2)写指令操作,主要完成对 LCD 显
35、示模式,位置等到处理操作,其主要程序实现如下:void lcd_write_command(uchar command)/(命令,是否等待闲)初始化写指令函数写数据到液晶初始化液晶体显示返回LCD 忙?YN郑州大学西亚斯国际学院自动化专业毕业设计14 while(wait_enable(); RS=0; RW=0; delay(5); EN=0; P0=command; EN=1; EN=0;(3)写数据到 LCD,其主要源代码如下:void lcd_write_data(uchar char_data) while(wait_enable(); RS = 1; RW = 0; EN = 0;
36、 P0 = char_data; EN = 1; delay(1); EN = 0;3.2 主程序流程图郑州大学西亚斯国际学院自动化专业毕业设计14初始化单片机开始初始化 DS18B20初始化 SHT15初始化 LCD1602读取温度数据读取湿度数据显示返回图图 15 系统主程序流程图系统主程序流程图郑州大学西亚斯国际学院自动化专业毕业设计144 硬件电路和软件系统的调试4.1 印制电路板的设计与制作在原理图做好了之后,单击 Design 选择创建网络表,来生成网络表,如图 16 所示:图图 16 生成网络表生成网络表图图 17 在在 PCB 中调入网络表中调入网络表在打开的 PCB 板中单击
37、 Design 菜单下的网络表,导入网络表,如图 17 所示。当导郑州大学西亚斯国际学院自动化专业毕业设计14入网络表之后发现有很多错误,原来是原理图中元件的封装设置有问题,所以我就把原理图中的封装从新设定并改正其中的错误之后,就可以通过了。其中开始时错误比较多,如下面图中所示,最后全部更正之后 Execute 在 PCB 板中将原理图中的电路导入到 PCB板中,然后将各元件的位置做一定的调整6。图图 18 PCB 中导入网络表中导入网络表(1)图图 19 设定布线规则设定布线规则在 PCB 板中画适当的一个区域,将元件拖放到适当的位置,然后点击 Design 菜单郑州大学西亚斯国际学院自动化
38、专业毕业设计14下的规则,在规则中将 Routing 中的 Routing Layers Rule 面板中的 Toolaver 设定为 Not Used,设定为单层布线。然后再在 Routing Layers Rule 面板中的 Width Constraint 的线宽设定成如下面图示的宽度,再添加一个电源线和一个地线。并将其宽度设定好。图图 20 设定单层布线设定单层布线图图 21 设定线宽设定线宽郑州大学西亚斯国际学院自动化专业毕业设计14设定完成之后,点击 Auto Route 自动布线,选中 All,在弹出的方框中选择 Route All 自动布线。如图 22 所示:图图 23 自动布
39、线自动布线4.2 系统软件调试 软件编译完成以后利用 Keil uVision3 平台对软件进行编译,结果如图 23 所示:郑州大学西亚斯国际学院自动化专业毕业设计14图图 23 软件编译过程软件编译过程程序执行及观测如图 24 所示:郑州大学西亚斯国际学院自动化专业毕业设计14图图 24 软件仿真执行图软件仿真执行图郑州大学西亚斯国际学院自动化专业毕业设计145 结论本设计实现的数字式温度湿度测量计电路比较简单,有体积小、可靠性高、测量精度高、价格便宜等优点。在完成本设计过程虽然做了大量的工作,但因为时间关系及本人知识能力的限制,本设计还存在的以下问题:电路单纯只有温度和湿度的测量,没有控制
40、温度和湿度的部分;电路控制部分没有进行扩展;这些问题还需在以后的工作进一步完善。郑州大学西亚斯国际学院自动化专业毕业设计14参考文献参考文献1张俊谟编著单片机中级教程原理与应用M,北京:北京航空航天大学出版社,20042求是科技单片机通信技术与工程实践M,北京:人民邮电出版社,2004.113秦实宏,周龙等单片机原理与应用技术M,北京:中国水利水电出版社,2005.94求是科技单片机典型模块设计实例导航M,北京:人民邮电出版社,2004.5:55-665刘迎春传感器原理设计与应用M,北京:国防科技大学出版社,2005:205-2076夏路易等电路原理图与电路板设计教程M,北京:北京希望电子出版
41、社,2002.6:155-166 7范风强,兰蝉丽单片机语言 C51 应用实战集锦M,电子工业出版社,2005.58胡汉才单片机原理及接口技术M,北京:清华大学出版社,1996.79何立民单片机与嵌入式系统应用J,北京:北京航空航天出版社第四期,2003:15-1610赵亮,侯国锐等单片机 C 语言编程与实例M,北京:人民邮电出版社,200311马忠梅等单片机的 C 语言应用程序设计M,北京:北京航空航天大学出版社,2003.11郑州大学西亚斯国际学院自动化专业毕业设计14致谢致谢我做的这个LCD 数字式温度湿度测量计的设计是一个综合的工作,它涉及到电路的设计、单片机的编程还有相关软件的使用。
42、在本次毕业设计中,我遇到了很多问题和困难,但是在指导老师方飞讲师的精心指导和同学们的帮助下,完成了该设计工作。在这次设计中我极大的提高了自己的理论知识水平、动手能力,并对当前电子领域的研究状况和发展方向有了一定的了解,单片机领域这对我今后进一步学习计算机方面的知识有极大的帮助。另外,此次毕业设计还获得了物电系各位领导和老师的大力支持。在此,我忠心感谢方飞老师以及物电系各位老师和同学们的指导和支持。郑州大学西亚斯国际学院自动化专业毕业设计14附录附录 1 系统印制电路板系统印制电路板该系统的印制电路板如图 26 所示:图图 26 数字式温度湿度测量电路数字式温度湿度测量电路 PCB 板图板图郑州
43、大学西亚斯国际学院自动化专业毕业设计14附录附录 2 程序源代码程序源代码#include regx52.h#include #include #define uchar unsigned char#define uint unsigned int#define SCAN_CYCLE 500sbit RS=P27;/*液晶数据与命令切换*/sbit RW=P26;/*液晶读写使能*/sbit EN =P25;/*液晶使能*/sbit BF=P07; /液晶忙闲标志sbit DQ=P23; /*DS1820 输入接口 p2.3*/bit InitF=1;/*湿度处理变量定义部分* typedef
44、 union unsigned int i; float f; value;enum TEMP,HUMI;sbit DATA=P11;sbit SCK=P10 ;#define noACK 0#define ACK 1#define STATUS_REG_W 0 x06 #define STATUS_REG_R 0 x07#define MEASURE_TEMP 0 x03 #define MEASURE_HUMI 0 x05#define RESET 0 x1e value humi_val,temp_val;郑州大学西亚斯国际学院自动化专业毕业设计14 float dew_point; u
45、nsigned char error,checksum; unsigned int i; uchar ReadhumidityFlag=0;uchar xdata CurrentHumidity=Current humidity;/*湿度处理变量定义部分*/*温度处理部分*uchar DisplayArray3=0 x02,0 x00,0 x00; /*前 3 位用于设置温度值显示 3 位用于当前温度值显示 */uint CurrentTempValue=0,Tempdispersion=0;/*放大 10 倍进行处理*/uchar ReadTempTimeValue=1,MScond=0,S
46、cond=0,ReadTempFlag=0;uchar TempDec=0,Temp1bit=0,TempDot=0;uchar xdata CurrentTemp=Current temperature;void delays(uint i);void Init_DS18B20(void);uchar ReadOneChar(void);void WriteOneChar(uchar dat);void ReadTemperature(void);void delays(uint i)while(i-);/初始化函数void Init_DS18B20(void)unsigned char x
47、=0;DQ = 1; /DQ 复位delays(9); /稍做延时DQ = 0; /单片机将 DQ 拉低delays(55); /精确延时 511us 77郑州大学西亚斯国际学院自动化专业毕业设计14DQ = 1; /拉高总线delays(6); /延时 70usx=DQ; /稍做延时后 如果 x=0 则初始化成功 x=1 则初始化失败 while(x); delays(48); /uchar ReadOneChar(void)uchar i=0;uchar dat = 0;for (i=8;i0;i-)DQ = 0; / 给脉冲信号dat=1; i+;i+;i+; i-;i-;i-;DQ =
48、 1; / 接收信号if(DQ)dat|=0 x80;delays(5);return(dat);/写一个字节void WriteOneChar(unsigned char dat)unsigned char i=0;for (i=8; i0; i-)DQ = 0;DQ = dat&0 x01;郑州大学西亚斯国际学院自动化专业毕业设计14delays(3);DQ = 1;dat=1; /delays(4);/读取温度void ReadTemperature(void)uchar a=0;uchar b=0;uint t=0;Init_DS18B20();WriteOneChar(0 xCC);
49、 / 跳过读序号列号的操作WriteOneChar(0 x44); / 启动温度转换Init_DS18B20();WriteOneChar(0 xCC); /跳过读序号列号的操作WriteOneChar(0 xBE); /读取温度寄存器等(共可读 9 个寄存器) 前两个就是温度a=ReadOneChar();b=ReadOneChar();t=b;t4;TempDec=CurrentTempValue/10;Temp1bit=CurrentTempValue%10;*/CurrentTempValue=(int)(t*0.625); TempDec=CurrentTempValue/100;
50、Temp1bit=(CurrentTempValue/10)%10;郑州大学西亚斯国际学院自动化专业毕业设计14TempDot= CurrentTempValue%10;DisplayArray2=TempDec;DisplayArray1=Temp1bit; DisplayArray0=TempDot;/*温度处理部分结束*/*液晶显示部分*void delay(uchar ms) / 延时子程序 uchar k; while(ms) ms-; for(k = 250; k!=0;k-); /等待液晶闲状态bit wait_enable(void) / 测试 LCD 忙碌状态 bit res
51、ult; P0=0XFF; RS = 0; RW = 1; EN = 1; EN = 0; result=EN; return result;/写指令函数: E=高电平跳变成低电平时 RS=0 RW=0void lcd_write_command(uchar command)/(命令,是否等待闲)郑州大学西亚斯国际学院自动化专业毕业设计14 while(wait_enable(); RS=0; RW=0; delay(5); EN=0; P0=command; EN=1; EN=0;/写数据到液晶void lcd_write_data(uchar char_data) while(wait_e
52、nable(); RS = 1; RW = 0; EN = 0; P0 = char_data; EN = 1; delay(1); EN = 0;/初始化液晶void lcd_init() /LCD 初始化设定 delay(15); lcd_write_command(0 x38); /设置显示模式:8 位 2 行 5x7 点阵 lcd_write_command(0 x38); /设置显示模式:8 位 2 行 5x7 点阵 lcd_write_command(0 x38); /设置显示模式:8 位 2 行 5x7 点阵 delay(5); lcd_write_command(0 x01);
53、 /清除 LCD 的显示内容 delay(5); lcd_write_command(0 x03); /光标复位,光标返回到地址 00H郑州大学西亚斯国际学院自动化专业毕业设计14 delay(5); lcd_write_command(0 x38); /设置显示模式:8 位 2 行 5x7 点阵 delay(5); lcd_write_command(0 x0C); /显示器开、光标开、光标允许闪烁 delay(5); lcd_write_command(0 x06); /文字不动,光标自动右移 delay(5);/显示一个字符void display_a_char(uchar positi
54、on,uchar char_data) lcd_write_command(position+0 x80); lcd_write_data(char_data);/显示一个字符串void display_a_string(uchar position,uchar *content,uchar Length) uchar i; for(i=0;i=50) MScond=0; ReadTempFlag=1;ReadhumidityFlag=1; /*湿度处理模块*char s_write_byte(unsigned char value) unsigned char i,error=0; for
55、(i=0 x80;i0;i/=2) if (i&value) DATA=1; else DATA=0; SCK=1; _nop_();_nop_();_nop_(); 郑州大学西亚斯国际学院自动化专业毕业设计14 SCK=0; DATA=1; SCK=1; error=DATA; SCK=0; return error; / reads a byte form the Sensibus and gives an acknowledge in case of ack=1char s_read_byte(unsigned char ack) unsigned char i,val=0; DATA=1; for (i=0 x80;i0;i/=2) SCK=1; if (DATA) val=(val | i); SCK=0; DATA=!ack; SCK=1; _nop_();_nop_();_nop_(); SCK=0; DATA=1; return val;void s_transstart(void) DATA=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《止血与溶血》课件
- 热工基础模拟题及参考答案解析
- 2024年老年护理模拟考试题及答案(附解析)
- 2023年6月商业银行习题(附参考答案解析)
- 维纶纤维在可穿戴设备中的创新应用考核试卷
- 印刷设备在塑料卡片行业的标准考核试卷
- 行业前景分析与智能零售的未来考核试卷
- 地产设计工作总结与规划
- 谷物种植与农业文化遗产保护考核试卷
- 出版业版权输出与国际合作考核试卷
- (完整版)加工中心新刀具常用切削参数参照表1
- 赴远(2024年山东东营中考语文试卷记叙文阅读试题)
- 《计算机网络基础》课件-OSI参考模型
- 2025山东能源集团中级人才库选拔易考易错模拟试题(共500题)试卷后附参考答案
- 家长法制安全教育
- 输血科感控知识培训课件
- 中级经济师(人力资源管理专业)串讲讲义
- 儿童主任培训课件
- 重点和难点工程的施工方案、方法与技术措施
- JBQGTGST9000控制器说明书
- UL2595标准中文版-2015电池驱动设备的要求中文版
评论
0/150
提交评论