




免费预览已结束,剩余18页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
;*; ; DHT21使用范例 ;单片机 : AT89S52或 STC89C52RC ;功能 ; 串口发送温湿度数据 波特率 9600 ;硬件连接: P2.0口为通讯口连接DHT11,DHT11的电源和地连接单片机的电源和地,单片机串口加MAX232连接电脑 ;*; ;- ;-变量定义区- ;- FLAG EQU 30H U8comdata EQU 31H U8T_data_H EQU 32H U8T_data_L EQU 33H U8RH_data_H EQU 34H U8RH_data_L EQU 35H U8checkdata EQU 36H U8temp EQU 37H temp EQU 38H ;- ;- ;- org 0000h AJMP START org 0023h AJMP SET_INTSTART: MOV P0,#0FFH MOV TMOD,#20H ;T1工作方式2 MOV TH1,#0FDH ;串口波特率为9600 MOV SCON,#50H ;串口工作于方式1并允许接受 SETB TR1 ;启动T1 SETB ES ;允许串口中断 SETB EA ;允许全部外设中断 MAIN: ;-;-调用湿度读取子程序-;- LCALL RH;-;-串口发送程序 -;- TT: MOV A,U8RH_data_H LCALL TX_DATA MOV A,U8RH_data_L LCALL TX_DATA MOV A,U8T_data_H LCALL TX_DATA MOV A,U8T_data_L LCALL TX_DATA MOV A,U8checkdata LCALL TX_DATA /延时两秒 LCALL Delay_2S LJMP MAIN;-;-湿度读取子程序 -;-;-以下变量均为全局变量-;-温度高8位= U8T_data_H-;-温度低8位= U8T_data_L-;-湿度高8位= U8RH_data_H-;-湿度低8位= U8RH_data_L-;-校验 8位 = U8checkdata-;-调用相关子程序如下-;- Read,Delay_10us , Delay ;-RH: ;主机拉低总线,延时500us CLR P2.0 MOV A,#36 LCALL Delay SETB P2.0 ;延时40us LCALL Delay_10us LCALL Delay_10us LCALL Delay_10us LCALL Delay_10us ;检测从机是否响应,无响应则跳出 JB P2.0,RH_END MOV FLAG,#0LOOP1: INC FLAG MOV A,FLAG JB P2.0,LOOP1_END ;为高电平则跳出 CJNE A,#0,LOOP1 LJMP RH_ENDLOOP1_END: MOV FLAG,#0LOOP2: INC FLAG MOV A,FLAG JNB P2.0,LOOP2_END ;为低电平则跳出 CJNE A,#0,LOOP2 LJMP RH_ENDLOOP2_END: ;进入数据接收阶段 LCALL Read MOV U8RH_data_H,U8comdata; LCALL Read MOV U8RH_data_L,U8comdata; LCALL Read MOV U8T_data_H,U8comdata; LCALL Read MOV U8T_data_L,U8comdata; LCALL Read MOV U8checkdata,U8comdata; SETB P2.0 ;- ;-注意:本程序没有加校验程序 如果用户需要校验请安以下说明编写校验程序- ;- ; 数据传送正确时校验和U8checkdata的值等于 ; 8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据所得结果的末8位 ;- ;- ;- RH_END: RET;-;-读数子程序-;-Read: MOV temp,#8 MOV U8comdata,#0LOOP_COM: ;判断低电平是否结束 MOV FLAG,#0LOOP3: INC FLAG MOV A,FLAG JB P2.0,LOOP3_END ;为高电平则跳出 CJNE A,#0,LOOP3 LJMP COM_ENDLOOP3_END: ;- ;CLR P2.1;SETB P2.1 ;- LCALL Delay_10us LCALL Delay_10us LCALL Delay_10us ;- ;CLR P2.1;SETB P2.1 ;- MOV U8temp,#0 JNB P2.0,HIGH_END MOV U8temp,#1HIGH_END: MOV FLAG,#0LOOP4: INC FLAG MOV A,FLAG JNB P2.0,LOOP4_END ;为低电平则跳出 CJNE A,#0,LOOP4 LJMP COM_ENDLOOP4_END: MOV A,FLAG CJNE A,#0,NO_FLAG LJMP COM_ENDNO_FLAG: MOV A,U8comdata RL A ORL A,U8temp MOV U8comdata,A ;判断高电平是否结束 DJNZ temp,LOOP_COMCOM_END: RET;-;-延时函数 -;-Delay: MOV R4,A ;2.5msD1: MOV R5,#0FFH DJNZ R5,$ DJNZ R4,D1 RET;-;-延时10us函数 -;-Delay_10us: ;10us NOP NOP NOP NOP NOP NOP RET;-;-延时2S函数 -;-Delay_2S: MOV A,#250 LCALL Delay MOV A,#250 LCALL Delay MOV A,#250 LCALL Delay MOV A,#250 LCALL Delay MOV A,#250 LCALL Delay MOV A,#250 LCALL Delay MOV A,#250 LCALL Delay MOV A,#250 LCALL Delay RET;-;-串口数据发送函数 -;-TX_DATA: CLR ES ;禁止串口中断 MOV SBUF,A JNB TI,$ CLR TI ;将同一数据发送到串口 SETB ES ;允许串口中断 RET;-;-串口中断函数 -;-SET_INT: CLR ES ;禁止串口中断 JNB RI,$ CLR RI MOV A,SBUF ;接受串口数据 MOV P0,A ;将串口数据送往P0 MOV SBUF,A JNB TI,$ CLR TI ;将同一数据发送到串口 SETB ES ;允许串口中断 RETI END;-;-结束-;- RS BIT P3.4RW BIT P3.5E BIT P3.6D1 BIT P2.0D2 BIT P2.1D3 BIT P2.2IDS BIT P2.4IRW BIT P2.5IAS BIT P2.6ICS BIT P2.7TT EQU 39H FLAG EQU 30H U8comdata EQU 31H U8T_data_H EQU 32H U8T_data_L EQU 33H U8RH_data_H EQU 34H U8RH_data_L EQU 35H U8checkdata EQU 36H U8temp EQU 37H temp EQU 38HORG 0000HLJMP MAINORG 0040HMAIN:MOV R3,#0MOV TT,#0MOV SP,#5FHCALL INITMOV A,#07HCALL WRCTAB:DB WELCOME! TAB1: DB TWF&LN DESIGN MOV R0,#80H+16MOV R1,#8MOV R2,#0LOOP:MOV A,#0AHMOV R6,#20HCALL DWRCMOV A,#0BHMOV R6,#26HCALL DWRCMOV A,#0BHMOV R6,#26HCALL DWRCMOV A,R0INC R0CALL WRCCLR AMOV A,R2INC R2MOV DPTR,#TABMOVC A,A+DPTRCALL WRDCALL DELAY1DJNZ R1,LOOPMOV R0,#0C0H+25MOV R1,#32MOV R2,#0LOOP1:MOV A,R0INC R0CALL WRCCLR AMOV A,R2INC R2MOV DPTR,#TAB1MOVC A,A+DPTRCALL WRDCALL DELAY1DJNZ R1,LOOP1MOV A,#04HCALL WRCMOV A,#0CHCALL WRCSJ:CALL XSSS:JNB D1,KEYLJMP SJSHU: DB 0123456789KEY:CALL DELAY1JB D1,SJKEY1:MOV A,#0AHMOV R6,#0ffHCALL DWRCMOV A,#0BHMOV R6,#26HCALL DWRCJNB D3,JIANJNB D2,JIAJNB D1,FECALL XSLJMP KEY1FE:CALL DELAY1JB D1,KEY1LJMP FENJIA:CALL DELAY1JB D2,KEY1MOV A,#00HCALL DWRDINC R5CJNE R5,#60,JIAJIAMOV R5,#0LJMP JIAJIAJIAJIA:MOV A,R5MOV R6,AMOV A,#00HCALL DWRCMOV A,#0C0H+10CALL WRCMOV A,R5MOV B,#10DIV ABMOV DPTR,#SHUMOVC A,A+DPTRCALL WRDMOV A,#0C0H+11CALL WRCMOV A,BMOVC A,A+DPTRCALL WRDLJMP KEY1JIAN:CALL DELAY1JB D3,KEY1MOV A,#00HCALL DWRDDEC R5CJNE R5,#0,JIANJIANMOV R5,#60LJMP JIANJIANJIANJIAN:MOV A,R5MOV R6,AMOV A,#00HCALL DWRCMOV A,#0C0H+10CALL WRCMOV A,R5MOV B,#10DIV ABMOV DPTR,#SHUMOVC A,A+DPTRCALL WRDMOV A,#0C0H+11CALL WRCMOV A,BMOVC A,A+DPTRCALL WRDLJMP KEY1KE:LJMP KEY1FEN:CALL DELAY1FEN1:JNB D3,FENJIANJNB D2,FENJIAJNB D1,SHCALL XSLJMP FEN1SH:CALL DELAY1JB D1,FEN1LJMP SHIKQ:CALL DELAYJB D3,KEMOV A,#0AHMOV R6,#20HCALL DWRCMOV A,#0BHMOV R6,#26HCALL DWRCLJMP SJFENJIA:CALL DELAY1JB D2,FEN1MOV A,#02HCALL DWRDINC R5CJNE R5,#60,FENJIAJIAMOV R5,#0LJMP FENJIAJIAFENJIAJIA:MOV A,R5MOV R6,AMOV A,#02HCALL DWRCMOV A,#0C0H+7CALL WRCMOV A,R5MOV B,#10DIV ABMOV DPTR,#SHUMOVC A,A+DPTRCALL WRDMOV A,#0C0H+8CALL WRCMOV A,BMOVC A,A+DPTRCALL WRDLJMP FENFENJIAN:CALL DELAY1JB D3,FEN1MOV A,#02HCALL DWRDDEC R5CJNE R5,#0,FENJIANJIANMOV R5,#24LJMP FENJIANJIANFENJIANJIAN:MOV A,R5MOV R6,AMOV A,#02HCALL DWRCMOV A,#0C0H+7CALL WRCMOV A,R5MOV B,#10DIV ABMOV DPTR,#SHUMOVC A,A+DPTRCALL WRDMOV A,#0C0H+8CALL WRCMOV A,BMOVC A,A+DPTRCALL WRDLJMP FENSHI:JNB D3,SHIJIANJNB D2,SHIJIAJNB D1,FHCALL XSLJMP SHIFH:CALL DELAY1JB D1,SHILJMP FFSHIJIA:CALL DELAY1JB D2,SHIMOV A,#04HCALL DWRDINC R5CJNE R5,#60,SHIJIAJIAMOV R5,#0LJMP SHIJIAJIASHIJIAJIA:MOV A,R5MOV R6,AMOV A,#04HCALL DWRCMOV A,#0C0H+5CALL WRCMOV A,R5MOV B,#10DIV ABMOV DPTR,#SHUMOVC A,A+DPTRCALL WRDMOV A,#0C0H+6CALL WRCMOV A,BMOVC A,A+DPTRCALL WRDLJMP SHISHIJIAN:CALL DELAY1JB D3,SHIMOV A,#04HCALL DWRDDEC R5CJNE R5,#0,SHIJIANJIANMOV R5,#24LJMP SHIJIANJIANSHIJIANJIAN:MOV A,R5MOV R6,AMOV A,#04HCALL DWRCMOV A,#0C0H+5CALL WRCMOV A,R5MOV B,#10DIV ABMOV DPTR,#SHUMOVC A,A+DPTRCALL WRDMOV A,#0C0H+6CALL WRCMOV A,BMOVC A,A+DPTRCALL WRDLJMP SHIFF:MOV A,#0AHMOV R6,#20HCALL DWRCMOV A,#0BHMOV R6,#26HCALL DWRCLJMP SJINIT:MOV A,#38HCALL WRCCALL DELAYMOV A,#01HCALL WRCMOV A,#0EHCALL WRCMOV A,#06HCALL WRCMOV A,#20HCALL DWRCRETXS:LCALL RHMOV A,#00HCALL DWRDMOV A,#0C0H+10CALL WRCMOV A,R5MOV B,#10DIV ABMOV DPTR,#SHUMOVC A,A+DPTRCALL WRDMOV A,#0C0H+11CALL WRCMOV A,BMOVC A,A+DPTRCALL WRDMOV A,#0C0H+9CALL WRCMOV A,#3AHCALL WRD MOV A,#02HCALL DWRDMOV A,#0C0H+7CALL WRCMOV A,R5MOV B,#10DIV ABMOV DPTR,#SHUMOVC A,A+DPTRCALL WRDMOV A,#0C0H+8CALL WRCMOV A,BMOVC A,A+DPTRCALL WRDMOV A,#0C0H+6CALL WRCMOV A,#3AHCALL WRDMOV A,#04HCALL DWRDMOV A,#0C0H+4CALL WRCMOV A,R5MOV B,#10DIV ABMOV DPTR,#SHUMOVC A,A+DPTRCALL WRDMOV A,#0C0H+5CALL WRCMOV A,BMOVC A,A+DPTRCALL WRDMOV A,#0C0H+6MOV A,#09HCALL DWRDMOV A,#80H+2CALL WRCMOV A,R5MOV B,#10DIV ABMOV DPTR,#SHUMOVC A,A+DPTRCALL WRDMOV A,#80H+3CALL WRCMOV A,BMOVC A,A+DPTRCALL WRDMOV A,#80H+4CALL WRCMOV A,#2FHCALL WRDMOV A,#08HCALL DWRDMOV A,#80H+5CALL WRCMOV A,R5MOV B,#10DIV ABMOV DPTR,#SHUMOVC A,A+DPTRCALL WRDMOV A,#80H+6CALL WRCMOV A,BMOVC A,A+DPTRCALL WRDMOV A,#80H+7CALL WRCMOV A,#2FHCALL WRDMOV A,#07HCALL DWRDMOV A,#80H+8CALL WRCMOV A,R5MOV B,#10DIV ABMOV DPTR,#SHUMOVC A,A+DPTRCALL WRDMOV A,#80H+9CALL WRCMOV A,BMOVC A,A+DPTRCALL WRDMOV A,#80H+11CALL WRCMOV A,U8T_data_HCJNE A,#0,WDMOV A,U8T_data_LMOV B,#100DIV ABMOV DPTR,#SHUMOVC A,A+DPTRCALL WRDMOV A,#80H+12CALL WRCMOV A,BMOV B,#10DIV ABMOV DPTR,#SHUMOVC A,A+DPTRCALL WRDMOV A,#80H+14CALL WRCMOV A,BMOVC A,A+DPTRCALL WRDWD:MOV A,U8T_data_LADD A,#256MOV B,#100DIV ABMOV DPTR,#SHUMOVC A,A+DPTRCALL WRDMOV A,#80H+12CALL WRCMOV A,BMOV B,#10DIV ABMOV DPTR,#SHUMOVC A,A+DPTRCALL WRDMOV A,#80H+14CALL WRCMOV A,BMOVC A,A+DPTRCALL WRDRETCBUSY:PUSH ACCPUSH DPHPUSH DPLPUSH PSWDWRC:CLR ICSCLR IASSETB IDSSETB IRWSETB IASMOV P0,ACLR IASCLR IRWMOV P0,R6SETB IRWSETB IASSETB ICSRETDWRD:CLR IASSETB IDSSETB IRWCLR ICSSETB IASMOV P0,ACLR IASCLR IDSMOV P0,#0FFHMOV R5,P0SETB IDSSETB IASSETB ICSRETWRC:CLR RSCLR RWMOV P1,ACALL DELAYSETB ECALL DELAYCLR ERETWRD:SETB RSCLR RWMOV P1,ACALL DELAY SETB ECALL DELAYCLR ERETDELAY:MOV R7,#5DELA:MOV R6,#0F9HDJNZ R6,$DJNZ R7,DELARETDELAY1:MOV R7,#120DELA1:MOV R6,#0F9HDJNZ R6,$DJNZ R7,DELA1RETRH: CLR P2.3 MOV A,#36 LCALL DELAY2 SETB P2.3 LCALL Delay_10us LCALL Delay_10us LCALL Delay_10us LCALL Delay_10us RH1:INC FLAG MOV A,FLAG JB P2.3,RH1_END CJN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 民爆物品安全培训计划课件
- 民法课件教学
- 1S-2R-Bedaquiline-1S-2R-TMC207-生命科学试剂-MCE
- 保安证笔试考试题及答案
- 江西安全生产条例要点讲解
- 民族风光课件
- 华体科技新质生产力
- 新质生产力的核心特点
- 新质生产力对消费的影响
- 2025年精神科抑郁症早期干预试卷答案及解析
- (高清版)DZT 0337-2020 矿产地质勘查规范 油砂
- 【培训课件】5S培训课程讲义
- 2021年10月自考健康教育与健康促进试题及答案
- 假性软骨发育不全综合征介绍演示培训课件
- 他们创造了数学:50位著名数学家的故事
- 财务管理-企业筹资方式
- 07K103-2 防排烟系统设备及附件选用及安装
- (完整)消化性溃疡PPT课件ppt
- (完整word版)A3试卷模板
- 疫苗针对性疾病暴发疫情处置课件
- GB/T 13173-2021表面活性剂洗涤剂试验方法
评论
0/150
提交评论