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

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

?? text.c

?? 語音溫度智能報警系統
?? C
字號:
/******************************************************************
              基于isd1420語音芯片的溫度報警

功能:利用ds18b20檢測當前溫度,通過和設定參數的比較,給ISD1420發出
	  報警脈沖,通過功率放大器LM386 驅動喇叭報警。
日期:2007.3.20
	  
注:  isd1420的報警采用延時方式(isd1420的延時報警取決于錄音時間的長短)

問題:1.isd1420會偶然的觸發非正常的報警?
      2.系統在上電時偶爾會進入非正常的狀態?
	  3.由于proteus軟件中沒有isd1420這個模型,故給出一個可以代替仿真的圖紙。

作者:王蔚   陜西理工學院電工電子實驗中心創新試驗室  qq :284997953

********************************************************************/

#include<reg51.h>
#include<intrins.h>
#include <absacc.h>

#define uchar unsigned char
#define uint   unsigned int
#define PLAYE_ADDR XBYTE[0XBFFF] //語音報警地址

#define BUSY  0x80              //lcd忙檢測標志
#define DATAPORT P0             

sbit P1_0=P1^4;                 //時鐘調整
sbit P1_1=P1^5;                 //時鐘加
sbit P1_2=P1^6;                 //時鐘減

sbit RED_ALARM=P1^0;            //紅色指示燈
sbit WRITE_ALARM=P1^1;          //白色指示燈
sbit GREEN_ALARM=P1^2;          //綠色指示燈

sbit DQ = P3^7;                 //定義ds18b20通信端口 
sbit LCM_RS=P2^0;				//數據/命令端
sbit LCM_RW=P2^1;				//讀/寫選擇端
sbit LCM_EN=P2^2;               //LCD使能信號
sbit RECLED_EOC=P3^5;           //ISD1420放音結束查詢標志

						
unsigned char seconde=0;                 //定義并初始化時鐘變量
unsigned char minite=0;
unsigned char hour=12;
unsigned char mstcnt=0;
unsigned char temp1,temp2,temp3;
unsigned char runtime;                   //系統運行總時間
unsigned char t;
unsigned int temp;

uchar code str0[]={"---  :  :  ---of"};
uchar code str1[]={"temp:  . C------"};

void delay_LCM(uint);             											//LCD延時子程序
void initLCM( void);               											//LCD初始化子程序
void lcd_wait(void);              											//LCD檢測忙子程序
void WriteCommandLCM(uchar WCLCM,uchar BusyC);                              //寫指令到ICM子函數
void WriteDataLCM(uchar WDLCM);                                             //寫數據到LCM子函數
void DisplayOneChar(uchar X,uchar Y,uchar DData);                           //顯示指定坐標的一個字符子函數
void DisplayListChar(uchar X,uchar Y,uchar code *DData);                    //顯示指定坐標的一串字符子函數

void init_timer0(void);               										//定時器初始化
void displayfun1(void);

void delay_18B20(unsigned int i);
void Init_DS18B20(void) ;
uchar ReadOneChar(void);
void WriteOneChar(unsigned char dat);
void ReadTemperature(void);
void playalarm(void);

/*********延時K*1ms,12.000mhz**********/

void delay_LCM(uint k)
{
    uint i,j;
    for(i=0;i<k;i++)
    {
        for(j=0;j<60;j++)
        	{;}
    }
}   
/**********寫指令到ICM子函數************/

void WriteCommandLCM(uchar WCLCM,uchar BusyC)
{
    if(BusyC)lcd_wait();
	DATAPORT=WCLCM;
    LCM_RS=0;                   // 選中指令寄存器
    LCM_RW=0;               	// 寫模式	
    LCM_EN=1;    
	_nop_();   
	_nop_();
	_nop_(); 
    LCM_EN=0;  
}

/**********寫數據到LCM子函數************/

void WriteDataLCM(uchar WDLCM)
{ 
    lcd_wait( );            //檢測忙信號    
	DATAPORT=WDLCM;
    LCM_RS=1;               // 選中數據寄存器
    LCM_RW=0;           	// 寫模式
    LCM_EN=1;
    _nop_();
	_nop_();
	_nop_();
    LCM_EN=0;
}

/***********lcm內部等待函數*************/

void lcd_wait(void)
{
    DATAPORT=0xff;	     
	LCM_EN=1;
    LCM_RS=0;   			
    LCM_RW=1;   			
    _nop_();
    _nop_();
	_nop_();
    while(DATAPORT&BUSY)
	{
		LCM_EN=0;
	   _nop_();
	   _nop_();
	   LCM_EN=1;
	   _nop_();
	   _nop_();
	}
   	LCM_EN=0;
	
}

/**********LCM初始化子函數***********/

void initLCM( )
{   
	DATAPORT=0;	
	delay_LCM(15);
	WriteCommandLCM(0x38,0);    //三次顯示模式設置,不檢測忙信號
    delay_LCM(5); 
    WriteCommandLCM(0x38,0);
    delay_LCM(5); 
    WriteCommandLCM(0x38,0);
    delay_LCM(5); 

    WriteCommandLCM(0x38,1);    //8bit數據傳送,2行顯示,5*7字型,檢測忙信號
    WriteCommandLCM(0x08,1);    //關閉顯示,檢測忙信號
    WriteCommandLCM(0x01,1);    //清屏,檢測忙信號
    WriteCommandLCM(0x06,1);    //顯示光標右移設置,檢測忙信號
    WriteCommandLCM(0x0c,1);    //顯示屏打開,光標不顯示,不閃爍,檢測忙信號
}

/****************顯示指定坐標的一個字符子函數*************/

void DisplayOneChar(uchar X,uchar Y,uchar DData)
{
    Y&=1;
    X&=15;
    if(Y)X|=0x40;               //若y為1(顯示第二行),地址碼+0X40
    X|=0x80;                    //指令碼為地址碼+0X80
    WriteCommandLCM(X,0);
    WriteDataLCM(DData);
}

/***********顯示指定坐標的一串字符子函數***********/

void DisplayListChar(uchar X,uchar Y,uchar code *DData)
{
    uchar ListLength=0;
    Y&=0x01;
    X&=0x0f;
    while(X<16)
    {
        DisplayOneChar(X,Y,DData[ListLength]);
        ListLength++;
        X++;
    }
}

/***********ds18b20延遲子函數(晶振12MHz )*******/ 

void delay_18B20(unsigned int i)
{
	while(i--);
}

/**********ds18b20初始化函數**********************/

void Init_DS18B20(void) 
{
	 unsigned char x=0;
	 DQ = 1;          //DQ復位
	 delay_18B20(8);  //稍做延時
	 DQ = 0;          //單片機將DQ拉低
	 delay_18B20(80); //精確延時 大于 480us
	 DQ = 1;          //拉高總線
	 delay_18B20(14);
	 x=DQ;            //稍做延時后 如果x=0則初始化成功 x=1則初始化失敗
	 delay_18B20(20);
}

/***********ds18b20讀一個字節**************/  

unsigned char ReadOneChar(void)
{
	uchar i=0;
	uchar dat = 0;
	for (i=8;i>0;i--)
	 {
		  DQ = 0; // 給脈沖信號
		  dat>>=1;
		  DQ = 1; // 給脈沖信號
		  if(DQ)
		  dat|=0x80;
		  delay_18B20(4);
	 }
 	return(dat);
}
/*************ds18b20寫一個字節****************/  

void WriteOneChar(uchar dat)
{
 	unsigned char i=0;
 	for (i=8; i>0; i--)
 	{
  		DQ = 0;
 		DQ = dat&0x01;
    	delay_18B20(5);
 		DQ = 1;
    	dat>>=1;
 }
}

/**************讀取ds18b20當前溫度************/

void ReadTemperature(void)
{
	unsigned char a=0;
	unsigned char b=0;
	unsigned int  t=0;

	Init_DS18B20();
	WriteOneChar(0xCC);    	// 跳過讀序號列號的操作
	WriteOneChar(0x44); 	// 啟動溫度轉換

	delay_18B20(100);       // this message is wery important

	Init_DS18B20();
	WriteOneChar(0xCC); 	//跳過讀序號列號的操作
	WriteOneChar(0xBE); 	//讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度

	delay_18B20(100);

	a=ReadOneChar();    	//讀取溫度值低8位
	b=ReadOneChar();   		//讀取溫度值高8位
	temp1=b<<4;            
	temp1+=(a&0xf0)>>4;     //小數點前的數據
	temp2=a&0x0f;           //小數點后的數據
    temp=temp1;
    
//    temp=((b*256+a)>>4);//當前采集溫度值除16得實際溫度值
	
    

//	temp1 = t/100%10;       //溫度值十位
//  temp2 = t/10%10;        //溫度值個位  
//	temp3 = t%10;           //溫度值十分位
}

/***************液晶顯示子函數1正常顯示*****************/

void displayfun1(void)
{	
	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,minite/10+0x30);
	DisplayOneChar(7,0,minite%10+0x30);
	
	DisplayOneChar(9,0, seconde/10+0x30);
	DisplayOneChar(10,0,seconde%10+0x30);
 
	DisplayOneChar(5,1,temp1/10+0x30);               
	DisplayOneChar(6,1,temp1%10+0x30);
	DisplayOneChar(8,1,temp2/10+0x30);
}

/***************定時器t0初始化*******************/


void init_timer0(void)
{
	 TMOD=0x01;              //time0為定時器,方式1
     TH0=0x3c;               //預置計數初值
     TL0=0xb0;
     EA=1;   								
     ET0=1;          											
     TR0=1;          		
}

/***********定時器t0中斷子函數**************/

void timer0(void) interrupt 1 using 0         //定時器0方式1,50ms中斷一次
{
     TH0=0x3c;
     TL0=0xb0;
     mstcnt++;
     if(mstcnt>=20 )  {seconde++; mstcnt=0; }
	 if(seconde>=60)  {minite++;  seconde=0;}
	 if(minite>=60 )  {hour++;    minite=0; }
	 if(hour>=24   )  {hour=0;}
}


/*****************系統報警子函數***************************/

void playalarm(void)                    //語音提示溫度上升過快
{
	
    if(temp>20&&temp<25)              
	{
		RED_ALARM=0;
		PLAYE_ADDR=0x11;
        _nop_();
		PLAYE_ADDR=0x10;
		delay_LCM(2000);                 //等待放音結束
		RED_ALARM=1;
	}
	
 	if(temp>25&&temp<30)                //語音提示溫度上升過慢
	{
		GREEN_ALARM=0;
		PLAYE_ADDR=0x21;
	 	_nop_();
		PLAYE_ADDR=0x20;
	    delay_LCM(2000);
		GREEN_ALARM=1;
	}
	
	if(temp>30)                         //語音提示恒溫控制
	{
		WRITE_ALARM=0;
		PLAYE_ADDR=0x31;
		_nop_();
		PLAYE_ADDR=0x30;
		delay_LCM(1000);
		WRITE_ALARM=1;
	}
}

/***************the main funtion****************/
    
void main(void)
{ 
    P1=0xff;                                   //初始化p1口,全設為1   
	P3=0xff;    
	delay_LCM(500);	 
	initLCM( );                                //LCD初始化
	init_timer0( );	                           //時鐘定時器0初始化	
	DisplayListChar(0,0,str0);	
	DisplayListChar(0,1,str1);
        Init_DS18B20( );                           //DS18B20初始化
       								
    while (1)
    {                                        
		delay_LCM(10);
		ReadTemperature( );
		playalarm( );
        displayfun1( );
        delay_LCM(10);
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产尤物一区二区在线| 亚洲蜜桃精久久久久久久| 精品亚洲porn| 亚洲一区二区四区蜜桃| 国产精品毛片高清在线完整版| 日韩午夜激情视频| 91久久一区二区| 91蝌蚪porny| 波多野结衣欧美| 福利电影一区二区三区| 婷婷成人综合网| 久久av中文字幕片| 夜夜嗨av一区二区三区中文字幕 | 91精品国产色综合久久不卡电影 | 91精品国产综合久久久久久漫画| 欧美视频在线观看一区二区| 91麻豆自制传媒国产之光| av午夜一区麻豆| 欧美视频在线播放| 欧美日韩免费一区二区三区| 欧美电影一区二区三区| 日韩一区二区中文字幕| 日韩免费看网站| 国产精品卡一卡二| 亚洲精选一二三| 麻豆91免费看| 国产精品亚洲午夜一区二区三区| 国产成人免费在线| 色综合久久综合网| 欧美区视频在线观看| 日本乱码高清不卡字幕| 日韩一级成人av| 欧美国产成人精品| 亚洲日本成人在线观看| 亚洲午夜在线电影| 久久99精品久久久久久久久久久久| 国产精品主播直播| 99久久精品一区二区| 欧美男男青年gay1069videost| 日韩欧美黄色影院| 国产精品无人区| 麻豆精品视频在线观看视频| 成人免费毛片app| 色噜噜夜夜夜综合网| 91麻豆精品久久久久蜜臀| 国产午夜精品久久久久久免费视| 亚洲一区二区中文在线| 蜜桃91丨九色丨蝌蚪91桃色| 国产成人高清视频| 欧美日韩国产a| 国产精品欧美综合在线| 久久精品国产99国产| 色综合色狠狠天天综合色| 欧美一级片在线| 自拍偷拍亚洲欧美日韩| 日本视频一区二区三区| 在线看一区二区| 国产亚洲欧美日韩在线一区| 亚洲gay无套男同| 91美女在线观看| 国产日韩欧美制服另类| 日韩电影免费在线看| 91香蕉视频在线| 精品美女一区二区| 免费观看一级特黄欧美大片| 91成人免费在线| 欧美一区二区三区日韩视频| 亚洲一级二级三级在线免费观看| 高清不卡一区二区| 久久综合九色综合欧美亚洲| 日韩国产精品久久久久久亚洲| 99久久精品久久久久久清纯| 国产欧美日韩另类一区| 麻豆国产精品一区二区三区| 欧美日韩精品是欧美日韩精品| 国产欧美一二三区| 国产精品一级黄| 久久综合色婷婷| 美女一区二区视频| 日本国产一区二区| 午夜精品福利一区二区三区av| 成人激情动漫在线观看| 国产精品色眯眯| 成人激情视频网站| 国产日产亚洲精品系列| 91麻豆国产香蕉久久精品| 国产欧美日韩精品一区| bt7086福利一区国产| 日韩美女精品在线| 久久99精品久久久久久久久久久久| 精品国产乱码久久久久久牛牛| 日韩精品91亚洲二区在线观看| 91麻豆精品久久久久蜜臀 | 伊人夜夜躁av伊人久久| 欧美日韩黄色影视| 日韩精品乱码av一区二区| 欧美精品三级日韩久久| 奇米亚洲午夜久久精品| 欧美日韩国产精品自在自线| 日韩精品一二三四| 久久久久久久av麻豆果冻| 国产精品资源在线| 一区二区国产视频| 欧美电影影音先锋| 日本麻豆一区二区三区视频| 久久久精品国产免费观看同学| 国产自产高清不卡| 亚洲自拍偷拍九九九| 欧美福利一区二区| 视频在线观看一区| 国产精品久久久久久久久动漫| 99视频精品在线| 久久91精品久久久久久秒播| 久久精品在线免费观看| a在线播放不卡| 日韩不卡一二三区| 2023国产精华国产精品| 欧美三级电影在线看| 激情av综合网| 亚洲成人高清在线| 国产欧美日韩综合精品一区二区| 91麻豆免费看片| 国产黄色成人av| 无码av免费一区二区三区试看| 亚洲国产成人在线| 在线不卡的av| 国产成人精品免费在线| 久久精品国产99| 夜夜嗨av一区二区三区网页| 亚洲国产高清aⅴ视频| 911精品国产一区二区在线| 91小视频在线| 国产乱码精品一区二区三区忘忧草| 一区二区三区蜜桃| 国产精品视频九色porn| 欧美一区二区黄| 666欧美在线视频| 99精品热视频| 日韩制服丝袜av| 亚洲午夜精品久久久久久久久| 久久久久久久久久久久电影 | 日韩成人一级片| 久久欧美一区二区| 日韩一区二区三区免费观看| 色婷婷国产精品久久包臀| 波多野结衣在线一区| 麻豆成人91精品二区三区| 日韩欧美一区二区视频| 欧美一区二区三区色| 欧美网站一区二区| 91激情五月电影| av亚洲精华国产精华| av不卡免费电影| 成人午夜伦理影院| 成人动漫在线一区| 国产不卡在线一区| 麻豆成人综合网| 日本少妇一区二区| 国产精品狼人久久影院观看方式| 国产日产欧产精品推荐色 | 国产高清亚洲一区| 国产在线精品一区二区夜色| 精品中文av资源站在线观看| 日韩av电影免费观看高清完整版在线观看| 亚洲国产人成综合网站| 亚洲国产成人av| 免费黄网站欧美| 另类的小说在线视频另类成人小视频在线 | 亚洲国产日日夜夜| 亚洲va韩国va欧美va| 看电影不卡的网站| 天堂av在线一区| 国产综合色视频| 成人一区二区在线观看| 日韩av中文字幕一区二区| 国产中文字幕精品| 成人性生交大片免费| 欧美三级视频在线观看| 91精品国产综合久久久久久| 精品国产一区久久| 国产日本欧美一区二区| 亚洲一区二区三区四区五区黄| 亚洲大片精品永久免费| 曰韩精品一区二区| 毛片一区二区三区| 奇米亚洲午夜久久精品| 国产精品888| 色狠狠一区二区三区香蕉| 欧美成人一区二区三区在线观看| 久久亚洲免费视频| 亚洲制服丝袜在线| 美国一区二区三区在线播放| 91麻豆精东视频| 精品久久久网站| 精品国产精品网麻豆系列 | 在线观看av不卡| 精品国产亚洲在线| 亚洲国产日韩综合久久精品| 极品少妇xxxx偷拍精品少妇| 一本到三区不卡视频|