新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 51單片機+ds1302+ds18b20+1602液晶萬年歷

51單片機+ds1302+ds18b20+1602液晶萬年歷

作者: 時間:2016-11-29 來源:網(wǎng)絡 收藏
這是我寫的單片機小程序,將單片機開發(fā)板上的ds1302,ds18b20和1602綜合起來,在1602上顯示年月日周時分秒和溫度;望各位好友指點,此程序僅適用于我的開發(fā)板,用在其他開發(fā)板上應該改下端口就可以。


本文引用地址:http://2s4d.com/article/201611/323521.htm
#include typedef unsigned char uint8;typedef unsigned int uint16;typedef long int uint32;//****************************************************************************************************sbit DQ=P2^2;//********************供18b20使用的變量float T;//****************************************************************************************************uint8 counter_0,counter_1;//*******供1302使用的變量uint8 second=0,minute=0,hour=0,year=0,month=0,day=0,week;uint32 sh;uint8 D[]="wek";uint16 i=0;//****************************************************************************************************//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//****************************************************************************************************void delay_10us(uint8 x)//*********10微秒級別延時{while(x>0)x--;}//****************************************************************************************************void ds18b20_init()//**************ds18b20的初始化{uint16 i;DQ=0;i=103;while(i>0)i--;DQ=1;i=4;while(i>0)i--;;}//****************************************************************************************************bit readbit()//********************讀取一位數(shù)據(jù){uint16 i;bit dat;DQ=0;i++;DQ=1;i++;i++;dat=DQ;i=8;while(i>0)i--;return(dat);}//****************************************************************************************************uint8 r_ds18b20()//****************從ds18b20讀取一字節(jié)數(shù)據(jù){uint8 dat=0,i,j;for(i=1;i<=8;i++){j=readbit();dat=(j<<7)|(dat>>1);}return(dat);}//****************************************************************************************************void w_ds18b20(uint8 dat)//********向ds18b20寫入一字節(jié)數(shù)據(jù){uint8 j;uint8 i;bit testb;for(i=1;i<=8;i++){testb=dat&0x01;dat>>=1;if(testb){ DQ=0;j++;j++;j++;DQ=1;j=14;while(j>0)j--;}else{ DQ=0;j=14;while(j>0)j--;DQ=1;j++;j++;j++;}}}//****************************************************************************************************void beginchange()//***************開始轉(zhuǎn)換溫度{ds18b20_init();delay_10us(200);w_ds18b20(0xcc);w_ds18b20(0x44);}//****************************************************************************************************void get_temp()//*****************從ds18b20讀取數(shù)據(jù)并轉(zhuǎn)換成十進制{uint8 H,L;uint16 temp;ds18b20_init();delay_10us(200);w_ds18b20(0xcc);w_ds18b20(0xbe);L=r_ds18b20();H=r_ds18b20();temp=H;temp<<=8;temp|=L;T=temp*(0.0625);}				   
				
            
                
			
							
上一頁 1 2 3 下一頁

評論


技術專區(qū)

關閉