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

正文內(nèi)容

基于單片機(jī)的紅外遙控智能小車畢業(yè)設(shè)計(jì)報(bào)告-資料下載頁(yè)

2025-06-24 16:15本頁(yè)面
  

【正文】 if(mode==MODE_SHOUDONG) mode=MODE_ZIDONG。 }void Delay1ms(unsigned char x)//延時(shí)處理 { unsigned char i。 while(x) { for(i0。ii++) { _nop_()。 _nop_()。 _nop_()。 _nop_()。 } }} void display(unsigned char add,unsigned char *str){ unsigned char i。 lcd_pos(add)。 i=0。 while(str[i] != 39。\039。) { lcd_wdat(str[i])。 i++。 } }void Ir_work(void) { switch(IRcord[2])//判斷第三個(gè)數(shù)碼值 { case 0:go。 display(0x4c,go )。break。 case 1:back。 display(0x4c,back )。break。 case 2:right。display(0x4c,right)。break。 case 3:left。 display(0x4c,left )。break。 case 4:count0+=5。 if(count0=100)count0=100。display(0x40,speed add)。break。//加速 case 5:count0=5。 if(count0=0) count0=0。 display(0x4c,speed dec)。break。//減速 case 6:Flag=~Flag。break。//反轉(zhuǎn) case 8:。break。 } irpro_ok=0。//處理完成標(biāo)志}void EX0_init(){ EX0=1。 //開啟外部中斷0 IT0=1。 // 設(shè)置成下降沿觸發(fā)方式 }void main(void) {mode=MODE_ZIDONG。//初始化為自動(dòng)運(yùn)行模式 TMOD=0x00。 lcd_init()。 // 初始化LCD time1_init()。//初始化T1定時(shí)采集溫度 time0_init()。 time2_init()。 EX0_init()。 EX1_init()。 EA=1。 //開啟總中斷 Eout=0。 while(1) { while(!mode) //自動(dòng)控制狀態(tài) { display(0x00,dis1)。 if(hw) {go。 display(0x4c,go )。 } if(!hw) {back。 display(0x4c,back )。 Delay1ms(100)。 right。 display(0x4c,right)。 Delay1ms(100)。 } } while(mode)//遙控控制狀態(tài) { display(0x00,dis2)。 if(irok) { Ircordpro()。//碼值處理 irok=0。 } if(irpro_ok) { Ir_work()。 } } }}*******************************************************************2 include include typedef unsigned char BYTE。typedef unsigned int WORD。typedef bit BOOL 。 sbit rs=P1^5。 sbit rw=P1^6。sbit ep=P1^7。define dis_data P2delay(BYTE ms){ // 延時(shí)子程序 BYTE i。 while(ms) { for(i = 0。 i i++) { _nop_()。_nop_()。_nop_()。_nop_()。 } }}BOOL lcd_bz()// 測(cè)試LCD忙碌狀態(tài){BOOL result。 rs = 0。 rw = 1。 ep = 1。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 result = (BOOL)(dis_data amp。 0x80)。 ep = 0。 return result。 }lcd_wcmd(BYTE cmd){ // 寫入指令數(shù)據(jù)到LCDwhile(lcd_bz())。 rs = 0。 rw = 0。 ep = 0。 _nop_()。 _nop_()。 dis_data = cmd。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 ep = 1。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 ep = 0。 }lcd_pos(BYTE pos){ //設(shè)定顯示位置 lcd_wcmd(pos | 0x80)。}lcd_wdat(BYTE dat) { //寫入字符顯示數(shù)據(jù)到LCDwhile(lcd_bz())。 rs = 1。 rw = 0。 ep = 0。 dis_data = dat。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 ep = 1。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 ep = 0。 }lcd_init()//LCD初始化設(shè)定{delay(15)。 lcd_wcmd(0x38)。 delay(5)。 lcd_wcmd(0x08)。 delay(5)。 lcd_wcmd(0x0c)。 delay(5)。 lcd_wcmd(0x06)。 delay(5)。 lcd_wcmd(0x01)。 delay(5)。 delay(10)。}*******************************************************************3 include define uint unsigned intdefine uchar unsigned charsbit DQ=P1^2。 //溫度傳送數(shù)據(jù)IO口 uchar temp_value。 //溫度值uchar TempBuffer[5]。//存放溫度數(shù)字void delay15us(int n) //延時(shí)子程序,延時(shí)15us*n{ do{ _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 }while(n)。}void ds18b20Init(void) { DQ = 0。 delay15us(54)。 //拉低約510us, 符合協(xié)議要求的480us以上 DQ = 1。 //產(chǎn)生一個(gè)上升沿, 進(jìn)入等待應(yīng)答狀態(tài) delay15us(2)。 //拉高約30us } void ds18b20Wait(void) //接受來(lái)自DS18B20的響應(yīng)信號(hào){ while(DQ)。 //等待總線變低 while(~DQ)。 //檢測(cè)到應(yīng)答脈沖 delay15us(3)。//延時(shí)45us}//向DS18B20讀取一位數(shù)據(jù)//讀一位, 讓DS18B20一小周期低電平, 然后兩小周期高電平,//之后DS18B20則會(huì)輸出持續(xù)一段時(shí)間的一位數(shù)據(jù)bit readBit(void) { uint i。 bit dat。 DQ=0。 i++。 //延時(shí)約8us, 符合協(xié)議要求至少保持1us DQ=1。 i++。 i++。 //延時(shí)約16us, 符合協(xié)議要求的至少延時(shí)15us以上 dat=DQ。 delay15us(5)。 //延時(shí)約75us, 符合讀時(shí)隙不低于60us要求 return dat。}uchar readByte(void) //讀取一字節(jié)數(shù)據(jù), 通過(guò)調(diào)用readBit()來(lái)實(shí)現(xiàn){ uchar i, j,dat。 for(i=1。 i=8。 i++) {j=readBit()。//最先讀出的是最低位數(shù)據(jù) dat=(j7)|(dat1)。 }return dat。}void writeByte(uchar dat) //向DS18B20寫入一字節(jié)數(shù)據(jù){uint i。 uchar j。 bit b。 for(j=0。j8。j++) { b=datamp。0x01。 dat=1。 if(b) //若此位為高,寫1 { DQ= 0。 i++。 i++。 //拉低約16us, 符號(hào)要求15~60us內(nèi) DQ=1。 delay15us(5)。 //延時(shí)約75us, 符合讀時(shí)隙不低于60us要求 } else //寫0, 將DQ拉低60us~120us { DQ=0。 delay15us(5)。 //延時(shí)約75us, 符合讀時(shí)隙不低于60us要求 DQ=1。 i++。 i++。 } }}void sendChangeCmd(void)reentrant//向DS18B20發(fā)送溫度轉(zhuǎn)換命令{ds18b20Init()。//初始化DS18B20, 無(wú)論什么命令, 首先都要發(fā)起初始化 ds18b20Wait()。//等待DS18B20應(yīng)答 delay15us(67)。 //延時(shí)約1ms, 因?yàn)镈S18B20會(huì)拉低DQ 60~240us作為應(yīng)答信號(hào) writeByte(0xcc)。 //寫入跳過(guò)序列號(hào)命令字 Skip Rom writeByte(0x44)。 //寫入溫度轉(zhuǎn)換命令字 Convert T}void sendReadCmd(void) //向DS18B20發(fā)送讀取數(shù)據(jù)命令{ ds18b20Init()。 ds18b20Wait()。 delay15us(67)。 writeByte(0xcc)。 //寫入跳過(guò)序列號(hào)命令字 Skip Rom writeByte(0xbe)。 //寫入讀取數(shù)據(jù)令字 Read Scratchpad}void getTmpValue(void)reentrant//獲取當(dāng)前溫度值{ uchar low, high。 sendReadCmd()。 low=readByte()。 //讀取溫度值低位 high=readByte()。 //讀取溫度值高位 temp_value=high4。 temp_value+=low4。 }void temp_to_str() reentrant //溫度數(shù)據(jù)轉(zhuǎn)換成液晶字符顯示{ unsigned char i。 TempBuffer[0]=temp_value/10+39。039。 //十位 TempBuffer[1]=temp_value%10+39。039。 //個(gè)位 TempBuffer[2]=0xdf。 //溫度符號(hào) TempBuffer[3]=39。C39。 TempBuffer[4]=39。\039。}void time1() interrupt 3 using 3{ TH1=(655364000)/256。 TL1=(655
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1