用stc89c52单片机 c语言编的i2c总线 温度传感器ds1621的程序 非常急!!!!!!!

用stc89c52单片机 c语言编的i2c总线 温度传感器ds1621的程序 非常急!!!!!!!,第1张

#include<at89x51.h>

#define uchar unsigned char

#define uint unsigned int

sbit SCL=P3^1

sbit SDA=P3^2

void delay(uint i)

{

uchar j

while(i--)

for(j=0j<100j++)

}

void write_add(uchar r)//r=1 读否则写

{

uchar i

uchar add_rw

if(r)

add_rw=0x91 //读

else

add_rw=0x90 //写

SCL=1 //START

SDA=1

SDA=0

SCL=0

for(i=0i<8i++) //ADDRESS

{

if(add_rw&0x80)

SDA=1

else SDA=0

SCL=1

SCL=0

add_rw=add_rw<<1

}

SDA=1

SCL=1

while(SDA) //等待应答

SCL=0

}

void write_data(uchar d)

{

uchar i

SCL=0

for(i=0i<8i++) //DATA

{

if(d&0x80)

SDA=1

else SDA=0

SCL=1

SCL=0

d=d<<1

}

SDA=1

SCL=1

while(SDA) //等待应答

SCL=0

}

void stop(void)

{

SCL=1

SDA=1

}

uchar read_data(uchar over)

{

uchar i,d

SCL=0

for(i=0i<8i++) //DATA

{

d=d<<1

SCL=1

if(SDA)

d=d|0x01

SCL=0

}

if(over) SDA=1

else SDA=0

SCL=1 //应答

SCL=0

SDA=0

return d

}

void write_cmd(uchar d)

{

uchar i,w_add=0x90

SCL=1 //START

SDA=1

SDA=0

SCL=0

for(i=0i<8i++) //ADDRESS

{

if(w_add&0x80)

SDA=1

else SDA=0

SCL=1

SCL=0

w_add=w_add<<1

}

SDA=1

SCL=1

while(SDA) //等待应答

SCL=0

SDA=0

for(i=0i<8i++) //DATA

{

if(d&0x80)

SDA=1

else SDA=0

SCL=1

SCL=0

d=d<<1

}

SDA=1

SCL=1

while(SDA) //等待应答

SCL=0

SDA=0

SCL=1

SDA=1

}

uchar read_tmp(void)

{

uchar h,l

write_add(0)

write_data(0xee)//转换

stop()

delay(1000)

write_add(0)

write_data(0xaa)//读温度

stop()

write_add(1)

h=read_data(0)

l=read_data(1)

stop()

return(h)

}

void main(void)

{

while(1)

P0=read_tmp()

}

显示部分我用的串口,你改改就可以了

需要。

计算机程序(Computer Program),港、台译做电脑程式。计算机程序是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具。

它以某些程序设计语言编写,运行于某种目标结构体系上。打个比方,程序就如同以英语(程序设计语言)写作的文章,要让一个懂得英语的人(编译器)同时也会阅读这篇文章的人(结构体系)来阅读、理解、标记这篇文章。一般的,以英语文本为基础的计算机程序要经过编译、链接而成为人难以解读,但可轻易被计算机所解读的数字格式,然后放入运行。

程序是一个指令序列

为了使计算机程序得以运行,计算机需要加载代码,同时也要加载数据。从计算机的底层来说,这是由高级语言(例如Java,C/C++,C#等)代码转译成机器语言而被CPU所理解,进行加载。

如果您在一个符合大多数的计算机上, *** 作系统例如Windows、Linux等,加载并执行很多的程序,在这种情况下,每一个程序是一个单独的映射,并不是计算机上的所有可执行程序。

它是指为了得到某种结果而可以由计算机等具有信息处理能力的装置执行的代码化指令序列,或者可以被自动转换成代码化指令序列的符号化指令序列或者符号化语句序列。同一计算机程序的源程序和目标程序为同一作品。

楼主首先需要将LCD的 SEG(段电极)和COM(公共电极)与HT1621的SEG与COM 对应相连。

在就是HT1621会有几个接口是与单片机的I/0口相连 像/CS(片选)/WR(写 *** 作) / RD(读 *** 作)/DATA(数据) 通过软件程序对I/O的控制 进而控制HT1621的读写 *** 作 。通过送数的不同达到想要的效果。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11467013.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存