用430单片机和18b20温度传感器制作电子灸 怎样把传感器的数据传给430,读写程序怎么编写呢(C语言)?谢谢

用430单片机和18b20温度传感器制作电子灸 怎样把传感器的数据传给430,读写程序怎么编写呢(C语言)?谢谢,第1张

//初始化18B20

void init18b20(void)

{

uint i

DS=0

i=103

while(i>0)i--

DS=1

i=4

while(i>0)i--

}

bit tmpreadbit(void) //读一个字节

{

uint i

bit dat

DS=0

i++ //延时

DS=1

i++i++

dat=DS

i=8while(i>0)i--

return (dat)

}

uchar tmpread(void) //读一位

{

uchar i,j,dat

dat=0

for(i=1i<=8i++)

{

j=tmpreadbit()

dat=(j<<7)|(dat>>1)

}//读出的数据最低位在最前面,这样刚好一个字节在DAT里

return(dat)

}

void tmpwritebyte(uchar dat) //写一个字节到 ds18b20

{

uint i

uchar j

bit testb

for(j=1j<=8j++)

{

testb=dat&0x01

dat=dat>>1

if(testb) //write 1

{

DS=0

i++i++

DS=1

i=8while(i>0)i--

}

else

{

DS=0 //write 0

i=8

while(i>0)i--

DS=1

i++i++

}

}

}

void tmpchange(void) //DS18B20 初始化

{

init18b20()

delay(1)

tmpwritebyte(0xcc) // 跳过读ROM *** 作

tmpwritebyte(0x44) // 启动温度转换

}

int tmp() //DS18B20温度读取

{

float tt

uint a,b

TR1=0

init18b20()

delay(1)

tmpwritebyte(0xcc)

tmpwritebyte(0xbe)

a=tmpread()

b=tmpread()

if(flag==1)

TR1=1

else

TR1=0

temp=b

temp<<=8//将高字节温度数据与低字节温度数据整合

temp=temp|a

c=b>>4

if(c==0)

tt=temp*0.0625

else

tt=(~temp+1)*0.0625

temp=tt*10+0.5//放大10倍输出并四舍五入

return temp

}

延时函数需要根据实际你调整,temp就是温度值。

#include  <stdio.h>

exec sql include sqlca

int main(){

    exec sql begin declare section

        char userpasswd[30]="openlab/123456"

        struct{

            int  id

            char name[30]

            double salary

        }emp

    exec sql end   declare section

    exec sql connect:userpasswd

    exec sql declare empcursor cursor for 

        select id,first_name,salary  from 

        s_emp order by salary

    exec sql  open  empcursor

    exec sql  whenever notfound do break

    for(){

    exec sql  fetch empcursor into :emp

    printf("%d:%s:%lf\n",emp.id,emp.name,

                     emp.salary)

    }

    exec sql  close empcursor

    exec sql commit work release    

}

把数据存到结构体里。

这个用假设法就好了,你先假设第一个元素是最大值,然后遍历数组,比最大值大,就重新赋值即可,示例代码如下:

#include<stdio.h>#define SIZE 8 int main(){int number[SIZE]={95,45,15,78,84,51,24,12} //假设法int max = number[0]for (int inx=0inx!=SIZE++inx){if (number[inx] >max) max = number[inx]else continue}printf("the max value is:%d\n", max)}


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

原文地址: http://outofmemory.cn/sjk/9882209.html

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

发表评论

登录后才能评论

评论列表(0条)

保存