1 / 14
文档名称:

PT100数字温度计.doc

格式:doc   大小:31KB   页数:14页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

PT100数字温度计.doc

上传人:xd3225 2022/1/22 文件大小:31 KB

下载得到文件列表

PT100数字温度计.doc

文档介绍

文档介绍:.
1 / 14
单片机课程设计
PT100数字温度计
学院:物理电气信息学院
__电气工程与自动化〔1班〕
__ 于高乐
PT100数字温度计
设计目的与任务= P3^4;
void dsInit<>
{
//, unsigned int型的i, 作一个i++操作的时间大于为8us
unsigned int i;
ds = 0;
i = 100; //拉低约800us, 符合协议要求的480us以上
while<i>0> i--;
ds = 1; //产生一个上升沿, 进入等待应答状态
i = 4;
while<i>0> i--;
}
void dsWait<>
{
unsigned int i;
.
6 / 14
while<ds>;
while<~ds>; //检测到应答脉冲
i = 4;
while<i > 0> i--;
}
bit readBit<>
{
unsigned int i;
bit b;
ds = 0;
i++; //延时约8us, 符合协议要求至少保持1us
ds = 1;
i++; i++; //延时约16us, 符合协议要求的至少延时15us以上
b = ds;
i = 8;
while<i>0> i--; //延时约64us, 符合读时隙不低于60us要求
return b;
}
//读取一字节数据, 通过调用readBit<>来实现
unsigned char readByte<>
{
unsigned int i;
.
7 / 14
unsigned char j, dat;
dat = 0;
for<i=0; i<8; i++>
{
j = readBit<>;
//最先读出的是最低位数据
dat = <j << 7> | <dat >> 1>;
}
return dat;
}
void writeByte<unsigned char dat>
{
unsigned int i;
unsigned char j;
bit b;
for<j = 0; j < 8; j++>
{
b = dat & 0x01;
dat >>= 1;//写"1", 将DQ拉低15us后, 在15us~60us内将DQ拉高, 即完成写1
if<b>
{
.
8 / 14
ds = 0;
i++; i++; //拉低约16us, 符号要求15~60us内
ds = 1;
i = 8; while<i>0> i--; //延时约64us, 符合写时隙不低于60us要求
}
else //写"0", 将DQ拉低60us~120us
{
ds = 0;
i = 8; while<i>0> i--; //拉低约64us, 符号要求
ds = 1;
i++; i++; //整个写0时隙过程已经超过60us, 这里就不用像写1那样, 再延时64us了
}
}
}
void sendChangeCmd<>
{
dsInit<>; //初始化DS18B20, 无论什么命令, 首先都要发起初始化
dsWait<>; //等待DS18B20应答
delayMs<1>; //延时1ms, 因为DS18B20会拉低DQ 60~240us作为应答信号
.
9 / 14
writeByte<0xcc>; //写入跳过序列号命令字 Skip Rom
writeByte<0x44>; //写入温度转换命令字 Convert T
}
void sendReadCmd<>
{