电子电路数字温度计课程设计

上传人:痛*** 文档编号:69853076 上传时间:2022-04-06 格式:DOC 页数:33 大小:2.36MB
收藏 版权申诉 举报 下载
电子电路数字温度计课程设计_第1页
第1页 / 共33页
电子电路数字温度计课程设计_第2页
第2页 / 共33页
电子电路数字温度计课程设计_第3页
第3页 / 共33页
资源描述:

《电子电路数字温度计课程设计》由会员分享,可在线阅读,更多相关《电子电路数字温度计课程设计(33页珍藏版)》请在装配图网上搜索。

1、 单片机技术课程设计说明书数字温度计 系 、 部: 电气与信息工程系 学生姓名: 何峰 学生学号: 09401040238 指导教师: 王韧 职称 副教授专 业: 自动化 班 级: 自本0902 完成时间: 2012年1月3号 摘 要 随着人民生活水平的不断提高,单片机控制无疑是人们追求的目标之一。它所给人民带来的方便是不可否定的,其中数字温度计就是一个典型的例子。但人民们对它的要求是越来越高,要为现代人生活、工作、科研、提供更好的方便的设施就需要从单片机技术入手,一切想着数字化控制、智能化控制方向发展。本课题介绍了一种以AT89S52为主要控制器件,以DS18B20为温度传感器的新型数字温度

2、计设计方法,其硬件电路包括主控制器,测温电路和显示电路等。该温度计用于软件编写过程中对上下报警温度值设置,当温度不在设置范围内时,可以报警。与传统的温度计相比,该数字温度计减少了外部硬件电路,具有低成本和易使用的特点。 关键词:数字温度计;AT89S52;DS18B20ABSTRACTWith the continuous improvement of peoples living standard, single chip microcomputer control is undoubtedly one of the goals of the people to pursue. It has

3、 given people the convenience is not negative, including digital thermometer is a typical example. for modern people live, work, scientific research, provide better convenient facilities will need from single chip technology of digital control, all thinking of intelligent control direction. This sub

4、ject introduces an AT89S52 devices as the main control device, with the temperature sensor DS18B20 for the new digital thermometer design method etc. A thermometer is used in the software process to the fluctuation alarm set temperature, when the temperature is not set range, you can call the police

5、. Compared with the traditional thermometer, the digital thermometer reduce external hardware circuit, with low cost and easy to use features.Key words:digital thermometer;AT89S52;DS18B20目 录1 任务、功能要求及总体方案介绍11.1设计内容与要求11.2 温度采集方案11.3显示部分方案21.4 总体方案22 系统硬件模块设计32.1 主控电路模块32.2 LED流水灯模块32.3 温度测量模块32.4 数码

6、管接口模块32.5 蜂鸣器电路模块32.6 键盘电路模块42.7 下载口电路模块43 系统软件设计53.1 单片机资源使用情况53.2 程序流程框图53.2.1监控程序流程框图53.2.2 显示程序流程图53.2.3 温度转换命令子程序63.2.4 温度计算子程序73.2.5检测DS18B20是否正常工作子程序73.2.6 超上/下限温度报警子程序73.2.7 读出温度子程序84 系统测试与结果分析104.1 硬件测试104.2 软件测试104.3 测试结果10结束语13致 谢14参考文献15附 录161 任务、功能要求及总体方案介绍1.1设计内容与要求数字温度计:设计一个具有特定功能的数字温

7、度计。该数字温度计上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。测量温度范围099,测量精度小数点后两位,可以通过开始和结束键控制数字温度计的工作状态。设计要求:1、以上课题可以任选其一或多选,学生也可以自拟课题;2、编程语言:汇编或C51;3、计算机打印单片机技术课程设计说明书一份;4、设计时间:一学期;5、实物制作;6、人员分组:一人一组一实物。1.2 温度采集方案在单片机电路设计中,可以采用一只温度传感DS18B20,此传感器提供9位温度读数,信息经过单线接口送入DS18B20或从DS18B20送出,因此从中央处理器到DS18B20仅需要连接一条线。读、写和完成温度变换

8、所需的电源可以由数据线本身提供,而不需要外部电源。可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。DS18B20的测量范围从-55至+125,增量值为0.5。而且设计电路也比较简单,软件设计也比较简单。所以本课题选DS18B20做温度传感器。图1 DS18B20引脚1.3显示部分方案 数码管显示,每一个二极管的状态分别用0 和1 表示,若为0 ,则表示L ED 无电流,即熄灭状态,;若为1 则表示二极管被点亮。可以静态显示和动态显示,虽然设计上如果处理不当,易造成亮度低,闪烁问题。但是相对液晶来说价格低,动态显示也比较丰富。1.4 总体方案 利用单片机AT89S52单片机作为本系统

9、的中控模块。单片机可把DS18B20读来的数据利用软件来进行处理,从而把数据传输到数码管显示模块,实现温度显示。数码管显示模块为主要的显示模块,把单片机传来的数据显示出来,。在显示电路中,主要靠按键来实现各种显示要求的选择与切换。其总体设计框图如下图。图2 总体设计方框图2 系统硬件模块设计 2.1 主控电路模块主控电路模块由AT89S52单片机、时钟电路和复位电路构成。是本次最小系统整个电路的核心。AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。时钟电路由一个12MHz的石英晶体振荡器和两个33pF的的电容组成振荡电路和分频电路。复位电路采用上电

10、复位和按键复位结合的方式对电路进行复位,主要是通过RST引脚送入单片机。2.2 LED流水灯模块单片机P3口线上接上一个470电阻然后再与LED灯的阴极相连接,LED灯的阳极接正五伏电压。在该系统中LED流水灯电路模块的设置可以增强系统人性化设计,在系统初始化显示P.的时候同时LED流水灯闪烁。2.3 温度测量模块 温度测量传感器采用DALLAS公司DS18B20的单总线数字化温度传感器,测温范围为-55125,可编程为9位12位A/D转换精度,测温分辨率达到0.0625,采用寄生电源工作方式, CPU只需一根口线便能与DS18B20通信,占用CPU口线少,可节省大量引线和逻辑电路。也是本次我

11、设计的基于单片机的数字温度报警系统的核心模块之一。2.4 数码管接口模块 数码管单片机最小系统包括晶体振荡电路、复位电路和液晶显示等部分。为了便于调整温度上下限和显示温度值,我采用两个四位一体共阳型数码管显示器进行显示。位控口接在P2口线上,实现对显示的控制。在P2口线上接了8个PNP型三极管使得位控线的驱动电流加大,从而提高驱动能力;P0.0-P0.7做为段控口接a-dp,数码管显示电路模块在调整阶段主要用来指示调整的上下限温度值,在测温阶段主要用来温度值。2.5 蜂鸣器电路模块 单片机P3.1口线上接上一个1K电阻然后再通过一个PNP型三极管与蜂鸣器相连接组成蜂鸣器电路。在该系统中蜂鸣电路

12、主要完成超限报警和18B20故障报警功能。2.6 键盘电路模块 P1口则用于与键盘相接。每个按键都通过一个10K的上拉电阻接电源+Vcc,按键的另一端接地。当有键按下时,与该键相连的P1口的相应位变为低电平,单片机检测到该变化后即转到相应的键处理程序。本次设计的基于单片机的数字温度报警系统主要用该模块实现上下限温度的调整和温度的测量开启和测量2.7 下载口电路模块本课题采用的是10引脚的下载口,下载口连接在P1口的P1.5、P1.6、P1.7和RET口线上。用数据线通过下载口可对单片机系统进行下载和删除程序,还可以为单片机系统提供电源。3 系统软件设计3.1 单片机资源使用情况 基于单片机的数

13、字温度报警器用到了单片机的P1口,P2口,P3口,用到了口线的基本输入输出功能。其中独立式键盘接在P1口线,并且通过上拉电阻接VCC,按键结果键值储存在内部数据存储器中。单片机P3口线上接上一个470电阻然后再与LED灯的阴极相连接,实现流水灯功能。P3.1接18B20实现温度数据的接收。P3.2口通过PNP三极管接蜂鸣器,实现超限报警。3.2 程序流程框图 3.2.1监控程序流程框图 监控程序的主要功能是负责温度计算及实时显示,读出并处理DS18B20所测量的当前温度,并判断是否有键按下,程序流程图如图3-2-1所示。图3监控程序流程图3.2.2 显示程序流程图 如图3-2-2所示,先给P2

14、.0口送位控代码,然后在给单片机P0.0口送段控代码,让LED0示延时1ms,再让LED1显示,循环八次,点亮数码管的每一位LED。图4 显示程序流程图3.2.3 温度转换命令子程序主要功能是读出RAM中的2字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图下图示。图5 温度转换子程序流程图3.2.4 温度计算子程序 计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如下图所示。图6 温度计算子程序流程图3.2.5检测DS18B20是否正常工作子程序图7 检测DS18B20是否正常工作子程序流程图3.2.6 超上/下限温度报

15、警子程序图8 超上/下限温度报警子程序流程图3.2.7 读出温度子程序图9 读出温度子程序流程图转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如上图所示。4 系统测试与结果分析4.1 硬件测试硬件测试的主要是检查电路各种参数是否符合设计要求。先排除硬件电路故障,利用万用表或逻辑测试仪器,检查电路中各器件以及引脚是否连接是否稳固,是否有短路故障。先将单片机AT89S52芯片取下,对电路板进行通电检查,通过观察看是否有异常,测单片机的电源引脚看是否是正常的电压,是否有虚焊的情况,然后用

16、万用表测试各电源电压,若这些都没有问题,则将单片机AT89S52芯片插上,接通电源观察电路指示灯是否正常。人为升高温度看是否超限报警。断开开18b20插槽,看是否报警。4.2 软件测试 下好程序后,上电(按键复位后)能够自动显示系统提示符“P.”并且流水灯循环两灭,当我按下开始键的时候,DS18B20开始工作,数码管上显示实时温度,并且测量精度小数点后两位。与温度计测量结果数据比较如下表所示。但我按下停止键的时候,DS18B20停止工作,数码管上可以通过开始自动显示系统提示符“P.”。超限和断开18b20后会报警。测试结果测量值都在误差允许范围内,因此符合设计要求,本设计成功完成预期目标。4.

17、3 测试结果下好程序后,上电(按键复位后)能够自动显示系统提示符“P.”当我按下开始键的时候,DS18B20开始工作,数码管上显示实时温度,并且测量精度小数点后两位。与温度计测量结果数据比较如下表所示。但我按下停止键的时候,DS18B20停止工作,数码管上可以通过开始自动显示系统提示符“P.”。超限和断开18b20后会报警。测试结果测量值都在误差允许范围内,因此符合设计要求,本设计成功完成预期目标。图10 P.显示图图11 调上限图图12 调下限图图13 当时寝室温度结束语 在这次单片机课程设计筹备过程中,我都学到了很多,。当然,总的来说,这里面的酸甜苦辣都是我人生难得的一大笔财富。通过此次的

18、单片机课程设计,我学到了许多以前在课本上学不到的东西,同时也把以前学到的理论知识运用到了此次的课程设计中,很好地加强了我在单片机方面的知识,特别是在中断处理部分。整个调试程序的过程让我对keil软件有了更深一步的了解。重要的是,我的PCB制作能力有了很大的提高,懂得了电路的布线规则,知道如何去减小或者避免不必要的麻烦。 这次课程设计使我懂得了理论与实际相结合的重要性,只掌握书上的理论知识是远远不够的,而应该把所学的理论知识与实践相结合,把理论运用与实践,从实践中验证理论,从而提高自己的实际动手能力和独立思考的能力,为以后踏入社会打下基础。调试硬件电路,一定要心细、眼明、头脑要清醒。在调试的过程

19、中,一定要仔细测量各个点的电压,分析思考为什么会出现这种现象,这个现象是什么原因引起的,针对这个现象我们应该怎么去解决。很重要的一点就是我们要有耐性和毅力还有很强的抗挫折能力。准备了这么久,我终于要交上了课程设计作品,在作品完成期间我遇到很多困难,几乎没有说过一次好觉,尽管很艰苦,一次又一次品尝到了解决问题的喜悦,最终完成了这次课程设计,在课程设计中我们发现了自己知识的不足,通过老师和同学的帮助,以及去图书馆查找资料,终于把问题都解决了,让我学到了很多,同时也巩固了所学的知识。致 谢在这次课程设计的撰写过程中,我得到了许多人的帮助。首先我要感谢我的老师在课程设计上给予我的指导、提供给我的支持和

20、帮助,这是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多技术上的难题,让我能把这个简易调频发射做得更加完善。在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。其次,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的设计商的难题。同时也感谢湖南工学院为我提供良好的单片机课程设计的环境。最后再一次感谢所有在设计中曾经帮助过我的良师益友和同学,我感谢在这这么多天以来给过我帮助和关注的所有人,更加感谢给过我挫折的所有人。你们用不同的方式给了我成长,也是你们促使我在走过的大学时光里一直努力,终可以在课程设计的最后那一天无愧的说一声:我成功了。参考文献1谢嘉奎

21、.电子线路M,北京:高等教育出版社,1999年XieJiaKui electronic circuit M, Beijing: higher education press, 19992康华光.单片机的C语言应用程序M,北京:北京航空航天大学出版社,1999 Kang uh guano. MCU C language application M, Beijing: Peking aerospace university press, 1999 3李广弟,朱月秀.单片机基础M,北京:北京航空航天大学出版社,2010 年 LiAnDi, based ZhuYueXiu. Microcontroll

22、er M, Beijing: Peking University of aeronautics press, 20104阎石.数字电子技术M.第四版,高等教育出版社,2009年YanShi. Digital electronic technology j. J fourth edition, higher education press, 20095谢自美.电子线路设计与实验测试M.第二版.华中科技大学,2010年 Xie since beauty. Circuit design and the experiment test M. Second edition. Huazhong unive

23、rsity of science and technology, 20106康华光.电子技术基础模拟部分M.第五版.华中科技大学出版社,2005.7Kang uh guano. Electronic technology basic analog part j fifth edition. Huazhong university of science and technology press, 2005.77曹才开.电路分析基础M.第四版,北京:清华大学出版社,2009CaoCai open. Circuit analysis j. J fourth edition, Beijing: tsi

24、nghua university press, 2009附 录汇编程序代码;*;项目名称:单片机数字温度计;设计者: 何峰;设计日期:2011年12月20日;*;功能介绍:1上电或者复位初始状态数码管显示p. 并且流水灯循环闪动2按下S1键进入上限温度调整状态。S2是调十位,S3调个位。数字 前显示“H”字样表明调上限3按下S1键进入下限温度调整状态。S2是调十位,S3调个位。数字前显示“L”字样表明调下限4再按S1键进入温度测量状态,按S2可以退出该状态 ;*;LED数码管显示器设定;P0.7-P0.0段控线,接LED的显示段dp,g,f,e,d,c,b,a;P2.7-P2.0位控线,从左至

25、右(LED7,LED6,LED5,LED4,LED3,LED2,LED1,LED0)显示缓冲区设定从左至右依次为7FH,7EH,7DH,7CH,7BH,7AH,79H,78H(LED7,LED6,LED5,LED4,LED3,LED2,LED1,LED0);*;独立式键盘设定;8个按键S2至S9分别依次接在P1.0至P1.7口线;*;子程序;DISP(数码管显示子程序);DL(1毫秒延时子程序,晶振频率12MHz);键盘扫描子程序KEY:;P1口数据处理子程序;DI ;缓冲单元赋值;十进制加1子程序 入口:R0,出口:R0 DADD1:;十位、个位数缓冲单元清0子程序CLR0;灭灯TSF1;读

26、出转换后的温度值 GETWD;读到的温度值进行处理CL;做好读温度的准备READY;读DS18B20的程序READ_18200:;写DS18B20的子程序WRITE_1820;DS18B20复位初始化START1820 ;流水灯循环LEDXZ;*;常数表格;TAB(共阳数码管字型代码表);DISBH(系统提示符P.字型代码序号表)*;键功能程序;KEYS1; KEYS2;*;数据存储器变量及常量单元定义;*;伪指令定义区 T_H EQU 60H ;T_H中为整数温度值 T_L EQU 61H ;T_L中为小数温度值 LED0 EQU 78H LED1 EQU 79H LED2 EQU 7AH

27、; 数码管温度小数个位 LED3 EQU 7BH ; 数码管温度小数十位 LED4 EQU 7CH ; 数码管温度整数个位 LED5 EQU 7DH ; 数码管温度整数十位 LED6 EQU 7EH ; LED7 EQU 7FH ; HING EQU 67H ;设定值上限 LOWD EQU 68H ;设定值下限 T29H EQU 6AH ;上一次温度高字节暂存 T28H EQU 6BH ;上一次温度低字节暂存 FLAG BIT 47H ;是否检测到DS18B20标志位 SDATA BIT P3.0 ;DS18B20数据总线 ;*;系统起始程序区 ORG 0000H START: LJMP MA

28、IN;*;系统监控程序区 ORG 0030H MAIN: MOV SP, #30H ;确立堆栈区 MOV PSW, #00H ;初始化PSW,通用寄存器组为第 MOV R0, #20H ;RAM区首地址 MOV R7, #96 ;RAM区单元个数 ML: MOV R0, #00H INC R0 DJNZ R7, ML CLR EA TSF: MOV DPTR, #DISBH ;提示符“P.”字符代码表首地址 MOV R5, #08H MOV R0, #78H DISPTSF: CLR A MOVC A, A+DPTR MOV R0, A INC R0 INC DPTR DJNZ R5, DIS

29、PTSF DIS: LCALL DISP ;调显示子程序显示提示符“P.” LCALL LEDXZ ;流行灯 LCALL KEY JB 20H.0, KEYS1 ;是S2键,转KEYS2执行 LJMP DIS KEYS1: LCALL TSF1 ;灭灯p. MOV P3, #0FFH ;灭流水灯 MOV LED3, #29;数码管上左边显示H,表明是设置上限 MOV LED0, #0 MOV LED1, #2 MOV HING, #20;上限默认值 K1: LCALL DISP ;先设置上限 LCALL KEY JB 20H.0, KEYS11 JB 20H.1 , A2 JB 20H.2 ,

30、 A22 LJMP K1A2: LCALL JIALED1 ;调加一子程序 LJMP K1A22: LCALL JIALED0 LJMP K1 KEYS11: MOV A, LED1 MOV B, #10 MUL AB ADD A, LED0 MOV HING, A;* KEYS2: LCALL TSF1 ;灭灯p. MOV P3, #0FFH;灭流水灯 MOV LED3, #30;数码管左边显示L,表明是设置下限 MOV LED0, #0 MOV LED1, #1 MOV LOWD , #10 ;下限默认值 K2: LCALL DISP LCALL KEY ;再设置下限温度 JB 20H.0

31、, KEYS22 JB 20H.1 , A3JB 20H.2 , A33LJMP K2 A3: LCALL JIALED1;调加一子程序 LJMP K2 A33: LCALL JIALED0 LJMP K2 ;设定数值下限 KEYS22: MOV A, LED1 MOV B, #10 MUL AB ADD A, LED0 MOV LOWD, A;* LCALL TSF1 ;灭灯p. MOV P3, #0FFH ;灭流水灯 MOV LED0, #28 ;- MOV LED1, #28 MOV LED6, #28 MOV LED7, #28 WD: LCALL GETWD; 调用读温度子程序,29

32、H存低8位,28H存高8位 LCAll CL ;数值处理 LCALL DISP LCALL KEY JB 20H.1, HF ; 按键返回 LJMP WD HF: MOV HING, #20 ;HING恢复默认值 MOV LOWD , #10 ;LOW恢复默认值 LJMP TSF LJMP WD ;*;常数表格区;系统初始化后提示符“P.”字符代码表 DISBH: DB 10H,10H,10H,10H,10H,10H,10H,11H ;提示符“P.”字符序号DISBH1: DB 10H,10H,10H,10H,10H,10H,10H,10H;显示字符段选码表(共阳极代码) TAB: DB 0C

33、0H, 0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H DB 90H, 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH, DB 050H,79H,24H,30H,19H,12H,02H,78H, DB 00H,10H,0bFh,89H,0C7H ;0-9,A,B,C,D,E,F,灭,p.后面为带点的0-9 ,“-”,HL;*;子程序区;数码管显示子程序DISP DISP: PUSH DPH PUSH DPL PUSH ACC PUSH PSW CLR RS1 ;改变当前寄存器组为组1 SETB RS0 MOV R1, #78H ;显示缓冲存储单元首

34、地址 MOV R2, #0FEH ;从右至左显示 MOV R5, #08H;循环次数,即驱动数码管的位数 DISP1: MOV A, R1 MOVDPTR, #TAB MOVC A, A+DPTR MOVP0, A;送段控 MOVP2, R2 ;送位控 LCALLDL ;延时1毫秒 MOVA, R2;位控码送A RLA ;获得新的位控码 MOVR2, A;保存新的位控码 INCR1;获得新的显示缓冲单元地址 DJNZ R5,DISP1;循环没有结束则继续 DISP2: POPPSW ;恢复当前寄存器组的组号 POPACC POPDPL POPDPH RET;键盘扫描子程序KEY: KEY: L

35、CALL KEYCHULI;调P1口数据处理子程序 JZ EXIT;没有键按下,转返回 LCALLDISP ;调显示子程序去抖动 LCALLDISP LCALL KEYCHULI;调P1口数据处理子程序 JZ EXIT;没有键按下,转返回 MOVB,20H ;保存取反后的键值KEYSF:LCALLKEYCHULI;调P1口数据处理子程序 JZKEY1;键释放,转恢复键值 LCALLDISP;调显示子程序延时 LJMP KEYSF;等待释放KEY1:MOV 20H,B;键值送20H保存EXIT:RET;P1口数据处理子程序 KEYCHULI:PUSH PSW;保护现场 CLR RS1;改变当前寄

36、存器组为组1 SETB RS0 MOV P1, #0FFH ;先向P1口写1 MOV A, P1 ;读P1口数据 CPL A ;P1口数据取反 MOV 20H, A;保存取反后的键值 CLR RS1;恢复当前寄存器组为组0 CLR RS0 POP PSW;恢复现场 RET ;子程序返回;延时1ms子程序(晶振频率12MHz)DL DL:MOVR7, #02H DL1:MOVR6, #0FFH DL2:DJNZR6, DL2 DJNZR7, DL1 RET;灭灯TSF1:MOV DPTR, #DISBH1 ;提示符“P.”字符代码表首地址 MOV R5, #08H MOV R0, #78HDIS

37、PTSF1: CLR A MOVC A, A+DPTR MOV R0, A INC R0 INC DPTR DJNZ R5, DISPTSF1 RET/*/;流水灯循环LEDXZ: MOV R4, #8 MOV A, #7FHLEDXZ1: MOV P3, A MOV R0, #10 ;下面延时LEDXZ2: LCALL DISP PUSH ACC LCALL KEY POP ACC JB 20H.0, LEDXZ3;是S2键,转KEYS2执行 LJMP LEDXZ4LEDXZ3: LJMP KEYS1LEDXZ4: DJNZ R0, LEDXZ2 RRC A DJNZ R4, LEDXZ1

38、RET;温度显示服务程序区;*; DS18B20复位初始化 出口参数: FLAG ;*START1820: SETB SDATA ;拉高数据线p3.1 NOP CLR SDATA MOV R1, #3 ;一高一低,产生复位脉冲,主机发出延时520微秒的复位低脉冲 INITLOOP: MOV R0, #107 DJNZ R0, $ DJNZ R1, INITLOOP SETB SDATA ;然后拉高数据线,即释放数据线 NOP NOP NOP MOV R0, #25H ;等待DS18B20回应 INITLOOP2: JNB SDATA, SITE3 ;sdata=0表示存在 DJNZ R0, I

39、NITLOOP2 LJMP SITE4 ;延时 SITE3: SETB FLAG ;置标志位,表示DS1820存在 LJMP SITE5 SITE4: CLR FLAG ;清标志位,表示DS1820不存在 LJMP SITE6 SITE5: MOV R0, #117 DJNZ R0, $ ;时序要求延时一段时间 SITE6: SETB SDATA RET;*;写DS18B20的子程序(有具体的时序要求) 出口参数c;*WRITE_1820: MOV R2, #8 ;一共8位数据 CLR C WRLOOP: CLR SDATA ;由以前的高现在被拉到,高到底,启动写时序 MOV R3, #6 ;

40、 延时等一段时间 DJNZ R3, $ RRC A ;A释放一个位数据 MOV SDATA, C MOV R3, #23 ;延时,因为每个数据的后需要一段时间恢复 DJNZ R3, $ SETB SDATA ;释放数据 NOP DJNZ R2, wrLOOP ;判8位数据是否都写到了 SETB SDATA ;如果8位写完,释放数据 RET ;*;读DS18B20的程序,从DS18B20中读出2个字节的温度数 读到的温度保存29h,28h;*READ_18200: MOV R4, #2 ; 将温度高位和低位从DS18B20中读出 MOV R1, #29H ;低位存入29H,高位存入28H RE0

41、0: MOV R2, #8 ; 数据一共有8位 RE01: CLR C SETB SDATA ; 启动读时序 NOP NOP CLR SDATA NOP NOP NOP SETB SDATA ;为18b20检测输出电平做准备 MOV R3, #9 ;延时,给18b20采样时间RE10: DJNZ R3, RE10 MOV C, SDATA ; 读到的数据存于C中 MOV R3, #23 ;延时每个数据读后有一定时间的恢复区RE20: DJNZ R3, RE20 RRC A ;存到A中 DJNZ R2, RE01 ;释放读完了8位 MOV R1, A ;存这个字节的数据 DEC R1 DJNZ

42、R4, RE00 ;判是否读完了2个字节 RET ;*;做好读温度的准备;* READY: MOV A, #0CCH LCALL WRITE_1820 MOV A, #44H ;发出温度转换命令 LCALL WRITE_1820 MOV R7, #200 DJNZ R7, $ ; 延时400微秒 MOV R7, #200 DJNZ R7, $ ; 延时400微秒 LCALL START1820 ; 读温度前先复位 MOV A, #0CCH ;跳过ROM匹配 LCALL WRITE_1820 MOV A, #0BEH ;发出读温度命令 LCALL WRITE_1820 LCALL READ_18200 ;将读出的温度数据保存到28H/29H RET

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!