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

正文內(nèi)容

基于單片機(jī)的雙向防盜器設(shè)計(jì)-資料下載頁(yè)

2025-06-02 22:37本頁(yè)面
  

【正文】 //延時(shí)300us RFDAT=0。 //將數(shù)據(jù)口置低高, 發(fā)送0 delay(45,0x0a)。 //延時(shí)450us RFDAT=1。 //將數(shù)據(jù)口置高, 發(fā)送1 delay(T3,0x0a)。 //延時(shí)300us}程序清單 Void stop(void){ RFDAT=1。 //將數(shù)據(jù)口置高, 發(fā)送1 delay(T1,0x0a)。 //延時(shí)300us RFDAT=0。 //將數(shù)據(jù)口置低高, 發(fā)送0 delay(70,0x0a)。 //延時(shí)700us RFDAT=1。 //將數(shù)據(jù)口置高, 發(fā)送1 delay(T3,0x0a)。 //延時(shí)300us}程序清單 void tx_byte(uchar d){ uchar i。 start()。 //發(fā)送一個(gè)開(kāi)始信號(hào)for(i=0。i8。i++) { if(damp。0x80) //如果最高位為1 { set()。 //發(fā)送一個(gè)1碼元 } else { clear()。 //否則發(fā)送一個(gè)0碼元 } d=d1。 //左移一位 } stop()。 //發(fā)送一個(gè)停止信號(hào)}2.幀數(shù)據(jù)發(fā)送 一幀的數(shù)據(jù)就是將上面的每6字節(jié)數(shù)據(jù)組成一個(gè)整體,每次發(fā)送以幀為單位發(fā)送,源程序如程序清單 程序清單 void tx_frame(uchar *p){ uchar i。 //發(fā)送的字節(jié)數(shù) for(i=0。i6。i++) { tx_byte(*(p+i))。 //發(fā)送的數(shù)據(jù)緩存 }} 數(shù)據(jù)的接收——解碼1.碼元檢測(cè) 接收的處理是根據(jù)PWM的編碼格式來(lái)解碼的,對(duì)于每個(gè)碼元,不同的只是低電平的時(shí)間,只要對(duì)低電平的時(shí)間進(jìn)行檢測(cè)就行。流程圖如圖 ,程序如Error! Reference source not 圖 碼元檢測(cè) 2.字節(jié)接收 一個(gè)字節(jié)的接收以開(kāi)始信號(hào)作為標(biāo)識(shí),只有檢測(cè)到開(kāi)始信號(hào)才對(duì)后面的數(shù)據(jù)繼續(xù)接收,否則返回0;以結(jié)束信號(hào)作為結(jié)束表示,如果沒(méi)有接收到結(jié)束信號(hào)也將作為誤碼處理。當(dāng)接收數(shù)據(jù)中超時(shí)將返回0,流程圖如圖 圖 接收一個(gè)字節(jié)3.幀數(shù)據(jù)發(fā)送數(shù)據(jù)的發(fā)送以幀格式發(fā)送,所以接收一幀數(shù)據(jù)以幀形式對(duì)應(yīng)接收,首先要判斷第一個(gè)字節(jié)是否是 0x55,如果是,則接收剩余的5個(gè)字節(jié),否則清接收緩沖區(qū),流程圖如圖 。 圖 接收一幀數(shù)據(jù)程序清單 接收一幀數(shù)據(jù)void Rx_frame(uchar *p){ uchar i,j。 j=Rx_byte()。 //接收起始字節(jié) if(j==0x55) //收到起始字節(jié)則接著收其余字節(jié) for(i=0。i5。i++) *(p+i)=Rx_byte()。 else //清零接收緩沖區(qū) *(p+i)=0x00。} 數(shù)據(jù)的校驗(yàn)數(shù)據(jù)的校驗(yàn)是為了數(shù)據(jù)的檢查,當(dāng)收到一幀數(shù)據(jù)時(shí),有可能其中某位因外界的干擾而錯(cuò)誤的接收,這樣有可能使接收者產(chǎn)生誤動(dòng)作。在本系統(tǒng)中,充分考慮到了這一點(diǎn),分為三步檢測(cè)數(shù)據(jù)的正確性,從而使通信可靠。216。 ID的匹配。每一個(gè)遙控器都必須有固定的24位的ID,當(dāng)主機(jī)識(shí)別了本遙控器的ID號(hào),那么每次回傳的數(shù)據(jù)幀中ID號(hào)就是本遙控器的,遙控器收到后檢測(cè)ID是否正確,如果ID不符,那么不執(zhí)行動(dòng)作,返回0,否則執(zhí)行相應(yīng)動(dòng)作;216。 接收到數(shù)據(jù)中是否有0。根據(jù)定義的通信協(xié)議,接收到誤碼時(shí)候會(huì)將接收緩沖區(qū)清零,所以0被認(rèn)為是不可靠的。所以如果收到0則將數(shù)據(jù)丟棄;216。 CRC校驗(yàn)是否正確。每幀數(shù)據(jù)在最后一個(gè)字節(jié)都有8位的CRC校驗(yàn),收到的數(shù)據(jù)將前面的幾個(gè)字節(jié)進(jìn)行CRC8的運(yùn)算,如果結(jié)果與收到的最后一個(gè)字節(jié)相等,則說(shuō)明收的數(shù)據(jù)正確,反之不正確。數(shù)據(jù)校驗(yàn)的流程圖如圖 :圖 數(shù)據(jù)校驗(yàn) 系統(tǒng)狀態(tài)處理系統(tǒng)狀態(tài)處理是根據(jù)按鍵來(lái)跳轉(zhuǎn)的,一共有9個(gè)狀態(tài),分別為:有聲警戒、無(wú)聲警戒、解除警戒、有聲尋車、無(wú)聲尋車、開(kāi)尾門、開(kāi)機(jī)、關(guān)機(jī)、測(cè)試,每個(gè)狀態(tài)對(duì)應(yīng)執(zhí)行一定的功能,如發(fā)送數(shù)據(jù)、響音樂(lè)、打開(kāi)關(guān)閉接收標(biāo)志、掉電保護(hù)等,并且是相互獨(dú)立的。每個(gè)狀態(tài)對(duì)應(yīng)功能如下所示:216。 有聲警戒:發(fā)送有聲警戒控制字給主機(jī),打開(kāi)接收和警戒提示;216。 無(wú)聲警戒:發(fā)送無(wú)聲警戒控制字給主機(jī),打開(kāi)接收和警戒提示;216。 解除警戒:發(fā)送解除警戒控制字給主機(jī),關(guān)閉接收和警戒提示;216。 有聲尋車:發(fā)送有聲尋車控制字給主機(jī),打開(kāi)接收和警戒提示;216。 無(wú)聲尋車:發(fā)送無(wú)聲尋車控制字給主機(jī),打開(kāi)接收,關(guān)閉警戒提示;216。 開(kāi)尾門 :發(fā)送開(kāi)尾門控制字給主機(jī),打開(kāi)接收,關(guān)閉警戒提示;216。 開(kāi)機(jī) : 響開(kāi)機(jī)音樂(lè), 關(guān)閉RTC,關(guān)閉警戒提示,清鍵盤標(biāo)志216。 關(guān)機(jī) : 響關(guān)機(jī)音樂(lè),關(guān)閉接收,打開(kāi)掉電,關(guān)閉警戒提示;216。 測(cè)試 : 此狀態(tài)是定時(shí)2分鐘向主機(jī)發(fā)送一個(gè)測(cè)試信號(hào),測(cè)試主機(jī)   是否能收到從來(lái)確定與汽車的距離大小。程序清單 系統(tǒng)狀態(tài)控制程序void SystemProcess(){SystemProcessFlag = 0。 //清系統(tǒng)運(yùn)行標(biāo)志switch (SystemState) { case VoiceAlert : SendData(VoiceAlterDat)。 //發(fā)送有聲警戒控制字 ReceiveFlag = 1。 //打開(kāi)接收標(biāo)志 AlterNoteF = 1。 //打開(kāi)警戒提示標(biāo)志 break。 case NoVoiceAlert : SendData(NoVoiceAlterDat)。 //發(fā)送無(wú)聲警戒控制字 ReceiveFlag = 1。 //打開(kāi)接收標(biāo)志 AlterNoteF = 1。 //打開(kāi)警戒提示標(biāo)志 break。 case NoAlert : SendData(NoAlterDat)。 //發(fā)送解除警戒控制字 ReceiveFlag = 1。 //打開(kāi)接收標(biāo)志 AlterNoteF = 0。 //關(guān)閉警戒提示標(biāo)志 break。 case VoiceLookCar : SendData(ViceLookCarDat)。 //發(fā)送有聲尋車控制字 ReceiveFlag = 1。 AlterNoteF = 0。 //關(guān)閉警戒提示標(biāo)志 break。 case NoVoiceLookCar : SendData(NoViceLookCarDat)。 //發(fā)送無(wú)聲尋車控制字 ReceiveFlag = 1。 AlterNoteF = 0。 //關(guān)閉警戒提示標(biāo)志 break。 case OpenBackDoor : SendData(OpenBackDoorDat)。 //發(fā)送尾門控制字 ReceiveFlag = 1。 //打開(kāi)接收標(biāo)志 AlterNoteF = 0。 //關(guān)閉警戒提示標(biāo)志 break。 case CloseSystem : Close0Music()。 //關(guān)機(jī)音樂(lè) ReceiveFlag = 0。 //關(guān)閉接收標(biāo)志 PDFlag = 1。 //掉電標(biāo)志置1 KBCON=0x00。 //清鍵盤標(biāo)志 AlterNoteF = 0。 //關(guān)閉警戒提示 break。 case StartSystem : Start0Music()。 //開(kāi)機(jī)音樂(lè) PCONA = 0x63。 //打開(kāi)RTC PDFlag = 0。 //清掉電標(biāo)志 KBCON=0x00。 //清鍵盤標(biāo)志 AlterNoteF = 0。 //警戒提示關(guān)閉 SystemProcessFlag = 1。 SystemState = VoiceAlert。 break。 case StudySystem : SendData(Study)。 //學(xué)習(xí)狀態(tài) ReceiveFlag = 1。 //打開(kāi)接收 break。 default : break。} 功能函數(shù)控制1.節(jié)電控制節(jié)電控制是通過(guò)PCON寄存器設(shè)置為0x23來(lái)實(shí)現(xiàn),節(jié)電控制使單片機(jī)和無(wú)線收發(fā)模塊同時(shí)進(jìn)入完全掉電狀態(tài),這樣可以降低功耗,最低可達(dá)10uA(RTC運(yùn)行的時(shí)候),單片機(jī)掉電通過(guò)寄存器來(lái)實(shí)現(xiàn),TDA5255掉電通過(guò)PWDDD引腳使能來(lái)實(shí)現(xiàn),而且必須把它的發(fā)射和接收引腳設(shè)置為發(fā)射狀態(tài)。掉電有三種情況:遙控器間隙工作掉電、電壓不足自動(dòng)關(guān)機(jī)掉電、手動(dòng)關(guān)機(jī)掉電,必須根據(jù)這些不同的情況來(lái)保護(hù)現(xiàn)場(chǎng)和恢復(fù)現(xiàn)場(chǎng)。216。 在間隙工作掉電。要打開(kāi)RTC和鍵盤中斷作為喚醒源,喚醒時(shí)關(guān)閉RTC,工作時(shí)間計(jì)時(shí);216。 電壓不足時(shí)掉電。,掉電前開(kāi)啟RTC用以喚醒時(shí)檢測(cè)電池電壓是否達(dá)到額定工作電壓,還必須關(guān)閉鍵盤中斷不允許鍵盤喚醒,這是為了區(qū)別手動(dòng)開(kāi)機(jī),喚醒時(shí)先要檢測(cè)電池電壓,;216。 在手動(dòng)關(guān)機(jī)下,關(guān)閉一切功能部件包括RTC,這樣功耗幾乎為0,只保留按鍵中斷喚醒。喚醒時(shí)檢測(cè)是否是開(kāi)機(jī)鍵而且是否長(zhǎng)按了三秒,如果不是則繼續(xù)掉電,如果滿足則喚醒。流程圖如所示:圖 節(jié)電流程圖2.音樂(lè)控制音樂(lè)的產(chǎn)生是通過(guò)給交流蜂鳴器不同的頻率信號(hào)產(chǎn)生,所以需要控制的有音符和節(jié)拍。216。 音符: 音符分有低、中、高三種音調(diào),各有七個(gè)音,為了產(chǎn)生比較歡 快的音樂(lè)大多數(shù)采用中、高音調(diào),每個(gè)音都對(duì)應(yīng)有不同的頻率, 頻率對(duì)應(yīng)表如表 。頻率的控制輸出是使用定時(shí)器1的翻 轉(zhuǎn)輸出功能,通過(guò)給定時(shí)器1不同的初值就可以實(shí)現(xiàn)216。 節(jié)拍: 所謂節(jié)拍是一首曲子中音符的時(shí)間,一般曲子為一個(gè)小節(jié)四拍, 每拍的時(shí)間根據(jù)不同的歌曲而不同,如果一拍為1S,那么1/2 ,1/,這可以通過(guò)不同的延時(shí)來(lái)實(shí)現(xiàn), 本系統(tǒng)是通過(guò)系統(tǒng)時(shí)鐘定時(shí)器的0來(lái)定時(shí)延時(shí)來(lái)實(shí)現(xiàn),這樣不 會(huì)占用過(guò)多的CPU時(shí)間。表 音符頻率對(duì)應(yīng)表低 音頻 率(Hz)中 音頻 率(Hz)高 音頻率(Hz)1262152311046227425782117533303659313184349469841397539257845156864406880617607494798871976程序清單 音樂(lè)控制程序void Start0Music(){if(MusicCountStartMusic[i]) //如果節(jié)拍時(shí)間到,則換音符,StartMusic為節(jié)拍時(shí)間 { i = i+1。 //音符個(gè)數(shù)計(jì)數(shù) TH1=StartMusicNote[i]。 //StartMusicNote對(duì)應(yīng)音符頻率的定時(shí)器初值 MusicCount = 0。 //音樂(lè)計(jì)時(shí)清0換音符 if(i==51) //如果歌曲唱完退出 { break。 } } if(!MusicF) //如果有按鍵按下了則退出 { break。 }}需要說(shuō)明的是,為了能夠使定時(shí)器1實(shí)現(xiàn)自動(dòng)重裝功能,不需要中斷賦初值,定時(shí)器工作在模式2,必須要降頻處理,這是通過(guò)對(duì)DIVM計(jì)數(shù)器寫(xiě)入值來(lái)實(shí)現(xiàn)。分頻后F=Fosc/(N +1),N為 DIVM的值2.低電壓和信號(hào)強(qiáng)度檢測(cè)低電壓和信號(hào)強(qiáng)度檢測(cè)需要和TDA5255通信來(lái)實(shí)現(xiàn),接口為I2C,每次按鍵回傳信號(hào)后都會(huì)對(duì)TDA5255的寄存器08H寫(xiě)入不同的值來(lái)切換當(dāng)前是檢測(cè)電壓還是信號(hào),數(shù)據(jù)以I2CDateSend8_16函數(shù)發(fā)送,讀取信號(hào)的值通過(guò)函數(shù)I2CDateRecive來(lái)讀取,這兩個(gè)函數(shù)在后面介紹。216。 低電壓檢測(cè) 。,報(bào)警時(shí)間為5S,如 ,電壓與讀取的值對(duì)應(yīng)關(guān)系見(jiàn)硬件部分;216。 信號(hào)強(qiáng)度檢測(cè)。信號(hào)強(qiáng)度分為三個(gè)等級(jí),每個(gè)等級(jí)對(duì)應(yīng)一定的讀取數(shù)據(jù)的范圍,一盞LED指示信號(hào)強(qiáng)度,閃爍一下表示信號(hào)很弱,閃爍兩下表示信號(hào)中等強(qiáng)度,閃爍三下表示信號(hào)很強(qiáng)。3.I2C通信,使用硬件實(shí)現(xiàn)方式,發(fā)送和接收數(shù)據(jù)的流程如下所示。其中I2CON為控制寄存器,控制起始信號(hào)和結(jié)束信號(hào)的發(fā)送以及中斷標(biāo)志和應(yīng)答標(biāo)志的讀??;I2STAT為狀態(tài)寄存器,發(fā)送數(shù)據(jù)后分別轉(zhuǎn)入相應(yīng)的狀態(tài);I2DAT為數(shù)據(jù)寄存器,它存有發(fā)送的數(shù)據(jù)和接收的數(shù)據(jù)發(fā)送數(shù)據(jù)經(jīng)歷的狀態(tài)有:有08H(已發(fā)送了起始條件)、18H(已發(fā)送SLA+W,已接受ACK)、28H(
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1