一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
楼主: 山水2000
收起左侧

[其他综合] 请汇编高手帮修改一下,温度显示电路程序。

[复制链接]
 楼主| 发表于 2013-7-3 18:48 | 显示全部楼层
灰灰的丝丁鱼 发表于 2013-7-3 17:58
你是没细看,我是刚点击安装就出现这样的,没得任何选择的

你重新解压再安装一次试试看,我一直都用这个版本的,XP,WIN7都可以正常使用的。或再重新下载一次。
发表于 2013-7-3 20:51 | 显示全部楼层
灰灰的丝丁鱼 发表于 2013-7-3 17:58
你是没细看,我是刚点击安装就出现这样的,没得任何选择的

偶英文也不好
似乎是说版本冲突,你检查下电脑上是不是已经安装了Proteus 7 Professional
发表于 2013-7-3 21:07 | 显示全部楼层
灰灰的丝丁鱼 发表于 2013-7-3 11:55
不是说18B20的精度只有0.5度吗,该如何才会显示到0.1度?

DS18B20测温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃
可编程 的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃
发表于 2013-7-4 16:42 | 显示全部楼层
xxxx7 发表于 2013-7-3 20:51
偶英文也不好
似乎是说版本冲突,你检查下电脑上是不是已经安装了Proteus 7 Professional

谢谢了!真的是版本冲突,原来电脑上已经安装了7.10英文版本了,只是我是按Proteus 的首字母“p”在C、D盘的程序文件夹进行搜索搜索不到,以为是没有安装的,现在网上搜索7.10汉化文件覆盖,已经可以正常使用了;
稍微看了一下,楼主的程序不怎么合理,尤其是在显示上面,有空我再细看一下
发表于 2013-7-6 15:01 | 显示全部楼层
汇编没学会啊
发表于 2013-7-7 22:25 | 显示全部楼层
山水2000 发表于 2013-7-3 10:50
感谢“灰灰的丝丁鱼”,上面一乐金币就给你吧,还得感谢“hexj0123 ”和“hysy ”的帮助,感谢楼上各位,不 ...

晕!不懂英文看不懂原版资料啊,被网上的中文资料给误导了,看看下面的两个截图,温度输出格式和楼主的程序根本对应不上,在多次上网搜索后,才看到一个较为清晰的资料截图,明白了18B20的数据输出格式,知道了默认是以12位输出的,最低4位是小数部分,要乘以0.0625(12位输出时)的,而整数部分不需处理,更不用除于2,造孽的资料啊,还好现在有仿真,要是20年前,那是会折腾死人的
TP358.JPG

TP359.JPG
发表于 2013-7-7 22:45 | 显示全部楼层
今天有空,重新整理了一下楼主的程序,改动如下:
1:将我看不惯的10进制统统转换成16进制,免得看错(我习惯在程序中的数据全部用16进制表示),也把字母格式都转换成大写;
2:改了标号为DISPTEM的温度显示子程序并注释,为了温度值在100℃及以上能够显示,取消了原温度符合显示;
3:改了标号为TEMP的温度转换程序并注释(原程序有问题,温度高低字节搞错了);
4:完善小数点后1位温度显示,应该满足使用要求;
5:增加负温度显示。

其中,小数点后一位显示在正温度下基本上和设定的一样(有兴趣的一个个去试),负温度下有的显示值会偏小;一时之间想不出简单的求补码程序,只好用最土的办法,大家看看有没其他的方法,有什么不明白的贴代码出来互相交流一下,附上程序如下。


18B20 164.rar

82.92 KB, 阅读权限: 10, 下载次数: 10, 下载积分: 一乐金币 -1

评分

参与人数 1一乐金币 +20 收起 理由
山水2000 + 20 很给力!

查看全部评分

发表于 2013-7-7 22:55 | 显示全部楼层
从未试过代码模式,拿温度显示子程序来试一下(包含无效0消隐处理);整个改动后的程序增加了两个位标志位,因为之前不清楚空间分配,选择50、51两个比特位来用。
  1. ;====================================================
  2. ;温度显示子程序
  3. DISPTEM: LCALL TMP
  4.          MOV A,TEMPER_H      ;温度值整数数据到ACC
  5.          MOV B,#64H                         ;正温度取出百位值
  6.          DIV AB
  7.          MOV SJQW,A          ;送第4位显示数据
  8.                  JNZ DISPTEM1                 ;第4位非0跳转
  9.                  SETB XYBZ                         ;置零消隐标志
  10.                  MOV SJQW,#1BH                 ;第4位送消隐
  11. DISPTEM1:MOV A,B
  12.          MOV B,#0AH                         ;取出十位值
  13.          DIV AB
  14.          MOV SJBW,A          ;送第3位显示数据
  15.                  JNZ DISPTEM2                 ;第3位非0跳转
  16.                  JNB HWD,DISPTEM3         ;温度不为负值则跳转
  17.          MOV SJBW,#1AH                 ;第3位置负号
  18.                  SJMP DISPTEM4
  19. DISPTEM3:MOV SJBW,#1BH                 ;第3位送消隐
  20.                  SJMP DISPTEM4
  21. DISPTEM2:JNB HWD,DISPTEM4         ;温度不为负值则跳转
  22.          MOV SJQW,#1AH                 ;第4位置负号
  23. DISPTEM4:MOV A,B                         ;第2位送到A进行小数点合并
  24.              ORL A,#10H
  25.          MOV SJSW,A          ;送第2位显示
  26.          MOV SJGW,TEMPER_L   ;小数点后一位送第1位显示
  27.                  CLR HWD                         ;清负温度标志
  28.                  CLR XYBZ                          ;清零消隐标志
  29.          RET


  30. ;*********************************************************
复制代码
 楼主| 发表于 2013-7-8 09:32 | 显示全部楼层
灰灰的丝丁鱼 发表于 2013-7-7 22:45
今天有空,重新整理了一下楼主的程序,改动如下:
1:将我看不惯的10进制统统转换成16进制,免得看错(我 ...

非常感谢“灰灰的丝丁鱼”,修改得很好,我仿真过了看了结果,我个人感觉还是加个“C”上去好看点,能知道是温度的数值,100度以上没多大用处,因为一般都是用来显示室温的。

带小数点.jpg
发表于 2013-7-8 09:41 | 显示全部楼层
谬跨了,我也是在学习中;
这个用来测室温,那么是否会到零下?要是不超过零下10℃,负号还是可以显示的,改这个简单,只要改显示部分的

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-5-13 18:39 , Processed in 0.058756 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表