久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6330|回復: 2
打印 上一主題 下一主題
收起左側

基于熱敏電阻的溫度傳感器

[復制鏈接]
跳轉到指定樓層
樓主
大二時候做的熱敏電阻溫度傳感器有需要的了解一下;
多多指教
需要的原件清單:
元件名稱
型號
對應原理圖編號
數量
電容
10uF
C1
1
電容
30pF
C2, C3
2
電容
100nF
C4
1
3MM 發光二極管 紅
N-green
L1
1
DC電源座子
POWER
P1
1
排阻
102
R1
1
電阻
10k
R2
1
電阻
220
R3
1
熱敏電阻
100K(25C)
R4
1
可調電阻
10k
R5
1
電阻
30k
R6
1
電阻
1k
R7
1
微動開關
SW-PB
S1
1
電源開關
電源開關
S2
1
4位數碼管
共陰數碼管
SMG1
1
51單片機
STC89C51
U1
1
模數轉換芯片
ADC0809
U2
1
可控精密穩壓源
TL431
U3
1
晶振
12MHz
Y1
1
源程序:
//程序頭函數
#include <reg52.h>
#include<intrins.h>
//宏定義
#define uint unsigned int
#define uchar unsigned char
#define Data_ADC0809 P1  //定義P1為Data_ADC0809

//管腳聲明
//ADC0832
sbit SCL=P1^1;  
sbit DO=P1^2;  
sbit CS=P1^4;
//顯示數組              H,   L,   -
uchar Data_[]={
0x5F,/*0*/
0x44,/*1*/
0x9D,/*2*/
0xD5,/*3*/
0xC6,/*4*/
0xD3,/*5*/
0xDB,/*6*/
0x45,/*7*/
0xDF,/*8*/
0xD7,/*9*/
0xCE,/*H*/
0x1A,/*L*/
0x80,/*-*/
};
uchar code Data_T[]={//AD數值對應的溫度
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,/*0-11*///此范圍內為無效值,讀到的數據顯示為---7
0x89,0x88,0x87,0x86,0x85,0x84,0x83,0x82,0x81,/*12-20*/    //此范圍內為負溫度值-9~-1
0,1,2,3,4,5,6,6,7,8,    /*21-30*/        //以下為正溫度0-111
9,9,10,11,11,12,13,13,14,15,  /*31-40*/
15,16,17,17,18,18,19,19,20,21,/*41-50*/
21,22,22,23,23,24,24,25,25,26, /*51-60*/
26,27,27,28,28,29,29,30,30,30, /*61-70*/
31,31,32,32,33,33,33,34,34,35, /*71-80*/
35,36,36,36,37,37,38,38,39,39, /*81-90*/
39,40,40,41,41,42,42,42,43,43, /*91-100*/
44,44,44,45,45,46,46,47,47,47, /*101-110*/
48,48,49,49,49,50,50,51,51,51, /*111-120*/
52,52,53,53,54,54,54,55,55,56, /*121-130*/
56,57,57,57,58,58,59,59,60,60, /*131-140*/
60,61,61,62,62,63,63,64,64,65, /*141-150*/
65,65,66,66,67,67,68,68,69,69, /*151-160*/
70,70,71,71,72,72,73,73,74,74, /*161-170*/
75,75,76,76,77,78,78,79,79,80, /*171-180*/
80,81,82,82,83,83,84,85,85,86, /*181-190*/
87,87,88,89,89,90,91,91,92,93, /*191-200*/
94,94,95,96,97,98,99,99,100,101,/*201-210*/
102,103,104,105,106,107,108,109,110,111 /*211-220*/
};
sbit Wei1 = P2^4;
sbit Wei2 = P2^5;
sbit Wei3 = P2^6;
sbit Wei4 = P2^7;  //數碼管的位選
//函數聲明
void Display(uchar Data);
uint temp,temp1;  //溫度值變量
uchar p;   //讀取五十次ad值for循環
unsigned char ADC_Read(bit SGL,bit ODD)
{
unsigned char i=0,value=0,value1=0;  
  SCL=0;
  DO=1;
  CS=0;  
  SCL=1;  
  SCL=0;
  DO=SGL;
  SCL=1;  
  SCL=0;
  DO=ODD;
  SCL=1;   
  SCL=0;  
  DO=1;
  for(i=0;i<8;i++)
  {
   SCL=1;
   SCL=0;
   value<<=1;
   if(DO)
    value++;      
  }
  for(i=0;i<8;i++)
  {  
   value1>>=1;
   if(DO)
    value1+=0x80;
   SCL=1;
   SCL=0;
  }
  CS=1;
  SCL=1;
  if(value==value1)   
   return value;
return 0;
}
//延時
void delay(uint t)  //大約延時25us,不精確
{
uint i,j;
for(i=0;i<t;i++)
for(j=0;j<10;j++);
}
void main()  //主函數
{
uchar i;
uint pp;
P2=0;
temp1=0;
while(1) //進入循環
{
  for(i=0;i<50;i++) //讀取五十次ad值
  {
   temp=ADC_Read(1,0); //讀取ad值
   pp=pp+temp;  //每讀取一次就將ad值累加到pp里
   Display(temp1); //防止讀取數據時數碼管熄滅,這里每讀取一次AD值時就調用一次顯示函數
  }
  temp1=pp/50;  //讀取完五十次ad值后,將累加值除以50得到平均值
  pp=0;    //計算完平均值后將累加值變量清零
  temp1=Data_T[temp1];//將ad值查表得到實際溫度值
//
  for(p=0;p<50;p++) //調用五十次顯示函數
  Display(temp1);  //顯示函數
}
}
//顯示           Data表示數據
void Display(uchar Data)
{
Wei1=1;
Wei2=1;
Wei3=1;
Wei4=1;    //關閉位選端
P0=0xff;   //關閉顯示
if(Data>128)  //要顯示的數值大于128,也就是負溫度值,有符號的數值,最高位如果是1,那么就代表是負數
{
  Data=Data-128; //將數值減去128,也就是減去最高位的1,得到數值的絕對值
  P0=Data_[12]; //顯示負號“-”
  Wei1=0;   //打開第一位
  Wei2=1;   //關閉其他位
  Wei3=1;
  Wei4=1;
  delay(10);  //延時
  Wei1=1;
  Wei2=1;
  Wei3=1;
  Wei4=1;   //關閉所有位

  P0=Data_[Data/10]; //顯示溫度值的十位
  Wei1=1;
  Wei2=0;   //打開第二位
  Wei3=1;
  Wei4=1;
  delay(10);
  Wei1=1;
  Wei2=1;
  Wei3=1;
  Wei4=1;


  P0=Data_[Data%10]; //顯示溫度值的個位
  Wei1=1;   
  Wei2=1;
  Wei3=0;
  Wei4=1;
  delay(10);
  Wei1=1;
  Wei2=1;
  Wei3=1;
  Wei4=1;

  P0=~0xa7;  //顯示字母c
  Wei1=1;
  Wei2=1;
  Wei3=1;
  Wei4=0;
  delay(10);
  Wei1=1;
  Wei2=1;
  Wei3=1;
  Wei4=1;
}
else
if(Data<128)  //溫度的數值小于128,也就是正數
{
  if(Data/100==0)  //百位的數值是否為0
  P0=~0xff;  //為0就不顯示
  else   //不為0
  P0=Data_[Data/100]; //正常顯示數值
  Wei1=0;
  Wei2=1;
  Wei3=1;
  Wei4=1;
  delay(10);
  Wei1=1;
  Wei2=1;
  Wei3=1;
  Wei4=1;

  P0=Data_[Data/10%10]; //顯示溫度值的十位
  Wei1=1;
  Wei2=0;
  Wei3=1;
  Wei4=1;
  delay(10);
  Wei1=1;
  Wei2=1;
  Wei3=1;
  Wei4=1;


  P0=Data_[Data%10]; //顯示溫度值的個位
  Wei1=1;
  Wei2=1;
  Wei3=0;
  Wei4=1;
  delay(10);
  Wei1=1;
  Wei2=1;
  Wei3=1;
  Wei4=1;

  P0=~0xa7;  //顯示字母c
  Wei1=1;
  Wei2=1;
  Wei3=1;
  Wei4=0;
  delay(10);
  Wei1=1;
  Wei2=1;
  Wei3=1;
  Wei4=1;
}
}





pcb.png (76.13 KB, 下載次數: 51)

pcb.png

原理圖.png (88.64 KB, 下載次數: 73)

原理圖.png

電路原理,pcb 圖 程序.zip

90.47 KB, 下載次數: 63, 下載積分: 黑幣 -5

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:369818 發表于 2018-7-11 23:15 | 只看該作者
哇,厲害了。
回復

使用道具 舉報

板凳
ID:234782 發表于 2019-2-26 16:14 | 只看該作者
多多益善,有不用AC0809的溫度采集嗎
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 视频一区中文字幕 | 91福利电影在线观看 | 精品国产乱码久久久久久老虎 | 91久久精 | 国产成人福利在线观看 | 国产日韩欧美一区 | 亚洲一区视频 | 一区二区视屏 | a级大片免费观看 | 在线亚洲欧美 | 毛片一区二区三区 | 一区二区三区中文 | 天天色天天射天天干 | 久久久久久91 | 亚洲精品视频在线观看免费 | 精品成人av | 精品久久精品 | 中文字幕国产日韩 | av超碰| 精品福利在线 | 婷婷综合 | 国产精品一区在线 | 久久一二 | 亚洲欧美在线一区 | 欧美久久一级特黄毛片 | 日韩电影中文字幕 | 欧美99 | 视频一区 亚洲 | 中文成人在线 | 99久久久久 | 亚洲精品高清视频在线观看 | 亚洲视频一区二区三区四区 | 成人精品系列 | 日本在线免费看最新的电影 | 成人av网站在线观看 | 成人在线网 | 国产一区二区影院 | 欧美久久久久久 | 免费v片| 91 在线| 日韩精品一区二区三区中文在线 |