网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月22日漏签0天
单片机吧 关注:212,087贴子:1,047,667
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 1回复贴,共1页
<<返回单片机吧
>0< 加载中...

出现问题求大神帮忙

  • 只看楼主
  • 收藏

  • 回复
  • 善的科学之子
  • 少校
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这是一个18B20的读取程序,并把数据发送出去,但是接收到的只有53.5求帮助
//DS18B20读写程序(基于STC单片机)
#include <reg51.H>
#include<intrins.h>
sbit DQ=P3^2;//定义单片机接ds18b20的数据端
void DelayNS(unsigned int dly)
{ unsigned int i;
for(; dly>0; dly--)
for(i=0; i<5000; i++)
_nop_();
}
//延时1us
void Delay1us(unsigned char us)
{
while(us)
{
_nop_();
--us;
}
}
//延时15us
void Delay15us(void)
{
Delay1us(15);
}
//延时10us
void Delay10us(void)
{
Delay1us(10);
}
//初始化串口:串口工作方式1,允许接受REN=1,波特率=1200
void initialize_UART()
{
P1=0xFF;
TMOD=0x20;
//下面已修改为适合12MHz晶振,11.0592改成E8
TH1=0xe6;
TL1=0xe6;
SCON=0x50;
TR1=1;
}
//串口发,查询发送
void s_send(unsigned char ch)
{
SBUF=ch;
TI=0;
while(!TI);
TI=0;
}
//ds18b20复位,返回0,设备正常,返回1,没有设备或设备不正常
bit resetpulse(void)
{
unsigned char i;
bit RstFlag;
RstFlag=1;
DQ=0;
for(i=0;i<40;i++)//480us延时
{
Delay15us();
}
DQ=1;
for(i=0;i<4;i++)//15~60us延时
{
Delay15us();
}
for(i=0;i<16;i++)//60~240us延时
{
Delay15us();
if(DQ==0)
RstFlag=0;
}
for(i=0;i<16;i++)
{
Delay15us();
}
return(RstFlag);
}
/*--------------------------------------------------
18b20的读写命令都是低位在先
所以发送或读取数值,首先发送或读取的是数据的最低位
----------------------------------------------------*/
//ds18b20写命令
void writecommandtods18b20(unsigned char command)
{
unsigned char i;
DQ=1;
Delay1us(1);
for(i=0;i<8;i++)
{
DQ=0;
Delay15us();
DQ=command&0x1;//低位在先
Delay15us();
Delay15us();
Delay15us();
DQ=1;
command=command>>1;
Delay1us(1);
}
}
//ds18b20读命令
unsigned char readdatafromds18b20(void)
{
unsigned char i;
unsigned char temp;
temp=0;
DQ=1;
Delay1us(1);
for(i=0;i<8;i++)
{
DQ=0;
Delay10us();
DQ=1;
Delay1us(2);
temp=temp>>1;
if(DQ==1)
{
temp=temp+0x80;//先读到最高位,再依次右移
}
Delay15us();
Delay15us();
Delay15us();
}
return(temp);
}
/*---------------------------------------------------------
无论是读还是写操作,开始前一定要复位一下ds18b20.
-----------------------------------------------------------*/
//跳过读序号列号的操作
void SkipRomCode(void)
{
resetpulse(); //复位
writecommandtods18b20(0xCC);// 跳过读序号列号的操作
}
//启动转换
void StartADC(void)
{
resetpulse(); //复位
writecommandtods18b20(0xCC);//广播
writecommandtods18b20(0x44);//启动温度转换,12位,需时700ms
}
//获得温度值
unsigned int GetTempValue(void)
{
unsigned i,j;
unsigned int T;
SkipRomCode();
writecommandtods18b20(0xBE);//读取温度值的命令
i=readdatafromds18b20(); //温度低八位
j=readdatafromds18b20(); //温度高八位
StartADC();
T=i+j*256;
if(T==0xFFFF) return 0xFFFF;
if(T>0x8000) //温度为负
{
T=~T+1;
return(0x8000+T*5/8);
}
else //温度位正
{
return(T*5/8);
}
}
//------------------------------------------------------------------------
// 函数名 : main()
// 功 能 :
//------------------------------------------------------------------------
void main(void)
{
unsigned int w;
initialize_UART();
SkipRomCode(); //主机发布跳过读序号列号的操作
writecommandtods18b20(0x44);//启动温度转换
while(1)
{
DelayNS(38); //延时700ms
w=GetTempValue();
s_send((w%1000)/100+48);// 十位
DelayNS(1);
s_send((w%100)/10+48);//个位
DelayNS(1);
s_send(46);//小数点
DelayNS(1);
s_send(w%10+48);//小数位
DelayNS(1);
s_send(10);//换行
}
}
//说明:读写18b20,并送串口终端显示!
------围观模式启动中... -------> 视觉系统开启...
-------> 搜寻网络...
-------> 正在加载1000Tb/s带宽...
(10%...20%...30%...40%...50%...60%...70%...80%...90%...100% 1.24s)
状态:已连接上
速度:1000GMbps
-------> 正在加载原始萨钢护目镜
(10%...20%...30%...40%...50%...60%...70%...80%...90%...100% 3.23s)
加载完毕...
-------> 正在加载加固版钛合金F5
(10%...20%...30%...40%...50%...60%...70%...80%...90%...100% 6.52s)
加载完毕...
-------> 正在加载铬合金钻石轴承滚轮
(10%...20%...30%...40%...50%...60%...70%...80%...90%...100% 4.69s)
加载完毕...
-------> 围观模式启动完毕,进入强势围观LZ状态


  • 善的科学之子
  • 少校
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
还有就是如何让返回更多位数(小数点后)
    ------今天我们要挑战的是:一边嚼Stride炫迈口香糖,一边写作业,写到没味道就停吧。哇,写了这么多,还有味道啊?我去年买了个表,早就没味道了!作业太多根本停不下来!
拦都拦不住(zù)啊!!!


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1回复贴,共1页
<<返回单片机吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示