- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
温控及pwm的程序
ORG 00H LJMP START ORG 100HSTART: ;;-----初始化 MOV SP,#60H ;;初始化堆栈指针Set18B20:;;-----DS18B20初始化 ;;DS18B20复位 ACALL Reset JB RFail,LOOP ;;复位失败则直接跳至显示部分 ;;对DS18B20发出Skip ROM命令 MOV A,#0CCH ACALL Write ;;对DS18B20发出温度转换命令 MOV A,#44H ACALL WriteSetDisT:MOV DisTime,#3 ;;设置下一个循环体的循环8次LOOP: ACALL Display ;;显示 JB RFail,Set18B20 ;;DS18B20复位失败时,在显示完一次后重新复位 DJNZ DisTime,LOOP JNB DS18B20,$ ;;判断DS18B20是否已完成温度转换 ACALL GetTemp ;;从DS18B20读出温度值 ACALL DealTemp ;;温度值处理 ACALL SendDisDT ;;根据当前系统状态设置显示内容SJMP SetDisT ;;;;;;;;;根据当前状态给显示模块设置显示参数SendDisDT: MOV Dian,#7FH ;;最高位为0代表显示小数点 ;;传送温度值 MOV A,TempH ;;送高位数据 MOV VAR,TempL ;;送低位数据 ACALL TransData RET;;A中保存高位值,Var中保存低位值TransData: ;;取个位值 MOV B,#10 DIV AB MOV DisData2,B ;;取十位值 JZ HavNot1 ;;判断商是否为0 MOV B,#10 DIV AB MOV DisData3,B JZ HavNot2 ;;判断商是否为0 MOV DisData4,A SJMP XiaoShu ;;跳至百位符号处理部分HavNot1:MOV DisData3,#10 ;;十位开始没有数字HavNot2:MOV DisData4,#10 ;;百位开始没有数字SignJudge:;;符号处理部分 JNB VAR.7,XiaoShu ;;当为负数显示符号 MOV A,#10 CJNE A,DisData3,BWSign MOV DisData3,#11 ;;负号在十位 SJMP XiaoShuBWSign:MOV DisData4,#11 ;;负号在百位XiaoShu:;;小数处理部分,用查表法获取小数值,精确到小数点后1位 MOV A,VAR ANL A,#0FH MOV DPTR,#XSTab MOVC A,@A+DPTR MOV DisData1,ARTransTemp: RETXSTab: DB 0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9DS18B20通迅模块组-------复位模块Reset: ;;3微秒高电平 SETB DS18B20 MOV R7,#250 CLR RFail ;;清0复位失败标记 CLR DS18B20 ;;延迟501uS DJNZ R7,$ SETB DS18B20 ;;释放总线(拉高数据线) ;;等待DS18B20作出复位成功反应,最大等待时间为69uS MOV R7,#17 Wait: JNB DS18B20,RReset ;;若DS18B20在作出复位成功反应,不再等待 DJNZ R7,Wait SETB RFail ;;70uS内DS18B20作出复位成功反应,置1复位失败标记RReset: ;;延迟350Us MOV R7,#174 DJNZ R7,$ SETB DS18B20 RET/;;-------向DS18B20写一个字的模块,要写的内容提前装入ACC中Write: MOV R6,#8 ;写8位WriteBit: ;;2微秒高电平 SETB DS18B20 MOV R7,#3 ;;7微秒低电平 CLR DS18B20 DJNZ R7,$ ;;ACC低位送至DS18B20 RRC A MOV DS18B20,C ;;延迟60Us MOV R7,#28 DJNZ R7,$ ;;是否已写完8位 DJNZ R6,WriteBitRWrite: SETB DS18B20 RET; /;;-------从DS18B20读回一个字节的内容,读回的内容装入ACC中Read: MOV R6,#8 ;;读回8位 MOV A,#0 ;;读回的内容装入ACC中ReadBit: ;;2微秒高电平 SETB DS18B20 MOV R7,#7 ;;2微秒低电平 CLR D
文档评论(0)