新手入门
- 积分
- 13
- 金钱
- 13
- 注册时间
- 2016-4-11
- 在线时间
- 141 小时
|
1金钱
我使用的是您的教学程序。我的18B20 DQ引脚是PE1所以我在定义中修改如下:
#define DS18B20_IO_IN() {GPIOE->CRL&=0XFFFFFF0F;GPIOE->CRL|=8<<4;}
#define DS18B20_IO_OUT() {GPIOE->CRL&=0XFFFFFF0F;GPIOE->CRL|=3<<4;}
#define DS18B20_DQ_OUT PEout(1)
#define DS18B20_DQ_IN PEin(1)
在 DS18B20_Init中也做了相应修改
在主函数中,我没有使用中断,是直接发送
我的是STM322F103连接SP3485转接232到串口调试助手
主程序如下:
#include "led.h"
#include "delay.h"
#include "lcd.h" //RS485
#include "sys.h"
#include "ds18b20.h"
int main(void)
{
delay_init() ;
LED_Init();
RS485_Init();
while(DS18B20_Init())
while(1)
{
short temperature;
temperature=DS18B20_Get_Temp();
RS485=1; //485发送使能
delay_ms(2);
USART_SendData(USART2,temperature);
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);
delay_ms(2);
}
delay_ms(10);
}
但是我接收到的数据是00
没有温度显示是为什么呢?
谢谢您了,我昨天开始就做了 就是不行。谢谢
|
最佳答案
查看完整内容[请看2#楼]
temperature是数字,不是ASCII,你直接这么发送,是不行的。转换成ASCII发送,你可以试试printf,找找感觉吧。
|