完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
大家好,在下想做一个温度监测系统,使用的是51单片机,DS18B20,以及串口发送。 问题描述: 在做之前先进简单的调试,结果碰见了很让我费解的问题,为了调试方便,我在下位机程序中设定了一个常温值2378(是23.78扩大100倍,准备在labview中再缩小),先用串口调试助手,发现串口调试助手可以接收到01 17 4e(01是一个标志,为了以后可以添加跟多的ds18b20),但是用labview却不能接收到,我用虚拟串口自动发送十六进制01 17 4e,结果labview却可以显示出23.78这个温度,请高手帮帮我,这是怎么回事! 下位机程序如下: #include #include void delay(unsigned int i); unsigned char MESSAGE[3]; unsigned char a; unsigned int value=2378; //这使我模拟的一个温度值23.78度,之后再在labview中缩小 void main (void) { SCON = 0x50; //REN=1允许串行接受状态,串口工作模式2 TMOD|= 0x20; //定时器工作方式2 PCON|= 0x80; //波特率提高一倍 TH1 = 0xF3; // Baud 4800、数据位8、停止位1、效验位无(12M) TL1 = 0xF3; TR1 = 1; //开启定时器1 ES = 1; //开串口中断 EA = 1; // 开总中断 while(1) { MESSAGE[0]=1; //赋值1是为了能够程序扩展,代表的是第一个DS18B20 MESSAGE[1]=value/100; MESSAGE[2]=value%100; a=0; while(a<3) { SBUF = MESSAGE[a]; //SUBF接受/发送缓冲器(又叫串行通信特殊功能寄存器) while(!ti); // 等特数据传送 (TI发送中断标志) TI = 0; // 清除数据传送标志 a++; // 下一个字符 } delay(3000); } } void delay(unsigned int i) { unsigned char j; for(i; i > 0; i--) for(j = 200; j > 0; j--); } labview VI如图: |
|
相关推荐
8个回答
|
|
kan kan xian
|
|
|
|
看看,学习了!
|
|
|
|
请求大神的帮助啊!
|
|
|
|
菜鸟,看不懂
|
|
|
|
我是最大的菜鸟,看不懂,学习中!
|
|
|
|
求指教。啊。。我也想做这个,下来看看。
|
|
|
|
好好学习一下,谢谢分享
|
|
|
|
求围观!求学习!
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1145 浏览 1 评论
用udl里的字符串信息在局域网内其他电脑连接sql数据库为什么为出现连接失败拒绝访问?
2024 浏览 2 评论
为什么同一个队列引用的全局变量,运行在两个子vi中发现队列数据丢失了
1646 浏览 0 评论
1839 浏览 0 评论
关于labview2024版本的lvanlys.dll出错的问题
4379 浏览 3 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-29 09:29 , Processed in 0.603816 second(s), Total 55, Slave 46 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号