编写一个温度传感器的C语言程序(能写多少算多少)\x0c传感器由电位器模拟 电位器连接于模数转换器通
答案:2 悬赏:40 手机版
解决时间 2021-02-04 12:08
- 提问者网友:黑米和小志
- 2021-02-03 16:45
编写一个温度传感器的C语言程序(能写多少算多少)\x0c传感器由电位器模拟 电位器连接于模数转换器通
最佳答案
- 五星知识达人网友:底特律间谍
- 2021-02-03 18:21
/ unsigned char ReadOneChar(void){uchar i=0; //定义i用于循环uchar dat = 0; //读取的8位数据for (i=8;i>0;i--) //8次循环{DQ = 0; //拉低DQ总线开始读时序dat>>=1; //dat左移一位DQ = 1; //释放DQ总线 if(DQ) //如果DQ=1,执dat|=0x80;(0x80即第7位为1,如果DQ为1,即读取的数据为1,将dat的第7为置1,然后dat>>=1,循环8次结束,dat即为读取的数据) //DQ=0,就跳过 dat|=0x80; delay_18B20(4); // 延时以完成此次读时 序,之后再读下一数据 }return(dat); //返回读取的dat}DQ = dat&0x01;这句语句是错误的.DQ为位变量,而dat为 unsigned char如果真要这么写的话,应该是这样 :DQ = (bit)dat&0x01;把我写的给你做个参考吧:extern uchar8 sig; //sig判定温度符号void delay (int us) //DELAY-11.0592MHZ 调用程序大约为24us,每次循环为16us{int s;for(s=0;s<us;s++);}void delayms(int z) //z为毫秒数{int x,y;for(x=z;x>0;x--)for(y=125;y>0;y--);}unsigned char reset(void){uchar8 presence;DQ=0; //拉低总线.当总线停留在低电平480us-960us ,总线上所以器件都将被复位delay(30); //保持低电平504usDQ=1; //释放总线,让其恢复高电平delay(3); //等待芯片应答信号presence=DQ; //获取应答信号delay(25); //延时以完成整个时序return(presence); //返回应答信号.有芯片应答返回0,否则返回1.}void write_bit(char bitval){DQ=0; //拉低DQ总线,开始时序if(bitval==1) //如果写入的为1,则返回高电平DQ=1;delay(5); //延时104us,以完成整个时序DQ=1; }void write_byte(char val){uchar8 i,temp;for (i=0;i<8;i++) //写入一个字节的数据,一个时序中写一次{temp=val>>i; //右移i位temp&=0x01; //复制那位数据到tempwrite_bit(temp); //调用write_bit()}delay(5); //延时104us以完成此次时序,之后再写下一数据}uchar8 read_bit(void){uchar8 i;DQ=0; //拉低DQ,开始读时序DQ=1; //释放DQ总线 for(i=0;i<3;i++); //从时序开始延时15usreturn(DQ); //返回DQ值}uchar8 read_byte(void){uchar8 i,value=0;for(i=0;i<8;i++){ if(read_bit()) //读一字节数据,一个时序中读一次,并作移位处理
全部回答
- 1楼网友:掌灯师
- 2021-02-03 19:43
我也是这个答案
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯