freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

51單片機超聲波測距設(shè)計-資料下載頁

2025-06-29 17:45本頁面
  

【正文】 _nop_()。 _nop_()。 TR1=1。 delay15(50)。 //延時避開直達信號 } /**************************************************** 系統(tǒng)初始化 *******************************************************/ void sys_init(void) { uchar i。 for(i=0。i29。i++) //顯示清零 { num[i]=0。} TMOD=0x11。 TH0=0x15。 TL0=0xA0。 P0=0。 CNT=0。 CSBIN=1。 EA=1。 } /**************************************** 距離計算 ****************************************/ void puter(void) { float c,d,s。 uint t。 if(temp0x8000) //溫度為負 c=+*temp*。 else c=*temp*。 t=jsh*256+jsl120。 //計算計數(shù)值 d=(c*t*)/2。 d*=d。 s=。 distance=sqrt(s)。 //修正后的值 } /************************************** 數(shù)據(jù)轉(zhuǎn)換函數(shù) **************************************/ void hextobcd(void) { float tp。 unsigned long int tmp。 fuhao=0。 if(temp0x8000) tp=temp*。 else //溫度為負則求補碼的到原碼 { bm()。 tp=temp*。 fuhao=1。 } tp*=10。 tmp=tp。 num[12]=tmp/100。 if(fuhao) num[12]=num[12]|0x80。 //加上符號位 num[13]=tmp/10(tmp/100)*10。 tmp=distance。 num[25]=tmp/1000。 tmp%=1000。 num[26]=tmp/100。 tmp%=100。 num[27]=tmp/10。 tmp%=10。 num[28]=tmp/1。 } /************************************* 溫度轉(zhuǎn)換函數(shù)*************************************/ /**************啟動溫度轉(zhuǎn)換*************************/ void testtemp(void) { Init_18B20()。 //初始化18B20 if(flag) { WriteOneChar(0xCC)。 // 跳過讀序號列號的操作 WriteOneChar(0x44)。 // 啟動溫度轉(zhuǎn)換 } } /***********讀取溫度函數(shù)**************/ uint wd(void) { unsigned int a = 0, b = 0, t = 0。 Init_18B20()。 WriteOneChar(0xCC)。 //跳過讀序號列號的操作 WriteOneChar(0xBE)。 //讀取溫度寄存器 a = ReadOneChar()。 //讀取字節(jié) b = ReadOneChar()。 t = b。 t = 8。 t = t | a。 return (t)。 } /***************18B20復(fù)位函數(shù)********************** DS18B20復(fù)位函數(shù)*/ void Init_18B20(void)//初始化18B20 { DQ = 1。 //DQ復(fù)位 Delay(10)。 DQ = 0。 //單片機將DQ拉低 Delay(80)。 //480us DQ = 1。 //拉高總線 Delay(10)。 //稍做延時后 如果x=0則初始化成功 x=1則初始化失敗 if(DQ) flag=0。 else flag=1。 Delay(20)。 }/*******************讀取一個字節(jié)******************************/uchar 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(15)。 } return (dat)。}/*********************寫入一個字節(jié)****************************/void WriteOneChar(unsigned char dat){ unsigned char i = 0。 for (i = 8。 i 0。 i) { DQ = 0。 DQ = datamp。0x01。 Delay(5)。 DQ = 1。 dat=1。 }} /******************************************** 對溫度的轉(zhuǎn)換,得到原碼********************************************/ void bm(void) { temp=~temp。 temp+=1。 } /*************************** 顯示函數(shù) ********************************/ void display(void) { { uchar a,b,d。 Init_LCD()。 Write_Comm(0x01)。//清顯示 Write_Comm(0x80)。//寫首地址 for(a=0。a16。a++) { d=dispbuf[a]。 if((a11)amp。amp。(a14)) //如果是結(jié)果位到num[]里面讀取 { d=numcode[num[a]]。 } if(14==a) //顯示176。 { d=0xdf。 } Write_Data(d)。 } Write_Comm(0xc0)。//??????????? for(b=16。b33。b++) { d=dispbuf[b]。 if((b24)amp。amp。(b29)) { d=numcode[num[b]]。 } Write_Data(d)。 } } }void Read_Busy(void)//讀忙信號判斷{ do{ Lcd_Data = 0xff。 RS = 0。 RW = 1。 E = 0。 delay()。 E = 1。 }while(Busy)。 //如果忙則等待}/*******************寫指令函數(shù)******************************/void Write_Comm(uchar lcdm) { Lcd_Data = lcdm。 RS = 0。 RW = 0。 E = 0。 Read_Busy()。 E = 1。}/*********************寫數(shù)據(jù)函數(shù)****************************/void Write_Data(uchar lcddata)//寫數(shù)據(jù)函數(shù){ Lcd_Data = lcddata。 RS = 1。 RW = 0。 E = 0。 Read_Busy()。 //判斷是否忙狀態(tài) E = 1。}/*********************初始化LCD****************************/void Init_LCD(void){ delay()。 //稍微延時,等待LCD進入工作狀態(tài) Write_Comm(0x01)。//清顯示// Write_Comm(0x02)。//光標歸位 Write_Comm(0x38)。//8位2行5*8 Write_Comm(0x06)。//文字不動,光標右移 Write_Comm(0x0c)。//顯示開/關(guān),光標開閃爍開// Write_Comm(0x18)。//左移} /*************************** 延時n*15US函數(shù) ****************************/ void delay15(uchar us) { do { _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 us。 } while(us)。 } /********************************** 18b20延時函數(shù)*************************************/ void Delay(uint time) { while( time )。 } /**************************************************** 延時1MS *******************************************************/ void delay1ms(void) { uchar i,j。 for(i=0。i2。i++) for(j=0。j255。j++)。 }/**************************************** 顯示延時函數(shù)*************************************/ void delay() { uchar y。 for(y=0。y0xff。y++)。} 參考文獻 1 Atmel 公司。At89S52的DATA SHEET2 DALLS公司。DS18B20的DATA SHEET3 FalrChild公司。LM7805的DATA SHEET4 SONY公司。CX20106的DATA SHEET5 .6 7 . 西安電子科技大學(xué)出版社,2007年.8 . 2002. 9 百度資料搜索搜索
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1