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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 2402test.c

?? 單片機(jī)入門制作專題_配套光盤 [1]
?? C
?? 第 1 頁 / 共 3 頁
字號(hào):

/********************************************************************************************
//Dy-2402C 桌面控制鐘
//應(yīng)用程序 C 
//杜洋
//V1.0 2007-4-20
//MCS-51 12MHZ C語言
//LCM2402 89S52 DS18B20 DS1302 AT24C02 紅外接收IC
*********************************************************************************************/

/********************************************************************************************/
#include <AT89X52.h>
#include <string.h>                               // 包含頭文件    
/********************************************************************************************/
typedef unsigned char      uint8;                // 無符號(hào)8位整型變量
typedef unsigned short     uint16;               // 無符號(hào)16位整型變量
typedef signed   char      int8;                 // 有符號(hào)8位整型變量

sbit LED1   = P2 ^ 3;                      // 定義LCM2402的RS控制線

/********************************************************************************************/
//全局變量
static unsigned char data IRCode[3],IRCON,IRCON2;//遙控器中斷專用
static unsigned char data DT,menu,rom,alarm_con;//遙控寄存值/菜單值/定時(shí)器組值/報(bào)警開關(guān)選擇
/********************************************************************************************/


//=================================LCM2402模塊驅(qū)動(dòng)===========================================//

/********************************************************************************************/
#define      LCM2402_DB0_DB7      P0             // 定義LCM2402的數(shù)據(jù)總線

sbit LCM2402_RS   = P1 ^ 0;                      // 定義LCM2402的RS控制線
sbit LCM2402_RW   = P1 ^ 2;                      // 定義LCM2402的RW控制線
sbit LCM2402_E    = P1 ^ 1;                      // 定義LCM2402的E控制線
sbit LCM2402_Busy = P0 ^ 7;                      // 定義LCM2402的測(cè)忙線(與LCM2402_DB0_DB7關(guān)聯(lián))

/********************************************************************************************/
//定義LCM2402指令集//
#define			CMD_clear		0x01             // 清除屏幕
#define			CMD_back		0x02             // DDRAM回零位
#define			CMD_dec1		0x04             // 讀入后AC(指針)減1,向左寫
#define			CMD_add1		0x06             // 讀入后AC(指針)加1,向右寫
#define			CMD_dis_gb1		0x0f             // 開顯示_開光標(biāo)_開光標(biāo)閃爍
#define			CMD_dis_gb2		0x0e             // 開顯示_開光標(biāo)_關(guān)光標(biāo)閃爍
#define			CMD_dis_gb3		0x0c             // 開顯示_關(guān)光標(biāo)_關(guān)光標(biāo)閃爍
#define			CMD_OFF_dis		0x08             // 關(guān)顯示_關(guān)光標(biāo)_關(guān)光標(biāo)閃爍
#define			CMD_set82		0x38             // 8位總線_2行顯示
#define			CMD_set81		0x30             // 8位總線_1行顯示(上邊行)
#define			CMD_set42		0x28             // 4位總線_2行顯示
#define			CMD_set41		0x20             // 4位總線_1行顯示(上邊行)
#define			lin_1			0x80             // 4位總線_1行顯示(上邊行)
#define			lin_2			0xc0             // 4位總線_1行顯示(上邊行)


/********************************************************************************************[底層協(xié)議]
* 函數(shù)名稱:DelayS()	
* 功    能:延時(shí)
*********************************************************************************************/
void DelayS(unsigned int a){
	unsigned char i;
	while( --a != 0){		
		for(i = 0; i < 125; i++);  	//一個(gè) ; 表示空語句,CPU空轉(zhuǎn)。
	}   				   			//i 從0加到125,CPU大概就耗時(shí)1毫秒
}
void DelayS250(void){
	DelayS(250);
}
/********************************************************************************************[底層協(xié)議]
* 函數(shù)名稱:LCM2402_TestBusy()
* 功    能:LCM2402測(cè)忙,若LCM2402處于忙狀態(tài),本函數(shù)將繼續(xù)測(cè)忙,直到LCM2402處于非忙狀態(tài)。
*********************************************************************************************/
void LCM2402_TestBusy(void){
   LCM2402_DB0_DB7 = 0xff;//設(shè)備讀狀態(tài)
   LCM2402_RS = 0;
   LCM2402_RW = 1;
   LCM2402_E = 1;
   while(LCM2402_Busy);//等待LCM不忙
   LCM2402_E = 0;//
}
/********************************************************************************************[底層協(xié)議]
* 函數(shù)名稱:LCM2402_WriteCMD()
* 功    能:向LCM2402寫命令。
* 入口參數(shù):LCM2402_command     要寫入LCM2402的命令字節(jié)
* 出口參數(shù):無
*********************************************************************************************/
void LCM2402_WriteCMD(uint8 LCM2402_command) { 
  LCM2402_TestBusy();
  LCM2402_DB0_DB7 = LCM2402_command;
  LCM2402_RS = 0;
  LCM2402_RW = 0;
  LCM2402_E = 1;
  LCM2402_E = 0;
}
/********************************************************************************************[底層協(xié)議]
* 函數(shù)名稱:LCM2402_WriteData()
* 功    能:向LCM2402寫數(shù)據(jù)。
* 入口參數(shù):LCM2402_data     要寫入LCM2402的數(shù)據(jù)字節(jié)
* 出口參數(shù):無
*********************************************************************************************/
void LCM2402_WriteData(uint8 LCM2402_data){ 
    LCM2402_TestBusy();
	LCM2402_DB0_DB7 = LCM2402_data;
  LCM2402_RS = 1;
  LCM2402_RW = 0;
  LCM2402_E = 1;
  LCM2402_E = 0;
}
/********************************************************************************************
* 函數(shù)名稱:LCM2402_Init()
* 功    能:LCM2402初始化
* 入口參數(shù):無
* 出口參數(shù):無
*********************************************************************************************/
void LCM2402_Init(void){
  LCM2402_WriteCMD(CMD_set82);// 顯示模式設(shè)置:顯示2行,每個(gè)字符為5*7個(gè)像素
  LCM2402_WriteCMD(CMD_clear);// 顯示清屏
  LCM2402_WriteCMD(CMD_back);// 數(shù)據(jù)指針指向第1行第1個(gè)字符位置
  LCM2402_WriteCMD(CMD_add1);// 顯示光標(biāo)移動(dòng)設(shè)置:文字不動(dòng),光標(biāo)右移
  LCM2402_WriteCMD(CMD_dis_gb3); // 顯示開及光標(biāo)設(shè)置:顯示開,光標(biāo)開,閃爍開
}


/********************************************************************************************
* 函數(shù)名稱:print()
* 功    能:向LCM發(fā)送一個(gè)字符串,長(zhǎng)度48字符之內(nèi)。//應(yīng)用:print("doyoung.net");
* 入口參數(shù):字符串
* 出口參數(shù):無
*********************************************************************************************/
void print(uint8 a,uint8 *str){
		LCM2402_WriteCMD(a);
		while(*str != '\0'){
			LCM2402_WriteData(*str++);
        }
		*str = 0;
}
/********************************************************************************************
* 函數(shù)名稱:print2()
* 功    能:向LCM發(fā)送一個(gè)字符串,長(zhǎng)度48字符之內(nèi)。//應(yīng)用:print("doyoung.net");
* 入口參數(shù):字符串
* 出口參數(shù):無
*********************************************************************************************/
void print2(uint8 a,uint8 t){//設(shè)置寫入地址和數(shù)據(jù)//
		LCM2402_WriteCMD(a);
		LCM2402_WriteData(t);
}



//=================================AT24C02模塊驅(qū)動(dòng)===========================================//
//應(yīng)用舉例//
//AT24C02_Write1Byte(0x02,0xaa);                 	// 向AT24C02的地址0x02寫入0xaa
//i = AT24C02_Read1Byte(0x02);              		// 從AT24C02的地址0x02讀出數(shù)據(jù)給變量i
/*********************************************************************************************/
#define AT24C02_WriteDeviceAddress 0xa0			 /* 定義器件在I2C總線中的地址 */
#define AT24C02_ReadDeviceAddress  0xa1
sbit SCL=P2^1;      /* 定義位變量 */             // I2C總線的時(shí)鐘信號(hào)
sbit SDA=P2^2;                                   // I2C總線的數(shù)據(jù)信號(hào)
#define TRUE        1
#define FALSE       0
#define I2C_DelayTime 60                         // 不要小于50,否則可能造成時(shí)序混亂
/********************************************************************************************
* 函數(shù)名稱:I2C_Delay()
* 功    能:I2C總線軟件延時(shí)
* 入口參數(shù):count    延時(shí)參數(shù),值越大,延時(shí)越長(zhǎng)
* 出口參數(shù):無
*********************************************************************************************/
void I2C_Delay(uint16 count){
  while(count!=0) count--;
}
/********************************************************************************************
* 函數(shù)名稱:I2C_Start()
* 功    能:?jiǎn)?dòng)I2C總線
* 入口參數(shù):無
* 出口參數(shù):無
*********************************************************************************************/
void I2C_Start(void){
  SDA=1; 
  SCL=1; 
  I2C_Delay(I2C_DelayTime);
  SDA=0; 
  I2C_Delay(I2C_DelayTime);
  SCL=0;
  I2C_Delay(I2C_DelayTime);
}
/********************************************************************************************
* 函數(shù)名稱:I2C_Stop()
* 功    能:終止I2C總線
* 入口參數(shù):無
* 出口參數(shù):無
*********************************************************************************************/
void I2C_Stop(void){
  SDA=0;
  SCL=1;
  I2C_Delay(I2C_DelayTime);
  SDA=1;
  I2C_Delay(I2C_DelayTime);
  SCL=0;
  I2C_Delay(I2C_DelayTime);
}
/********************************************************************************************
* 函數(shù)名稱:I2C_Send_Bit_0()
* 功    能:發(fā)送比特0
* 入口參數(shù):無
* 出口參數(shù):無
*********************************************************************************************/
void I2C_Send_Bit_0(void){
  SDA=0;
  SCL=1;
  I2C_Delay(I2C_DelayTime);
  SCL=0;
  I2C_Delay(I2C_DelayTime);
}
/********************************************************************************************
* 函數(shù)名稱:I2C_Send_Bit_1()
* 功    能:發(fā)送比特1
* 入口參數(shù):無
* 出口參數(shù):無
*********************************************************************************************/
void I2C_Send_Bit_1(void){
  SDA=1;
  SCL=1;
  I2C_Delay(I2C_DelayTime);
  SCL=0;
  I2C_Delay(I2C_DelayTime);
}
/********************************************************************************************
* 函數(shù)名稱:I2C_Check_Ack()
* 功    能:發(fā)送完一個(gè)字節(jié)后檢驗(yàn)設(shè)備的應(yīng)答信號(hào)
* 入口參數(shù):無
* 出口參數(shù):返回值為True,成功
*           返回值為False,失敗
*********************************************************************************************/
bit I2C_Check_Ack(void){
  SDA=1;
  SCL=1;
  I2C_Delay(I2C_DelayTime/2);
  F0=SDA;
  I2C_Delay(I2C_DelayTime/2);
  SCL=0;
  I2C_Delay(I2C_DelayTime);
  if(F0==1) return FALSE;
  return TRUE;
}
/********************************************************************************************
* 函數(shù)名稱:I2C_Write8Bit()
* 功    能:向I2C總線寫入8bit數(shù)據(jù)
* 入口參數(shù):I2C_data     將要寫入I2C總線的8bit數(shù)據(jù) 
* 出口參數(shù):無
*********************************************************************************************/
void I2C_Write8Bit(uint8 I2C_data)reentrant{
	uint8 i;
	for(i=0;i<8;i++){
		if((I2C_data<<i)&0x80){
			I2C_Send_Bit_1();
		}
		else{
			I2C_Send_Bit_0();
		}
	}
}
/********************************************************************************************
* 函數(shù)名稱:I2C_Read8Bit()
* 功    能:從I2C總線接收8bit數(shù)據(jù)
* 入口參數(shù):無
* 出口參數(shù):返回值為從I2C總線上接收到的8bit數(shù)據(jù)
*********************************************************************************************/
uint8 I2C_Read8Bit(void)reentrant{
	uint8 I2C_data=0,i;  
	for(i=0;i<8;i++){   
		SDA=1;    
		SCL=1;    
		I2C_Delay(10);
		F0=SDA;
		I2C_Delay(10);
		SCL=0;
		if(F0==1){
			I2C_data=I2C_data<<1;
			I2C_data=I2C_data|0x01;
		}
		else{
			I2C_data=I2C_data<<1;
		}
	}
    return I2C_data;
}
/********************************************************************************************
* 函數(shù)名稱:AT24C02_Write1Byte()
* 功    能:向AT24C02指定地址上寫入1字節(jié)數(shù)據(jù)
* 入口參數(shù):AT24C02_Address   AT24C02內(nèi)的地址
*           AT24C02_1Byte     將要寫入AT24C02的1字節(jié)數(shù)據(jù)
* 出口參數(shù):無
*********************************************************************************************/
void AT24C02_Write1Byte(	uint8 AT24C02_Address,
							uint8 AT24C02_1Byte){
  bit AckTemp=1;  
  I2C_Start();
  I2C_Write8Bit(AT24C02_WriteDeviceAddress);
  AckTemp=I2C_Check_Ack();
  I2C_Write8Bit(AT24C02_Address);                   
  AckTemp=I2C_Check_Ack();
  I2C_Write8Bit(AT24C02_1Byte);                 
  AckTemp=I2C_Check_Ack();
  I2C_Stop();
}
/********************************************************************************************
* 函數(shù)名稱:AT24C02_Read1Byte()
* 功    能:從AT24C02指定地址上讀出1字節(jié)數(shù)據(jù)
* 入口參數(shù):AT24C02_Address   AT24C02內(nèi)的地址
* 出口參數(shù):從AT24C02指定地址上讀出的1字節(jié)數(shù)據(jù)
*********************************************************************************************/
uint8 AT24C02_Read1Byte(uint8 AT24C02_Address){    
	bit AckTemp=1;  
  	uint8 AT24C02_1Byte;
  	I2C_Start();
  	I2C_Write8Bit(AT24C02_WriteDeviceAddress);
  	AckTemp=I2C_Check_Ack();
  	I2C_Write8Bit(AT24C02_Address);
  	AckTemp=I2C_Check_Ack();
  	I2C_Start();
  	I2C_Write8Bit(AT24C02_ReadDeviceAddress);
  	AckTemp=I2C_Check_Ack();
  	AT24C02_1Byte=I2C_Read8Bit();
  	AckTemp=I2C_Check_Ack();
  	I2C_Stop();
  	return AT24C02_1Byte;
}
/********************************************************************************************/
//設(shè)置定時(shí)值程序
void Set_alarm(unsigned char m,unsigned char sel,bit a){ //根據(jù)選擇調(diào)整的相應(yīng)項(xiàng)目加1并寫入DS1302
  signed char address,item,item2;
  signed char max,mini;
  if(sel==7)  {address=0x0B; max=59;mini=0;}     //秒7
  if(sel==6)  {address=0x0A; max=59;mini=0;}    //分鐘6
  if(sel==5)  {address=0x09; max=23;mini=0;}    //小時(shí)5
  if(sel==4)  {address=0x08; max=7;mini=1;}    //星期4  
  if(sel==3)  {address=0x07; max=31;mini=0;}    //日3
  if(sel==2)  {address=0x06; max=12;mini=0;}    //月2
  if(sel==1)  {address=0x05; max=99; mini=0;}    //年1
  if(sel==8)  {address=0x04; max=99; mini=0;}    //鍵號(hào)值
  address=address+(m*10);//選擇定時(shí)項(xiàng)組

  		
  if (a == 0){//如果a是0則表示現(xiàn)在鍵入的是 十位 數(shù)據(jù)
  	AT24C02_Write1Byte(address,0x00);//將 個(gè)位 的數(shù)據(jù)清0 防止數(shù)值范圍計(jì)算有錯(cuò)
    item = DT;//鍵值數(shù)給 十位
	item2 = 0;// 個(gè)位 填入 0
  }
  else{//否則是 個(gè)位數(shù)據(jù)
  	if(sel == 4){
		item = 0;
	}
	else{
  		item = (AT24C02_Read1Byte(address))/16;//先讀出 十位 數(shù)據(jù)
	}
    item2 = DT;//鍵值放入 個(gè)位
  }  
  item=(item)*10 + (item2);//將 十位 和 個(gè)位 數(shù)據(jù)合成	 
  if(item>max) item=mini;//查看數(shù)值有效范圍   
  if(item<mini) item=max;           
  AT24C02_Write1Byte(address,(item/10)*16+item%10);//轉(zhuǎn)換成16進(jìn)制寫入24C00
  if(DT == 0x12){
  	AT24C02_Write1Byte(address,0xff);
  }	
}
/*****************************************************************************/



//===================================DS18B20驅(qū)動(dòng)===========================================//
sbit DQ   = P2 ^ 0;                      // 定義DS18B20數(shù)據(jù)線

/******************************************************************************/
void Delay(int num)//延時(shí)函數(shù)
{
	while(num--) ;
}	
/******************************************************************************/

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜a成v人精品| 97精品国产97久久久久久久久久久久| 欧美精品成人一区二区三区四区| 久久99久国产精品黄毛片色诱| 亚洲视频你懂的| 国产偷国产偷亚洲高清人白洁| 欧美一区二区女人| 欧美视频在线观看一区| 99精品欧美一区| 日韩无一区二区| 精品国产一二三区| 久久日韩粉嫩一区二区三区| 国产日韩影视精品| 欧美经典一区二区| 久久影院电视剧免费观看| 久久奇米777| 蜜臀av一级做a爰片久久| 亚洲亚洲精品在线观看| 爽爽淫人综合网网站| 琪琪久久久久日韩精品| 国产一区二区三区黄视频| 国产老女人精品毛片久久| 国产成人av资源| 91免费看`日韩一区二区| 成人av电影在线播放| 91在线云播放| 亚洲国产高清aⅴ视频| 国产在线日韩欧美| 不卡欧美aaaaa| 久久综合色综合88| 精品一二三四区| 日韩欧美不卡在线观看视频| 国产日韩v精品一区二区| 国产一区在线观看视频| 欧美sm美女调教| 亚洲欧美偷拍另类a∨色屁股| 国产精品视频麻豆| 亚洲国产视频一区| 欧美日韩视频在线观看一区二区三区 | 国产欧美视频一区二区| 国内欧美视频一区二区| 久久久精品黄色| 顶级嫩模精品视频在线看| 99re这里只有精品首页| 中文字幕久久午夜不卡| 99在线精品视频| 欧美一级精品在线| 亚洲福利一区二区三区| 在线综合+亚洲+欧美中文字幕| 国产亚洲一区二区三区| 国产.精品.日韩.另类.中文.在线.播放| 日韩精品中午字幕| 国产精品羞羞答答xxdd| 国产精品福利影院| 国产乱一区二区| 国产精品午夜春色av| 一本久道中文字幕精品亚洲嫩| 欧美日韩高清影院| 亚洲精品高清视频在线观看| 国产成人精品一区二区三区四区| 国产欧美精品一区二区三区四区| 成人在线一区二区三区| 精品免费日韩av| 国产精品一二一区| 亚洲一区自拍偷拍| 一本到三区不卡视频| 亚洲成人黄色影院| 欧洲亚洲国产日韩| 自拍偷拍亚洲欧美日韩| 欧美亚洲图片小说| 高清在线不卡av| 一区二区三区免费看视频| 成人丝袜视频网| 亚洲国产色一区| 国产情人综合久久777777| 在线观看欧美精品| 狠狠色综合日日| 亚洲女与黑人做爰| 精品久久久久久久久久久院品网| 97成人超碰视| 久久精品国产99国产精品| 日韩精品一区二区三区蜜臀| 成人自拍视频在线| 老色鬼精品视频在线观看播放| 亚洲欧洲在线观看av| 国产成人av在线影院| 五月天欧美精品| 中文字幕日韩精品一区 | 亚洲风情在线资源站| 国产欧美精品日韩区二区麻豆天美| 欧美日韩你懂得| av不卡免费在线观看| 九九精品一区二区| 偷拍一区二区三区四区| 亚洲色图视频网| 久久久久久久久久久黄色| 欧美精品免费视频| 欧美在线观看一二区| www.日韩精品| 国产精品911| 国产麻豆精品久久一二三| 青青草视频一区| 亚洲小少妇裸体bbw| 亚洲女人的天堂| 国产精品毛片无遮挡高清| 久久亚洲一区二区三区明星换脸| 欧美美女视频在线观看| 欧美日韩一二三区| 色老汉一区二区三区| 午夜视频在线观看一区| 日韩码欧中文字| 欧美极品美女视频| 欧美激情资源网| 国产三级精品视频| 国产亚洲欧洲997久久综合| 日韩三级中文字幕| 欧美精品三级在线观看| 日韩午夜精品电影| 欧美一级高清大全免费观看| 欧美日韩亚洲综合一区二区三区| 欧洲国产伦久久久久久久| 日本福利一区二区| 欧美三级乱人伦电影| 欧美日韩中文一区| 91麻豆精品国产91久久久久| 精品视频一区二区三区免费| 欧美蜜桃一区二区三区| 欧美一区二区在线播放| 日韩欧美国产综合| 久久免费看少妇高潮| 国产日韩一级二级三级| 国产精品萝li| 亚洲午夜影视影院在线观看| 一区二区三区不卡视频| 青青草97国产精品免费观看| 麻豆91精品视频| 国产mv日韩mv欧美| 色综合天天综合给合国产| 蜜臀久久99精品久久久久宅男| 蜜臀av国产精品久久久久| 久久99国产精品麻豆| 国产精品91一区二区| 成人av网站在线观看| 色激情天天射综合网| 91成人免费在线| 日韩欧美国产综合在线一区二区三区| 欧美精品一区二区在线观看| 国产网红主播福利一区二区| 天天影视色香欲综合网老头| 日韩不卡免费视频| 亚洲黄色片在线观看| 日韩激情一二三区| 国产98色在线|日韩| 色欧美乱欧美15图片| 91精品国产综合久久国产大片| 亚洲精品在线免费播放| 国产精品国模大尺度视频| 亚洲午夜成aⅴ人片| 国产一区二区h| 在线观看亚洲精品视频| 欧美成人午夜电影| 亚洲精品亚洲人成人网| 麻豆一区二区三区| 色婷婷久久综合| 久久精品一二三| 日韩专区一卡二卡| 99久久久精品| 久久日韩精品一区二区五区| 亚洲精品视频一区| 国产麻豆精品在线| 欧美精品在线观看一区二区| 中文字幕电影一区| 激情文学综合插| 91国偷自产一区二区使用方法| 国产女同互慰高潮91漫画| 天天亚洲美女在线视频| 成人91在线观看| 2021中文字幕一区亚洲| 日韩av电影免费观看高清完整版在线观看| 亚洲婷婷国产精品电影人久久| 午夜精品久久久久久久99樱桃| www.激情成人| 欧美成人一区二区| 午夜精品久久久久久| 91精品办公室少妇高潮对白| 中文字幕国产一区二区| 国产成人高清视频| 久久久久久免费| 韩国女主播成人在线| 日韩精品专区在线影院观看| 一级特黄大欧美久久久| av男人天堂一区| 亚洲图片欧美激情| 一本一道综合狠狠老| 亚洲欧美aⅴ...| 欧美无乱码久久久免费午夜一区 | 日韩av一二三| 7878成人国产在线观看| 性欧美大战久久久久久久久| 欧美日韩综合色|