液晶显示温度控制器_第1页
液晶显示温度控制器_第2页
液晶显示温度控制器_第3页
液晶显示温度控制器_第4页
液晶显示温度控制器_第5页
已阅读5页,还剩22页未读 继续免费阅读

VIP免费下载

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

文档简介

1、精品文档功能说明:本装置的功能是对温度进行实时监测与控制。由温度传感器DS18B20对温度进行采样和转换成数字信号送入单片机,并与设定的报警温度上、下限值进行比较,信息通过LCD显示出来。如实时温度超过设定的上、下限值,一方面由LCD显示信息,并发出警报声;另一方面自动控制继电器(Relay)开接通或断开,从而控制加热源的开与断,达到对温度进行实时控制的目的。89C51VccEAXIP2.0P3.4P2.1P2.2F2.3P2.4Pl 0Pl.lPl.2Pl .3Pl.4Pl .5Pl.6Pl .7P3.5P3.6P3,7P2.5VSEDBODB2DB3DB4DB7去物CKYIRSRWEDS1

2、8E20R 4.7 k按健扫描复位LCD初始化Relay On报警精品文档显示程序清单:TEMP_ZHEQU24HTEMPLEQU25HTEMPHEQU26HTEMP_THEQU27HTEMP_TLEQU28HTEMPHCEQU29HTEMPLCEQU2AHK1EQUP2.1K2EQUP2.2K3EQUP2.3K4EQUP2.4SPKEQUP3.4RELAYEQUP2.0XEQU2FHRSEQUP3.5RWEQUP3.6EEQUP3.7FLAGEQU20H.0KEY_UDEQU20H.1DQEQUP2.5;实时温度值存放单元;低温度值存放单元;高温度值存放单元;高温报警值存放单元;低温报警值存

3、放单元;存十位数BCD码;存个位数BCD码;LCD地址变量;DS18B20是否存在标记;设定KEY的UP与DOWN标记=主程序=MAIN:ACALLSET_LCD;LCD初始化设置子程序ACALLWR_THL;将报警上下线写入暂存寄存器TOOP:ACALLRESET_1820;18B20复位子程序JNBFLAG,TOOP1;DS1820不存在ACALLMEU_OK;显示"OK"菜单ACALLRE_THL;把EEROM里温度报警值拷贝回暂存器ACALLTEMP_BJ;显示温度标记"C"JMPTOOP2TOOP1:ACALLMEU_ERROR;显示"

4、;ERROR"菜单ACALLTEMP_BJ;显示温度标记JMP$JTOOP2:ACALLRE_TEMPACALLSET_DATAACALLTEMP_COMP;实际温度值与标记温度值比较子程序ACALLP_KEY;键扫描子程序SJMPTOOP2读取温度数据子程序RE_TEMP:ACALLJNBMOVACALLMOVACALLACALLMOVACALLMOVACALLACALLRETRESET_1820FLAG ,TOOP1A,#0CCH WRITE_1820A,#44HWRITE_1820 RESET_1820A,#0CCHWRITE_1820A,#0BEH WRITE_1820 RE

5、AD_1820;18B20 复位子程序;DS1820 不存在;跳过 ROM 匹配;写入子程序;发出温度转换命令;调写入子程序; 调复位子程序;跳过 ROM 匹配;写入子程序;发出读温度命令;写入子程序; 调用读入子程序温度数据处理显示子程序SET_DATA:ACALL CONV_TEMPACALL DISP_BCDACALL CONVRET; 处理温度BCD 码子程序;显示区 BCD 码温度值刷新子程序; 数据转换子程序按键键扫描子程序ACALLSPK_BZ;K1 键按下,一声鸣响JNBK1,$; 等按键放开MOVDPTR,#M_ALAX1; 存 M_ALAX1 表MOVA,#1ACALLLC

6、D_PRINT; 显示字符ACALLLOOK_ALARM; 显示信息区JBK3,$;等待 K3 按下ACALLSPK_BZ; 一声鸣响JMPPK2; 转到标号PK2 处P_KEY:;按键K1 处理JB K1,PK1; K1 键未按,转到 PK1 处;K2 键未按,转到 PK3 处;K2 键按下,一声鸣响; 等按键放开; 存 #TA1 表; 显示字符;设定报警值TH 、 TL;将设定的TH,TL 值写入 DS18B20 内; 显示 "OK" 菜单; 显示温度标记PK1:;按键K2处理JBK2,PK3ACALLSPK_BZJNBK2,$MOVDPTR,#TA1MOVA,#1AC

7、ALLLCD_PRINTACALLSET_ALARMACALLWR_THLACALLWRITE_E2PK2:ACALLMEU_OKACALLTEMP_BJPK3:RET;TA1:DB"RESETALERTCODE"设定报警值TH、TL子程序;设定报警值TH、TLSET_ALARM:ACALLLOOK_ALARMA0:JBK1,A2ACALLSPK_BZJNBK1,$CPL20H.1;UP/DOWN标记A2:JB20H.1,A3;20H.1=1,UPJMPA8;20H.1=0,DOWNA3:JBK2,A5;TH值调整(增加)ACALLSPK_BZINCTEMP_THMOVA,

8、TEMP_THCJNEA,#120,A4MOVTEMP_TH,#0A4:ACALLLOOK_ALARMMOVR5,#10ACALLDELAYJMPA3精品文A5:JBK3,A7;TL值调整(增加)ACALLSPK_BZINCTEMP_TLMOVA,TEMP_TLCJNEA,#99,A6MOVTEMP_TL,#00HA6:ACALLLOOK_ALARM;MOVR5,#10ACALLDELAYJMPA5A7:JBK4,A0;确定调整OKACALLSPK_BZJNBK4,$RETA8:JBK2,A10;TH值调整(减少)ACALLSPK_BZDECTEMP_THMOVA,TEMP_THCJNEA,#

9、0FFH,A9JMPA12A9:ACALLLOOK_ALARMMOVR5,#10ACALLDELAYJMPA0A10:JBK3,A13;TL值调整(减少)ACALLSPK_BZDECTEMP_TLMOVA,TEMP_TLCJNEA,#0FFH,A11JMPA12A11:ACALLLOOK_ALARM;MOVR5,#10ACALLDELAYJMPA0A12:CPL20H.1JMPA3A13:JMPA7RET;显示信息区子程序精品文精品文档精品文档LOOK_ALARM:MOVDPTR,#M_ALAX2;指针指到显示信息区MOVA,#2ACALLLCD_PRINTMOVA,#0C6HACALLTEM

10、P_BJ1MOVA,TEMP_THMOVX,#3ACALLSHOW_LINE2HMOVA,#0CEHACALLTEMP_BJ1MOVA,TEMP_TLMOVX,#12ACALLSHOW_LINE2LRET;M_ALAX1:DB"LOOKALERTCODE",0;显示在第二行;加载TH数据;设置位置;显示数据;加载TL数据;设置位置;显示数据M_ALAX2:"TH:TL:",0DB;TEMP_BJ1:ACALL-WR_COMMMOVDPTR,#BJ2MOVR1,#0MOVR0,#2B0:MOVA,R1MOVCA,A+DPTRACALLWR_DATAINCR

11、1DJNZR0,B0RETBJ2:DB00H,"C"指针指到显示信息区SHOW_LINE2H:;在LCD的第二行显示数字MOVB,#100DIVABADDA,#30HPUSHBMOVB,XACALLLCDP2POPBMOVA,#0AHXCHA,BDIVABADDA,#30HINCXPUSHBMOVB,XACALLLCDP2POPBINCXMOVA,BMOVB,XADDA,#30HACALLLCDP2RET; 在 LCD 的第二行显示数字;SHOW_LINE2L:MOVB,#100DIVABMOVA,#0AHXCHA,BDIVABADDA,#30HPUSHBMOVB,XCAL

12、LLCDP2POPBINCXMOVA,BMOVB,XADDA,#30HACALLLCDP2RET;温度值比较子程序;实际温度值与标记温度值比较子程序TEMP_COMP:MOVA,TEMP_THSUBBA,TEMP_ZHJCTCL1MOVA,TEMP_ZHSUBBA,TEMP_TLJCTCL2MOVDPTR,#BJ5ACALLTEMP_BJ3CLRRELAYRETTCL1:MOVDPTR,#BJ3ACALLTEMP_BJ3SETBRELAYACALLSPK_BZRETTCL2:MOVDPTR,#BJ4ACALLTEMP_BJ3ACALLSPK_BZRET;减数>被减数,则;借位标志位C=1

13、,转;减数>被减数,则;借位标志位C=1,转;继电器吸合;存入#BJ3表;调用显示高、低温度及加热标记子程序;继电器关闭;存入#BJ4表;调用显示高、低温度及加标记子程序;调用鸣响子程序显示高、低温度及加热标记程序TEMP_BJ3:MOVA,#0CEHBJJ:BJ3:BJ4:BJ5:ACALLMOVMOVMOVMOVCACALLINCDJNZRETWR_COMMR1,#0R0,#2A,R1A,A+DPTRWR_DATAR1R0,BJJDB">H"DB"<L"DB报警上下线写入暂存器子程序WR_THL:JBRETWR_T:ACALLMOV

14、LCALLMOVLCALLMOVLCALLMOVLCALLMOVLCALLRETFLAG,WR_TRESET_1820A,#0CCH;跳过ROM匹配WRITE_1820A,#4EH;写暂存寄存器WRITE_1820A,TEMP_TH;TH(报警上限)WRITE_1820A,TEMP_TL;TL(报警下限)WRITE_1820A,#7FH;12位精确度WRITE_1820JWRITE_E2:ACALLMOVLCALLMOVLCALLRET报警值拷贝到EEROM子程序RESET_1820A,#0CCH;跳过ROM匹配WRITE_1820A,#48H;48H为拷贝到EEROM的指令代码WRITE_1

15、820JRE_THL:ACALLMOVLCALLMOVACALLRET报警值拷贝回暂存器子程序RESET_1820A,#0CCH;跳过ROM匹配WRITE_1820A,#0B8H;把EEROM里的温度报警值拷贝回暂存器WRITE_1820J;处理温度BCDCONV_TEMP:处理温度BCD码子程序码子程序MOVA,TEMPH;判温度是否零下ANLA,#80HJZTC1;温度零上转CLRCTC1:MOVTEMPHC,#0AHTC2:MOVA,TEMPHCSWAPAMOVTEMPHC,AMOVA,TEMPLANLA,#0FHMOVDPTR,#DOTTABMOVC A,A+DPTRMOV TEMPL

16、C,AMOV A,TEMPLANL A,#0F0HSWAP AMOV TEMPL,AMOV A,TEMPHANL A,#0FHSWAP AORL A,TEMPLMOV TEMP_ZH,ALCALL HEX2BCD1MOV TEMPL,AANL A,#0F0HSWAP AORL A,TEMPHCMOV TEMPHC,AMOV A,TEMPLANL A,#0FHSWAP AORL A,TEMPLCMOV TEMPLC,AMOV A,R4JZ TC3ANL A,#0FHSWAP AMOVA,TEMPL;二进制数求补(双字节)CPLA;取反加1ADDA,#01HMOVTEMPL,AMOVA,TEMPH

17、CPLAADDCA,#00HMOVTEMPH,ASJMPTC2;乘0.0625;TEMPLCLOW=小数部分BCD;整数部分;取出高四位;取出低四位;重新组合;TEMPHCLOW=十位数BCD;TEMPLCHI=个位数BCDMOVR4,AMOVA,TEMPHC;TEMPHCHI=百位数BCDANLA,#0FHORLA,R4MOVTEMPHC,ATC3:RETJHEX2BCD1:MOVB,#064H;十六进制->BCDDIVAB;B=A%100MOVR4,A;R7=百位数MOVA,#0AHXCHA,BDIVAB;B=A%BSWAPAORLA,BRETJ;小数部分码表DOTTAB:DB00H

18、,00H,01H,01H,02H,03H,03H,04HDB05H,05H,06H,06H,07H,08H,08H,09H;显示区BCD码温度值刷新子程序;显示区BCD码温度值刷新DISP_BCD:MOVA,TEMPLCANLA,#0FHMOV70H,A;小数位MOVA,TEMPLCSWAPAANLA,#0FHMOV71H,A;个位MOVA,TEMPHCANLA,#0FHMOV72H,A;十位MOVA,TEMPHCSWAPAANLA,#0FHMOV73H,A;百位MOVA,TEMPHCANLA,#0F0HCJNEA,#010H,DI0SJMPDI2DI0:MOVA,TEMPHC; 十位数是 0

19、;符号位不显示; 十位数显示符号ANLA,#0FHJNZDI2MOVA,TEMPHCSWAPAANLA,#0FHMOV73H,#0AHMOV72H,ADI2:RETDS18B20复位初始化子程序RESET_1820:;复位(有具体的时序要求)SETBDQNOPCLRDQ;主机发出延时537微秒的复位低脉冲MOVR1,#3DLY:MOVR0,#107DJNZR0,$DJNZR1,DLYJ;然后拉高数据线SETBNOPNOPNOPDQT2:MOVJNBDJNZJMPR0,#25HDQ,T3R0,T2T4;等待DS18B20回应T3:SETBJMPFLAGT5;置标志位,表示DS1820存在T4:C

20、LRJMPFLAGT7;清标志位,表示DS1820不存在JJJJT5:MOVR0,#117T6:DJNZR0,T6;T7:SETBDQRET;时序要求延时一段时间;复位子程序写入DS18B20子程序WRITE_1820:;写入DS18B20(有具体的时序要求)MOVR2,#8;一共8位数据CLRC; 总线低位,开始写入; 保持16 微秒以上WR1:CLRDQMOVR3,#6DJNZR3,$RRCA;把字节DATA分成8个BIT环移给CMOV DQ, CMOV R3,#23DJNZ R3,$SETB DQ; 写入一个 BIT; 等待; 重新释放总线NOPDJNZR2,WR1;写入下一个BIT;

21、写入子程序SETBDQRET读出DS18B20子程序READ_1820:;将温度低位、高位、TH、TL从DS18B20中读出MOVR4,#4;movr4,#4MOVR1,#TEMPL;存入25H、26H、27H、28HRE0:MOVR2,#8;数据一共有8位RE1:CLRCSETBDQNOPNOPCLRDQ;读前总线保持为低NOPNOPNOPSETBDQ;开始读总线释放MOVR3,#9DJNZ R3,$MOV C, DQ; 延时 18 微妙; 从总线读到一个BITMOV R3,#23 ;DJNZ R3,$; 等待 50 微秒RRC A;把读得的位价值环移给DJNZ R2,RE1MOV R1,A

22、;读下一个BITINC R1DJNZ R4,RE0RET; R1 内数据递增A;读出子程序=LCD1602显示程序=;初始化设置SET_LCD:;对LCD做初始化设置及测试CLRECALLINIT_LCD;初始化LCDCALLSTORE_DATA;将自定义字符存入LCD的CGRAMRET;LCD初始化子程序INIT_LCD:;8位I/O控制LCD接口初始化MOVA,#38HCALLWR_COMMcalldelay1MOVA,#0CH;开显示,显示光标,光标不闪烁CALLWR_COMMcalldelay1MOVA,#01H;清除LCD显示屏CALLWR_COMMcalldelay1RET;显示温

23、度标记子程序;显示温度标记子程序TEMP_BJ:MOVA,#0CBHACALLWR_COMMMOVDPTR,#BJ;指针指到显示消息MOVR1,#0MOVR0,#2TP1:MOVA,R1MOVCA,A+DPTRACALLWR_DATAINCR1DJNZR0,TP1RETBJ:DB00H,"C"自定义字符子程序;将自定义字符写入LCD1602的CGRAM中STORE_DATA:MOVA,#40HACALLWR_COMMMOVR2,#08HMOVDPTR,#D_DATAMOVR3,#00HS_DATA:MOVA,R3MOVCA,A+DPTRACALLWR_DATA;写入数据IN

24、CR3DJNZR2,S_DATARET;D_DATA:DB0CH,12H,12H,0CH,00H,00H,00H,00H;显示“OK”信息子程序MEU_OK:MOVMOVCALLMOVMOVCALLRETDPTR,#M_OK1A,#1LCD_PRINTDPTR,#M_OK2A,#2LCD_PRINT;指针指到显示消息;显示在第一行;指针指到显示消息;显示在第一行M_OK1:DB"DS18B20OK",0M_OK2:DB"TEMP:",0显示“ERROR”信息子程序MEU_ERROR:MOVDPTR,#M_ERROR1;指针指到显示消息1MOVA,#1;显

25、示在第一行ACALLLCD_PRINTMOVDPTR,#M_ERROR2;指针指到显示消息1MOVA,#2;显示在第一行ACALLLCD_PRINTRET;M_ERROR1:DB"DS18B20ERROR",0M_ERROR2:DB"TEMP:",0;LCD_PRINT:;在LCD的第一行或第二行显示字符CJNEA,#1,LINE2;判断是否为第一行LINE1:ACALLCLR_LINE;清除该行字符数据MOVA,#80H;设置LCD的第一行地址ACALLWR_COMM;写入命令JMPFILLLINE2:ACALLCLR_LINE;清除该行字符数据MOV

26、A,#0C0H;设置LCD的第二行地址ACALLWR_COMMFILL:CLRA;填入字符MOVCA,A+DPTR;由消息区取出字符CJNEA,#0,LC1;判断是否为结束码RETLC1:ACALLWR_DATA;写入数据INCDPTR;指针加1JMPFILL;继续填入字符RET;数据转换CONV:MOVA,73H;加载百位数据MOVX,#6;设置位置CJNEA,#1,CO1JMPCO2CO1:MOVA,#""MOVB,XACALLLCDP2JMPCO3CO2:ACALLSHOW_LINE2;显示数据CO3:INCX;MOVA,72H;mova,72h;十位ACALLSHOW_LINE2INCX;incXMOVA,71H;mova,71h;个位ACALLSHOW_LINE2INCX;incXMOVA,#'.'MOVB,XACALLLCDP2MOVA,70H;h;加载小数点位I

温馨提示

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

评论

0/150

提交评论