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

正文內(nèi)容

基于單片機的超聲波流量計畢業(yè)論文(參考版)

2025-06-30 20:05本頁面
  

【正文】 在此,我要向王老師表示衷心的感謝和深深的敬意!其次,我還要向在整個設(shè)計工程中給過我?guī)椭睦蠋熀屯瑢W(xué)們表示由衷的感謝!最后,向白忙中抽出時間來評審論文和參加答辯的各位老師表示最誠摯的謝意!。}void Delay(unsigned int value) //延時模塊{ while(value!=0){value..。 flagd==1) {c=c1。} else if(flagc!=1amp。amp。amp。amp。 flagd==1) {d=d1。} else if(flagc!=1amp。amp。amp。amp。case 0x0f:flagf==1。case 0x0d:flagd==1。case 0x0b:flag2==1。 //如果無鍵被按則返回?zé)o按碼0x55}void KeyHandle(uchar keyIndex){switch(c_keyCode[keyIndex]){case :LED()。 //本處也可進(jìn)行多按鍵處理}else //某鍵被按,返回此鍵的標(biāo)識碼{return(keyRet)。keyRet=j。if((keyFlagamp。j16。 //沒松開按鍵就等按鍵松開counterKeyPressedNum=0。while((P2amp。 //延時以消除抖動ScanKeys()。ScanKeys()。uchar keyRet=0x55。 //清此鍵的標(biāo)志位}scanValue=scanValue1|0x01。 //置此鍵的標(biāo)志位}else{ keyFlagamp。 //清此鍵的標(biāo)志位}if((scanTempUcharamp。 //置此鍵的標(biāo)志位}else{ keyFlagamp。 //清此鍵的標(biāo)志位}if((scanTempUcharamp。 //置此鍵的標(biāo)志位}else{ keyFlagamp。 //清此鍵的標(biāo)志位}if((scanTempUcharamp。 //置此鍵的標(biāo)志位}else{ keyFlagamp。 //讀入掃描值 if((scanTempUcharamp。iScan++){ P2=scanValue。for(iScan=0。 //按鍵處理模塊}}}void ScanKeys(void) //掃描鍵盤模塊{uchar scanValue=0xef。while(1){ keyPtr=KeyJudge()。 /*產(chǎn)生cs脈沖*/cs=1。cs=1。=0x00。 /*發(fā)寫狀態(tài)字命令*/cs=0。cs=1。 /*發(fā)寫讀使能命令*/cs=0。 /*左移一位*/}return。 /*sck產(chǎn)生一個上跳變*/sck=1。 /*將數(shù)據(jù)放入a中*/si=c。 i8。 //Bb右移一位}}}//====================看門狗子程序=====================// void tran() /*發(fā)送一字節(jié)數(shù)據(jù)子函數(shù)*/{unsigned char i。 //由p3_1產(chǎn)生脈沖(上升沿) p3_1=1。j++) //將8個位從低到高順次輸出 { p3_0=c。 //將字型碼首先賦值給可按位尋址char型變量B for(j=0。i4。type[0]=num[m]。type[1]=num[(m/10)]。type[2]=num[(m/100)]。 type[3]=num[(m/1000)]。 uchar data j。 }//顯示子程序void LED(uint m) //函數(shù)定義 { uchar data type[4]。i10。 P1_1=0。 } } } }//外部中斷0服務(wù)子函數(shù),當(dāng)接收到一個外部中斷后不允許單片機進(jìn)入發(fā)送狀態(tài),準(zhǔn)備接收另外一塊單片機發(fā)送的數(shù)據(jù) void Int0(void)interrupt 0 using 3 { Send_Mode_Flg=0。 if(Rx_counter=10) { Rx_counter=0。 //清除標(biāo)志位,準(zhǔn)備下一次接收 Send_Mode_Flg=0。i++) { Send(Tx_Buffer[i])。 for(i=0。 //等待發(fā)送完成 TI=0。 //開外部中斷0 }//字節(jié)發(fā)送子函數(shù),調(diào)用其將傳遞入函數(shù)Tx_Data中的一個字節(jié)通過串行口發(fā)送出去void Send(unsigned char Tx_Data){ SBUF=Tx_Data。 //開串行中斷 IT0=1。 //串行口工作方式0 EA=1。 //指針復(fù)零 P1_1=1。 //將發(fā)送模式標(biāo)志位清除 } ...... } } //初始化子函數(shù),包括對變量的初始化,對外位引腳信號的初始化以及對單片機相關(guān)工作寄存器的初始化 void Init(void) {//初始化變量和外部引腳 Send_Mode_Flg=0。 //調(diào)用握手函數(shù)通知另一塊單片機不能進(jìn)入發(fā)送狀態(tài) Send_Data()。 //調(diào)用初始化函數(shù)進(jìn)行系統(tǒng)初始化 for(。 //發(fā)送一個字節(jié)子函數(shù)void Receive(void)。 //發(fā)送數(shù)據(jù)子函數(shù)void Hand_Shake(void)。 //初始化子函數(shù)void int0(void)。 //接收數(shù)據(jù)指針bit Send_Mode_Flg。 //發(fā)送緩沖區(qū)unsigned char Rx_Buffer[12]。v=(C*C*tc)/(4*d*tane); q=pi*d*d*v/4。j++)}//主單片機流速流量計算子程序js(){ data uint v。i++)for(j=0。}delay1ms(uint t){ for(i=0。tc=tbta。amp。 delay1ms(uint t)int1=0。csjs()。amp。p1_0=0。p1_6=0。p1_5=1amp。 p1_2=1。p1_2=1。 p1_2=0。 p1_2=1。p1_2=1。p1_0=0。 LED()。Key()。 //主單片機主程序,無參數(shù),無返回值循環(huán)調(diào)用顯示、鍵掃描main() { p0=0xff。 unsigned char key。 //按鍵處理模塊void Delay (unsigned int value)。 //掃描鍵盤模塊uchar KeyJudge(void)。uint keyFlag。在以后的工作中,將進(jìn)行改進(jìn)。本設(shè)計對其硬件電路進(jìn)行了詳細(xì)的設(shè)計,設(shè)計出了匹配性能良好的發(fā)射、接收電路和信號調(diào)理電路,并運用了主從單片機聯(lián)合工作的方式,提高了整個系統(tǒng)的穩(wěn)定性。由于超聲波流量計還存在很多不足,需要進(jìn)行更深一步的研究。要保證沒有錯誤才能正常運行。調(diào)試過程如下: 首先建立一個項目,選擇要保存項目的路徑,并輸入項目文件名,保存。工作原理就是利用模擬開發(fā)軟件在計算機上實現(xiàn)對單片機的硬件模擬,指令模擬,運行狀態(tài)模擬,從而完成應(yīng)用軟件開發(fā)全過程。隨著科學(xué)的進(jìn)步,開發(fā)手段多種多樣。: 按鍵處理子程序流程圖 鍵盤測試程序流程圖 超聲波換能器發(fā)射接收切換控制流程圖本設(shè)計中,兩個完全相同的超聲波換能器需要通過單片機進(jìn)行發(fā)射接收的切換,以實現(xiàn)順逆流傳播的時差測量。 鍵盤行列掃描主程序流程圖系統(tǒng)采用了行列式鍵盤,:在鍵盤掃描程序中,求得鍵值只是手段,最終目的是要使程序轉(zhuǎn)到相應(yīng)的按鍵處理程序完成鍵的操作。 主從單片機數(shù)據(jù)發(fā)送子程序流程 主從單片機之間需要進(jìn)行通信,發(fā)送接收數(shù)據(jù)的過程中采用中斷方式,: 主從單片機數(shù)據(jù)發(fā)送子程序流程圖 INT0中斷服務(wù)子程序流程圖 鍵盤子程序鍵盤子程序包括兩個部分:鍵盤掃描和鍵盤處理兩個部分,其中鍵盤處理部分包括按鍵預(yù)處理部分和按鍵處理部分。當(dāng)接收到主單片機的測量命令后,從單片機開始進(jìn)行傳播時間的測量,檢驗傳播時間的可靠性,并將這些數(shù)據(jù)通過串口送到主單片機進(jìn)行計算。流量計開啟后主單片機先執(zhí)行系統(tǒng)初始化子程序,包括初始化單片機的系統(tǒng)參數(shù)、程序運行中所需的常數(shù)等,并自動進(jìn)入?yún)?shù)設(shè)置狀態(tài),然后向從單片機發(fā)送命令;設(shè)置完參數(shù)后,進(jìn)入主單片機程序的測量及參數(shù)顯示狀態(tài),并在這一狀態(tài)中程序不斷掃描鍵盤,根據(jù)鍵入的命令跳轉(zhuǎn)到相應(yīng)的子程序模塊。超聲波流量計的軟件設(shè)計包括主從單片機兩部分,主單片機部分主要完成參數(shù)的設(shè)定、流量的計算、測量結(jié)果的顯示;從單片機部分主要完成測量電路的控制、傳播時間的測量、檢驗和傳輸?shù)?。?dāng)完成一個字節(jié)的數(shù)據(jù)接收后,置位RI并且申請一個串行中斷,只有在RI被清除之后才能夠進(jìn)行下一次接收。(2) 數(shù)據(jù)接收在REN標(biāo)志位和RI標(biāo)志同時為零后的下一個機器周期,串行口將1010 1010寫入接收緩沖寄存器,準(zhǔn)備接收數(shù)據(jù)。(1) 數(shù)據(jù)發(fā)送當(dāng)向SBUF寫入一個字節(jié)的數(shù)據(jù)之后,串行口在下一個機器周期開始時把數(shù)據(jù)串行發(fā)送到外部引腳RXD上,首先發(fā)送字節(jié)數(shù)據(jù)的最低位,同時,外部引腳TXD上會給出一個時鐘信號,該時鐘信號頻率為單片機工作頻率的1/12,在機器周期的第6節(jié)拍起始時變高,在第3節(jié)拍到來時變低,在第6節(jié)拍的后半段進(jìn)行一次數(shù)據(jù)移位操作。串行口在工作方式0下工作時,本質(zhì)上是一個移位寄存器,SBUF為移位寄存器的輸入、輸出寄存器,外部引腳RXD為數(shù)據(jù)的輸入/輸出端,外部引腳TXD用來提供數(shù)據(jù)的同步脈沖,移位脈沖為外部晶體頻率的1/,因此在同一時刻只能夠進(jìn)行數(shù)據(jù)發(fā)送或接收操作。 主從單片機的連接方法 本設(shè)計中,為了使系統(tǒng)具有更高的穩(wěn)定性,采用了主從單片機協(xié)同工作的方式。 本設(shè)計選用了X25045來實現(xiàn)看門狗功能。: 鍵盤 鍵盤電路圖-“4*4行列式鍵盤”區(qū)域中的C1-C4及R1-R4端口上。由于本系統(tǒng)需要對控制信號進(jìn)行實時操作,故采用靜態(tài)顯示方式以減少單片機的負(fù)擔(dān)。其顯示方法比較簡單,就是利用鎖存器將各顯示單元鎖定,直到更新顯示內(nèi)容為止。這種方式耗電少、硬件成本低,但需占用較多的單片機時間,故在工業(yè)控制中應(yīng)用較少。在進(jìn)行動態(tài)掃描顯示時,往往事先并不知道應(yīng)顯示什么內(nèi)容,這樣也就無從選擇被顯示字符的顯示段碼。 動態(tài)顯示:如果要在同一時刻顯示不同的字符,從電路上看,這是辦不到的。由于各位數(shù)碼管的顯示段碼是互相并聯(lián)的,因此在同一時刻只能顯示同一種字符。由于它具有顯示清晰、亮度高、使用電壓低、壽命長的特點,因此使用非常廣泛。使不同“段”的二極管發(fā)光即可構(gòu)成不同的字母和數(shù)字。 顯示電路 LED顯示器的結(jié)構(gòu)和原理LED數(shù)碼管是由發(fā)光二極管組成的,根據(jù)顯示塊內(nèi)發(fā)光二極管的連接方式不同,可分為共陰極和共陽極兩種形式。本設(shè)計從單片機選用AT89C51,它的功能主要有三項:(1) 控制超聲波換能器的切換并觸發(fā)換能器的第一次超聲波發(fā)射;(2) 接收電路范圍門的控制;(3) 控制計數(shù)電路的工作時序并從鎖存單元讀取計數(shù)值。實際上因為只關(guān)心N1與N2之差,而NN2高位相同,低位不同,故計數(shù)電路選用4片74S196芯片串接就可滿足需要。計數(shù)電路對已知頻率的方波計數(shù)以實現(xiàn)時間差的測量,方波的頻率越高,測量的精度越高。分頻計數(shù)器4040滿,將在INT1端產(chǎn)生一個下降沿,向單片機申請外部中斷。而三個開關(guān)的通斷則通過MC1413與單片機相連,由
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1