可以分享一下全套源码吗? |
可以并行一次性读取8个DS18B20里的数据放入8个单元的数组里,然后对这些数据进行处理就可以了。这个方法程序简单,不需要多余的电路,也不用读ID,就是要占用8个IO口。 |
Lxy18 发表于 2024-1-26 11:25 如果仅仅是交作品混学分,就没有讨论的意义了,就算是交作品混学分,用匹配ROM或者8个I/O口读出8个18B20的温度,你的老师为你负责的话,得到的学分更高才对,最关键可以提高自己的编程水平。 |
kmsj 发表于 2024-1-25 17:47 前面已经说明,最开始匹配rom的程序没做出来,所以才选择这个方案,虽然增加了io口,增加了一个芯片,但是可以实现功能,而且相对于匹配rom替换DS18B20不需要重新读取rom,不需要修改程序。各有优缺点。工程角度肯定考虑成本,但是这仅仅是学习交流使用,交作品用的。 |
请教一下关于lcd1602的代码怎样编写 |
单片机的应用思路,就是要用好单片机的内部资源包括程序让外围电路越简单越好,楼主增加74HC4051让单片机编程变的简单的思路完全背离了单片机应用的基本思路,肯定是不可取的。虽然74HC4051只是几毛钱,但是,增加了74HC4051电路就复杂了,增加74HC4051读写8个18B20,依然用掉单片机的4个I/O口,相当于用4个I/O口换取8个18B20的读写,还增加了一片74HC4051,一点也不划算。单片机读取8个18B20温度的正确编程思路只有两个,一个是用8个I/O口连接8个18B20,编程思路是同时对8个18B20做初始化和跳过ROM指令的操作,然后把8个18B20的温度读出来,另一个是8个18B20的8个单总线接单片机的一个I/O口,用匹配ROM的方法把每一个18B20的温度读出来,无论是8个I/O口接8个18B20还是8个18B20的8个单总线接单片机的一个I/O口,都可以用细化到步的编程方法,提高单片机的CPU应用率,顶多是读取温度的时间慢一点而已(最多慢零点零几秒到零点几秒),温度是一个渐变的过程,读取温度的时间慢一点对绝大多数的温度控制毫无影响。个人意见,仅供参考。 |
太感谢了,DIY小玩意就做关于这个的方向,只不过是需要将读取的八路温度数据传输到labview上位机进行检测,作者是否对labview上位机有研究? |
lkc8210 发表于 2022-1-20 14:29
|
lkc8210 发表于 2022-1-20 14:29 哦,就是把所有的P0^n=i;换成digitalWrite(n,i)。P0^n换成digitalRead(n),是吗? 我这样做了,可是出错了呀,数据读不出来 |
lkc8210 发表于 2022-1-20 14:29 这两个函数什么意思啊 ![]() ![]() |
lkc8210 发表于 2022-1-20 14:29 原来如此,学到了学到了。 |
Lxy18 发表于 2022-1-20 11:45 对~ 但IO口的读写不能直接P00 = 1 或 if(P00) 要参考arduino的写法
|
vscos 发表于 2021-12-13 07:38 按你所说,用8个IO口接8个18B20,温度读取函数设置通道选择参数(IO口不能作为参数输入),那在函数中如何根据输入的通道切换操作的IO口? |
vscos 发表于 2021-12-13 07:38 程序原创的!!io作为函数参数,就不可能实现,我也想过这样。现在单总线ROM方式已经搞出来了。 |
不是程序多,是那个程序要改成多端口的,你是从网上抄来的吧!网上那个只能用一个端口,你要是只改函数名,就想用肯定多了,你要将程序的函数都改成有参数的,调用时通过参数确定用那个端口,这样可以减少代码量 |
Lxy18 发表于 2021-10-31 23:33 这都有人买呀 |
可以直接把八路都接到一根引脚的,然后用ID的方式去读不同芯片的温度 |
发现被人拿到咸鱼卖了,30元一个 |
采用74HC4051思路方法不错。学习学习! |