中易网

怎么用单片机来设计温度传感器?

答案:5  悬赏:50  
解决时间 2021-03-22 09:24
我现在能用的单片机是STC89C52,也比较熟知,是用来测量室内温度的
最佳答案
用18b20这个芯片测温度,i2c控制。
全部回答

一块温度传感器ds18b20和一块单片机就行了(欢迎提问)

#include<reg52.h> #define uchar unsigned char #define uint  unsigned int

#define jump_rom 0xcc #define start 0x44 #define read_eerom 0xbe

sbit dq = p2^3;    //ds18b20数据口

unsigned char tmph,tmpl;

sbit e=p2^7;  //1602使能引脚 sbit rw=p2^6;  //1602读写引脚  sbit rs=p2^5;  //1602数据/命令选择引脚

void delay_1() {  int i,j;  for(i=0; i<=10; i++)  for(j=0; j<=2; j++) ; }

void enable(uchar del) {  p0 = del;  rs = 0;  rw = 0;  e = 0;  delay_1();  e = 1;  delay_1(); }

void write(uchar del) {  p0 = del;  rs = 1;  rw = 0;  e = 0;  delay_1();  e = 1;  delay_1(); }

void l1602_init(void) {  enable(0x01);  enable(0x38);  enable(0x0c);  enable(0x06);  enable(0xd0); }

void l1602_char(uchar hang,uchar lie,char sign) {  uchar a;  if(hang == 1) a = 0x80;  if(hang == 2) a = 0xc0;  a = a + lie - 1;  enable(a);  write(sign); }

void l1602_string(uchar hang,uchar lie,uchar *p) {  uchar a;  if(hang == 1) a = 0x80;  if(hang == 2) a = 0xc0;  a = a + lie - 1;  enable(a);  while(1)  {   if(*p == '\0') break;   write(*p);   p++;  } }

void delay(uint n) {  int i;  for(i=0; i<n; i++)  ; }

uchar reset(void) {  uchar deceive_ready;  dq = 0;  delay(29);  dq = 1;  delay(3);  deceive_ready = dq;  delay(25);  return(deceive_ready); }

uchar read_bit(void) {  uchar i;  dq = 0;  dq = 1;  for(i=0; i<3; i++);  return(dq); }

void write_bit(uchar bitval) { dq=0;if(bitval==1) dq=1; delay(5); dq=1; }

uchar read_byte(void) {  uchar i,m,receive_data;  m = 1;  receive_data = 0;  for(i=0; i<8; i++)  {   if(read_bit())   {    receive_data = receive_data + (m << i);   }   delay(6);  }  return(receive_data); }

void write_byte(uchar val) {  uchar i,temp;  for(i=0; i<8; i++)  {   temp = val >> i;   temp = temp & 0x01;   write_bit(temp);   delay(5);  } }

void main() {  float tt;  uint temp;  p2 = 0x00;  l1602_init();  l1602_string(1,1,"  ds18b20 test  ");  l1602_string(2,1,"temperature:00`c");  while(1)  {   reset();   write_byte(jump_rom);   write_byte(start);   reset();   write_byte(jump_rom);   write_byte(read_eerom);   tmpl = read_byte();   tmph = read_byte();   temp = tmph;   temp <<= 8;       temp = temp | tmpl;   tt = tmpl * 0.0625;   temp = tmpl / 16 + tmph * 16;   l1602_char(2,13,temp/10%10 + 48);   l1602_char(2,14,temp%10 + 48);   } }

18B20可以,电源,地,信号就可以了.直接读内部数据. 如果要求不高可以用NTC电阻.不过最好有AD的片子.仅用IO的片子要不相对麻烦多了.
资料比较多的是DS18B20 你也可以去电子市场问问,有其他的传感器的
DS18B20是最简单的测温元件,像三极管一样,直接接单片机,网上多得是程序。有材料的半小时就能写出基本像样的程序。 LM35测量温度也不错,不过这需要ADC才行。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
从下列成语中至少选用两个写一段话(不少于50
白短袖中长款下面穿肉色丝袜还是黑色丝袜
想知道:阜新市 从高德街道东山社区卫生服务站
2013年1月22的批次是3022的可瑞康金装2段奶粉
资源储量333级别如何利用?
HPB300公称直径32mm的钢筋拉伸多少才算合格
宝宝四个半月用红薯干磨牙可以吗
请帮忙分析生辰八字的解释,喜用神是啥
dnf如果我买8个梦想装扮合成器会过期吗。 买
帕萨特领驭和马六买哪个?
我是一名宁波大专实习生 对现在的工作很纠结
地下车库消防应急灯安装有什么规定?一定要安
小明和小兰想买同一本书,可小明带的钱差5.3元
灵山康爱多药店在那里
亲爱的笨笨猪 全文
推荐资讯
向乱扔垃圾说“不” 作文 看看能给多少分。
在断奶宝宝晚上哭得历害可以让她吸吸吗
汽车室内装饰品这门生意的前景怎么样??
描写梨花的作文怎么写?
高低温箱一般是多少钱?高低温箱可以代替高温
求助 下个月想去大连 不知道现在金石滩能不能
阜外心血管医院的医保编码是多少?
2013年新交通法饮酒驾驶如何处罚
想贷点款,朋友介绍宜信,但心里不没底呀,大
六年级下册英语task7中文
长征五号航天员是谁
汉南纱帽坛山还建房的产权是多少年
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?