确定单片机驱动电压弊竖是否正确
先检查最小系统的连线是否正确
用protues仿真你或卜衫的程序,看仿真能否成功
测试烧录软件是否运行正衫腔常五、测试单片机驱动引脚,
/*-----------------------------------------------名称:18B20温度传感器
函数名:18b20.h
编写:浪溢泽沉
日期:2009.5
修改:无
内容:18B20单线温度检测的应用样例程序
------------------------------------------------*/
#ifndef __DS18B20_H__
#define __DS18B20_H__
#include<reg52.h>//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义源段旅
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
/*------------------------------------------------
端口定义
------------------------------------------------*/
sbit DQ=P1^3//ds18b20 端口
/*------------------------------------------------
函数声明
------------------------------------------------*/
unsigned int ReadTemperature(void)
bit Init_DS18B20(void)
unsigned char ReadOneChar(void)
void WriteOneChar(unsigned char dat)
#endif
/*-----------------------------------------------
名称:18B20温度传感器
编写:浪溢泽沉
日期:2009.5
修改:无
内容:18B20单线温度检测的应用样例程燃陵序
------------------------------------------------*/
#include"delay.h"
#include"18b20.h"
/*------------------------------------------------
18b20初始化
------------------------------------------------*/
bit Init_DS18B20(void)
{
bit dat=0
DQ = 1 //DQ复位
DelayUs2x(5) //稍做延时
DQ = 0//单片雹凳机将DQ拉低
DelayUs2x(200)//精确延时 大于 480us 小于960us
DelayUs2x(200)
DQ = 1 //拉高总线
DelayUs2x(50)//15~60us 后 接收60-240us的存在脉冲
dat=DQ //如果x=0则初始化成功, x=1则初始化失败
DelayUs2x(25)//稍作延时返回
return dat
}
/*------------------------------------------------
读取一个字节
------------------------------------------------*/
unsigned char ReadOneChar(void)
{
unsigned char i=0
unsigned char dat = 0
for (i=8i>0i--)
{
DQ = 0// 给脉冲信号
dat>>=1
DQ = 1// 给脉冲信号
if(DQ)
dat|=0x80
DelayUs2x(25)
}
return(dat)
}
/*------------------------------------------------
写入一个字节
------------------------------------------------*/
void WriteOneChar(unsigned char dat)
{
unsigned char i=0
for (i=8i>0i--)
{
DQ = 0
DQ = dat&0x01
DelayUs2x(25)
DQ = 1
dat>>=1
}
DelayUs2x(25)
}
/*------------------------------------------------
读取温度
------------------------------------------------*/
unsigned int ReadTemperature(void)
{
unsigned char a=0
unsigned int b=0
unsigned int t=0
Init_DS18B20()
WriteOneChar(0xCC)// 跳过读序号列号的 *** 作
WriteOneChar(0x44)// 启动温度转换
DelayMs(10)
Init_DS18B20()
WriteOneChar(0xCC)//跳过读序号列号的 *** 作
WriteOneChar(0xBE)//读取温度寄存器等(共可读9个寄存器) 前两个就是温度
a=ReadOneChar() //低位
b=ReadOneChar() //高位
b<<=8
t=a+b
return(t)
}
上面是检测温度的程序,第一个是.h的文件,第二个是.c文件,自己调用就行了。
如果你还不会的话,问我吧……
希望能帮到你,以后互相交流!!!
你的问题太过于庞统,回答起来有芦尺一点难度,如果你是想看I/O接口的结果,可以点“外围陪州高设备”菜单下的几个规定设备如I/0接口,ininterrup等等。可以点击调用椎栈图标即眼镜图标的“监视#1或者#2,点击“<按F2按键可编辑>"再输入你所观察的部件的名称如TL1,P1 P2 P3 这迹橘样你可以看到运行的情情况,此法适合于单步运行,否则很难看清其结果,欢迎分享,转载请注明来源:内存溢出
评论列表(0条)