”4 ds18s20上使用的液晶显示器在Picbasic pic16f84a亲

J

jojokatada

Guest
您好

是否有可能使用4 DS1820的1 pic16f84a将显示在LCD的4条线路4种不同的温度是多少?

到目前为止
, 它与1 DS1820的工作
, 因为我使用的是4x20液晶显示器。

示例代码

定义LCD_DREG门'液晶数据端口
定义LCD_DBIT 0'液晶数据开始位0或4
定义LCD_RSREG门'LCD寄存器选择端口
定义LCD_RSBIT 4'LCD寄存器选择位
PORTB的定义LCD_EREG'液晶启用端口
定义LCD_EBIT 3'液晶使能位
定义LCD_BITS 4'液晶巴士大小4或8
定义LCD_LINES 4'号的LCD生产线
定义LCD_COMMANDUS 2000'命令在我们延迟时间
定义LCD_DATAUS 50'在我们的数据延迟时间

符号DQ1 = PORTB.4'宿舍连接到RB4
符号DQ2 = PORTB.0
符号DQ3 = PORTB.1
符号DQ4 = PORTB.2

温度无功字
count_remain无功字节
count_per_c无功字节

temperature1 VAR的词
count_remain1无功字节
count_per_c1无功字节

temperature2 VAR的词
count_remain2无功字节
count_per_c2无功字节

temperature3 VAR的词
count_remain3无功字节
count_per_c3无功字节暂停100主:'温度1
owout DQ1,1,[$消委会,$ 44]
OWin DQ1,4,[count_remain]
如果count_remain = 0,那么
owout DQ1,1,[$消委会,$是]
owin DQ1,0,[temperature.LOwBYTE,temperature.Highbyte,跳过4 count_remain,count_per_c]
endif

温度=(((温度“”1)* 100) - 25) (((count_per_c - count_remain)* 100)/ count_per_c)
lcdout $铁,1
LCDOUT“环境Temp1”,12月(温度/ 100),“。”dec2温度,在“C”
暂停1000

'温度2
owout DQ2,1,[$消委会,$ 44]
OWin DQ2,4,[count_remain1]
如果count_remain1 = 0,那么
owout DQ2,1,[$消委会,$是]
owin DQ2,0,[temperature1.LOwBYTE,temperature1.Highbyte,跳过4 count_remain1,count_per_c1]
endif

temperature1 =(((temperature1“”1)* 100) - 25) (((count_per_c1 - count_remain1)* 100)/ count_per_c)
lcdout $铁,$ C0
LCDOUT“环境Temp2”,12月(temperature1 / 100),“。”dec2 temperature1,在“C”
暂停1000

'温度3
owout DQ3,1,[$消委会,$ 44]
OWin DQ3,4,[count_remain2]
如果count_remain2 = 0,那么
owout DQ3,1,[$消委会,$是]
owin DQ3,0,[temperature2.LOwBYTE,temperature2.Highbyte,跳过4 count_remain2,count_per_c2]
endif

temperature2 =(((temperature2“”1)* 100) - 25) (((count_per_c2 - count_remain2)* 100)/ count_per_c2)
lcdout $铁,$ 94
LCDOUT“环境Temp2”,12月(temperature2 / 100),“。”dec2 temperature2,在“C”
暂停1000

'温度4
owout DQ4,1,[$消委会,$ 44]
OWin DQ4,4,[count_remain2]
如果count_remain2 = 0,那么
owout DQ4,1,[$消委会,$是]
owin DQ4,0,[temperature2.LOwBYTE,temperature2.Highbyte,跳过4 count_remain2,count_per_c2]
endif

temperature2 =(((temperature2“”1)* 100) - 25) (((count_per_c2 - count_remain2)* 100)/ count_per_c2)
lcdout $铁,$ D4类
LCDOUT“环境Temp4”,12月(temperature2 / 100),“。”dec2 temperature2,在“C”
暂停1000

转到主
末端

到目前为止
, 编译失败
错误信息

[218]地址限制3ffth超过

如果任何人有什么可能是错的或任何提示的任何想法,这将不胜感激[/列表]

 
您好
, 我的似乎上有我的职务很多观众没有任何人尝试编译我的来源?结果是什么
, 请职位
, 使我们能够分享

欣赏

 
你的程序是太大知情同意16F84A(只有1024字的程序存储器)。编译器说
, 这。也许你不得不改变知情同意到另一更多的内存(16F628A或更大的模式,良好的选择16F819,16F88和18F1320)。
另一种选择是设法优化代码,或简化它,以减少内存使用。

 
是的
, 我做我尝试它的pic16f876a编译正确的
, 但我不能展示技术义4 differents在4液晶i行的温度了一些奇怪的字符,转储内存排序猜测。或也许18s20不能连接所有相同主
, 我需要再次检查表格言。

欣赏的意见。

 
---------------
主:'温度1
owout DQ1,1,[$消委会,$ 44]
暂停1000; -需要这一点-
OWin DQ1,4,[count_remain]

---------------
你必须将“暂停1000”后的“转换约800毫秒T”的命令(44美元); ds18s20需要进行转换,之后
, 您可以阅读。
...,你必须检查是否有4.7宿舍亩电阻到Vdd。
...如果你有20个传感器,你写的这20例程?你只能做一个
, 并要求以“DQx”参数
, 它

 
我看到你在100ms的暂停在开始时
该计划。我假定这是让液晶显示器
定居后
, 供电了。这_should_足够长
大多数液晶显示器的,但我已经有一些其他标准
44780的显示器需要500毫秒或更多的解决-
否则
, 我就得麻烦与他们沟通。

这可能是也可能不是您的问题(我没有
任何使用多个1 - Wire器件的经验),
但它必须足够快
, 你的代码重新编译
并给它一试。不能伤害。

尼克

 
此代码应工作
, 它的1 / 2大小(569字的16f84)
---------------
符号DQ1 = PORTB.4'宿舍连接到RB4
符号DQ2 = PORTB.0
符号DQ3 = PORTB.1
符号DQ4 = PORTB.2
宿舍无功字节
药品不良反应无功字节
指数功字节
温度无功字
count_remain无功字节
count_per_c无功字节

暂停1000

主:
宿舍= dq1:地址= $ 1:指数= 1
gosub温度
宿舍= dq2:美国存托凭证= $ c0:指数= 2
gosub温度
宿舍= dq3:美国存托凭证= $ 94:指数= 3
gosub温度
宿舍= dq4:美国存托凭证= $ D4类:指数= 4
gosub温度

转到主

气温:
owout宿舍,1,[$消委会,$ 44]
暂停1000
owin宿舍,4,[count_remain]
如果count_remain = 0,那么
owout宿舍,1,[$消委会,$是]
owin宿舍,0,[temperature.LOwBYTE,temperature.Highbyte,跳过4 count_remain,count_per_c]
endif

温度=(((温度“”1)* 100)-25 ) ((( count_per_c - count_remain)* 100)/ count_per_c)
lcdout $铁,不良反应
lcdout“环境温度”,12月指数,12月(温度/ 100),“。”dec2温度,在“C”
返回

末端
------------------------

 

Welcome to EDABoard.com

Sponsor

Back
Top