ImageVerifierCode 换一换
格式:DOCX , 页数:30 ,大小:30.59KB ,
资源ID:10325162      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10325162.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(液晶显示温度控制器.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

液晶显示温度控制器.docx

1、液晶显示温度控制器功能说明:本装置的功能是对温度进行实时监测与控制。由温度传感器DS18B20对温度进行采样和转换成数字信号送入单片机,并与设定的报警温度上、下限值进行比较,信息通过LCD显示出来。如实时温度超过设定的上、下限值,一方面由LCD显示信息,并发出警报声;另一方面自动控制继电器(Relay)开接通或断开,从而控制加热源的开与断,达到对温度进行实时控制的目的。;程序清单:; TEMP_ZH EQU 24H ;实时温度值存放单元 TEMPL EQU 25H ;低温度值存放单元 TEMPH EQU 26H ;高温度值存放单元 TEMP_TH EQU 27H ;高温报警值存放单元 TEMP

2、_TL EQU 28H ;低温报警值存放单元 TEMPHC EQU 29H ;存十位数 BCD码 TEMPLC EQU 2AH ;存个位数 BCD码;- K1 EQU P2.1 K2 EQU P2.2 K3 EQU P2.3 K4 EQU P2.4;- SPK EQU P3.4 RELAY EQU P2.0 X EQU 2FH ;LCD 地址变量;- RS EQU P3.5 RW EQU P3.6 E EQU P3.7;- FLAG EQU 20H.0 ;DS18B20是否存在标记 KEY_UD EQU 20H.1 ;设定 KEY 的UP与DOWN 标记 DQ EQU P2.5;= 主程序 =

3、MAIN: ACALL SET_LCD ;LCD初始化设置子程序 ACALL WR_THL ;将报警上下线写入暂存寄存器TOOP: ACALL RESET_1820 ;18B20复位子程序 JNB FLAG,TOOP1 ;DS1820不存在 ACALL MEU_OK ;显示OK菜单 ACALL RE_THL ;把EEROM里温度报警值拷贝回暂存器 ACALL TEMP_BJ ;显示温度标记C JMP TOOP2TOOP1: ACALL MEU_ERROR ;显示ERROR菜单 ACALL TEMP_BJ ;显示温度标记 JMP $;-TOOP2: ACALL RE_TEMP ACALL SET

4、_DATA ACALL TEMP_COMP ;实际温度值与标记温度值比较子程序 ACALL P_KEY ;键扫描子程序 SJMP TOOP2; 读取温度数据子程序 RE_TEMP: ACALL RESET_1820 ;18B20复位子程序 JNB FLAG,TOOP1 ;DS1820不存在 MOV A,#0CCH ;跳过ROM匹配 ACALL WRITE_1820 ;写入子程序 MOV A,#44H ;发出温度转换命令 ACALL WRITE_1820 ;调写入子程序 ACALL RESET_1820 ;调复位子程序 MOV A,#0CCH ;跳过ROM匹配 ACALL WRITE_1820

5、;写入子程序 MOV A,#0BEH ;发出读温度命令 ACALL WRITE_1820 ;写入子程序 ACALL READ_1820 ;调用读入子程序 RET; 温度数据处理显示子程序 SET_DATA: ACALL CONV_TEMP ;处理温度 BCD 码子程序 ACALL DISP_BCD ;显示区 BCD 码温度值刷新子程序 ACALL CONV ;数据转换子程序 RET; 按键键扫描子程序 P_KEY: ;按键K1处理 JB K1,PK1 ; K1键未按,转到PK1处 ACALL SPK_BZ ;K1键按下,一声鸣响 JNB K1,$ ;等按键放开 MOV DPTR,#M_ALAX

6、1 ;存M_ALAX1表 MOV A,#1 ACALL LCD_PRINT ;显示字符 ACALL LOOK_ALARM ;显示信息区 JB K3,$ ;等待K3按下 ACALL SPK_BZ ;一声鸣响 JMP PK2 ;转到标号 PK2处 PK1: ; 按键K2处理 JB K2,PK3 ;K2键未按,转到PK3处 ACALL SPK_BZ ;K2键按下,一声鸣响 JNB K2,$ ;等按键放开 MOV DPTR,#TA1 ;存#TA1表 MOV A,#1 ACALL LCD_PRINT ;显示字符 ACALL SET_ALARM ;设定报警值 TH、TL ACALL WR_THL ;将设定

7、的TH,TL值写入DS18B20内 ACALL WRITE_E2 ;PK2: ACALL MEU_OK ;显示OK菜单 ACALL TEMP_BJ ;显示温度标记 PK3: RET;-TA1: DB RESET ALERT CODE;-; 设定报警值 TH、TL子程序 ;设定报警值 TH、TLSET_ALARM: ACALL LOOK_ALARMA0: JB K1,A2 ACALL SPK_BZ JNB K1,$ CPL 20H.1 ;UP/DOWN 标记A2: JB 20H.1,A3 ;20H.1=1,UP JMP A8 ;20H.1=0,DOWNA3: JB K2,A5 ;TH值调整(增加

8、) ACALL SPK_BZ INC TEMP_TH MOV A,TEMP_TH CJNE A,#120,A4 MOV TEMP_TH,#0A4: ACALL LOOK_ALARM MOV R5,#10 ACALL DELAY JMP A3A5: JB K3,A7 ;TL值调整(增加) ACALL SPK_BZ INC TEMP_TL MOV A,TEMP_TL CJNE A,#99,A6 MOV TEMP_TL,#00HA6: ACALL LOOK_ALARM ; MOV R5,#10 ACALL DELAY JMP A5A7: JB K4,A0 ;确定调整 OK ACALL SPK_BZ

9、JNB K4,$ RETA8: JB K2,A10 ;TH值调整 (减少) ACALL SPK_BZ DEC TEMP_TH MOV A,TEMP_TH CJNE A,#0FFH,A9 JMP A12A9: ACALL LOOK_ALARM MOV R5,#10 ACALL DELAY JMP A0A10: JB K3,A13 ;TL值调整(减少) ACALL SPK_BZ DEC TEMP_TL MOV A,TEMP_TL CJNE A,#0FFH,A11 JMP A12A11: ACALL LOOK_ALARM ; MOV R5,#10 ACALL DELAY JMP A0A12: CPL

10、 20H.1 JMP A3A13: JMP A7 RET; 显示信息区子程序 LOOK_ALARM: MOV DPTR,#M_ALAX2 ;指针指到显示信息区 MOV A,#2 ;显示在第二行 ACALL LCD_PRINT MOV A,#0C6H ACALL TEMP_BJ1 MOV A,TEMP_TH ;加载TH数据 MOV X,#3 ;设置位置 ACALL SHOW_LINE2H ;显示数据 MOV A,#0CEH ACALL TEMP_BJ1 MOV A,TEMP_TL ;加载TL数据 MOV X,#12 ;设置位置 ACALL SHOW_LINE2L ;显示数据 RET;-M_ALA

11、X1: DB LOOK ALERT CODE,0M_ALAX2: DB TH: TL: ,0;-TEMP_BJ1: ACALL WR_COMM MOV DPTR,#BJ2 ;指针指到显示信息区 MOV R1,#0 MOV R0,#2B0: MOV A,R1 MOVC A,A+DPTR ACALL WR_DATA INC R1 DJNZ R0,B0 RETBJ2: DB 00H,C;-SHOW_LINE2H: ;在 LCD 的第二行显示数字 MOV B,#100 DIV AB ADD A,#30H PUSH B MOV B,X ACALL LCDP2 POP B MOV A,#0AH XCH A

12、,B DIV AB ADD A,#30H INC X PUSH B MOV B,X ACALL LCDP2 POP B INC X MOV A,B MOV B,X ADD A,#30H ACALL LCDP2 RET;-SHOW_LINE2L: ;在 LCD 的第二行显示数字 MOV B,#100 DIV AB MOV A,#0AH XCH A,B DIV AB ADD A,#30H PUSH B MOV B,X CALL LCDP2 POP B INC X MOV A,B MOV B,X ADD A,#30H ACALL LCDP2 RET;-; 温度值比较子程序;实际温度值与标记温度值比较

13、子程序TEMP_COMP: MOV A,TEMP_TH SUBB A,TEMP_ZH ;减数被减数,则 JC TCL1 ;借位标志位C=1,转 MOV A,TEMP_ZH SUBB A,TEMP_TL ;减数被减数,则 JC TCL2 ;借位标志位C=1,转 MOV DPTR,#BJ5 ACALL TEMP_BJ3 CLR RELAY ;继电器吸合 RET TCL1: MOV DPTR,#BJ3 ;存入#BJ3表 ACALL TEMP_BJ3 ;调用显示高、低温度及加热标记子程序 SETB RELAY ;继电器关闭 ACALL SPK_BZ RET TCL2: MOV DPTR,#BJ4 ;存

14、入#BJ4表 ACALL TEMP_BJ3 ;调用显示高、低温度及加标记子程序 ACALL SPK_BZ ;调用鸣响子程序 RET; 显示高、低温度及加热标记程序TEMP_BJ3: MOV A,#0CEH ACALL WR_COMM MOV R1,#0 MOV R0,#2BJJ: MOV A,R1 MOVC A,A+DPTR ACALL WR_DATA INC R1 DJNZ R0,BJJ RETBJ3: DB HBJ4: DB BCD DIV AB ;B= A % 100 MOV R4,A ;R7 = 百位数 MOV A,#0AH XCH A,B DIV AB ;B = A % B SWAP

15、 A ORL A,B RET;- ; 小数部分码表DOTTAB: DB 00H,00H,01H,01H,02H,03H,03H,04H DB 05H,05H,06H,06H,07H,08H,08H,09H;-; 显示区BCD 码温度值刷新子程序 ;显示区 BCD 码温度值刷新DISP_BCD: MOV A,TEMPLC ANL A,#0FH MOV 70H,A ;小数位 MOV A,TEMPLC SWAP A ANL A,#0FH MOV 71H,A ;个位 MOV A,TEMPHC ANL A,#0FH MOV 72H,A ;十位 MOV A,TEMPHC SWAP A ANL A,#0FH

16、 MOV 73H,A ;百位 MOV A,TEMPHC ANL A,#0F0H CJNE A,#010H,DI0 SJMP DI2DI0: MOV A,TEMPHC ANL A,#0FH JNZ DI2 ;十位数是0 MOV A,TEMPHC SWAP A ANL A,#0FH MOV 73H,#0AH ;符号位不显示 MOV 72H,A ;十位数显示符号DI2: RET;- DS18B20复位初始化子程序 - RESET_1820: ;复位(有具体的时序要求) SETB DQ NOP CLR DQ ; ;主机发出延时537微秒的复位低脉冲 MOV R1,#3 DLY: MOV R0,#107

17、 DJNZ R0,$ DJNZ R1,DLY ; ;然后拉高数据线 SETB DQ NOP NOP NOP ; MOV R0,#25H T2: JNB DQ ,T3 ;等待DS18B20回应 DJNZ R0, T2 JMP T4 ; T3: SETB FLAG ;置标志位,表示DS1820存在 JMP T5 ; T4: CLR FLAG ;清标志位,表示DS1820不存在 JMP T7 ; T5: MOV R0,#117 T6: DJNZ R0,T6 ;时序要求延时一段时间 ; T7: SETB DQ RET ;复位子程序 ;- 写入DS18B20子程序 - WRITE_1820: ;写入DS

18、18B20(有具体的时序要求) MOV R2,#8 ;一共8位数据 CLR C WR1: CLR DQ ;总线低位,开始写入 MOV R3,#6 DJNZ R3,$ ;保持16微秒以上 RRC A ;把字节DATA分成8个BIT环移给C MOV DQ, C ;写入一个BIT MOV R3,#23 DJNZ R3,$ ;等待 SETB DQ ;重新释放总线 NOP DJNZ R2,WR1 ;写入下一个BIT SETB DQ RET ;写入子程序 ;- 读出DS18B20子程序 - READ_1820: ; 将温度低位、高位、TH、TL从DS18B20中读出 MOV R4,#4 ;mov r4,#

19、4 MOV R1,#TEMPL ; 存入25H、26H、27H、28H RE0: MOV R2,#8 ;数据一共有8位 RE1: CLR C SETB DQ NOP NOP CLR DQ ;读前总线保持为低 NOP NOP NOP SETB DQ ;开始读总线释放 MOV R3,#9 DJNZ R3,$ ;延时18微妙 MOV C, DQ ;从总线读到一个BIT MOV R3,#23 ; DJNZ R3,$ ;等待50微秒 RRC A ;把读得的位价值环移给A DJNZ R2,RE1 ;读下一个BIT MOV R1,A INC R1 ; R1内数据递增 DJNZ R4,RE0 RET ;读出子

20、程序;= LCD 1602 显示程序 =;初始化设置 SET_LCD: ;对 LCD 做初始化设置及测试 CLR E CALL INIT_LCD ;初始化 LCD CALL STORE_DATA ;将自定义字符存入LCD的CGRAM RET; LCD 初始化子程序 INIT_LCD: ;8位I/O控制 LCD 接口初始化 MOV A,#38H CALL WR_COMM call delay1 MOV A,#0CH ;开显示,显示光标,光标不闪烁 CALL WR_COMM call delay1 MOV A,#01H ;清除 LCD 显示屏 CALL WR_COMM call delay1 RE

21、T; 显示温度标记子程序 ;显示温度标记子程序TEMP_BJ: MOV A, #0CBH ACALL WR_COMM MOV DPTR,#BJ ;指针指到显示消息 MOV R1 ,#0 MOV R0 ,#2TP1: MOV A,R1 MOVC A,A+DPTR ACALL WR_DATA INC R1 DJNZ R0,TP1 RETBJ: DB 00H,C; 自定义字符子程序 ;将自定义字符写入LCD1602的CGRAM中STORE_DATA: MOV A,#40H ACALL WR_COMM MOV R2,#08H MOV DPTR,#D_DATA MOV R3,#00HS_DATA: MOV A,R3 MOVC A,A+DPTR ACALL WR_DATA ;写入数据 INC R3 DJNZ R2,S_DATA RET;-D_DATA: DB 0CH,12H,12

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1