急!!!! !!编写一个温度传感器的C语言程序(能写多少算多少)
-
传感器由电位器模拟电位器连接于模数转换器通道1(PAD0)。此模数转换器ATD0是10bits并在0-2.55V的电压之间变化。当外界温度0度时电压为0。温度102.3度时电压2.55v。Z后把摄氏温度输... 传感器由电位器模拟 电位器连接于模数转换器通道1(PAD0)。此模数转换器ATD0是10bits 并在0-2.55V的电压之间变化。当外界温度0度时电压为0。温度102.3度时电压2.55v。Z后把摄氏温度输出在LCD上每秒温度刷新一次 用(tempo_n(xx))) 要通过hc12芯片 展开
全部评论(2条)
-
- fsdg65gfdg 2011-04-06 00:00:00
- #include<reg51.h>unsigned char code segtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
0x6f,0x63,0x39};unsigned char disp_buf[]={0,0,0,0};unsigned char code ledbit[]{0xfe,0xfd,0xfb,0xf7}; -
赞(8)
回复(0)
-
- 后来Live77 2018-05-12 00:00:00
- **************/ 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); //保持低电平504us DQ=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; //复制那位数据到temp write_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++); //从时序开始延时15us return(DQ); //返回DQ值 } /*读一字节数据*/ uchar8 read_byte(void) { uchar8 i,value=0; for(i=0;i<8;i++) { if(read_bit()) //读一字节数据,一个时序中读一次,并作移位处理 value|=0x01<<i; delay(6); //延时以完成此次读时序,之后再读下一数据 } return(value); } /*温度转化*/ void tmconvert(void) { reset(); //复位 delay(1); write_byte(0xcc); //仅一个DS18b20 ,跳过ROM write_byte(0x44); //温度变换 } /*读取温度*/ long gettm(void) { uchar8 LSB=0,MSB=0; //用于存储读取的温度 long temp; reset(); //复位 write_byte(0xcc); //写指令,跳过ROM,仅一个DS18b20 write_byte(0xbe); //写指令,读暂存存储器 LSB = read_byte(); //读LSB MSB = read_byte(); //读MSB sig=(MSB>>4==0X0F); if(sig) //判断符号位是否为负值,是负值了,转去处理 { LSB=~LSB; //温度处理 MSB=~MSB; LSB=LSB+1; } temp=MSB*256+LSB; //十六进制转换为10进制 temp=temp*100/16; //12位精度,Z小分辨率为0.0625°C return temp; //获得0.01°C 的精度并返回 }
-
赞(18)
回复(0)
热门问答
- 急!!!! !!编写一个温度传感器的C语言程序(能写多少算多少)
- 传感器由电位器模拟电位器连接于模数转换器通道1(PAD0)。此模数转换器ATD0是10bits并在0-2.55V的电压之间变化。当外界温度0度时电压为0。温度102.3度时电压2.55v。Z后把摄氏温度输... 传感器由电位器模拟 电位器连接于模数转换器通道1(PAD0)。此模数转换器ATD0是10bits 并在0-2.55V的电压之间变化。当外界温度0度时电压为0。温度102.3度时电压2.55v。Z后把摄氏温度输出在LCD上每秒温度刷新一次 用(tempo_n(xx))) 要通过hc12芯片 展开
2011-04-05 05:09:08
300
2
- 急啊!!!!!!!题目是写一个温度传感器的C语言程序
- 传感器由电位器模拟电位器连接于模数转换器通道1(PAD0)。此模数转换器ATD0是10bits并在0-2.55V的电压之间变化。当外界温度0度时电压为0。温度102.3度时电压2.55v。Z后把摄氏温度输... 传感器由电位器模拟 电位器连接于模数转换器通道1(PAD0)。此模数转换器ATD0是10bits 并在0-2.55V的电压之间变化。当外界温度0度时电压为0。温度102.3度时电压2.55v。Z后把摄氏温度输出在LCD上每秒温度刷新一次 用(tempo_n(xx))) 问题补充: 要通过hc12芯片 展开
2011-04-06 15:57:57
347
2
- 怎么用c语言编写一个计时器!!!
- 需要用什么函数等等!
2007-10-10 09:03:11
401
5
- 求C语言编写的计时器源代码
- 急需一打字游戏的计时器源代码,C语言编写。
2013-09-04 01:38:24
228
2
- C语言如何编写modbus RTU协议?
- 我用c语言编写程序,通过USART收发数据,硬件电路为RS-485,我想实现modbus RTU协议的通信,如何配置和编写?越详细越好,多谢,若有资料提供,发到2041479809@qq.com邮箱,感激不尽!
2017-01-08 15:58:41
525
1
- 编写plc程序是按照C语言方式还是顺控方式写
2018-05-31 15:44:33
471
2
- c语言 程序设计 关于程序调试
- #include"stdio.h"#include"stdlib.h"#include"time.h"voidmain(){inti,j;statics0,s1;time_tt;srand((unsigned)time(&t));for(i=0;i<1000;i++){j=rand()%2;if(j==1)s0++;else;s1++;}... #include"stdio.h" #include"stdlib.h" #include"time.h" void main() { int i,j; static s0,s1; time_t t; srand((unsigned) time(&t)); for(i=0;i<1000;i++) { j=rand()%2; if(j==1) s0++; else; s1++; } printf("\n s0=%d s1=%d \n ",s0,s1); } 为什么这段程序 不管是在单步调试 还是断点调试 都看不到 s0 和s1 的值呢? 只能看到其他的 i j Loaded 'ntdll.dll', no matching symbolic information found. 这又是什么意思啊? 展开
2011-05-25 02:19:45
406
3
- c语言gsensor急加速算法
2018-11-13 07:05:55
345
0
- 跪求单片机at89c52频率计c语言程序
- 还有跪求那个方波的名字叫神马~~~
2015-04-23 09:42:30
302
1
- 步进电机转动90度、180度的c 语言程序
- 向高手求助,期待你们的回答。
2010-08-18 10:22:42
444
2
- 51单片机温度控制系统的C语言程序
- 设计基于单片计算机的温度控制器。用于控制电加热炉的温度。具体要求如下1.温度连续可调,范围为30℃~150℃2.超调量σ%≤20%3.温度误差≤±0.5℃4.人-机对话方便5.控制算法采用PID或改... 设计基于单片计算机的温度控制器。用于控制电加热炉的温度。具体要求如下 1. 温度连续可调,范围为30℃~150℃ 2. 超调量σ%≤20% 3. 温度误差≤±0.5℃ 4. 人-机对话方便 5. 控制算法采用PID或改进的PID或其他算法 .请发至3166109374@qq.com 谢谢帮忙 具体见http://wenku.baidu.com/view/e0feacf0f121dd36a22d822c 展开
2015-06-07 00:06:30
425
3
- 急急急急急急急急急!!C语言的一个不懂的问题
- if (((Year % 100 == 0) && (Year % 400 == 0))||((Year % 100 != 0) && (Year % 4 == 0))) { pMonth_Days[13] = {0 , 31 , 29 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31}; } else { pMonth_Days[13] = {0 , 31 , 29...
2014-04-02 06:10:11
285
3
- 求C语言编程软件的下载地址,急!!!
2017-05-17 14:30:02
302
2
- 单片机做频率计数码管的显示C语言程序
- #include
float time=0; float freq=0; unsigned char dsh=0; unsigned char dsz=0; unsigned char dsl=0; main() {EA=1; ET0=1; ET1=1; TMOD=0x061; TH0=-1000/256; TL0=-1000%256; TH1=0xfb; TL1=0xfb; TR0=1; TR1=1; while...
2010-06-19 23:43:52
473
2
- 请教一个单片机时钟计时器c语言程序和原理图 注:不要复制的
2011-10-21 07:23:51
298
1
- 急求 基于51单片机 yl69土壤湿度传感器 lcd1602显示湿度c语言程序
2016-11-10 05:49:23
395
2
- 谁能帮忙编写一个位移传感器程序啊 plc
2014-06-21 14:34:58
473
2
- 怎么把用c语言开发的程序变成软件
- 我们学C,学算法,学数据结构,可是这些学出来有什么用呢?一行行的程序,可是却变成不了软件啊? 比如,拿个Z简单的例子,写了个程序,比较两个数的大小,输入两个数,然后显示比较大的那个! 我想做个软件,是一个EXE文件,然后出现两个书写的地方,写两个数,然后一点确... 我们学C,学算法,学数据结构,可是这些学出来有什么用呢?一行行的程序,可是却变成不了软件啊? 比如,拿个Z简单的例子,写了个程序,比较两个数的大小,输入两个数,然后显示比较大的那个! 我想做个软件,是一个EXE文件,然后出现两个书写的地方,写两个数,然后一点确定,就会显示出比较大的那个数! 我这样说的应该很清楚了吧,希望听到正常的解释,不要复制的那种.网上的东西我都看过了,没有我想要的! 展开
2007-05-23 05:42:52
504
6
- 急!!!设计一个用等精度测频原理的频率计的verilog语言程序
- 考试的题目,大家会verilog语言的帮帮忙!!很急!! 设计一个用等精度测频原理的频率计。 1.频率测量测量范围1~99999; 2.用4位带小数点数码管显示其频率; 3.并且具有超量程、欠量程提示功能。
2010-06-28 00:13:25
362
1
- 人体温度多少算发烧
2014-04-29 22:28:23
465
2
参与评论
登录后参与评论