亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 溫度傳感器程序.txt

?? AT89S52控制的18B20數(shù)字溫度傳感器
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
/*=============================================
                 溫度控制器

           廣州工程職業(yè)技術學院
              傳感器課程設計

指導老師:    馮偉
    作者:    GIT-3408-YOUJJYY (方暢,曹文榮,梁銳權)
    時間:    2007-4-25

溫度傳感器用單總線DS18B20
CPU為AT89S52,三個按鍵(UP,DOWN,SET)
溫度調節(jié)上限為125度,下限為-55度(本程序只能用于單只18B20)

================================================*/
#include <at89x52.h>
#include <intrins.h>
#include <main_led_display.h>

/*--------用于按鍵可位尋址的狀態(tài)寄存器-----------*/
static unsigned char bdata StateREG;      
sbit DS1820ON=StateREG^0;			       //DS18B20是否存在
sbit SetTF=StateREG^1;					   //是否是在溫度設置狀態(tài)
sbit KeySETDown=StateREG^2;			       //"1"為已按過SET鍵,"0"為沒按過SET按
sbit PowTF=StateREG^3;                     //電源標識("0"為開電源,"1"為關電源)
sbit KeyTF=StateREG^4;                     //"0"為按鍵允許,"1"為不允許
sbit KeySETDowning=StateREG^5;             //SET是否正在按下
sbit LEDTF=StateREG^6;					   //開機LOG標志位

static unsigned char bdata TLV _at_ 0x0029; //溫度變量高低位
static unsigned char bdata THV _at_ 0x0028;
static signed char TMV;                     //轉換后的溫度值
static unsigned char KeyV,TempKeyV;         //鍵值
static signed char TMRomV _at_ 0x0027;      //高溫度限制
static signed char TMSetV _at_ 0x0026;      //溫度設定值
static unsigned char KSDNum;                //SET鍵連按時的采集次數(shù)
static unsigned char IntNum,IntNum2,IntNum3;//中斷發(fā)生次數(shù)(IntNum用于SET長按檢測,IntNum2用于設定狀態(tài)時LED閃爍,IntNum用于連按其他鍵)
static unsigned int IntNum4,IntNum5;
static signed char Sign;                    //負號標識
static unsigned char LED_One,LED_Two,LED_Three;
/*------------------------------------------
              數(shù)值轉換
-------------------------------------------*/
void V2ToV(void)
{
 TLV>>=4;
 THV<<=4;   //讀出的高低位數(shù)值移位
 TMV=TLV|THV; //合并高低位放入TM為實際溫度值
 Sign=0;
  if(SetTF||!Key_SET)Sign=TMSetV>>7; //取符號
  else Sign=TMV>>7;
  if(Sign)
  {
   if(SetTF||!Key_SET)
    {
	 LED_One=(~(TMSetV-1))/100;    //SET狀態(tài)下顯示設定值
	 LED_Two=((~(TMSetV-1))-LED_One*100)/10;
	 LED_Three=(~(TMSetV-1))-LED_One*100-LED_Two*10;
	 }
	else
	 {
	  LED_One=(~(TMV-1))/100;     //轉換百位數(shù)值
	  LED_Two=((~(TMV-1))-LED_One*100)/10;  
	  LED_Three=(~(TMV-1))-LED_One*100-LED_Two*10;
	  }
	}
   else
    {
	 if(SetTF||!Key_SET)
	  {
	   LED_One=TMSetV/100;    //SET狀態(tài)下顯示設定值
	   LED_Two=(TMSetV-LED_One*100)/10;
	   LED_Three=TMSetV-LED_One*100-LED_Two*10;
	   }
	 else
	  {
	   LED_One=TMV/100;     //轉換百位數(shù)值
	   LED_Two=(TMV-LED_One*100)/10;  
	   LED_Three=TMV-LED_One*100-LED_Two*10;
	   }
	  }
//=================轉換LED字段==================
 if(LED_One)LED_Two=BCD_ASCII[LED_Two+1];   //超過百時十位的處理
 else
  {
   if(LED_Two==0)LED_Two=BCD_ASCII[0];
   else LED_Two=BCD_ASCII[LED_Two+1];
   }
 if(Sign)LED_One=0xf7;
 else
  {
   if(LED_One==0)LED_One=BCD_ASCII[0];
   else LED_One=BCD_ASCII[LED_One+1];
   }
 LED_Three=BCD_ASCII[LED_Three+1];
 }
 /*-------------------------------------------
                  初始化DS1820
 --------------------------------------------*/
 void InitDS1820(void)
 {
  TMPort=1;
  _nop_();
  TMPort=0;
  Delay_6n5_8us(77);           //延時 DS1820復位時間要500US的抵電平
  TMPort=1;
  Delay_6n5_8us(16);	 //延時112US 等待DS1820的回應
  if(!TMPort){DS1820ON=1;ON_DS1820=1;}             //檢測是否有DS1820
  else {DS1820ON=0;ON_DS1820=0;}
  Delay_6n5_8us(55);
  TMPort=1;
  }
/*------------------寫數(shù)據(jù)-------------------*/
void Write_Data(uchar T_DATA)
 {
   uchar i,DATA_T;
   DATA_T=T_DATA;
   for(i=0;i<=7;i++)
   {
    TMPort=0;
    Delay_6n5_8us(1);			   //延時14微秒
    if(DATA_T&0x01)TMPort=1;
	else TMPort=0;
	DATA_T>>=1;
    Delay_6n5_8us(7);	           //延時54微秒
	TMPort=1;
	_nop_();
	}
	TMPort=1;
  }
/*--------------------------------------------
              寫入溫度限制值
       發(fā)出4EH寫ROM指令后連發(fā)兩個字節(jié)
---------------------------------------------*/
void WriteDS1820(void)
{
 uchar TM_H,TM_L;
  TM_H>>=4;
  TM_L<<=4;
  Write_Data(TM_H);
  Write_Data(TM_L);
}
/*-----------------讀數(shù)據(jù)-------------------*/
uchar ReadTM(void)
{
 uchar i,TM_DATA;
 for(i=0;i<=7;i++)
 {
  TM_DATA>>=1;
  TMPort=1;
  _nop_();_nop_();
  TMPort=0;
  _nop_();_nop_();_nop_();
  TMPort=1;
  Delay_6n5_8us(1);
  if(TMPort)TM_DATA|=0x80;
  Delay_6n5_8us(6);
  }
  return (TM_DATA);
 }
/*-------------------------------------------
         讀出溫度值
將溫度高位和低位,高溫度限制位從DS1820中讀出
    低位存入29H(TEMPER_L),
    高位存入28H(TEMPER_H),
    高溫度限制位存入27H(TMRomV) 
---------------------------------------------*/
void ReadDS1820(void)
{
 TLV=ReadTM();
 THV=ReadTM();
 TMRomV=ReadTM();
 }
/*====================主程序===================*/
void main(void)
{
 StateREG=0;             //初始化變量
 SetTF=1;				 //在設置溫度狀態(tài)
 PowTF=1;                //關電源
 THV=0;					 //溫度數(shù)據(jù)存儲(高地址:0x0028,低地址:0x0029) TLV=0;
 TMV=0;					 //轉換后的溫度值
 KeyV=0;
 KSDNum=0;				 //SET鍵連按時的采集次數(shù)
 IntNum=0;				 //用于SET長按檢測
 IntNum2=0;				 //用于設定狀態(tài)時LED閃爍
 IntNum3=0;
 LED_One=0;
 LED_Two=0;
 Beep=1;
 LEDTF=0;
 InitDS1820();//初始化
 Write_Data(0xcc);//跳過ROM
 Write_Data(0xb8);//E2RAM中的溫度上限值調入RAM
 InitDS1820();
 Write_Data(0xcc);//跳過ROM
 Write_Data(0xbe);//讀出溫度指令
 ReadDS1820();//讀出溫度值和上限值
 TMSetV=TMRomV;//拷貝保存在DS1820ROM里的上限值到TMSet
 EA=1;		   //允許CPU中斷
 ET0=1;		   //定時器0中斷開
 TMOD=0x01;	   //設定時器0為模式1,16位模式
 TH0=0XB1;
 TL0=0XDF;     //設定時值為20MS
 TR0=1;        //開定時
 while(1);
 }
 /*----------------------------------
 定時器0中斷處理中鍵掃描和顯示

 ------------------------------------*/
 void KeyAndDis_Time0(void) interrupt 1 using 2
 {
  TH0=0XB1;
  TL0=0XDF;                    //設定時值為20MS
  LEDPort=0xff;				   //關閉LED
/*--------------對按下的鍵值附值-------------*/
  if(!Key_UP)KeyV=1;		   //檢測Key_UP是否按下
  if(!Key_DOWN)KeyV=2;		   //檢測Key_DOWN是否按下
  if(!Key_SET)KeyV=3;		   //檢測Key_SET是否按下
  KeySETDowning=0;  //清除
/*--------------檢測是否有鍵按下----------------*/
  if(KeyV!=0)				   //KeyV不等于零表示有鍵按下
   {
	Delay_1ms(10);             //延時防抖  按下10MS再測
	if(!Key_UP)TempKeyV=1;	  
	if(!Key_DOWN)TempKeyV=2;
	if(!Key_SET)TempKeyV=3;
	if(KeyV==TempKeyV)        //兩次值相等為確定接下了鍵
	 {
/*---判斷是否是Key_SET按下---*/
	  if(KeyV==3)         //按下SET鍵,如在SET狀態(tài)就退出,否則進入
	   {
		 KeySETDowning=1;   //表明SET正在按下
		 PowTF=0;         //電源標識開
		 if(!KeyTF)		  //KeyTF為1不允許執(zhí)行下程序
		 if(SetTF)
		 {
		  SetTF=0;      //是否是在溫度設置狀態(tài)標識位標識退出設定
		  InitDS1820();
		  Write_Data(0xcc);  //跳過ROM
		  Write_Data(0x4e);  //寫溫度上限指令
		  WriteDS1820();     //寫溫度上限到DS1820ROM
		  InitDS1820(); 
		  Write_Data(0xcc);	//跳過ROM匹配
		  Write_Data(0x48);  //溫度上限值COPY回E2PRAM
		   }
		  else SetTF=1;	      //為下一次沒按SET時,按其他鍵作準備
		  if(!KeySETDown){KeySETDown=1;OPen=1;}	   //是否已按過SET鍵標識
		  else KSDNum+=1;  //前一秒內有按SET則開始計數(shù)
		  }

/*--------Key_UP和Key_DOWN的檢測---------*/
	  if(SetTF)  //在SET狀態(tài)下
		  {
		   if((KeyV==1)&&(!KeyTF))TMSetV+=1,OPen=0;    //上調溫度
		   if((KeyV==2)&&(!KeyTF))TMSetV-=1,OPen=0;   //下調溫度
		   if(TMSetV<=-55)TMSetV=-55;
		   if(TMSetV>=125)TMSetV=125;
		   }
	  if((!KeyTF)&&(IntNum3==0))KeyTF=1;     //判斷鍵盤是否處于可用時
	  }

/*---------按鍵長按的處理----------*/
     if(KeySETDown)IntNum+=1;    //在2秒內按下了SET則計中斷發(fā)生次數(shù)用于長按SET時計時用
     if(IntNum>60)
      {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一区二区三区网站| 国产精品国产自产拍高清av王其 | 麻豆一区二区三区| 欧美精品xxxxbbbb| 男人的j进女人的j一区| 日韩一区二区在线观看视频| 久久er精品视频| 久久看人人爽人人| av激情综合网| 一区二区在线观看免费视频播放| 欧美中文字幕一区| 日韩综合在线视频| 久久九九99视频| av亚洲精华国产精华| 亚洲一本大道在线| 日韩视频一区二区三区在线播放 | 99天天综合性| 亚洲线精品一区二区三区| 欧美二区在线观看| 国产精品自拍一区| 中文字幕五月欧美| 7777精品伊人久久久大香线蕉经典版下载 | 大胆亚洲人体视频| 亚洲乱码国产乱码精品精小说 | 制服丝袜亚洲精品中文字幕| 久久激情综合网| 国产精品理论片| 欧美女孩性生活视频| 国产一区二区精品久久| 一区二区三区欧美久久| 欧美不卡视频一区| 91麻豆swag| 国产专区欧美精品| 亚洲自拍欧美精品| 国产色91在线| 在线播放欧美女士性生活| 国产成人精品一区二区三区四区| 一区二区三区四区视频精品免费 | 男女男精品视频| 国产精品欧美一区二区三区| 6080午夜不卡| caoporn国产一区二区| 丝袜亚洲另类丝袜在线| 成人欧美一区二区三区1314| 欧美二区乱c少妇| av成人老司机| 国产一区二区主播在线| 日产欧产美韩系列久久99| 亚洲欧洲综合另类| 欧美国产在线观看| 欧美成人艳星乳罩| 欧美午夜电影在线播放| 国产成人精品一区二区三区四区| 奇米色777欧美一区二区| 亚洲精选一二三| 亚洲国产高清在线观看视频| 欧美一区二区视频在线观看2020| 色又黄又爽网站www久久| 国产激情一区二区三区桃花岛亚洲| 亚洲成人福利片| 一区二区免费看| 国产精品久久久久aaaa| 久久精品一二三| 欧美一区二区三区日韩| 色噜噜狠狠色综合中国| 处破女av一区二区| 国产成人欧美日韩在线电影| 狠狠色丁香久久婷婷综| 久久99国产精品麻豆| 午夜精品国产更新| 亚洲伊人伊色伊影伊综合网| 亚洲欧美日韩在线不卡| 中文字幕亚洲在| 国产精品区一区二区三| 国产精品久久久久一区| 亚洲国产精品99久久久久久久久 | 亚洲日本免费电影| 成人免费小视频| 亚洲视频一区二区免费在线观看| 国产精品视频一二三区| 国产精品网曝门| 中文字幕中文字幕在线一区| 国产精品伦理在线| 中文字幕一区二区日韩精品绯色| 自拍偷拍国产亚洲| 亚洲色图.com| 亚洲一区二区三区不卡国产欧美| 亚洲精品日韩综合观看成人91| 亚洲欧美一区二区不卡| 一区二区三区**美女毛片| 一区二区三区在线高清| 亚洲国产wwwccc36天堂| 青青草原综合久久大伊人精品 | 欧美高清www午色夜在线视频| 欧美日韩久久久一区| 日韩视频免费观看高清完整版在线观看| 91精品在线观看入口| 日韩精品一区二区三区老鸭窝| 精品久久久久久无| 国产片一区二区三区| 亚洲免费观看在线视频| 婷婷开心久久网| 精品一区二区三区在线观看国产| 国产在线麻豆精品观看| 99久久伊人网影院| 欧美日韩精品系列| 精品国产成人系列| 国产精品国产三级国产aⅴ无密码| 亚洲伦在线观看| 日本亚洲三级在线| 国产在线一区观看| 色综合天天做天天爱| 欧美视频三区在线播放| 欧美一区二区视频在线观看2020 | 欧美视频一区二区| 久久久影院官网| 一区二区三区精品视频在线| 日韩精品1区2区3区| 国产精品亚洲综合一区在线观看| 97se亚洲国产综合自在线观| 久久婷婷综合激情| 亚洲天堂福利av| 美国十次综合导航| 91片在线免费观看| 日韩精品专区在线影院观看| 国产精品久久久久久久久动漫 | 国产精品女主播在线观看| 亚洲一区二区三区自拍| 国产乱码精品一区二区三区av | 国产91精品一区二区| 欧美浪妇xxxx高跟鞋交| 中文字幕av一区二区三区高| 日本午夜精品视频在线观看| 成人av资源站| 欧美成人官网二区| 一区二区国产视频| 丁香婷婷综合色啪| 欧美一级欧美三级| 一区二区三区资源| 国产成人免费在线观看不卡| 91精品国产美女浴室洗澡无遮挡| 国产精品福利一区| 国产酒店精品激情| 91精品国产入口在线| 亚洲一区二区三区中文字幕| 不卡大黄网站免费看| 久久精品亚洲精品国产欧美kt∨| 日韩成人精品在线观看| 欧美视频中文一区二区三区在线观看| 国产性色一区二区| 韩国三级中文字幕hd久久精品| 欧美一区二区三区免费大片 | 亚洲码国产岛国毛片在线| 成人亚洲精品久久久久软件| 精品国产一区二区三区四区四| 日本中文字幕一区二区有限公司| 91豆麻精品91久久久久久| 国产精品电影一区二区| av一区二区三区在线| 国产精品女主播av| 99v久久综合狠狠综合久久| 欧美国产一区视频在线观看| 高潮精品一区videoshd| 久久久国产午夜精品| 国产精品18久久久久久久网站| 精品日韩成人av| 美国毛片一区二区三区| 日韩一级二级三级精品视频| 午夜伊人狠狠久久| 欧美伊人精品成人久久综合97| 日韩午夜在线播放| 精品一区二区综合| 91精品国产色综合久久不卡电影| 亚洲国产一区二区三区青草影视| 色婷婷综合久久久| 亚洲欧美日韩在线不卡| 91丨国产丨九色丨pron| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 99免费精品视频| 亚洲欧洲av一区二区三区久久| av爱爱亚洲一区| 国产精品久久久久久久第一福利 | 亚洲精品视频一区| 91亚洲大成网污www| 国产精品久久久久一区二区三区共| 精品亚洲aⅴ乱码一区二区三区| www成人在线观看| 另类中文字幕网| 欧美精品少妇一区二区三区| 中文字幕永久在线不卡| 不卡的av中国片| 亚洲人成电影网站色mp4| 一本高清dvd不卡在线观看| 亚洲综合无码一区二区| 在线视频中文字幕一区二区| 午夜视频在线观看一区二区三区| 欧美情侣在线播放| 另类专区欧美蜜桃臀第一页| 久久精品在这里| eeuss鲁一区二区三区|