




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课题二:基于AT89C51单片机的数显温度传感器设计一、设计目的1、掌握51单片机最小系统的设计;2、掌握温度传感器DS18B20的使用;3、掌握C51的编程方式。设计任务与要求基于AT89C51单片机的数显温度传感器设计主要具有如下功能,具体要求如下:1.温度传感器DS18B20检测环境温度。2.用4位数码管显示温度;3.设定一个温度,当检测的温度达到这个设定值时,用蜂鸣器实现报警。设计步骤根据课题,查阅相关资料。画出系统原理框图,确定基本电路。(电路图不能在Protuse里画,在A4纸上或者用DXP画电路图)在Protuse里进行仿真。(仿真结果出来后,才发放元件) 按电路原理图在板子上焊
2、接电路。调试硬件。撰写电子综合设计报告:字数约20003000字(不包括程序清单), 格式见附件2)。最后一个下午,制作PPT进行答辩。题目二:基于AT89C51单片机的数显温度传感器设计元件名称型号数量单片机最小开发板STC89C521温度传感器DS18B201三极管88501蜂鸣器1LED红1电阻10k、3k、2k、1k、510、330各5各2位一体数码管共阳2AC/DC( 5V/1A)电源1单排插针402双排插针4029X15cm万用板(3连孔)1杜邦线15附件2:单片机原理及其应用课程设计设计报告格式成绩:重庆大学城市科技学院电气学院基于AT89C5惮片机的数显温度传感器设计报告、设计
3、目的作用本设计是一款简单实用的小型数字温度计,所采用的主要元件有传感器DS18B20单片机 AT89C52四位共阴极数码管一个,电容电阻若干。DS18B20支持“一线总线”接口,测量温度范围-55 C +125 C。在-10 C+85C范围内,精度为 0.5 Co 18B2 0的精度较差,为 2 C。现场温度 直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣 环境的现场温度测量,女口:环境控制、设备或过程控制、测温类消费电子产品等。 本次数字温度计的设计共分为五部分,主控制器,LED显示部分,传感器部分,复位部分,按键设置部分,时钟电路。主控制器即单片机部分,用于存储程序
4、和 控制电路;LED显示部分是指四位共阴极数码管,用来显示温度;传感器部分,即温度传感器,用来采集温度,进行温度转换;复位部分,即复位电路,按键部 分用来设置上下限报警温度。测量的总过程是,传感器采集到外部环境的温度, 并进行转换后传到单片机,经过单片机处理判断后将温度传递到数码管显示。二、设计要求具体要求如基于AT89C51单片机的数显温度传感器设计主要具有如下功能, 下:(1) .温度传感器DS18B20佥测环境温度。(2) .用两个2位一体共阳数码管显示温度;设定值时,用蜂鸣器实现报警,同时三、设计的具体实现(3) .通过按键开关设定一个上限温度和一个下限温度,当检测的温度达到这个 LE
5、D灯闪烁。1、设计原理大多都是使用传感器,所以这是非常DS18B20此传感器,可以很容易直(DS18B20数字温度传感并可使多点温DS18B20数字温度传感器测用温度传感器,在单片机电路设计中, 容易想到的,所以可以采用一只温度传感器 接读取被测温度值,进行转换,就可以满足设计要求。 器具有单总线的独特优点,可以使用户轻松地组建起传感器网络, 度测量电路变得简单、可靠,所以在该设计中采用 量温度。)实验名称是“基于AT89C51单片机的数显温度传感器设计”,涉及到MCS-51 系列的单片机,我们首先有设计一个能使单片机工作的最小系统,然后温度传感器将实时温度值送给单片机,通过对单片机进行软件编
6、程实现数据处理, 然后送 给LED共阴数码管显示,在对单片机编程时要考虑到要使得能通过按键开关设 置上限报警温度及下限报警温度,通过蜂鸣器报警,在报警的同时LED灯同步闪烁。设计任务书中已给出了元件清单,但是我们需要在软件中对自己设计的电 路进行仿真我们还需要画出单片机的最小系统电路。总体电路结构框图所示:f单片机时钟电路及复位电路AT89C51单片机共阳数码管显示模块f1DS18BB20 温度传感器模块蜂鸣器报警及LED显示模块Z 按键控制模块 2、系统设计(详细介绍各单元电路的选择、设计及工作原理分析,并介绍有关参数的计算 及元器件参数的选择等,要求有原理图。)(1)、硬件设计硬件电路设计
7、通过单片机仿真软件 Proteus 8.0进行原理图的编辑,根据实 验要求及所给出的元件设计出如下电路原理图,并进行了仿真时钟及复位模块实验所给的元件中直接已给出了 AT89C51的最小系统板,但是我们在设计电 路时还是你需要画出该部分电路,时钟复位为能使单片机工作的最简单的电路, 又称最小系统。具体实验电路如下:时钟电路有12MHZ勺晶振及两个2030PF的瓷片电容(无极性)连接在单片 机的XTAL1及XTAL2连个端口;复位电路由10K的电阻,10UF电解电容(有极 性)以及按键开关组成,接在单片机的 RST 口。当系统出现故障错误,我想让系 统恢复初始化状态可以通过对按动按键开关实现对电
8、容的充放电从而实现系统 的复位。蜂鸣器报警及LED显示模块蜂鸣器用于当温度传感器的输入的温度数值大于认为设定的上限温度或者 小于下限温度时,系统会给出相应的信号使得蜂鸣器发出声音同时让LED灯闪烁显示,从听觉和视觉上同时提出报警信号。电路图如下:蜂鸣器由一个PNF型的三极管驱动接在单片机的 P1.0 口,当P1.0 口输出低 电平是蜂鸣器发出声音;LED灯正极通过1K的电阻上拉接Vcc,负极接在单片机 的P1.1 口,当系统在P1.1 口输出低电平时LED灯亮。共阳数码管显示显示模块实验给出的数码管为2位一体共阳的数码管,在实验显示中我们需要四个数 码管去显示相应的温度,所以采用两个2位一体共
9、阳数码管并联当做一个 4位一 体的共阳数码管。电路原理图如下:数码管的使用设计到了段选及位选,我们把段选接在单片机的P0 口,位选 接在数码管的P2.4-P2.7 口,需要注意的是此数码管为共阳的,所以P0 口输出的低电平完全可以驱动数码管的段选显示, 但是位选输出高电平不足以驱动数码 管显示导致数码管的亮度不够,此时我们需要在数码管的位选段接上相应的1K的上拉电阻,这样数码管的亮度就可以明显的得到提升。DS18BB2(温度传感器模块DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进 型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测 温度,并且可根据实际要
10、求通过简单的编程实现 912位的数字值读数方式。coes%DO NSD刃阳20石二只引M, VC DQ.相兀h电路图如下:接在单片机的P2.3 口,DS18B20勺DQ端需要接一个4.7K左右的上拉电阻。 按键控制模块按键是用来设置报警的上下限温。 K1 是用来进入上下限调节模式的,当 按一下 K1 进入上限调节模式,再按一下进入下限调节模式。在正常模式下, 按一下K2进入查看上限温度模式,显示1s左右自动退出;按一下K3进入查 看下限温度模式,显示1s左右自动退出;按一下 K4消除按键音,再按一下 启动按键音。在调节上下限温度模式下,K2是实现加1功能,K1是实现减1功能,K3是用来设定上下
11、限温度正负的。(2)、软件设计通过单片机编程软件 Keil 4 进行编程,程序部分通过一个主函数和自定义 的三个 #includeds18b20.h #includekeyscan.h #includedisplay.h 头文件,分别完成温度的采集转化、 通过键盘设定上下限报警温度以及模式的切 换、通过定时器 0 延时使数码管动态显示温度 系统的主流程图 :3、系统实现(详细介绍实物连接图及运行程序时的每种结果, 要求有图为证, 并对每张图片 进行简单的说明)根据系统的设计框图,查找相关资料,在 Proteus 8.0 中画出原理图,在 KEIL 4软件中编写好程序, 然后将这两个软件结合,
12、将写好的程序在 Proteus 8.0 中烧录进单片机, 然后开启仿真开关, 即可显示设计效果, 通过修改硬件电路的 同时结合程序, 实现实验要求。 然后开始焊接硬件电路, 在多孔板上焊出相应的 电路,用杜邦线将各个模块与单片机最小系统板连接在一起得到最终电路, 用烧 录软件将程序烧录进单片机,最终以实际电路的形式展现出成果。 系统的调试及性能分析:硬件调试,首先检查电感的焊接是否正确, 然后可用万用表测试或通电检测。 软件调试可以先编写显示程序并进行硬件的正确性检验, 然后分别进行主程 序、读出温度子程序、 温度转换命令子程序、 计算温度子程序和现实数据刷新子 程序等的编程及调试四、总结(对
13、整个设计工作过程进行归纳和综合, 对设计中所存在的问题和不足进行分析 和总结,提出解决的方法、措施、建议和对这次设计实践的认识、收获和提高。) 通过本次课程设计使我收获很多, 从一开始对单片机仿真软件的使用到后来渐渐 的熟悉,深深感觉到了我们在设计电路的时候为了验证我们方案的可行性, 我们 必须借助一些仿真软件, 来模拟我们设计的电路, 这样既可以节省本也使得我们 焊接实物时有了很好的依据, 要学会以这种方法为基础再来焊接电路。 通过系统 仿真软件Proteus和编译软件Keil,使我们进一步了解了单片机的设计制作过程,其中最为困难的是软件部分,即编程部分,我们上网找了好多资料,虽然经过自 己
14、的修改,但还是有很多功能不能实现,如温度上下限设置。由于P roteus并不是很熟练,在使用的过程中有很多原件的名称不知道, 从而花费了大量的时间查 阅资料。在应用仿真的过程中,还出现了仿真软件出现问题,不管怎样修改程序, 结果在仿真软件上还是出现错误,后来发现是我们使用的软件是盗版的所以他可 能在仿真过程中出现错误,最终决定先将硬件焊接出来将程序写进去看看结果, 再对软件进行相应的调整,最后焊接出来将程序写进单片机经过简单的调整实现 了实验要求。最后一步的焊接硬件也遇到了不少麻烦。 综上所述我们得出这样的 结论,应该借助软件仿真证明我们方案的可行性, 设计时实际电路和我们理论上 的数值是有所
15、差别的,我们也要学会将理论知识与实际结合起来, 这样我们才能 在实际中提高自我能力,我们才能真正理解并在实际中运用我们的知识。五、附录附录一:元件清单元件名称型号数量单片机最小开发板STC89C521温度传感器DS18B201三极管88501蜂鸣器1LED红1电阻10k、3k、2k、1k、510、330各5各2位一体数码管共阳2AC/DC( 5V/1A)电源1单排插针402双排插针4029X15cm万用板(3连孔)1杜邦线15附录二:实物焊接图附录三:程序/* 程序名 ; 基于 51 单片机的温度计* 功能:实时测量温度,超过上下限报警,报警温度可手动调整。按一下 K2 进入查看上限温度模式,
16、显示按一下 K3 进入查看下限温度模式,显示K1 是用来进入上下限调节模式的,当按一下 K1 进入上限 调节模式,再按一下进入下限调节模式。在正常模式下, 1s 左右自动退出; 1s 左右自动退出;按一下 K4 消除按键音,再按一下启动按键音。在调节上 下限温度模式下, K2 是实现加 1功能, K1 是实现减 1功能, K3 是用来设定上下限温度正负的。*/ #include/将 intrins.h 头文件包含到主程序(调用其中的 _nop_()#include 空操作函数延时)/max 是上限报警温度, min 是下限报警温度/s 是调整上下限温度时温度闪烁的#define uint un
17、signed int #define uchar unsigned char uchar max=0x00,min=0x00; bit s=0;/s1 标志位用于上下限查看时的显标志位, s=0 不显示 200ms, s=1 显示 1s 左右 bit s1=0;/声明 display1 ()函数( display.h 头文件中的函数,示void display1(uint z); ds18b20.h 要用应先声明) #includeds18b20.h #includekeyscan.h#includedisplay.h /*/ /* 主函数void main()beer=1; led=1; t
18、imer1_init(0);get_temperature(1);/*/关闭蜂鸣器/ 关闭 LED 灯/初始化定时器 1(未启动定时器 1)/ 首次启动 DS18B20 获取温度( DS18B20 上电后自动将EEPROM 中的上下限温度复制到 TH 和 TL 寄存器) while(1) keyscan(); get_temperature(0); display(temp,temp_d*0.625); alarm();/* 程序名 ; ds18b20keyscan 函数* 功能:通过键盘设定设定上下限报警温度*/#ifndef _keyscan_H_ #define _keyscan_H_s
19、bit key仁卩2人2;sbit key2=卩2人1;sbit key3=PiO;sbit key4=卩3人3;uchari=O;模式, 1 上限调节模式, uchar a=O;择/定义头文件/定义全局变量i用于不同功能模式的选择, 0正常 2下限调节模式/定义全局变量 a 用于不同模式下数码管显示的选bit k4=0;/K4 按键双功能选择位, k4=0 时 K4 按键选择消按键音的功能, k4=1 时 K4 按键选择正负温度设定功能bit v=0;/K2 、 K3 按键双功能选择位, v=0 时选择上下限查看功能, v=1 时选择上下限温度加减功能bit v1=0;查看功能/v1=1 时
20、定时 1250ms 时间到自动关闭报警上下限bit v2=0; 1 时关按键音/*/*/消按键音功能调整位,为O时开按键音,为读键盘延时子函数/*/void keyscan_delay(uint z)/延时 1ms 左右uinti,j;for(i=z;i0;i-)for(j=120;j0;j-); /*/*温度调节函数/*/ inttemp_change(intcount,bit f)if(key2=0)if(v2=0)beer=0; keyscan_delay(10);/上下限温度调整/ 判断 K2 是否按下/v2=0 开按键音,否则消按键音/延时 10msif(key2=0)beer=1;
21、if(f=0) count+;/ 再次判断 K2 是否按下实现按按键时消抖)/K2 按下关按键音/若温度为正/ 每按一下 K2 温度上调if(a=1)if(count125) count=125;/ 当温度值大于 if(a=2)if(count125) count=125; if(f!=0)1125 时不上调/若温度为负count+; / 每按一下 K2 温度下调 if(a=1)if(count55) count=55;/ 当温度值小于 -55 时不再下调 if(a=2)if(count55) count=55;while(key2=0); keyscan_delay(10);if(key3=
22、0) if(v2=0)beer=0;keyscan_delay(10);if(key3=0)beer=1;count-;/K2 松开按键时消抖/K3 按按键时消抖/每按一下 K3 温度为正时下调 1,为负时上调 1if(a=1)if(count0) count=0;/ 当温度值达到 0 时不再调 if(a=2)if(count2) i=0;/K1 按一下 i 加 1,i= 0进入正常模式,i= 1进i= 2进入调下限模式/K1 按下三次后退出调节模式TR1=0; k4=0; v=0;/进入正常模式/ 关定时器 1/在正常模式下选择 K4 的消按键音功能/在正常模式下选择 K2 、K3 的查看上
23、下限报警温度功能store_t(); switch(i) case 0:a=0;break; case 1:a=1;break; case 2:a=2;break; default:break; while(key1=0); keyscan_delay(10); if(a=1&v=1)加功能/存储调整后的上下限报警温度/显示选择/a=0 选择显示测得的温度/a=1 选择显示上限温度/a=2 选择显示下限温度/K1 松按键时消抖/a=1 选择显示上限温度且 v=1 时选择上下限温度led=0;max=temp_change(max,f_max);/ 显示上限温度 else if(a=2&v=1)
24、/a=2 选择显示下限温度且 v=1 时选择上下限温度减功能/k4=1 时 K4 按键选择正负温度设定功能led=1;min=temp_change(min,f_min); else;if(k4=1)if(key4=0)if(v2=0)beer=0;keyscan_delay(6);if(key4=0)为正温度正温度beer=1;if(a=1)if(max55) f_max=0;else f_max=f_max;/ 当温度大于 55 度时,只能设定if(a=2)if(min55) f_max=0;else f_min=f_min;/ 当温度大于 55 度时,只能设定为 while(key4=0
25、); keyscan_delay(10);if(v=0)if(key2=0)if(v2=0)beer=0; keyscan_delay(10); if(key2=0) beer=1;a=1;TR1=1;s1=1;while(key2=0); keyscan_delay(10);if(key3=0)if(v2=0)beer=0; keyscan_delay(10); if(key3=0) beer=1;a=2;TR1=1;s1=1;while(key3=0); keyscan_delay(10);/v=0 时选择上下限查看功能/选择上限显示/ 开定时器 1 开始定时一分钟左右/上限显示不闪烁,显
26、示一分钟左右自动退出/选择下限显示/开定时器 1 开始定时 1s /下限显示不闪烁,显示 1s 自动退出if(v1=1)a=0;v1=0;TR1=0;if(k4=0)/为 0时开按键音,为 1时关按键音/v1=1 时定时 1s 时间到自动关闭报警上下限查看功能/a=0 显示实测温度, v1 清零,关定时器 1 /k4=0 时 K4 按键选择消按键音的功能if(key4=0)if(v2=0)beer=0; keyscan_delay(10); if(key4=0)beer=1;v2=v2;while(key4=0); keyscan_delay(10);#endif/* 程序名 ;DS18B20
27、 头文件*说明:用到的全局变量是:无符号字符型变量temP(测得的温度整数部分),temp_d(测得的温度小数部分),标志位f (测量温度的标志位 0表示“正温度” 1表示“负温度”),标志位f_max (上限温度的标志位0表示“正温度”、1 表示“负温度”),标志位f_min (下限温度的标志位0表示“正温度” 、1表示“负温度”),标志位w(报警标志位 1 启动报警 0关闭报警 )。*/#ifndef _ds18b20_h_ #define _ds18b20_h_ #define uint unsigned int #define uchar unsigned char sbit sbit
28、 sbit ucharDQ= P 2人3; beer= PIP; led=Pir; temp=0;uchartemp_d=0;bitf=0;“负温度”)bitf_max=0;“负温度”)/定义头文件/DS18B20 接口/用 beer 表示 P1.0/用 led 表示 P1.1/测量温度的整数部分 /测量温度的小数部分/测量温度的标志位 0表示“正温度”/上限温度的标志位 0表示“正温度”1表示1表示bit f_min=0; “负温度”)/下限温度的标志位 0表示“正温度” 1表示w=0;/报警标志位 1 启动报警 , 0 关闭报警 ;/*/*延时子函数bit/*/延时几卩svoid ds18
29、b20_delayus(uint t) while(t-);void ds18b20_delayms(uint t)/延时 1ms 左右uinti,j; for(i=t;i0;i-) for(j=120;j0;j-);/*/DS18B20 初始化函数/*/*/void ds18b20_init()uchar c=0;DQ=1;DQ=0;ds18b20_delayus(80);DQ=1;while(DQ);ds18b20_delayus(150);DQ=1;/ 控制器向 DS18B20 发低电平脉冲/延时15-80卩s/控制器拉高总线,/等待DS18B20拉低总线,在 60-240卩s之间/延时
30、,等待上拉电阻拉高总线/拉高数据线,准备数据传输;/*/DS18B20 字节读函数/*/*/uchar ds18b20_read() uchari; uchar d=0; DQ = 1; for(i=8;i0;i-) /准备读;d = 1;/低位先发;DQ = 0; _nop_(); _nop_();DQ = 1; if(DQ) d |= 0x80;ds18b20_delayus(10); return d;/ 必须写 1,否则读出来的将是不预期的数据; /在 12us 处读取数据;/返回读取的值/*/* DS18B20 字节写函数 /*/void ds18b20_write(uchar d)
31、uchari;for(i=8;i0;i-)DQ=0;DQ=d&0x01; ds18b20_delayus(5);DQ=1;d = 1;/*/* 获取温度函数/*/ voidget_temperature(bit flag) uchar a=0,b=0,c=0,d=0;uinti; ds18b20_init(); ds18b20_write(0xcc); ds18b20_write(0x44);部 RAM/向 DS18B20 发跳过读 ROM 命令/写启动 DS18B20 进行温度转换命令, 转换结果存入内if(flag=1) / 首次启动 DS18B20 进行温度 转换需要500ms若转换时间
32、不够就出错,读出的是85度的错误值。display1(1);/用开机动画耗时elseds18b20_delayms(1); ds18b20_init();ds18b20_write(0xcc); ds18b20_write(0xbe); a=ds18b20_read(); b=ds18b20_read();if(flag=1)/读内部/读内部RAM (LSB )RAM (MSB )/局部位变量 f=1 时读上下线报警温度max=ds18b20_read(); min=ds18b20_read();/读内部/读内部RAM (TH )RAM (Tl )if(max&0x80)=0x80) 是负温度
33、/若读取的上限温度的最高位(符号位)为1表明f_max=1;max=(max-0x80);限温度装换成无符号数。/ 将上限温度符号标志位置 1表示负温度,将上if(min&0x80)=0x80)是负温度/若读取的下限温度的最高位(符号位)为1表明f_min=1;min=(min-0x80);限温度装换成无符号数。/ 将下限温度符号标志位置 1表示负温度,将下i=b; i=4; if (i=0) f=0;temp=(a4)|(b4)|(b4); a=(a&0x0f); temp_d=a; /*/ /* 存储极限温度函数/i 为 0,正温度 ,设立正温度标记 /整数部分/小数部分/i为 1 ,负温
34、度 ,设立负温度标记/整数部分/小数部分/*/voidstore_t()if(f_max=1)高位为 1 是负,为 0 是正)max=max+0x80;if(f_min=1)min=min+0x80;ds18b20_init();ds18b20_write(0xcc);ds18b20_write(0x4e); 命令/若上限温度为负,将上限温度转换成有符号数(最/若下限温度为负,将上限温度转换成有符号数/向 DS18B20 发写字节至暂存器 2 和 3(TH 和 TL )ds18b20_write(max);ds18b20_write(min);ds18b20_write(0xff); ds18
35、b20_init();ds18b20_write(0xcc);ds18b20_write(0x48);EEPROM/向暂存器 TH (上限温度暂存器)写温度 /向暂存器 TL (下限温度暂存器)写温度 /向配置寄存器写命令,进行温度值分辨率设置/向 DS18B20 发将 RAM 中 2、 3 字节的内容写入将 EEPROM 中的上下限温度拷贝到TH 、TL 暂存器/DS18B20 上电后会自动/*/* 温度超限报警函数/若上限值是正值/*/ void alarm() if(f_max=0)/若下限值是正值 if(f_min=0) if(f=0)/若测量值是正值if(temp=max)w=1;T
36、R1=1;/当测量值小于最小值或大于最大值时报警/当测量值大于最小值且小于最大值时不报警if(tempmin)w=0;/若测量值是负值时报警if(f=1)w=1;TR1=1; if(f_min=1)if(f=0) if(temp=max)/ w=1;TR1=1;/若下限值是负值/若测量值是正值当测量值大于最大值时报警if(temp=min)/ 当测量值大于最小值时报警 w=1;TR1=1; if(tempmin)/w=0;当测量值小于最小值时不报警if(f_max=1)/若下限值是负值if(f_min=1)/若下限值是负值if(f=1)/若测量值是负值if(temp=min)w=1;TR1=1
37、;/当测量值小于最大值或大于最小值时报警/当测量值小于最小值且大于最大值时不报警if(tempmax)w=0;/若测量值是正值时报警if(f=0)w=1;TR1=1;#endifI* 程序名 ;ds18b20 数码管动态显示头文件* 功能:通过定时器 0 延时使数码管动态显示#ifndef _ds18b20_display_H_#define _ds18b20_display_H_#define uint unsigned int#define uchar unsigned charsbit wei1=卩2人4;sbit wei2=卩2人5;sbit wei3=卩2人6;sbit wei4=卩
38、2人7; ucharnum=0;*I变量类型宏定义,用uint表示无符号整形(16位)II变量类型宏定义,用uchar表示无符号字符型(8位) /可位寻址变量定义,用wei1 表示 P2.4 口用 wei2 表示 P2.5 口用 wei3 表示 P2.6 口用 wei4 表示 P2.7 口/定义num为全局无符号字符型变量,赋初值为0uchar code temperature1= 0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90; / 定义显示码表 09uchar code temperature2= 0x40,0x79,0x24,0x30
39、,0x19, 0x12,0x02,0x78,0x00,0x10; / 带小数点的 09.uchar code temperature3= 0xff,0x7f,0xbf,0x89,0xc7;/依次是不显示/*/*HL延时子函数/ /*/ void display_delay(uint t)/延时 1ms 左右uinti,j; for(i=t;i0;i-) for(j=120;j0;j-);/*/ /*定时器1 初始化函数/*/ void timer1_init(bit t)TMOD=0x10;TH0=0x3c;TL0=0xb0;EA=1;ET1=1;TR1=t;/ 局部变量t为1启动定时器1,为
40、0关闭定时器/*/定时器/*1 中断函数/*/ void timer1() interrupt 3TH0=0x3c;TL0=0xb0;/ 重新赋初值,定时 50ms/每进入一次定时器中断 num 加 1 (每 50ms 加 1num+;一次) if(num20)/进入 20 次中断,定时 1s num=0;/num 归 0,重新定开始定时 1s/定时 1s 时间到时自动关闭报警上下限显示功能/定时 1s 时间到时自动关闭报警上下限查看功能调整报警上下限选择函数if(f=0) 示百位,不为 0 则显示 if(k/100=0) P0=temperature30; else P0=temperatu
41、re1k/100;if(f=1) 百位不显示,否则百位显示 - if(k%100/10=0) else/若为正温度,百位为 0 则不显/若为负温度, 若十位为 0,P0=temperature30;P0=temperature32; voidselsct_2(bit f,uchar k)/消除十位的 0 显示,及正负温度的显示选择if(f=0)否则显示十位/若为正温度,百位十位均为 0 则不显示十位,if(k/100=0)&(k%100/10=0)P0=temperature30;else P0=temperature1k%100/10;if(f=1)十位不显示,否则十位显示 -if(k%100/10=0)elseP0=temperature32;P0=tempera
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年环境影响评价公众参与中的公众参与效果与环境保护绩效评价模型构建报告
- 2025年智慧农业示范园农业品牌建设与市场拓展报告
- 2025年美妆集合店美容护肤产品研发趋势报告
- 2025年城市垃圾分类长效机制与公众参与度提升策略分析报告
- 2025年科技与互联网行业企业风险管理与内部控制报告
- 2025至2030年中国钢结构工程行业市场运行现状及投资战略研究报告
- 2025至2030年中国环己烷行业市场发展监测及投资方向研究报告
- 考点解析华东师大版7年级下册期末试题含完整答案详解(全优)
- 推拿治疗学复习试题及答案详解(夺冠)
- 2025年度高端餐厅定期保洁与垃圾处理服务合同
- 2025年吉林省中考语文真题(含答案)
- 2025高级会计师考试试题及答案
- 工地建筑钢板租赁合同范本
- 光传输业务配置课件
- (标准)便利店转让合同协议书带烟证
- 2025年辽宁省地质勘探矿业集团有限责任公司校园招聘笔试备考题库带答案详解
- 品质异常处罚细则及奖罚制度
- 小升初英语学习方法指导PPT
- GB∕T 40753-2021 供应链安全管理体系 ISO 28000实施指南
- GA∕T 1577-2019 法庭科学 制式枪弹种类识别规范
- 福州市长乐区农村宅基地及房屋确权登记
评论
0/150
提交评论