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

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

?? wkq.c

?? at89c51單片機為控制核心
?? C
字號:
#include <AT89X51.H>    //器件配置文件
#include <intrins.h>
sbit LCM_RS=P3^3;      //引腳定義
sbit LCM_RW=P3^4;     //引腳定義
sbit LCM_EN=P3^5;      //引腳定義
sbit OUT=P3^6;			//控制繼電器
sbit TSOR=P3^7;			//溫度測試端
#define Busy 0x80        //常量定義
#define uchar unsigned char
#define uint unsigned int
#define DATAPORT P1 
#define reset() {WDT=0x1e;WDT=0xe1;}// 看門狗啟動/復位宏定義
sfr WDT=0xa6;//看門狗寄存器定義
bit ON_OFF;
bit outflag;
//==============================================
uchar temp1,temp2;
uchar cnt;
uchar deda,sec;		//時間變量
char min,hour;
char set,T;
uchar ReadStatusLCM(void);//讀數據到MCU子函數聲明
uchar code str0[]={"---  :  :  ---  "};//待顯字符串
uchar code str1[]={"SET:  C SA:  . C"};
uchar code str2[]={"                "};//待顯空字符串
//====================函數聲明=======================
void fun0(void);
void fun1(void);
void fun2(void);
void fun3(void);
void set_adj(void);
void inc_key(void);
void dec_key(void);
void key(void);
void gettempTS(void);
void initTS(void);
uchar readBTS(void);
void writeBTS(uchar byte);
void resetTS(void);
bit readTS(void);
void write1TS(void);
void write0TS(void);
void delay15us(void);
void delay60us(void);

//********延時K*1mS,12.000MHz*********
void delay(uint k)//函數名為delay的延時子函數。定義k為無符號整型變量
{                 //delay函數開始
uint i,j;        //定義i、j為無符號整型變量
for(i=0;i<k;i++)
{       //for循環語句開始
for(j=0;j<60;j++)      // for循環語句開始
{;}
reset()}             //兩個for循環體
}                   //delay函數結束
/*-----------------------------寫指令到LCM子函數-------------------------------*/
void WriteCommandLCM(uchar WCLCM, uchar BusyC) /*函數名為WriteCommandLCM 的寫指令到LCM子函數。定義WCLCM、BusyC 為無符號字符型變量*/
{                       //WriteCommandLCM函數開始
if(BusyC)ReadStatusLCM();     /*若BusyC為"1",則調用ReadStatusLCM子函數進行忙檢測*/
DATAPORT=WCLCM;        //將變量WCLCM中的指令傳送至P1口
LCM_RS=0;             //選中指令寄存器
LCM_RW=0;            //寫模式
LCM_EN=0;             //置LCM_EN端為低電平
LCM_EN=0;             //置LCM_EN端為低電平,延時一會兒
LCM_EN=1;             //置LCM_EN端為高電平,寫入使能
}                       // WriteCommandLCM函數結束
/*----------------------------寫數據到LCM子函數-------------------------------*/
void WriteDataLCM(uchar WDLCM)  /*函數名為WriteDataLCM 的寫數據到LCM子函數。定義WDLCM 為無符號字符型變量*/
{                        // WriteDataLCM函數開始
ReadStatusLCM();         //調用ReadStatusLCM子函數檢測忙信號
DATAPORT=WDLCM;          //將變量WDLCM中數據傳送至P1口
LCM_RS=1;              //選中數據寄存器
LCM_RW=0;              //寫模式
LCM_EN=0;              //置LCM_EN端為低電平
LCM_EN=0;              //置LCM_EN端為低電平,延時一會兒
LCM_EN=1;              //置LCM_EN端為高電平,寫入使能
}                        // WriteDataLCM函數結束
/*--------------------------------讀數據到MCU子函數---------------------------*/
/*uchar ReadDataLCM(void) //函數名為ReadDataLCM的讀數據到MCU子函數
{                        // ReadDataLCM函數開始
LCM_RS=1;              //選中數據寄存器
LCM_RW=1;              //讀模式
LCM_EN=0;              //置LCM_EN端為低電平
LCM_EN=0;              //置LCM_EN端為低電平,延時一會兒
LCM_EN=1;              //置LCM_EN端為高電平,讀使能
return(DATAPORT);                //返回P1口的內容
}*/                      // ReadDataLCM函數結束

/*--------------------------------讀狀態到MCU子函數-----------------------------*/
uchar ReadStatusLCM(void) //函數名為ReadStatusLCM的讀狀態到MCU子函數
{                        //ReadStatusLCM函數開始
DATAPORT=0xFF;           //置P1口為全1
LCM_RS=0;               //選中指令寄存器
LCM_RW=1;              //讀模式
LCM_EN=0;               //置LCM_EN端為低電平
LCM_EN=0;              //置LCM_EN端為低電平,延時一會兒
LCM_EN=1;              //置LCM_EN端為高電平,讀使能
while(P1&Busy);       /*檢測忙信號。當P1口內容與Busy(80H)相與后不為零時,程序原地踏步*/
return(DATAPORT);                //返回P1口的內容
}                        // ReadStatusLCM函數結束

/*--------------------------LCM初始化子函數----------------------------*/
void InitLcd()             //函數名為InitLcd 的LCM初始化子函數
{                       // InitLcd函數開始
WriteCommandLCM(0x38,1);//8位數據傳送,2行顯示,5*7字形,檢測忙信號
WriteCommandLCM(0x08,1);//關閉顯示,檢測忙信號
WriteCommandLCM(0x01,1);//清屏,檢測忙信號
WriteCommandLCM(0x06,1);//顯示光標右移設置,檢測忙信號
WriteCommandLCM(0x0c,1);//顯示屏打開,光標不顯示、不閃爍,檢測忙信號
}                       // InitLcd函數結束

/*-------------------顯示指定座標的一個字符子函數---------------------------*/
void DisplayOneChar(uchar X,uchar Y,uchar DData)
{                       
Y&=1;                  
X&=15;                 
if(Y)X|=0x40;            
X|=0x80;                
WriteCommandLCM(X,0);  
WriteDataLCM(DData);    
}                      

/*--------------------顯示指定座標的一串字符子函數----------------------*/
void DisplayListChar(uchar X,uchar Y,uchar code *DData)
{                       
uchar ListLength=0; 
Y&=0x1;                
X&=0xF;               
while(X<=15)            
{                      
DisplayOneChar(X,Y,DData[ListLength]);
ListLength++;            
X++;                  
}                     
}                     
//=================================================
void init_timer0(void)		//定時器T0初始化
{
TMOD=0x01;
TH0=-(50235/256);
TL0=-(50235%256);
TR0=1;
ET0=1;EA=1;
}
//==================================================
void time_zd0(void) interrupt 1 using 1		//定時器T0中斷子函數
{
TH0=-(50235/256);
TL0=-(50235%256);
deda++;cnt++;
if(deda>=20){sec++;deda=0;}
if(sec>=60){min++;sec=0;}
if(min>=60){hour++;min=0;}
if(hour>=24){hour=0;}
if(cnt>=6)cnt=0;
key();						//掃描鍵盤
}

//==================================
void fun0(void)			//液晶顯示子函數0
{
WriteCommandLCM(0x0c,1);//顯示屏打開,光標不顯示、不閃爍,檢測忙信號
DisplayListChar(0,0,str0);
DisplayListChar(0,1,str1);
//===============================
DisplayOneChar(3,0,hour/10+0x30);// 液晶上顯示小時
DisplayOneChar(4,0,hour%10+0x30);
//=========================
DisplayOneChar(6,0,min/10+0x30); // 液晶上顯示分
DisplayOneChar(7,0,min%10+0x30);
//==============================
DisplayOneChar(9,0,sec/10+0x30); // 液晶上顯示秒
DisplayOneChar(10,0,sec%10+0x30);
//=================================
DisplayOneChar(4,1,T/10+0x30); // 液晶上顯示設定的溫度值
DisplayOneChar(5,1,T%10+0x30);
//=================================
DisplayOneChar(11,1,temp1/10+0x30); // 液晶上顯示測得的溫度值
DisplayOneChar(12,1,temp1%10+0x30);
DisplayOneChar(14,1,temp2+0x30);
//================================
	if(ON_OFF==0)// 若控溫標志為0
	{
	DisplayOneChar(14,0,0x4f);// 液晶上顯示不控溫的圖標
	DisplayOneChar(15,0,0x46);
	}
	else
	{
	DisplayOneChar(14,0,0x4f); // 否則液晶上顯示控溫的圖標
	DisplayOneChar(15,0,0x4e);
	if(outflag==1)DisplayOneChar(0,0,0x7c);
	else DisplayOneChar(0,0,0xef);
	}
	//============================
	
}
/*******************************************/
void fun1(void)				//液晶顯示子函數1
{
WriteCommandLCM(0x0c,1);//顯示屏打開,光標不顯示、不閃爍,檢測忙信號
DisplayListChar(0,0,str0);
DisplayListChar(0,1,str1);
//=========================
DisplayOneChar(6,0,min/10+0x30);
DisplayOneChar(7,0,min%10+0x30);
//==============================
DisplayOneChar(9,0,sec/10+0x30);
DisplayOneChar(10,0,sec%10+0x30);
//=================================
DisplayOneChar(4,1,T/10+0x30);
DisplayOneChar(5,1,T%10+0x30);
//=================================
DisplayOneChar(11,1,temp1/10+0x30);
DisplayOneChar(12,1,temp1%10+0x30);
DisplayOneChar(14,1,temp2+0x30);
//=================================
WriteCommandLCM(0x0f,1);//顯示屏打開,光標顯示、閃爍,檢測忙信號
DisplayOneChar(3,0,hour/10+0x30);
DisplayOneChar(4,0,hour%10+0x30);
}
/********************************************/
void fun2(void)			//液晶顯示子函數2
{
WriteCommandLCM(0x0c,1);//顯示屏打開,光標不顯示、不閃爍,檢測忙信號
DisplayListChar(0,0,str0);
DisplayListChar(0,1,str1);
//=========================
DisplayOneChar(3,0,hour/10+0x30);
DisplayOneChar(4,0,hour%10+0x30);
//=================================
DisplayOneChar(9,0,sec/10+0x30);
DisplayOneChar(10,0,sec%10+0x30);
//=================================
DisplayOneChar(4,1,T/10+0x30);
DisplayOneChar(5,1,T%10+0x30);
//=================================
DisplayOneChar(11,1,temp1/10+0x30);
DisplayOneChar(12,1,temp1%10+0x30);
DisplayOneChar(14,1,temp2+0x30);
//===================================
WriteCommandLCM(0x0f,1);//顯示屏打開,光標顯示、閃爍,檢測忙信號
DisplayOneChar(6,0,min/10+0x30);
DisplayOneChar(7,0,min%10+0x30);
}
/***************************************/
void fun3(void)			//液晶顯示子函數3
{
WriteCommandLCM(0x0c,1);//顯示屏打開,光標不顯示、不閃爍,檢測忙信號
DisplayListChar(0,0,str0);
DisplayListChar(0,1,str1);
//=========================
DisplayOneChar(3,0,hour/10+0x30);
DisplayOneChar(4,0,hour%10+0x30);
//===============================
DisplayOneChar(6,0,min/10+0x30);
DisplayOneChar(7,0,min%10+0x30);
//=================================
DisplayOneChar(9,0,sec/10+0x30);
DisplayOneChar(10,0,sec%10+0x30);
//=================================
DisplayOneChar(11,1,temp1/10+0x30);
DisplayOneChar(12,1,temp1%10+0x30);
DisplayOneChar(14,1,temp2+0x30);
//=================================
WriteCommandLCM(0x0f,1);//顯示屏打開,光標顯示、閃爍,檢測忙信號
DisplayOneChar(4,1,T/10+0x30);
DisplayOneChar(5,1,T%10+0x30);
}
/************************************/
void key(void)						//掃描鍵盤
{uchar xx;// 局部變量
P2=0xff;
	if(P2!=0xff)
	{delay(10);
		if(P2!=0xff)
		{xx=P2;
			switch(xx)// 根據按鍵狀態,調用不同的子函數
			{
			case 0xfe:set_adj();break; //"MS"鍵按下,調用set_adj()子函數
			case 0xfd:inc_key();break; //"+"鍵按下,調用inc_key()子函數
			case 0xfb:dec_key();break; //"-"鍵按下,調用dec_key()子函數
			case 0xf7:ON_OFF=!ON_OFF;break;// "ON/OFF"鍵按下,ON_OFF標志取反
			default:break;
			}
		}
	}
}
/************************************/
void set_adj(void)					//設定工作模式子函數
{
	if(cnt==5)
	{set++;
	if(set>=4)set=0;
	}
}
/***************************************/
void inc_key(void)					//按鍵加法子函數
{
	if(cnt==5)
	{
		switch(set)
		{
		case 0:if(P2==0xf7)ON_OFF=!ON_OFF;break;
		case 1:hour++;if(hour>=23)hour=23;break;
		case 2:min++;if(min>=59)min=59;break;
		case 3:T++;if(T>=99)T=99;	break;
		default:break;
		}
	}
}
/***************************************/
void dec_key(void)						//按鍵減法子函數
{
	if(cnt==5)
	{
		switch(set)
		{
		case 0:if(P2==0xf7)ON_OFF=!ON_OFF;break;
		case 1:hour--;if(hour<=0)hour=0;break;
		case 2:min--;if(min<=0)min=0;break;
		case 3:T--;if(T<=1)T=1;break;
		default:break;
		}
	}
}
/***************************************/
/*****************************************/
void delay15us(void)						//延時15微秒子函數
{
uchar i;
for(i=0;i<4;i++);
}
//*************************************************
void delay60us(void)						//延時60微秒子函數
{
uchar i;
for(i=0;i<15;i++);
}
//***************************************************
void write0TS(void)						//寫DS18B20數據位0
{
TSOR=1;
TSOR=0;
delay15us();delay15us();delay15us();delay15us();
TSOR=1;
_nop_();
_nop_();
}
//********************************************************
void write1TS(void)					//寫DS18B20數據位1
{
TSOR=1;
TSOR=0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
TSOR=1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
delay15us();delay15us();delay15us();
}
//******************************
bit readTS(void)						//讀DS18B20數據位
{
bit b;
TSOR=1;
TSOR=0;
_nop_();_nop_();_nop_();_nop_();
TSOR=1;
_nop_();_nop_();_nop_();_nop_();_nop_();
b=TSOR;
delay15us();delay15us();delay15us();
_nop_();_nop_();
return b;
}
//*************************************
void resetTS(void)						//復位DS18B20
{uchar i;
TSOR=1;
TSOR=0;
for(i=0;i<8;i++)delay60us();
TSOR=1;
while(TSOR);
for(i=0;i<8;i++)delay60us();
}
//***************************************
void writeBTS(uchar byte)				//寫1字節
{uchar i;
for(i=0;i<8;i++)
{
if(byte&0x01)
write1TS();
else
write0TS();
byte=byte>>1;
}
}
//****************************************
uchar readBTS(void)						//讀1字節
{uchar i,j;
bit b;
j=0;
for(i=0;i<8;i++)
{
b=readTS();
if(b)j+=1;
j=_cror_(j,1);
}
return j;
}
//************************************************
void initTS(void)					//初始化DS18B20
{
resetTS();
writeBTS(0xcc);
writeBTS(0x4e);
writeBTS(0x64);
writeBTS(0x8a);
writeBTS(0x1f);
}
//******************************************************
void gettempTS(void)					//讀取測得的環境溫度
{
resetTS();
writeBTS(0xcc);
writeBTS(0x44);
delay(200);
resetTS();
writeBTS(0xcc);
writeBTS(0xbe);
temp2=readBTS();
temp1=readBTS();
readBTS();readBTS();readBTS();readBTS();
readBTS();readBTS();readBTS();
temp1=temp1<<4;
temp1+=(temp2&0xf0)>>4;
temp2=(temp2&0x0f)?5:0;
}

//********主函數*********
void main(void)
{
delay(500);                      //延時500ms,等電源穩定
InitLcd();                        //LCM初始化
init_timer0();//初始化定時器T0
DisplayListChar(0,0,str0);// 顯示預定行
DisplayListChar(0,1,str1);
initTS();//初始化DS18B20
reset()
for(;;)
{
//========================
switch(set)				//LCD根據工作模式進行顯示
{
case 0:fun0();break;// 正常工作顯示
case 1:fun1();break; //調整時顯示
case 2:fun2();break;// 調整分顯示
case 3:fun3();break; //設置控溫值顯示
default:break;
}
delay(300);
gettempTS();			//讀取測得的環境溫度
if(ON_OFF==1)			// 若控溫標志為1,控制壓縮機動作
{
	if(temp1>=T+1){delay(1000);//
		 	if(temp1>=T+1){outflag=1;OUT=0;}//測得的溫度大于等于控溫值+1度時,
//壓縮機啟動致冷
				}
	if(temp1<T){delay(1000);
			if(temp1<T){outflag=0;OUT=1;} //測得的溫度小于控溫值時,
//壓縮機停止工作
				}
}
else // 否則控溫標志為0,壓縮機停止工作
{outflag=0;OUT=1;}
}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品视频在线看| 亚洲va在线va天堂| 欧美日韩精品一区二区在线播放 | 国产精品久久久久毛片软件| 欧美剧在线免费观看网站 | 亚洲五码中文字幕| 国产精品二三区| 久久免费视频一区| 日韩视频在线你懂得| 欧洲一区在线电影| 99久久久免费精品国产一区二区| 久久99这里只有精品| 日韩av电影天堂| 亚洲午夜视频在线观看| 亚洲视频一区二区在线观看| 国产午夜精品一区二区三区嫩草 | 欧美日本韩国一区| 99国产精品久久久久久久久久久| 黄页网站大全一区二区| 日韩影院在线观看| 一区二区免费视频| 亚洲猫色日本管| 成人免费在线视频| 国产精品初高中害羞小美女文| 26uuu亚洲综合色| 日韩女优电影在线观看| 欧美一区二区三区喷汁尤物| 欧美日韩精品三区| 欧美日韩高清在线| 欧美日韩国产天堂| 欧美色男人天堂| 欧美日韩综合不卡| 欧美视频在线播放| 欧美精选在线播放| 欧美丰满嫩嫩电影| 91麻豆精品国产91久久久久 | 久久婷婷国产综合国色天香| 日韩三级免费观看| 欧美v国产在线一区二区三区| 欧美一区二区三区日韩| 日韩欧美卡一卡二| 精品播放一区二区| 久久久一区二区| 欧美高清在线精品一区| 中文字幕一区视频| 亚洲婷婷国产精品电影人久久| 亚洲欧美偷拍卡通变态| 一片黄亚洲嫩模| 午夜精品aaa| 激情文学综合网| 国产电影一区在线| heyzo一本久久综合| 一本大道综合伊人精品热热| 欧美午夜精品久久久久久超碰| 欧美片网站yy| 日韩精品一区二区三区中文精品| 欧美va天堂va视频va在线| 国产亚洲欧洲一区高清在线观看| 中文乱码免费一区二区 | 国产精品一区免费在线观看| 国产成人综合亚洲网站| 99国产精品一区| 91麻豆精品国产自产在线观看一区| 日韩午夜精品视频| 国产精品无圣光一区二区| 亚洲欧美日韩国产另类专区| 日韩高清在线不卡| 国产激情一区二区三区四区| 色哟哟精品一区| 日韩午夜精品电影| 亚洲欧洲精品天堂一级| 五月天激情综合| 国产精品一级片在线观看| 91亚洲精品一区二区乱码| 欧美久久一二区| 欧美激情在线看| 亚洲国产cao| 国产成人自拍网| 欧美日韩国产a| 欧美激情综合在线| 日韩成人av影视| 成人深夜在线观看| 3d成人动漫网站| 中文字幕亚洲在| 美国三级日本三级久久99| 成人av资源站| 欧美一二三四区在线| 最新不卡av在线| 久99久精品视频免费观看| 91国偷自产一区二区三区成为亚洲经典 | 从欧美一区二区三区| 欧美日韩成人高清| 欧美国产激情二区三区| 蜜臀91精品一区二区三区| 色视频成人在线观看免| 久久久国际精品| 免费人成黄页网站在线一区二区| 99在线精品视频| 精品福利在线导航| 亚洲成人av一区二区| 99久久国产综合精品色伊| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲国产sm捆绑调教视频| 9i在线看片成人免费| 久久久精品免费网站| 美女视频网站黄色亚洲| 欧美日韩亚洲国产综合| 亚洲视频在线一区二区| 国产成人一级电影| 日韩欧美国产不卡| 午夜日韩在线电影| 欧美亚洲一区二区在线| 日韩一区中文字幕| 成人av免费在线观看| 久久久亚洲精品一区二区三区| 视频一区免费在线观看| 欧美私人免费视频| 亚洲一区二区三区爽爽爽爽爽| 波多野结衣一区二区三区 | 欧美激情一区二区三区不卡| 男男gaygay亚洲| 制服.丝袜.亚洲.中文.综合| 香蕉久久夜色精品国产使用方法| 91久久香蕉国产日韩欧美9色| **欧美大码日韩| 91丨porny丨蝌蚪视频| 国产精品对白交换视频 | 91片在线免费观看| 中文字幕一区二区三区不卡| 99久久精品国产精品久久| 专区另类欧美日韩| 一本色道久久综合亚洲91| 亚洲精品美腿丝袜| 欧洲在线/亚洲| 午夜久久久久久电影| 91精品国产综合久久精品性色| 午夜欧美2019年伦理| 91麻豆精品国产91久久久使用方法| 午夜久久久久久| 日韩欧美一区二区视频| 国产在线精品一区二区不卡了 | 精品久久久久久亚洲综合网 | 亚洲综合色自拍一区| 欧美男男青年gay1069videost| 午夜伊人狠狠久久| 91精品久久久久久久99蜜桃| 六月丁香综合在线视频| 久久久久久久综合色一本| 丁香婷婷综合激情五月色| 国产精品视频线看| 在线免费观看视频一区| 亚洲第一精品在线| 日韩欧美123| 成人中文字幕电影| 亚洲一区二区视频在线| 欧美一级搡bbbb搡bbbb| 国产成人精品免费| 亚洲欧美日韩国产手机在线| 欧美日韩一区在线| 国产揄拍国内精品对白| 中文字幕一区二区三中文字幕| 日本韩国一区二区三区视频| 天天综合天天做天天综合| 久久久久久久综合色一本| 色综合一区二区三区| 日韩电影免费一区| 中文字幕乱码日本亚洲一区二区| 91在线精品一区二区| 首页国产欧美久久| 久久久蜜臀国产一区二区| 91美女片黄在线观看91美女| 婷婷丁香久久五月婷婷| 国产日产欧美精品一区二区三区| 色婷婷久久一区二区三区麻豆| 人人超碰91尤物精品国产| 国产精品色呦呦| 欧美剧情电影在线观看完整版免费励志电影| 精品一区二区三区在线播放视频 | 欧美本精品男人aⅴ天堂| 91在线一区二区| 久久99精品一区二区三区三区| 中文字幕一区日韩精品欧美| 欧美一级搡bbbb搡bbbb| 色综合一个色综合亚洲| 国产一区二区在线电影| 亚洲高清在线视频| 国产精品久久久久久久久晋中 | 欧美一区二区在线视频| 成人18视频在线播放| 日本女优在线视频一区二区| 中文字幕欧美一| 精品国产伦一区二区三区观看方式| 色av成人天堂桃色av| 国产不卡视频一区| 久久精品国产秦先生| 亚洲一区视频在线| 亚洲私人黄色宅男| 欧美激情综合在线| 日韩欧美国产系列| 欧美精品亚洲一区二区在线播放|