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

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

?? ds1302.c

?? 時鐘芯片將給顯示時間
?? C
字號:
/******************************
 主程序:顯示分鐘和秒;
 輔助程序:數碼管顯示;
 指導:曾潔
 制作人:卜凡濤
 完成:2008.3.14
**********************************/
#include <iom16v.h>			//包含型號頭文件
#include <macros.h>			//包含"位"操作頭文件
#define uchar unsigned char
#define uint unsigned int

#define TRUE 1
#define FALSE 0
#include "xianshi.C"			//包含1602液晶函數文件

/******************RTC常量******************/
#define RTC_CLK   	PC7
#define RTC_DATA  	PC6
#define RTC_CS    	PC1
	//命令
#define RD	  	0x01
#define WR	  	0x00
#define C_SEC		0x80	//秒
#define C_MIN		0x82	//分
#define C_HR		0x84	//時
#define C_DAY		0x86	//日
#define C_MTH		0x88	//月
#define C_WK		0x8A	//星期 DATE
#define C_YR		0x8C	//年
#define C_WP		0x8E	//控制(寫保護)
#define C_CHARGE	0x90	//涓流充電
#define C_BURST		0xBE	//時鐘多字節
	//配置
#define CLK_HALT		0x80	//停止時鐘控制位    SECOND	bit7
#define CLK_START		0x00	//啟動時鐘
#define M12_24			0x80	//12/24小時值選擇位 HOUR		bit7 
#define PROTECT			0x80	//寫保護控制位      CONTROL	bit7 
#define UPROTECT		0x00	//寫保護控制位      CONTROL	bit7 
	//涓流充電控制常量
#define TC_D1R2			0xA5	//high 1 Diode +2K Resistors  
#define TC_D2R8			0xAB	//low  2 Diodes+8K Resistors  
#define TC_DISABLED		0x00	//Disabled(TCS<>1010 or DS=00 or RS=00)
	//RAM 命令
#define C_RAMBASE		0xC0	//RAM0~RAM30<<1 地址需左移一位 

void Delayus(uint US)		  
{
 uint i;
 US=US*5/4;		  	 //5/4是在8MHz晶振下,通過軟件仿真反復實驗得到的數值
 for( i=0;i<US;i++); 
}
void Delayms(uint MS)		  
{
 uint i,j;
 for( i=0;i<MS;i++)
 for(j=0;j<1141;j++);	//1141是在8MHz晶振下,通過軟件仿真反復實驗得到的數值
}



/*******************************************
函數名稱: DS1302_init
功    能: 初始化DS1302的數據接口
參    數: 無
返回值  : 無
/********************************************/
void DS1302_portinit(void)		  
{
 DDRC|=BIT(RTC_CLK)|BIT(RTC_DATA)|BIT(RTC_CS);//將時鐘端(RTC_CLK)數據端(RTC_DATA)片選端(RTC_CS)設置為輸出
}
/*******************************************
函數名稱: DS1302_writeB
功    能: 向DS1302寫入一個字節數據(沒有RST操作)
參    數: byte--要寫入的數據
返回值  : 無
/********************************************/
void DS1302_writeB(uchar byte)
{
 uchar i;
 for(i=0;i<8;i++)		 	  //8位數據計數
 {
  PORTC&=~BIT(RTC_CLK);		  //拉低時鐘端
  if(byte&0x01)				  //當前位是否是1
  {
   PORTC|=BIT(RTC_DATA);	  //當前位是1,拉高數據端
  }
  else						  
  {
   PORTC&=~BIT(RTC_DATA);	  //當前位是0,拉低數據端
  }  
  Delayus(10);				  //調整時鐘和脈沖寬度
  PORTC|=BIT(RTC_CLK);		  //時鐘上升沿(DS1302采樣數據)
  byte>>=1;					  //數據右移1位,為送出新數據位做準備
 }
}
/*******************************************
函數名稱: DS1302_readB
功    能: 從DS1302讀出一個字節數據(沒有RST操作)
參    數: 無
返回值  : byte--讀出的數據
/********************************************/
uchar DS1302_readB(void)
{
 uchar i,byte=0;
 DDRC&=~BIT(RTC_DATA);		 //將數據端口設置為輸入		  
 PORTC&=~BIT(RTC_DATA);		 //無上拉電阻
 for(i=0;i<8;i++)			 //8位數據計數
 {
  byte>>=1;  				 //保存讀入的數據位
  PORTC|=BIT(RTC_CLK);		 //時鐘上升沿
  Delayus(10);				 //延時,調整時鐘脈沖寬度
  PORTC&=~BIT(RTC_CLK);		 //時鐘下降沿,DS1302輸出數據位
  Delayus(10);				 //等待數據變化(MEGA16太快,必須等待DS1302的數據位輸出,否則不能正確讀出)
  if(PINC&BIT(RTC_DATA))	 //當前位是否是高電平
  {
   byte|=BIT(PC7);			 //是高電平就將返回數據的當前位置1
  }
  else
  {
   byte&=~BIT(PC7);			 //是低電平就將返回數據的當前位置0
  }
 }
 DDRC|=BIT(RTC_DATA);		 //最后將數據端口設置為輸出
 
 byte=byte/16*10+byte%16;  //BCD碼轉為二進制
 
 return byte;				 //返回讀出的數據
}
/*******************************************
函數名稱: DS1302_writeD
功    能: 向DS1302的某個地址寫入一個字節數據
參    數: addr--地址值(寄存器或RAM)
	  	  data--要寫入的地址
返回值  : 無
/********************************************/
void DS1302_writeD(uchar addr,uchar data)
{
 PORTC&=~BIT(RTC_CS);	 //拉低片選端
 PORTC&=~BIT(RTC_CLK);	 //拉低時鐘端
 Delayus(10);
 PORTC|=BIT(RTC_CS);	 //拉高片選端
 Delayus(10); 			 //調整片選脈沖
 DS1302_writeB(addr);	 //寫入操作命令(地址)
 Delayus(10);
 PORTC&=~BIT(RTC_CLK);	 //拉低時鐘端
 Delayus(10);
 DS1302_writeB(data);	 //寫入數據
 PORTC&=~BIT(RTC_CLK);	 //拉低時鐘端
 Delayus(10);			 //調整片選脈沖
 PORTC&=~BIT(RTC_CS);	 //拉低片選端
}
/*******************************************
函數名稱: DS1302_readD
功    能: 從DS1302的某個地址讀出一個字節數據
參    數: addr--地址值(寄存器或RAM)
返回值  : data--讀出的數據
/********************************************/
uchar DS1302_readD(uchar addr)
{
 uchar data;
 PORTC&=~BIT(RTC_CS);	 //拉低片選端
 PORTC&=~BIT(RTC_CLK);	 //拉低時鐘端
 Delayus(10);
 PORTC|=BIT(RTC_CS);	 //拉高片選端
 Delayus(10); 			 //調整片選脈沖
 DS1302_writeB(addr);	 //寫入操作命令(地址)
 Delayus(10);
 data=DS1302_readB();	 //讀出數據
 Delayus(10);
 PORTC&=~BIT(RTC_CLK);	 //拉低時鐘端
 PORTC&=~BIT(RTC_CS); 	 //拉低片選端
 return data;			 //返回讀出的數據
}
/*******************************************
函數名稱: DS1302_setT
功    能: 設置DS1302的時間
參    數: ptTimeD--設置時間數組指針
返回值  : 無
/********************************************/
void DS1302_setT(uchar ptTimeD[])
{
    uchar i;
    uchar addr = 0x80; 			 	  //寫入地址從秒寄存器開始
    DS1302_writeD(C_WP|WR,UPROTECT); //控制命令,WP位為0,允許寫操作
	Delayms(5);
    for(i=0;i<2;i++)
    {
        DS1302_writeD(addr|WR,ptTimeD[i]);   // 秒 分 時 日 月 星期 年         
        addr+=2;
		Delayms(1);
    }
    DS1302_writeD(C_WP|WR,PROTECT); 		//控制命令,WP位為1,不允許寫操作
}
/*******************************************
函數名稱: DS1302_getT
功    能: 讀取DS1302的當前時間
參    數: time[]--讀取的時間數組
返回值  : 無
/********************************************/
void DS1302_getT(uchar time[])
{
    uchar i;
    PORTC&=~BIT(RTC_CS);	 //拉低片選端
     Delayus(10);
     PORTC|=BIT(RTC_CS);	 //拉高片選端
     Delayus(10); 			 //調整片選脈沖
	 DS1302_writeB(0xbf);       // 0xbf:時鐘多字節讀取命令 
     for (i=0;i<2;i++)       //時間數據的存放格式是:
       {                        //秒,分,時,日,月,星期,年,控制
         time[i]=DS1302_readB(); //【7個數據(BCD格式)+1個控制】 
       }
				
     PORTC&=~BIT(RTC_CS); 	 //拉低片選端
     PORTC&=~BIT(RTC_CLK);	 				  //拉低時鐘端(時鐘端在不操作時為低)
}
/*******************************************
函數名稱: DS1302_check
功    能: 檢測DS1302是否正常工作
參    數: 無
返回值  : exist--為TRUE為檢測到DS1302,為FALSE為沒檢測到
/********************************************/
uchar DS1302_check(void)
{
	uchar exist;
    DS1302_writeD(C_WP|WR,UPROTECT);		  //寫入寫允許命令
    DS1302_writeD(C_RAMBASE|WR,0xA5);		  //RAM0寫入0xA5
    exist=DS1302_readD(C_RAMBASE|RD);		  //讀取RAM0
    if(exist==0xA5)	
	{
	 exist=TRUE;							  //如果讀取值與寫入值相等,返回TRUE
	}
    else 	
	{
	 exist=FALSE;							  //如果讀取值與寫入值不相等,返回FALSE
	}	
	return exist;
}
/*******************************************
函數名稱: DS1302_init
功    能: 初始化DS1302
參    數: 無
返回值  : 無
/********************************************/
void DS1302_init(void)
{
 DS1302_writeD(C_WP|WR,UPROTECT);		  //寫入寫允許命令
 DS1302_writeD(C_SEC|WR,CLK_START);		//啟動振蕩器,DS1302開始工作
 DS1302_writeD(C_WP|WR,PROTECT); 		//控制命令,WP位為1,不允許寫操作	  
}
/*******************************************
函數名稱: BCD_ASCII
功    能: 將壓縮BCD碼轉換成ascii碼
參    數: BCD--將要轉換的壓縮BCD碼
	  	  ptasc--轉換后的ASCII碼數組指針
返回值  : 無
/********************************************/
void BCD_ASCII(uchar BCD,uchar ptasc[])
{ 	
	ptasc[0]=BCD/16|0x30;	//0X58	35  38 //轉換十位
	ptasc[1]=BCD&0x0F|0x30;  //轉換個位
}
/*******************************************
函數名稱: Disp_time
功    能: 在1602液晶上顯示當前時間(第1行格式:年-月-日 星期;第2行格式:時-分-秒)
參    數: time[]--時間數組
返回值  : 無
/********************************************/
void Disp_time(uchar time[])
{ uint dm[4];
  uchar i,m,n;
  
  
  m=(uint)time[0];
  n=(uint)time[1];
 
  for(i=1;i<3;i++)
      { dm[4-i]=m%10;
         m=m/10;
       }
     for(i=3;i<5;i++)
      { dm[4-i]=n%10;
        n=n/10;
       }
    for(i=0;i<4;i++)
      { show(dm[i],i);
       
		PORTD=0XFF;
       }
  
  
  
}
/*******************************************
函數名稱: main
功    能: 1. 在1602液晶上顯示當前時間 2.可以設置時間(M1-M9為數字0-9,M13為設置模式和顯示模式選擇,M14為當前設置位選擇)
參    數: 無
返回值  : 無
/********************************************/
void main(void)
{
 	
	
	uchar setadd,setdat,shift;	  //setadd指定將當前數值送入DS1302的哪個寄存器
 	   						  //setdat是當前設置的數值,即被送入DS1302指定寄存器的數
							  //shift來實現十位和各位的設置相互獨立(因為十位和個位是在一個寄存器里的)
 //uchar dis_x,dis_y;			  //存儲1602液晶當前光標的位置
 uchar settime[2]={0X59,0X50};//設置的秒,分,時,日,月,星期,年
 uchar gettime[2]={0X00,0X00};//保存當前時間的數組
 //LCD1602_initial(); 		//初始化1602液晶
 DS1302_portinit();			//初始化DS1302的三根數據線
 DS1302_init();				//啟動振蕩器,DS1302開始工作 
 DS1302_setT(settime);		//設置初始時間
 				
			//以下程序完成顯示和設置時間
 while(1)
 {
   DS1302_getT(gettime);	//獲得當前時間
   
   Disp_time(gettime);		//顯示當前時間
 }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
加勒比av一区二区| 99国产精品国产精品毛片| 麻豆精品在线播放| 亚洲午夜av在线| 久久精品国产99国产| 成人激情动漫在线观看| 在线看日韩精品电影| 欧美日高清视频| 久久精品欧美一区二区三区不卡| 一区二区在线观看视频| 免费欧美在线视频| 国产成人午夜精品5599 | 一区视频在线播放| 日韩精品一区第一页| 99久久精品国产精品久久| 欧美一区二区三区在| 国产精品三级av在线播放| 一区二区三区在线免费| 成人动漫视频在线| 日韩欧美一级片| 亚洲精品ww久久久久久p站| 国产aⅴ综合色| 欧美大尺度电影在线| 亚洲色欲色欲www| 狠狠色丁香久久婷婷综| 这里只有精品电影| 一区二区三区日本| 成人精品视频一区| 日韩一区二区视频在线观看| 亚洲午夜在线电影| www.激情成人| 国产色产综合产在线视频| 一区二区成人在线| 欧美日韩精品高清| 1000精品久久久久久久久| 国精产品一区一区三区mba视频| 色婷婷综合久久久久中文一区二区 | 蜜臀av亚洲一区中文字幕| 在线一区二区三区| 久久99精品网久久| 欧美综合亚洲图片综合区| 亚洲品质自拍视频网站| 久久国产精品色婷婷| 欧美色图激情小说| 一区二区中文视频| 菠萝蜜视频在线观看一区| 国产精品久久免费看| 国产成人精品一区二| 精品国产一区二区三区忘忧草| 激情综合色丁香一区二区| 日韩免费观看2025年上映的电影| 人人爽香蕉精品| 日本精品视频一区二区三区| 一区二区三区国产精品| 91丝袜呻吟高潮美腿白嫩在线观看| 国产精品人人做人人爽人人添| 成人美女在线视频| 亚洲色图另类专区| 在线免费观看日本欧美| 亚洲欧美视频在线观看| 色香色香欲天天天影视综合网| 亚洲欧美日韩小说| 91麻豆精品国产91久久久资源速度| 日韩电影免费在线观看网站| 欧美一区二区三区日韩| 久久9热精品视频| 国产精品毛片久久久久久久| av不卡免费在线观看| 一区二区三区在线免费观看| 欧美一区二区三区免费在线看| 激情久久五月天| 国产精品丝袜91| 色狠狠综合天天综合综合| 亚洲一区二区三区四区的| 在线免费观看日本欧美| 日韩电影网1区2区| 欧美激情一区二区三区蜜桃视频 | 精品久久久影院| 国产精品一区久久久久| 亚洲国产成人在线| 欧美三级电影在线观看| 成人污视频在线观看| 夜夜爽夜夜爽精品视频| 欧美一区二区三区视频在线| 日韩二区三区在线观看| ...xxx性欧美| 欧美日本在线看| 国产成人精品www牛牛影视| 国产精品久久久久精k8| 777久久久精品| 成人18视频在线播放| 舔着乳尖日韩一区| 亚洲日本在线a| 精品欧美一区二区久久| 91久久一区二区| 免费在线看一区| 亚洲香肠在线观看| 久久精品国产一区二区三| 中文字幕在线一区二区三区| 日韩精品专区在线影院重磅| 国产成人小视频| 一区二区三区久久| 中文字幕一区二区三| 精品嫩草影院久久| 欧美艳星brazzers| 色网站国产精品| 本田岬高潮一区二区三区| 免费看日韩精品| 天堂久久久久va久久久久| 中文字幕日韩av资源站| 精品不卡在线视频| 制服丝袜亚洲精品中文字幕| 精品视频免费看| 99国产精品国产精品毛片| 国产宾馆实践打屁股91| 久久se精品一区精品二区| 午夜精品久久久久久久久| 成人欧美一区二区三区| 精品国产成人在线影院| 久久综合狠狠综合久久激情 | 中文字幕一区二区三区四区不卡 | 精品欧美一区二区久久| 91精品国产福利| 欧美视频中文字幕| 欧美日韩一二三| 欧美日韩一区国产| 日韩一二三区不卡| 2023国产一二三区日本精品2022| 日韩欧美123| 久久精品一二三| 国产精品丝袜在线| 亚洲在线一区二区三区| 婷婷成人综合网| 国产又粗又猛又爽又黄91精品| 国产91高潮流白浆在线麻豆| 国产91在线看| 在线观看日韩av先锋影音电影院| 欧美日韩色综合| 欧美tickling挠脚心丨vk| 久久精品水蜜桃av综合天堂| 亚洲日本va在线观看| 亚洲国产精品一区二区久久恐怖片 | 欧洲一区二区三区在线| 51午夜精品国产| 久久精品亚洲国产奇米99| 亚洲欧美日韩精品久久久久| 三级一区在线视频先锋| 粗大黑人巨茎大战欧美成人| 91久久线看在观草草青青| 欧美一卡二卡三卡| 国产精品丝袜久久久久久app| 一区二区久久久| 精品一区二区在线免费观看| 99综合电影在线视频| 欧美一区二区黄色| 日韩久久一区二区| 青青青爽久久午夜综合久久午夜| 成人一区二区在线观看| 综合欧美亚洲日本| 天天色综合天天| 91视频.com| 久久九九久久九九| 石原莉奈在线亚洲二区| 东方aⅴ免费观看久久av| 宅男在线国产精品| 亚洲精品videosex极品| 粉嫩嫩av羞羞动漫久久久| 欧美人与禽zozo性伦| 亚洲欧美另类图片小说| 久久国产福利国产秒拍| 91成人在线观看喷潮| 国产色91在线| 韩国av一区二区三区| 欧美精品一二三四| 亚洲精品v日韩精品| 丰满少妇在线播放bd日韩电影| 91精品国产综合久久精品麻豆 | 欧美一区二区三区免费大片| 亚洲狼人国产精品| eeuss国产一区二区三区| 久久久99精品免费观看| 麻豆国产一区二区| 欧美女孩性生活视频| 亚洲精品日日夜夜| 成人av在线一区二区三区| 久久久.com| 国产精品88av| 久久嫩草精品久久久久| 久久电影网电视剧免费观看| 欧美一区二区私人影院日本| 亚洲第一成年网| 欧美色大人视频| 亚洲午夜一区二区| 欧美亚洲日本国产| 亚洲一区二区欧美| 日本高清不卡视频| 亚洲成人在线网站| 欧美日韩国产另类不卡| 亚洲国产欧美在线| 7777女厕盗摄久久久|