使用汇编;
甲机:通过51单片机获取DS18B20的温度,并显示在1602液晶屏,再(可使用中断)把DS18B20的温度通过rs485传送到乙机
乙机:通过51单片机获取DS18B20的温度,并显示在1602液晶屏,通过485接受甲机的温度(使用中断)并显示在1602液晶屏
测温模块已经完成,数据传输:
甲机测温后把十位,个位,小数位的bcd码存放在3个存储单元,我把这三位数据直接发给乙机,乙机通过1602显示(已加小数点),问题是传到乙机后1602的温度显示是错误的,显示1x.00,x是一直变换的数字。这里甲机我使用按键扫描方法进入485发送数据,乙机我删除了测温模块专门显示甲机的数据,乙机一直开着中断接受数据。
有人可以帮忙吗?
该回答引用ChatGPT-3.5,仅供参考,不保证完全正确
当涉及特定的嵌入式系统编程问题时,提供具体的代码和硬件连接细节会更有帮助。在这里,我可以给你一些一般性的指导和建议来解决你的问题。
首先,确保甲机和乙机的RS485通信设置正确,并且连接正常。确保它们的波特率、数据位、停止位和校验位设置相同,并且连接线路正确。
对于甲机:
确保你已经正确地读取了DS18B20温度传感器的数据,并将其转换为BCD码。
在你的按键扫描方法中,当按键被触发时,执行以下操作:
a. 将BCD码发送到乙机。
b. 等待一段时间,以确保数据已成功发送。这是特别重要的,因为RS485是半双工通信,需要一定的时间来切换发送和接收模式。
对于乙机:
确保你的RS485接收中断已正确配置,并且在接收到数据时触发中断。
在接收到数据的中断处理程序中,执行以下操作:
a. 读取接收到的数据。
b. 将接收到的BCD码转换为温度值,并在1602液晶屏上显示。
确保你在转换BCD码为温度值时进行正确的计算和显示。可能需要使用BCD到二进制的转换算法,并考虑小数点的位置。
如果你能提供更具体的代码和硬件连接信息,我可以给予更详细的帮助。