您好,欢迎来到世旅网。
搜索
您的当前位置:首页单片机数字温度计课程设计报告

单片机数字温度计课程设计报告

来源:世旅网
数字温度计课程设计报告

目 录

1.设计任务.................................................... ................ ................ .............................1 1.1 设计目的........................................... .............. ................................................1 1.2 设计指标................................ ...................... .......................................................1 1.3 设计要求................................................ ............................................................1 2. 设计思路与总体框图................................................ ...............................................1 3. 系统硬件电路的设计............................................... ................................................2 3.1主控电路............................................... ... .........................................................2 3.2液晶显示电路........................................... .........................................................3 3.3按键电路....... .... ................................................... ............................................3 3.4报警电路........................ .................. ................................................................4 4. 系统仿真设计...........................................................................................................4 4.1仿真原理图............................................... ................ ...... .................................4 4.2各功能元件的分析.............................................................................................5 5. 系统软件设计.........................................................................................................10 5.1 主程序...............................................................................................................11 5.2 读出温度子程序...............................................................................................11 5.3 温度转换命令子程序.......................................................................................12 5.4 设计温度子程序..............................................................................................12 5.5 1602的温度显示...............................................................................................13 6. 总结与体会............................................... ....................................... .... ................13 6 1 总结................................................ ............ ....... ...........................................13 6. 2体会................................................ ............ ....... ...........................................14 7. 参考文献................................................ ............ ....... ............................................15 8. 附录.........................................................................................................................16

1. 设计任务

1

数字温度计课程设计报告

1.1 设计目的

1. 了解数数字温度计及工作原理。 2. 进一步掌握数字温度计设计方法。 3. 进一步掌握各芯片的逻辑功能及使用方法。 4. 进一步掌握keil和仿真软件的应用。 5. 进一步熟悉集成电路的引脚安排.。

1.2 设计指标

1. 显示温度。

2. 可以显示大于零度的温度也可以显示小于零度的温度。

3. 具有显示相应环境温度的功能,并且具有超出设定范围内温度时可以报

警的功能,相应环境可以人为选择。

1.3 设计要求

1. 画出总体设计框图,以说明数字温度计由哪些相对独立的功能模块组

成,标出各个模块之间互相联系。并以文字对原理作辅助说明。 2. 设计各个功能模块的电路图,加上原理说明。

3. 选择合适的元器件,在面包板上接线验证、调试各个功能模块的电路,在接线验证时设计、选择合适的输入信号和输出方式,在确定电路充分正确性同时,输入信号和输出方式要便于电路的测试和故障排除。

4. 在验证各个功能模块基础上,对整个电路的元器件和布线进行合理布局,进行整个数字温度电路的接线调试。

2.设计思路与总体框图.

数字温度计由主控制器(单片机)、温度传感器(DS18B20)、显示器(LCD1602)、独立按键和报警电路组成,温度传感器所感应的温度信号经过其数据传输引脚传送给单片机,单片机将所接收到的温度信号经过处理,将其送至显示器LCD1602显示,并且能够通过独立按键设置温度报警值,若温度处于报警上限和下限之外,报警电路工作。图1所示为数字温度计的一般结构框图:

LCD1602显示

报警温度调

STC90C51

整键

主 控

2

制 器

数字温度计课程设计报告

单片机时钟振荡

蜂鸣器,指示灯

DS18B20传感器

▲图1 数字温度计结构框图

3.系统硬件电路的设计

3.1 主控电路

单片机STC90C51具有低电压供电和体积小等特点,四个端口同时使用以满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。晶振采用12MHZ。

2 主控电路

▲图

3

数字温度计课程设计报告

▲图3 晶振电路

3.2 温度显示电路

采用液晶显示屏LCD1602显示,第一行显示“18B20 OK TL”和报警下限值,第二行显示实时温度以及报警上限值,并且能够显示负温度值。用P0口进行LCD1602的数据写操作,P2.5~P2.7口进行LCD1602的命令控制端口。电路图如下:

▲图4 温度显示电路

3.3 按键电路

本系统一共设置了四个按键,k1键设置温度下限加,k2键设置温度下限减k3键设置温度上限加,k4键设置温度上限减。

4

数字温度计课程设计报告

5 按键电路

▲图3.4 报警电路

本设计采用蜂鸣器和LED灯组成报警电路,电路图如下:

▲图6 报警电路

4.系统设计仿真

4.1仿真原理图

根据数字温度计的一般结构框图,我们通过查阅资料书和上网查询,了解不同元件的功能和实用性,考虑性价比后,制作出的数字温度计的仿真电路原理图,如图7所示。

5

数字温度计课程设计报告

▲ 图7 数字温度计仿真电路原理图

4.2各功能元件的分析[2]

设计原理图中各功能元件的引脚图的分析如下所示: 1.DS18B20:

DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9-12位的数字值读数方式。DS18B20的性能特点如下:

(1)独特的单线接口仅需要一个端口引脚进行通信,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。

(2)DS18B20支持多点组网功能,多个DS18B20可以并联在惟一的三线上,实现多点组网测温;

(3)无须外部器件,全部传感元件及转换电路集成在形如一只三极管的集成电路内;

6

数字温度计课程设计报告

(4)可通过数据线供电,电压范围为3.0-5.5V; (5)零待机功耗;

(6)温度以9或12位数字,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温;

(7)用户可定义报警设置;

(8)报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件; (9)负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;

(10)测量结果直接输出数字温度信号,以\"一线总线\"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力DS18B20采用3脚PR35封装或8脚SOIC封装,其引脚排列及内部结构框:

▲ 图8 DS18B20引脚排列图

▲ 图9 内部结构框图

7

数字温度计课程设计报告

预置 斜率累加器 低温度系数振荡T1 Tx 计数器1 预置 比较 加1 高温度系数振荡=0 停止 计数器2 T2 ▲ 图 10 DS18B20测温原理图

-0 温度寄存器

64位ROM的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。温度报警触发器TH和TL,可通过软件写入户报警上下限。

DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为8字节的存储器,结构如图4所示。头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图5所示。低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户不要去改动,R1和R0决定温度转换的精度位数,来设置分辨率。

8

数字温度计课程设计报告

温度 LSB 温度 MSB TH用户字节1 TL用户字节2 配置寄存器 保留 保留 保留 CRC TM R1 R0 1 1 1 1 1 图11 DS18B20的字节定义

DS18B20的分辨率定义如表1所示 表1 分辨率设置表 R0 0 0 1 1 R1 0 1 0 1 分辨率 9位 10位 11位 12位 最大温度转移时间 96.75ms 187.5ms 375ms 750ms 由表1可见,DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。 主机控制DS18B20完成温度转换过程是:每一次读写之前都要对DS18B20进行复位,即将数据总线下拉500us,然后释放,DS18B20收到信号后等待16-60us左右,之后发出60-240us的存在低脉冲,主CPU收到此此信号表示复位成功;复位成功后发送一条ROM指令,然后发送RAM指令,这样才能对DS18B20进行预订的读写操作。

表2 ROM指令集 指令 读ROM 符合ROM 约定代码 33H 55H 功能 读DS18B20中的编码 发出此命令后,接着发出64位ROM编码,访问单线总线上与该编辑相对应的DS18B20使之做出响应,为下一步9

数字温度计课程设计报告

对该DS18B20的读写作准备 搜索ROM 0F0H 用于确定挂接在同一总线上的DS18B20个数和识别64位ROM地址,为操作各器件作准备 跳过ROM 告警搜索命令

表3 RAM指令集

指令 温度转换 读暂存器 写暂存器 复制暂存器 重调E2RAM 读供电方式

DS18B20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将最低温所对应的一个基数分别置入减法计数器1、温度寄存器中,计数器1和温度寄存器被预置在最低温所对应的一个基数值。 减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到0时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。

10

0CCH 0ECH 忽略64位ROM地址,直接向DS18B20发送温度变换指令 执行后,只有温度跳过设定值上限或下限的片子才能做出反应 约定代码 44H 0BEH 4EH 48H 0B8H 0B4H 功能 启动DS18B20进行温度转换 读暂存器9个字节内容 将数据写入暂存器的TH、TL字节 把暂存器的TH、TL字节写到E2RAM中 把E2RAM中的TH、TL字节写到暂存器TH、TL字节 启动DS18B20发送电源供电方式的信号给主CPU 数字温度计课程设计报告

▲ 图 12 测温电路图

2. LCD1602:

工业字符型液晶,能够同时显示16x02即32个字符(16列2行)。1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。1602芯片的接口信号说明如下表:

1602芯片的接口信号说明

5 系统软件设计

整个系统是由硬件配合软件来实现的,在硬件确定后,编写的软件的功能也就基本定型了。所以软件的功能大致可分为两个部分:一是监控,这也是系统的核心部分,二是执行部分,完成各个具体的功能。系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序

11

数字温度计课程设计报告

等。

5.1主程序

主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图13所示。

开始 发DS18B20复位命令 液晶初始化 发跳过ROM命令 调用按键函数, 液晶显示函数

判断温度值与 设定报警值大小 发读取温度命令 读取操作,CRC校验 Y N 9字节完? 大于TH或 N 者小于TL Y CRC校验正?N Y 报警 移入温度暂存器

结束 结束 ▲ 图 13 主程序流程图 ▲ 图 14 读温度流程图

5.2读出温度子程序

读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图15示:

12

数字温度计课程设计报告

发DS18B20复位命令 发跳过ROM命令

结束 发温度转换开始命令 ▲ 图 15 温度转换流程图

5.3温度转换命令子程序

温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如上图,图13所示

5.4 计算温度子程序

计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图16所示。

开始 N 温度零下? Y 温度值取补码置“—”标志 置“+”标志 计算小数位温度 计算整数位温度 结束 13

数字温度计课程设计报告

▲ 图 16 计算温度温度流程图

5.5 1602的液晶显示

▲ 图 17 1602液晶显示流程图

6.总结与体会

6.1 总结

1.根据原理和芯片引脚图,分功能设计原理图,并根据接线顺序分步骤验证。

2.容易出现故障为接触不良。

a) 集成块引脚方向预先弯好对准面包板的金属孔,再小心插入。 b) 导线的剥线长度与面包板的厚度相适应(比板的厚度稍短)。 c) 导线的裸线部分不要露在板的上面,以防短路。 d) 导线要插入金属孔中央。 3.注意芯片的控制引脚必须正确接好

4.检查故障时除测试输入、输出信号外,要注意电源、接地和控制引脚。 5.要注意芯片引脚上的信号与面包板上插座上信号是否一致(集成块引脚与面包板常接触不良)。

6.接校时电路时可接模拟信号输入(如1Hz和2Hz)测试输出信号的切换正

14

数字温度计课程设计报告

确后,再将秒进位和分进位信号接到校时电路,再接校时电路输出到分计数器和时计数器。

从较时电路接入信号时,必须将原进位信号拔掉。

6.2 体会

经过将近两周的单片机课程设计,终于完成了我们的数字温度计课程设计,虽然课程设计做的不是特别好,但从心底里说,还是高兴的,因为我们收获了很多很多,这些在平常的学习当中是收获不到的,但高兴之余不得不静下来深思! 在本次课程设计的过程中,我们发现很多的问题,虽然以前还做过类似的课程设计,但这次设计真的让我学到了很多、长进了很多,单片机课程设计的重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过一些程序,但觉的要写好一个程序并不是一件简单的事,所以我们只能不断的调试不断的修改才能把程写的更好。所以得出结论是:有好多的东西,只有我们去试着做了,才能真正的掌握,只学习理论有些东西是很难理解的,更谈不上掌握,实践才是硬道理,实践是检验真理的唯一标准。

通过这次的课程设计,我们真正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,这样我们才能更好的理解、掌握这些知识,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。通过这次对数字温度计的设计与制作,让我们了解了设计电路的程序,也让我们了解了关于数字温度计的原理与设计理念,要设计一个电路总要先用仿真仿真成功之后才实际接线的。但是最后的成品却不一定与仿真时完全一样,因为,在实际接线中有着各种各样的条件制约着。并且,在仿真中无法成功的电路接法,在实际中因为芯片本身的特性而能够成功。所以,在设计时应考虑两者的差异,从中找出最适合的设计方法。

通过这次学习,让我们对各种电路都有了大概的了解,所以说,坐而言不如立而行,对于这些电路还是应该自己动手实际操作才会有深刻理解。

当然在这个过程中我们还会遇到很多其它的问题,这些问题我们也不是那么轻易的就能够解决的,此时我们就会去翻阅相关资料,或者是问同学、问老师,我们的同学和老师那一个个真的事知无不答的,这样我们就能很快的把问题给决绝掉了,那种感觉真的让人很舒畅,这也让我们明白了一件事,在学习中我们缺

15

数字温度计课程设计报告

少不了同学、老师的帮助,他们能够很快的解决一些问题。

从这次的课程设计中,我真正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识应用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。

7.参考文献

[1] 《单片机原理及应用》杨恢先、黄辉光主编[M].湘潭大学出版社

[2] 《电子技术基础》(第五版)华中科技大学电子技术课程组编[M].康华光主编,陈大钦、张林副主编,高等教育出版社

[3] 《单片机课程指导》楼然苗 、李光飞编著,北京航空航天大学大学出版社

[4] 《51单片机C语言教程》 郭天祥 编著

16

8.附录:

#include #include

#define uchar unsigned char #define uint unsigned int uchar temp,num,k1num;

uchar code table[]={\"18B20 OK TL\char shangxiaxian[2]={-10,10}; char a;

sbit k1=P1^0; sbit k2=P1^1; sbit k3=P1^2; sbit k4=P1^3; sbit LCD_RW=P2^5; sbit lcdrs=P2^6; sbit lcden=P2^7; sbit Beep=P3^0; sbit led=P3^1; sbit DQ=P3^7;

/*液晶显示屏的延时程序*/ void delay(uint z) {

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--); }

/*温度传感器的延时程序*/ void Delay1(uint y) {

uint x;

for( ; y>0; y--) {

for(x=110; x>0; x--); } }

/*蜂鸣器,18b20写数据函数的延时程序*/ void delay2(uint a) {

while(--a); }

/*温度传感器初始化函数*/ void init_18b20() {

DQ=1;

delay2(8); DQ=0;

delay2(90); DQ=1; _nop_();

数字温度计课程设计报告

17

数字温度计课程设计报告

_nop_(); delay2(100); DQ=1; }

/*温度传感器写字节命令函数*/ void Ds18b20xiezijie(uchar date) {

uchar i;

for(i=0;i<8;i++) {

DQ=0; //在写入一位数据之前先把总线拉低 DQ=date&0x01; //写入一个数据,从最低位开始写 delay2(5); //延时一下

DQ=1; //将总线拉高,等待第二位数据写入 date>>=1; //右移一位,写入第二位数据 } }

/*温度传感器读字节命令函数*/ uchar Ds18b20duzijie() {

uchar i,dat=0; DQ=1; _nop_();

for(i=0;i<8;i++) {

DQ=0; //先将总线拉低 _nop_(); _nop_(); dat>>=1;

DQ=1; //然后释放总线

_nop_(); //延时一下等待数据稳定 _nop_(); if(DQ)

dat|=0x80; //读取数据,从最低位开始读取

delay2(30); //读取完之后等待一下,再接着读取下一个数 DQ=1; }

return dat; //返回所读到的温度 }

/*写温度转换命令函数*/ void Ds18b20ChangTemp() {

init_18b20(); Delay1(1);

Ds18b20xiezijie(0xcc); //跳过ROM操作命令 Ds18b20xiezijie(0x44); //温度转换命令 }

/*读温度命令函数*/

void Ds18b20ReadTempCom() {

init_18b20(); Delay1(1);

Ds18b20xiezijie(0xcc); //跳过ROM操作命令

18

数字温度计课程设计报告

Ds18b20xiezijie(0xbe); //发送读取温度命令 }

/*读温度函数*/

int Ds18b20ReadTemp() {

int temp = 0; uchar tmh, tml;

Ds18b20ChangTemp(); //先写入转换命令

Ds18b20ReadTempCom(); //然后等待转换完后发送读取温度命令 tml = Ds18b20duzijie(); //读取温度值共16位,先读低字节 tmh = Ds18b20duzijie(); temp = tmh; temp <<= 8; temp |= tml; return temp; }

/*液晶屏写指令函数*/

void write_com(uchar com) {

lcdrs=0; lcden=0; LCD_RW=0; P0=com; delay(5); lcden=1; delay(5); lcden=0; }

/*液晶屏写指令函数*/ void write_com2(int com) {

lcdrs=0; LCD_RW=0; lcden=0; delay(5); P0=com; delay(5); lcden=1; delay(5); lcden=0;

P0=(com&0x0f)<<4; delay(5); lcden=1; delay(5); lcden=0; }

/*液晶屏写数据命令函数*/ void write_data(char date) {

lcdrs=1; LCD_RW=0; lcden=0; P0=date;

//再读高字节

19

数字温度计课程设计报告

delay(5); lcden=1; delay(5); lcden=0; lcdrs=1; LCD_RW=0; lcden=0;

P0=(date&0x0f)<<4; //一次写入4位 delay(5); lcden=1; delay(5); lcden=0; }

/*液晶屏初始化函数*/ void init() {

lcden=0;

write_com(0x28); write_com2(0x28); write_com2(0x0c); write_com2(0x06); write_com2(0x01); write_com2(0X80); }

/*报警上下线处理函数*/

void write_hl(uchar add,char date) {

uchar bai,shi,ge;

if(date<0){date=-date;} bai=date/100; shi=date%100/10; ge=date%100%10;

write_com2(0x80+0x40+add); write_data(0x30+bai); write_data(0x30+shi); write_data(0x30+ge); }

/*报警上下线处理函数*/

void write_hl1(uchar add,char date) {

uchar bai,shi,ge;

if(date<0){date=-date;} bai=date/100; shi=date%100/10; ge=date%100%10;

write_com2(0x80+add); write_data(0x30+bai); write_data(0x30+shi); write_data(0x30+ge); }

/*液晶屏显示函数,显示温度值*/ void Lcdxianshi(int temp) {

20

数字温度计课程设计报告

uchar sz[4]={0,0,0,0};

unsigned char datas[] = {0, 0, 0, 0, 0}; //定义数组 float tp;

if(temp< 0) //当温度值为负数 {

write_com2(0x80+0x40); //写地址 80表示初始地址 write_data('-'); //显示负

temp=temp-1;//因为读取的温度是实际温度的补码,所以减1,再取反求出原码 temp=~temp; tp=temp;

temp=tp*0.0625*100+0.5; } else

{

write_com2(0x80+0x40); //写地址80表示初始地址 write_data('+'); //显示正

tp=temp; //因为数据处理有小数点所以将温度赋给一个浮点型变量 如果温度是正的那么,那么正数的原码就是补码它本身 temp=tp*0.0625*100+0.5; }

datas[0] = temp / 10000; //百位 datas[1] = temp % 10000 / 1000; //十位 datas[2] = temp % 1000 / 100; //个位 datas[3] = temp % 100 / 10; //小数 write_com2(0x80+0x40+1); write_data('0'+datas[0]); write_com2(0x80+0x40+2); write_data('0'+datas[1]); write_com2(0x80+0x40+3); write_data('0'+datas[2]);

write_com2(0x80+0x40+4); write_data('.');

write_com2(0x80+0x40+5); write_data('0'+datas[3]);

a=(datas[0]*100+datas[1]*10+datas[2]); //用于温度的比较值 write_hl(13,shangxiaxian[1]); //显示报警上限 write_hl1(13,shangxiaxian[0]); //显示报警下限 }

/*按键处理函数,用于设置温度报警值*/ void key() {

if(k1==0) {

delay(5);

if(k1==0) //温度报警下限加 {

shangxiaxian[0]++;

if(shangxiaxian[0]==127) shangxiaxian[0]=126;

write_hl1(13, shangxiaxian[0]); } }

if(k2==0) //温度报警下限减

21

数字温度计课程设计报告

{

delay(5); if(k2==0) {

shangxiaxian[0]--;

if(shangxiaxian[0]==-56) shangxiaxian[0]=-55;

write_hl1(13, shangxiaxian[0]); } }

if(k3==0) //温度报警上限加 {

delay(5); if(k3==0) {

shangxiaxian[1]++;

if(shangxiaxian[1]==127) shangxiaxian[1]=126;

write_hl(13, shangxiaxian[1]); } }

if(k4==0) //温度报警上限减 {

delay(5); if(k4==0) {

shangxiaxian[1]--;

if(shangxiaxian[1]==-56) shangxiaxian[1]=-55;

write_hl(13, shangxiaxian[1]); } } }

void main() { int b; init(); led=0;

for(num=0;num<11;num++) //让液晶屏显示“18B20 OK TL” {

write_data(table[num]); delay(20); }

write_com2(0x80+0x40+9); write_data('T');

write_com2(0x80+0x40+10); write_data('H'); while(1) {

key();

Lcdxianshi(Ds18b20ReadTemp()); delay(100);

if(shangxiaxian[0]<0)

22

数字温度计课程设计报告

{

write_com2(0x80+12); write_data('-'); } else {

write_com2(0x80+12); write_data('+'); }

if(shangxiaxian[1]<0) {

write_com2(0x80+0x40+12); write_data('-'); } else {

write_com2(0x80+0x40+12); write_data('+'); }

if(a>shangxiaxian[1]) //判断温度值与报警值的大小 {

write_com2(0x80+0x40+6); write_data('>');

write_com2(0x80+0x40+7); write_data('H'); }

if(awrite_com2(0x80+0x40+6); write_data('<');

write_com2(0x80+0x40+7); write_data('L'); }

if(a>=shangxiaxian[0]&&a<=shangxiaxian[1]) //判断温度值与报警值的大小 {

write_com2(0x80+0x40+6); write_data(' ');

write_com2(0x80+0x40+7); write_data('!'); }

if(ashangxiaxian[1]) //如果温度值在报警值之外则,蜂鸣器响 {

for(b=0;b<1000;b++) { Beep= 1;led=1; delay2(20); Beep= 0;led=0; delay2(20); } } } }

23

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- esig.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务