数字温计课程设计_第1页
数字温计课程设计_第2页
数字温计课程设计_第3页
数字温计课程设计_第4页
数字温计课程设计_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 设计课题任务、功能要求说明及总体方案介绍1.1 设计任务 设计一个具有特定功能的数字温度计。1.2 功能要求说明 该数字温度计上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。测量温度范围099,测量精度小数点后两位,可以通过开始和结束键控制数字温度计的工作状态。1.3 总体方案介绍及工作原理说明1.3.1 总体方案介绍 利用单片机AT89S52单片机作为本系统的中控模块。单片机可把DS18B20读来的数据利用软件来进行处理,从而把数据传输到数码管显示模块,实现温度显示。数码管显示模块为主要的显示模块,把单片机传来的数据显示出来,。在显示电路中,主要靠按键来实现各种显示要求的

2、选择与切换。1.3.2 工作原理说明 利用温度传感器DS18B20可以直接读取被测温度值,进行转换的特性,模拟温度值经过DS18B20处理后转换为数字值,然后送到单片机中进行数据处理,并与设置的温度报警限比较,超过限度后通过扬声器报警。同时处理后的数据送到LED中显示。本课题以是AT89S52单片机为核心设计的一种数字温度控制系统,系统整体硬件电路包括,传感器数据采集电路,温度显示电路,上下限报警调整电路,单片机主板电路等组成。系统框图主要由主控制器、单片机复位、报警按键设置、时钟振荡、LED显示、温度传感器组成。系统框图如图1所示。 图1 系统基本方框图2 硬件系统的设计2.1 硬件系统各模

3、块功能简要介绍 该数字温度计主要由单片机最小系统、独立式键盘模块、LED显示电路模块、蜂鸣电路模块和DS18B20测温模块组成。各模块的功能如下:(1) 单片机最小系统由AT89S52单片机、时钟电路和复位电路构成。AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。时钟电路由一个12MHz的石英晶体振荡器和两个33pF的的电容组成振荡电路和分频电路。复位电路采用上电复位和按键复位结合的方式对电路进行复位,主要是通过RST引脚送入单片机。单片机最小系统为整个电路的核心。(2) 独立式键盘模块 采用独立式键盘接法,共有8个按键来对电路进行控制。分别通过上

4、拉电阻接在单片机的P1口线上。其中S1S5在本电路中完成各项功能。(3) LED显示电路模块采用两个四位一体共阳型数码管显示器进行显示。由于位控线的驱动电流较大,因此在P2口线上接了8个PNP型三极管提高驱动能力;在单片机的P1口线和P2口线上接了16个470的电阻,这些电阻起限流的作用。将段控口a-dp接在P0.0-P0.7上,位控口接在P2口线上,实现对显示的控制。LED显示电路模块主要用来显示温度及报警信息。(4) 蜂鸣电路模块单片机P3.1口线上接上一个1K电阻然后再通过一个PNP型三极管与蜂鸣器相连接组成蜂鸣器电路,接入PNP型三极管是为了增强蜂鸣器的驱动电流。蜂鸣电路主要完成超温报

5、警功能。(5) DS18B20测温模块单片机P3.0口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个4.7K电阻来完成对总线的上拉。2.2 温度传感器介绍DS18B20可以程序设定912位的分辨率,精度为±0.5°C。可选更小的封装方式,更宽的电压适用范围。分辨率设定,及用户设定的报警温度存储在EPROM中,掉电后依然保存。温度传感器DS18B20引脚如图2所示。图2 DS18B20外部封装图引脚功能说明: NC :空引脚,悬空不使用; VDD :可选电源脚,电源电压范围35.5V。当工作于寄生电源时,此引脚必须接地。 DQ :数据输入/输出脚。

6、漏极开路,常态下高电平。 GND :为电源地2.3 电路原理图、PCB图和元器件布局图Proteus原理图、PCB图以及元器件布局图分别见附录A、附录B与附录C。 2.4 元器件清单 元器件清单见附录D。3 软件系统的设计3.1 使用的单片机资源的情况本设计采用独立式键盘,键盘直接接在P1口上且按键的结果存贮在单片机的内部数据存储器里面。用到的LED显示器接到了单片机的P0口线上和P2口线上。DS18B20和蜂鸣器接在P3口线上。3.2 程序流程3.2.1 主程序流程图及功能说明主程序的主要功能是负责准备状态提示符“P.”显示,等待按键按下进入各键功能子程序完成各项功能,其程序流程见图3所示。

7、图3 主程序流程图3.2.2 各键功能程序流程图及功能说明(1) S1键功能程序S1键功能程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,其程序流程见图4所示。图4 S1键功能程序流程图(2) S2键功能程序S2键功能程序的主要功能是负责上限温度的设定的进入与退出,其程序流程见图5所示。图5 S2键功能程序流程图(3) S3键功能程序S3键功能程序的主要功能是负责下限温度的设定的进入与退出,其程序流程见图6所示。图6 S3键功能程序流程图(4) S4键功能程序S4键功能程序的主要功能是当前设定温度加1,其程序流程见图7所示。图7 S4键功能程序流程图(5) S5

8、键功能程序S5键功能程序的主要功能是当前设定温度减1,其程序流程见图8所示。图8 S5键功能程序流程图3.2.3 部分子程序流程图及功能说明(1) 显示数据子程序显示数据子程序主要功能是智能显示当前温度,其程序流程图如图9所示。图9显示数据子程序流程图(2) 温度处理子程序温度处理子程序的主要功能是将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定以及判断是否超出限定温度,其程序流程图如图10所示。图10 温度处理子程序流程图3.3 部分子程序程序清单及说明(1) DS18B20的复位子程序部分根据DS18B20的通信协议,每一次读写数据之前都要对DS18B20进行复位,复位要求主

9、机先发出复位低脉冲(大于48us);然后释放,DS18B20收到信号后等待1660us,然后发出60240us的存在低脉冲,主机收到此信号表示复位成功。其程序清单如下:RESET_PULSE:RESET:SETBDATA_BUSNOPCLRDATA_BUS ;主机发出延时537微秒的复位低脉冲MOVR7,#255DJNZR7,$SETB DATA_BUS ;然后拉高数据线MOVR7,#30DJNZR7,$JNB DATA_BUS,SETB_FLAGCLRFLAGAJMPNEXTSETB_FLAG:SETB FLAGNEXT:MOV R7,#120DJNZR7,$SETB DATA_BUSJNB

10、FLAG,RESET RET(2) DS18B20的写入子程序部分当主机把数据从逻辑高电平拉到逻辑低电平的时候,写时间隙开始。有两种写时间隙,写1 时间隙和写0 时间隙。所有写时间隙必须最少持续60s,包括两个写周期至少1s 的恢复时间。I/O线电平变低后,DS18B20 在一个15s 到60s 的窗口内对I/O 线采样。如果线上事高电平,就是写1,如果是低电平,就是写0。主机要生成一个写时间隙,必须把数据线拉到低电平然后释放,在写时间隙开始后的15s 内允许数据线拉到高电平。主机要生成一个写0 时间隙,必须把数据线拉到低电平并保存60s。每个读时隙都由主机发起,至少拉低总线1us,在主机发起

11、读时序之后,单总线器件才开始在总线上发送0 或1。所有读时序至少需要60us。程序清单如下:WRITE:SETBDATA_BUSMOVR6,#8 ;一位共8位数据CLRC ;C=0WRITING:CLRDATA_BUS;总线低位,开始写入MOVR7,#7DJNZR7,$;保持16us以上RRCA;把字节DATA分成8个位,循环给CMOVDATA_BUS, C ;写入一个位MOVR7,#23DJNZR7,$ ;等待SETB DATA_BUS ;重新释放总线;NOPDJNZR6,WRITINGSETB DATA_BUS ;重新释放总线;RET(3) DS18B20的读取子程序部分当从DS18B20

12、 读数据时,主机生成读时间隙。当主机把数据从高电平拉到低电平时,读时间隙开始,数据线必须保持至少1s;从DS18B20输出的数据在读时间隙的下降沿出现后15s 内有效。因此,主机在读时间隙开始后必须把I/O 脚驱动拉为的电平保持15s,以读取I/O 脚状态。在读时间隙的结尾,I/O 引脚将被外部上拉电阻拉到高电平。所有读时间隙必须最少60s,包括两个读周期至少1s的恢复时间。READ:SETBDATA_BUSMOVR0,#TEMP_L ;低位存入TEMP_L,高位存入TEMP_HMOV R6,#8 ;数据一共有8位MOVR5,#2 ;读取两个字节的数字CLRCREADING:CLRDATA_B

13、US ;读前总线保持为低NOPNOPNOPSETBDATA_BUS ;开始读总线释放MOV R3,#9RE10: DJNZ R3,RE10 ;延时18usMOVC,DATA_BUS ;从总线读到一个位RRCA ;把读得的位值循环移给AMOVR7,#23DJNZR7,$ ;等待50usDJNZR6,READING ;读取下一位MOVR0,AINC R0MOVR6,#8DJNZR5,READINGRET3.4 程序清单 见附录E。4 系统测试与结果分析4.1 硬件测试硬件测试的主要是检查电路各种参数是否符合设计要求。先排除硬件电路故障,利用万用表或逻辑测试仪器,检查电路中各器件以及引脚是否连接是否

14、稳固,是否有短路故障。先将单片机AT89S52芯片取下,对电路板进行通电检查,通过观察看是否有异常,测单片机的电源引脚看是否是正常的电压,是否有虚焊的情况,然后用万用表测试各电源电压,若这些都没有问题,则将单片机AT89S52芯片插上,接通电源观察电路指示灯是否正常。人为升高温度看是否超限报警。断开开18b20插槽,看是否报警。4.2 软件测试 下好程序后,上电(按键复位后)能够自动显示系统提示符“P.”并且流水灯循环两灭,当我按下开始键的时候,DS18B20开始工作,数码管上显示实时温度,并且测量精度小数点后两位。与温度计测量结果数据比较如下表所示。但我按下停止键的时候,DS18B20停止工

15、作,数码管上可以通过开始自动显示系统提示符“P.”。超限和断开18b20后会报警。测试结果测量值都在误差允许范围内,因此符合设计要求,本设计成功完成预期目标。4.3 测试结果当我按下开始键的时候,DS18B20开始工作,数码管上显示实时温度,并且测量精度小数点后两位。但我按下停止键的时候,DS18B20停止工作,数码管上可以通过开始自动显示系统提示符“P.”。超限和断开18b20后会报警。测试结果测量值都在误差允许范围内,则符合设计要求,本设计成功完成预期目标。图11 P.显示图图12 调上限图图13 调下限图 图14 当时寝室温度4.4 设计体会本次课程设计是数字温度机的设计,从用Prote

16、l、Proteus画原理图、PCB图到制板,再到编程,通过本次课程设计我学会了很多。首先是学会了利用自己所学的理论知识来解决实际问题,在整个设计过程中,我们把老师以前所讲的芯片的原理、作用及性能都运用到了这次设计中,这样加强了我们对课本知识的理解和巩固。我觉得这次设计不仅加强了我们对课本知识的回顾和温故,而且锻炼了我们运用软件的能力,实现了从理论与实际的结合。其次通过这次课程设计,加强了我们的动手、思考和解决问题的能力。书中的理论有点枯燥,运用书中的知识去调试,那是一种无法比拟的成就感。这样更能激发我们对我们专业的兴趣,和对我们专业知识的理解和掌握,能激发我们对电子科研技术的钻研,增加设计兴趣

17、。总之,通过本次课程设计,使我从中受益匪浅,我认识到了自己的以前许多许多的不足和缺点。我明白了要想把理论和实际,还是有一定距离的。在以后的学习中要更加努力为以后打好基础。结束语 通过此次的单片机课程设计,我学到了许多以前在课本上学不到的东西,同时也把以前学到的理论知识运用到了此次的课程设计中,很好地加强了我在单片机方面的知识。我懂得了理论与实际相结合的重要性,只掌握书上的理论知识是远远不够的,而应该把所学的理论知识与实践相结合,把理论运用与实践,从实践中验证理论,从而提高自己的实际动手能力和独立思考的能力,为以后踏入社会打下基础。致 谢通过这一阶段的努力,我的课程设计终于完成了,这意味着单片机

18、技术这门理论课即将结束。在本学期,我在学习上和思想上都受益非浅,这除了自身的努力外,与各位老师、同学和朋友的关心、支持和鼓励是分不开的。在我完成课程设计的过程中,老师和同学给我提供了许多帮助,比如对实践中出现的问题给予耐心的解答等,在此,特别感谢老师与各位同学的热心帮助。参考文献1 李广弟, 朱月秀,冷祖祁. 单片机基础M.第三版. 北京:北京航空航天大学出版社, 2007.1260Li Guangdi. Zhu Yuexiu. Leng zuqi. Microcontroller based on M.3rd ed.Beijing: Beijing Aerospace University

19、Press, 2007. 12602 康华光. 电子技术基础(模拟部分)M.第五版.武汉:华中科技大学出版社, 2007.20100kang huaguang. Electronic technology foundation (analog part) M. Fifth edition. Wuhan: huazhong university of science and technology press, 2007. 20 100附录附录A 原理图图A1附录B PCB图图B1图B2附录C 元器件分布图图C1附录D 元器件清单名称数量参数单片机1个AT89S52共阳数码管2个4位一体底座3个4

20、0PIN晶振1个12MHz发光二极管9个单排插1个40PIN蜂鸣器1个按键9个排阻2个10K下载口座子1个十芯温度传感器1个18B20六脚按键开关1个USB电源线1个电阻1个200电阻1个4.7K电阻3个1K电阻24个470电解电容1个22f瓷片电容2个33p短路帽3个PCB板子1块电源插座1个杜邦线1个三极管9个9012附录E 总程序清单;*;项目名称:数字温度计;设计者:蒋佳;设计日期:2013年1月5日;*;堆栈栈底7FH;*;LED数码管显示器设定;P0.7-P0.0段控线,接LED的显示段dp,g,f,e,d,c,b,a;P2.7-P2.0位控线,从左至右(LED7,LED6,LED

21、5,LED4,LED3,LED2,LED1,LED0);显示缓冲区设定从左至右依次为7FH,7EH,7DH,7CH,7BH,7AH,79H,78H(LED7,LED6,LED5,LED4,LED3,LED2,LED1,LED0);*;独立式键盘设定;8个按键S1至S8分别依次接在P1.0至P1.7口线;*;子程序;DIR(数码管显示子程序);键盘扫描子程序KEY(判断是否有键按下);DELAY(1毫秒延时子程序,晶振频率12MHz);KEYS(判键按下子程序);READ_TEMP(读温度程序);RESET_PULSE( DS18B20的复位子程序);WRITE(S18B20的写入子程序);RE

22、AD(DS18B20的读取子程序);DISPLAY(显示数据子程序);DWBJ(低温报警处理程序);GWBJ(高温报警处理程序);PROCESS(温度处理子程序);*;常数表格;DSER(共阳数码管字型代码表);DSER1(系统提示符P.字型代码序号表);TABLE_DP1(小数点后第一位字符代码表);TABLE_DP2(小数点后第二位字符代码表);*;键功能程序;KEYAA(按键S1的功能程序);KEYBB(按键S2的功能程序);KEYCC(按键S3的功能程序);KEYDD(按键S4的功能程序);KEYEE(按键S5的功能程序);*;伪指令定义区DATA_BUSBITP3.0FLAGBIT0

23、0H;标志位FLAG_THBIT21H.0FLAG_TLBIT21H.1TEMP_LEQU 30H;温度值低字节TEMP_HEQU31H;温度值高字节TEMP_DPEQU32H;温度小数TEMP_INTEQU33H;温度值整数TEMP_BAIEQU34H;温度百位数TEMP_SHIEQU35H;温度十位数TEMP_GEEQU36H;温度个位数DIS_BAIEQU37H;显示百位数DIS_SHIEQU38H;显示十位数DIS_GEEQU39H;显示个位数DIS_DP1EQU3AH;显示第一位小数DIS_DP2EQU3BH;显示第二位小数DIS_FHEQU3CH;显示负号DIS_BJEQU3DH;

24、显示高温报警TEMP_BJEQU3EH;报警温度TEMP_BJHEQU3FH;高温报警温度TEMP_BJLEQU40H;低温报警温度;*;系统起始程序区ORG 0000HSTART: LJMP MAIN;*;系统监控程序区ORG0020HMAIN: MOVSP,#7FH ;确立堆栈区MOV PSW, #00H ;初始化PSW,通用寄存器组为第0组;MOV R0, #20H ;RAM区首地址MOV R7, #96 ;RAM区单元个数ML: MOV R0, #00HINC R0DJNZ R7, MLMOVTEMP_BJH,#40MOVTEMP_BJL,#5PL: MOVR0,#78H;显示缓冲存储

25、单元首地址MOVDPTR,#DSER1 ;提示符"P."字符代码表首地址TT: CLRAMOVCA,A+DPTRMOVR0,AINCR0INCDPTRCJNER0,#80H,TTTT1: LCALLDIR ;调显示子程序显示提示符"P."LCALLKEY ;调键扫描子程序JB20H.0,KEYAAJB20H.1,KEYBBJB20H.2,KEYCCLJMPTT1;*;键功能程序;按键S1的功能程序名为KEYAA;实现功能进入温度测试KEYAA:LCALL READ_TEMP ;调读温度程序LCALL PROCESS ;调数据处理程序LJMPKEYAA;*

26、;按键S2的功能程序名为KEYBBB;实现功能进入上限温度设置KEYBB:CJNER2,#00H, KEYBB1INCR2MOVTEMP_BJ,TEMP_BJHMOVA,TEMP_BJMOVB,#0AHDIVABMOV78H,BMOV79H,AMOV7FH,#0CHMOVR0,#7AHBB2:MOVR0, #0BHINCR0CJNER0,#7FH,BB2BB:LCALLDIRLCALLKEYJB20H.1,KEYBBJB20H.3,KEYDDJB20H.4,KEYEELJMPBBKEYBB1:MOVR2,#00HMOVTEMP_BJH,TEMP_BJSETBFLAG_THLJMPZBJWD;*

27、;按键S3的功能程序名为KEYBCC;实现功能进入下限温度设置KEYCC:CJNER1,#00H,KEYCC1INCR1MOVTEMP_BJ,TEMP_BJLMOVA,TEMP_BJMOVB,#0AHDIVABMOV78H,BMOV79H,AMOV7FH,#0DHMOVR0,#7AHCC2:MOVR0,#0BHINCR0CJNER0,#7FH,CC2CC:LCALLDIRLCALLKEYJB20H.2,KEYCCJB20H.3,KEYDDJB20H.4,KEYEELJMPCCKEYCC1:MOVR1,#00HMOVTEMP_BJL,TEMP_BJSETBFLAG_TLLJMPZBJWD;*;Z

28、BJWD: JNBFLAG_TH,KEYBBJNBFLAG_TL,KEYCCCLRFLAG_THCLRFLAG_TLLJMP KEYAA;*;按键S4的功能程序名为KEYDD;实现功能设置温度加KEYDD:INCTEMP_BJMOVB,#0AHMOVA,TEMP_BJDIVABMOV78H,BMOV79H,AMOVR0,#7AHDD2:MOVR0,#0BHINCR0CJNER0,#7FH, DD2DD:LCALLDIRLCALLKEYLCALLKEYSLJMPDD;*;按键S5的功能程序名为KEYEE;实现功能设置温度减KEYEE:DECTEMP_BJMOVB,#0AHMOVA,TEMP_BJ

29、DIVABMOV78H,BMOV79H,AMOVR0,#7AHEE2:MOVR0,#0BHINCR0CJNER0,#7FH, EE2EE:LCALLDIRLCALLKEYLCALLKEYSLJMPEE;*;判键按下子程序KEYSKEYS:JB20H.1,KEYBBJB20H.2,KEYCCJB20H.3,KEYDDJB20H.4,KEYEERET;*;常数表格区;显示字符段选码表(共阳极代码)DSER:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H ;0-6DB 0F8H,80H,90H,0CH,0FFH,89H,0C7H ;7-9,P.,灭,H,L;系统初始化后提示符&

30、quot;P."字符代码表DSER1:DB0BH,0BH,0BH,0BH,0BH,0BH,0BH,0AH;小数点后第一位字符代码表TABLE_DP1:DB00H,00H,01H,01H,02H,03H,03H,04HDB05H,05H,06H,06H,07H,08H,08H,09H;小数点后第二位字符代码表TABLE_DP2:DB00H,06H,03H,09H,05H,01H,08H,04HDB 00H,06H,03H,09H,05H,01H,08H,04H;*;子程序区;数码管显示子程序DIR;入口:7FH,7EH,7DH,7CH,7BH,7AH,79H,78H(LED7,LED6

31、,LED5,LED4,LED3,LED2,LED1,LED0)DIR:PUSH PSWSETB RS1 ;改变当前寄存器组为组2CLR RS0MOVR0,#78H;显示缓冲存储单元首地址MOVR3,#0FEH;从右至左显示MOVA,R3MOVDPTR,#DSERLD0:MOVP2,AMOVA,R0DIR0:MOVCA,A+DPTRDIR1:MOVP0,ALCALLDELAY ;延时1毫秒INCR0 ;获得新的显示缓冲单元地址MOVA,R3 ;位控码送AJNBACC.7,LD1 ;循环没有结束则继续RLA ;获得新的位控码MOVR3,A ;保存新的位控码LJMPLD0LD1:POPPSW ;恢复

32、当前寄存器组的组号RET;延时1ms子程序(晶振频率12MHz)DELAYDELAY: MOVR4,#02HLOOP4:MOVR5,#0FFHLOOP3:NOPNOPDJNZR5,LOOP3DJNZR4,LOOP4RET;*;读温度程序READ_TEMPREAD_TEMP:LCALL RESET_PULSE ;调用复位脉冲程序MOV A, #0CCH ;跳过ROM命令LCALL WRITEMOV A, #44H ;读温度LCALL WRITELCALL DISPLAY;显示温度LCALL RESET_PULSE;调用复位脉冲程序MOV A, #0CCH;跳过ROM命令LCALLWRITEMOV

33、A,#0BEH ;读缓存命令LCALL WRITELCALLREADRET;*;DS18B20的复位子程序RESET_PULSERESET_PULSE:RESET:SETBDATA_BUSNOPCLRDATA_BUS ;主机发出延时537微秒的复位低脉冲MOVR7,#255DJNZR7,$SETB DATA_BUS ;然后拉高数据线MOVR7,#30DJNZR7,$JNB DATA_BUS,SETB_FLAGCLRFLAGAJMPNEXTSETB_FLAG:SETB FLAGNEXT:MOV R7,#120DJNZR7,$SETB DATA_BUSJNBFLAG,RESETRET;*;DS18

34、B20的写入子程序WRITEWRITE:SETBDATA_BUSMOVR6,#8 ;一位共8位数据CLRC ;C=0WRITING:CLRDATA_BUS ;总线低位,开始写入MOVR7,#7DJNZR7,$ ;保持16us以上RRCA ;把字节DATA分成8个位,循环给CMOVDATA_BUS, C ;写入一个位MOVR7,#23DJNZR7,$ ;等待SETB DATA_BUS ;重新释放总线;NOPDJNZR6,WRITINGSETB DATA_BUS ;重新释放总线;RET;*;DS18B20的读取子程序READREAD:SETBDATA_BUSMOVR0,#TEMP_L ;低位存入T

35、L,高位存入THMOV R6,#8 ;数据一共有8位MOVR5,#2 ;读取两个字节的数字CLRCREADING:CLRDATA_BUS ;读前总线保持为低NOPNOPNOPSETBDATA_BUS ;开始读总线释放MOV R3,#9RE10:DJNZ R3,RE10 ;延时18usMOVC,DATA_BUS ;从总线读到一个位RRCA ;把读得的位值循环移给AMOVR7,#23DJNZR7,$ ;等待50usDJNZR6,READING ;读取下一位MOVR0,AINC R0MOVR6,#8DJNZR5,READINGRET;*;温度处理子程序PROCESS;主要功能是将RAM中读取值进行B

36、CD码的转换运算,并进行温度值正负的判定以及判断是否超出限定温度PROCESS:MOVDIS_BJ,#0FFHSETBP3.1MOVDIS_FH,#0FFHMOV R7,TEMP_LMOVA,#0FHANLA,R7MOVTEMP_DP,A;取温度小数部分MOV R7,TEMP_LMOVA,#0F0HANLA,R7SWAPAMOVTEMP_L,AMOVR7,TEMP_HMOVA,#0FHANLA,R7SWAPAORLA,TEMP_LMOVTEMP_INT,A ;取温度整数部分MOVR7,TEMP_HMOVA,#0F0HANLA,R7SWAPA;提取符号部分JZPROCESS1;判断是否为负值LC

37、ALLDWBJ ;调低温报警程序MOVDIS_FH,#0BFH;符号显示存储单元送“-”代码MOVA,TEMP_DP;对负温度值取补码CPLAINCAMOVTEMP_DP,AMOVA,TEMP_INTCPLAINCAMOVTEMP_INT,APROCESS1:MOVA,TEMP_INTSUBBA,TEMP_BJH ;判断是否超出上限温度JCDT LCALLGWBJ ;超出上限温度,调高温报警处理程序 DT:MOVA,TEMP_INTSUBBA,TEMP_BJL ;判断是否低于下限温度JNCPROCESS2LCALLDWBJ ;低于下限温度,调低温报警处理程序PROCESS2:MOVA,TEMP

38、_INTMOV B,#64H;/100DIVABMOVTEMP_BAI,AMOVA,#0AH ;/10XCHA,BDIVABMOVTEMP_SHI,AMOVTEMP_GE,BMOVA,TEMP_DPMOV DPTR,#TABLE_DP1MOVCA,A+DPTRMOVDPTR,#DSERMOVC A,A+DPTRMOVDIS_DP1,AMOVA,TEMP_DPMOV DPTR,#TABLE_DP2MOVCA,A+DPTRMOVDPTR,#DSERMOVC A,A+DPTRMOVDIS_DP2,AMOVA,TEMP_GEMOV DPTR,#DSERMOVCA,A+DPTRMOV DIS_GE,AMOVA,TEMP_SHIMOV DPTR,#DSERMOVCA,A+DPTRMOVDIS_SHI,AMOVA,TEMP_BAIMOV DPTR,#DSERMOVCA,A+DPTRMOV DIS_BAI,ARETDEL

温馨提示

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

评论

0/150

提交评论