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

正文內(nèi)容

無線定位系統(tǒng)的設(shè)計(jì)與制作論文(文件)

2025-07-12 05:57 上一頁面

下一頁面
 

【正文】 QA-QH 輸出端74LS164 與單片機(jī)的接口只要兩條線,一條控制通信時(shí)鐘信號(hào)線,一條用來輸出數(shù)11據(jù)。目前的 PC 機(jī)都有至少一個(gè)串行通訊端口 RS232,RS232 端口可用于兩臺(tái)計(jì)算機(jī)之間進(jìn)行通訊,RS232 的邏輯電平用正負(fù)電壓表示,且信號(hào)使用負(fù)邏輯,邏輯 0 的電壓范圍是+5V~+15V,而邏輯 1 的電壓范圍是5V~ 15V。我們采用了三線制連接串口,也就是說和計(jì)算機(jī)的 9 針串口只連接其中的 3 根線:第 5 腳12的 GND、第 2 腳的 RXD、第 3 腳的 TXD。(5)步進(jìn)電機(jī)控制由于需要準(zhǔn)確定位信號(hào)方向因此系統(tǒng)所采用的電機(jī)必須能夠快速啟停與準(zhǔn)確定位,步進(jìn)電機(jī)比直流電機(jī)更加符合以上要求。 使 得 在 速 度 、 位 置 等 控 制 領(lǐng) 域 用 步 進(jìn) 電 機(jī) 來 控 制 變 的 非 常 的 簡 單 。ULN2022 內(nèi)部電路如圖 :圖 ULN2022 內(nèi)部電路圖ULN2022 是高耐壓、大電流達(dá)林頓陳列,由七個(gè)硅 NPN 達(dá)林頓管組成。電機(jī)工作時(shí)四相逐一供電,四相步進(jìn)電機(jī)有如下工作方式:(1)單相四拍工作方式:其電機(jī)四個(gè)繞組 A、B、 C、D 相的正轉(zhuǎn)通電順序?yàn)?ABCDA。(3)雙四拍工作方式:其電機(jī)四個(gè)繞組 A、B、C、D 相的正轉(zhuǎn)通電順序?yàn)?ABBCCDD 反轉(zhuǎn)通電順序?yàn)?ADDCCBBAAD。穩(wěn)壓電源電路如圖 :圖 穩(wěn)壓電源電路 如圖 所示,整流橋使用芯片進(jìn)行整流,具有更高的穩(wěn)定性。對(duì)于 MCS—51 單片機(jī)來說現(xiàn)有 4 種語言支持,即匯編、PL/M、C 和 BASIC。C 語言可以進(jìn)行許多機(jī)器級(jí)函數(shù)控制而不用匯編語言。德國的 KEIL 公司在代碼生成方面處于領(lǐng)先地位,可產(chǎn)生最少的代碼, 多 數(shù) 語 句 生 成 的 匯 編 代 碼 很 緊 湊 , 容 易 理 解 。本系統(tǒng)的軟件結(jié)構(gòu)模仿嵌入式操作系統(tǒng)的思想將結(jié)構(gòu)分為底層驅(qū)動(dòng),系統(tǒng)層和應(yīng)用層,具體描述如下:(1)底層驅(qū)動(dòng):由硬件結(jié)構(gòu)可知,軟件部分要包含 AD 轉(zhuǎn)換,數(shù)碼管顯示和電機(jī)驅(qū)18動(dòng)這三個(gè)功能,為了提高代碼的可移植性和代碼的可讀性,實(shí)現(xiàn)這三個(gè)功能的函數(shù)分別包含在 , 和 這三個(gè)頭文件中。第三:對(duì)各硬件模塊的操作已經(jīng)由這幾個(gè)頭文件的函數(shù)實(shí)現(xiàn),相當(dāng)于嵌入式系統(tǒng)中的底層驅(qū)動(dòng)函數(shù),上層的應(yīng)用只要調(diào)用這些函數(shù)而不必知道這些函數(shù)的實(shí)現(xiàn)原理。這個(gè)多任務(wù)系統(tǒng)準(zhǔn)確來說,叫作協(xié)同式多任務(wù)。在 52 里,堆棧及堆棧指針都是可被任意修改的,當(dāng)程序執(zhí)行CALL 后,在子程序里將堆棧剛才壓入的斷點(diǎn)地址清除掉,并將一個(gè)函數(shù)的地址壓入,那么執(zhí)行完 RET 后,程序就跳到這個(gè)函數(shù)去了,事實(shí)上,只要我們?cè)?RET 前將堆棧改掉,就能將程序跳到任務(wù)地方去,而不限于 CALL 里壓入的地址。在啟動(dòng)任務(wù)調(diào)度前將各個(gè)任務(wù)函數(shù)的入口地址放在上面所說的任務(wù)專用內(nèi)存塊。三個(gè)函數(shù)的代碼如下: void task1() { while(1) { if(TimeStartFlag == 1){ ReadSignal()。amp。 } task_switch()。調(diào)試時(shí),從宏觀上,要先對(duì)硬件進(jìn)行調(diào)試,再對(duì)軟件進(jìn)行調(diào)試。信號(hào)接收模塊是由分立元器件組成的高頻電路,容易受到干擾,調(diào)試較為復(fù)雜。再給單片機(jī)控制模塊上電,看電源是否有足夠的功率為整個(gè)系統(tǒng)供電。(3)信號(hào)接收模塊是本次設(shè)計(jì)中最為復(fù)雜的電路,因?yàn)槭歉哳l電路,調(diào)試較為困難,考慮到本電路就是參照收音機(jī)設(shè)計(jì)出來的,所以使用收音機(jī)代替接收模塊,將收音22機(jī)喇叭的信號(hào)線引出來接到檢波電路上,把交流變成直流信號(hào)最后送到 AD 轉(zhuǎn)換電路。 測(cè)試方法與步驟(1)數(shù)碼管顯示子程序調(diào)試:在 主程序里面,調(diào)用 頭文件中的senddata()函數(shù),給數(shù)碼管送不同的數(shù)據(jù),看數(shù)碼管能不能正常顯示數(shù)字。(2)測(cè)試步進(jìn)電機(jī)驅(qū)動(dòng)程序時(shí),發(fā)現(xiàn)電機(jī)失步,經(jīng)過檢查后發(fā)現(xiàn),給 P2 口送的節(jié)拍數(shù)據(jù)有錯(cuò),因?yàn)?ULN2022 是反向驅(qū)動(dòng)器,所以應(yīng)該把原來的數(shù)據(jù)取反后送到 ULN2022這樣才能得到正確的節(jié)拍。發(fā)射機(jī)也是影響系統(tǒng)的定位精度和靈敏度的一大因素,如果發(fā)射機(jī)受到的干擾大,接收機(jī)收到的信號(hào)干擾也會(huì)很大,所以發(fā)射機(jī)性能的穩(wěn)定,也是本系統(tǒng)的關(guān)鍵部分。電源: 交流 220V177。在對(duì)系統(tǒng)進(jìn)行穩(wěn)定性測(cè)試時(shí),還發(fā)現(xiàn)一個(gè)問題,系統(tǒng)在運(yùn)行過程中有的時(shí)候會(huì)出現(xiàn)系統(tǒng)電源電壓突然降低,單片機(jī)無法正常工作。當(dāng)設(shè)計(jì)的方案確定下來之后開始進(jìn)行繪制原理圖和 PCB 電路圖。硬件系統(tǒng)調(diào)試完畢之后,就開始進(jìn)行軟件的編寫。完成了上述的過程后,本次畢業(yè)設(shè)計(jì)算是小有所成了。一個(gè)學(xué)期的畢業(yè)設(shè)計(jì)讓我的各方面的能力得到了加強(qiáng),本次設(shè)計(jì)中用到了很多模電,高頻和單片機(jī)的知識(shí),在設(shè)計(jì)過程中,這些知識(shí)得到了加深和鞏固。25致 謝時(shí)間如流水,四年,一閃而逝?。?!這四年是人生中重要的四年,我不僅能夠接觸到傳道授業(yè)解惑的良師,還能認(rèn)識(shí)許在多方面比我優(yōu)秀的同學(xué)、朋友。老師治學(xué)嚴(yán)謹(jǐn),學(xué)識(shí)淵博,思想深邃,視野廣廓,為我營造了一種良好的設(shè)計(jì)氛圍。 unsigned char task_id。 } //(參數(shù) 1)裝入指定(參數(shù) 2)來就有任務(wù),則原任務(wù)丟失,但系統(tǒng)本身不會(huì)發(fā)生錯(cuò)誤. void task_load(unsigned int fn, unsigned char tid) { task_sp[tid] = task_stack[tid] + 1。 } //,將永不返回. define os_start(tid) { task_id = tid 。TimeStartFlag = 0。 (VolNum 72)){ Step8(113, 1)。} } void main() { Init_Timer0()。//將 task2 函數(shù)裝入 1 號(hào)槽 task_load(task3, 2)。 channel =3。i13。 channel=1。 _nop_()。j1++) //處理讀入 8 位數(shù)據(jù) { ADC_CLK=0。 ADC_CLK=1。 //返回轉(zhuǎn)換值 } void ReadSignal() { unsigned char ADtemp0。 senddata(VolVaule[VolNum])。 for(c=0。0x80。 sendbyte(10)。 sendbyte(da)。 (da0)) {sendbyte(da)。amp。33 sendbyte(ShiWei)。da1000) { GeWei=da%10。 BaiWei=da/100。 sbit DO = P1^1。 /*定義數(shù)碼管的段碼值,和 74LS164 串行轉(zhuǎn)并行與 51 引腳的連接*/ unsigned char code tab[]={0x08,0x6B,0x44,0x14,0x32,0x11,0x01,0x3C,0x00,0x10,0xff}。//啟動(dòng)定時(shí)掃描任務(wù)標(biāo)志,啟動(dòng)步進(jìn)電機(jī)速度控制標(biāo)志 bit TimeStartFlag, MotorStartFlag。//用來記錄電機(jī)在轉(zhuǎn)動(dòng)過程中采集到得電壓值的數(shù)量 void delay(unsigned int t) //簡單的延時(shí) { while(t)。//中斷使能 EA = 1。 TL0 = 0x0E。35********************************************/ if(MotorEnableFlag == 1){ MotorCount ++。和上面的電 機(jī)速度控制一樣,程序通過電壓采樣 TimeStartFlag 做為標(biāo)志位控制電壓采樣時(shí)間的標(biāo)志位。}} }endififndef SignalPro define SignalPro void SignalProcess() {unsigned char i。 i++){ /*數(shù)碼管停止顯示*/ CloseDis()。36 delay(60000)。 for(i=1。} } /*讓電機(jī)轉(zhuǎn)到電壓值最大的那個(gè)方向*/ Step8(113*(PosMax + 1), 1)。 i++) { if(VolVaule[i] VolMax){VolMax = VolVaule[i]。 delay(60000)。 delay(30000)。/*顯示采樣得到的 36 個(gè)電壓值*/ for(i=0。 if(TimeCount 998){TimeStartFlag = 1。MotorCount = 0。如果電機(jī)使能標(biāo)志為 1,電機(jī) 計(jì)數(shù)器 MotorCount 在定時(shí)器發(fā)生中斷時(shí)進(jìn)行累加, 當(dāng) MotorCount 等于 3 時(shí),計(jì)時(shí)時(shí)間就達(dá)到 2ms,同 時(shí)電機(jī)啟動(dòng)標(biāo)志位 MotorStartFlag 置為 1。 TR0 = 1。//定時(shí)器初始值 TH0 = 0xFE。//時(shí)間掃描計(jì)數(shù)器,步進(jìn)電機(jī)速度控制計(jì)數(shù)器 unsigned char VolVaule[72]。 sbit CLK1=P2^6。 //定義兩個(gè)數(shù)組,用來存放步進(jìn)電機(jī)節(jié)拍,一個(gè)是正轉(zhuǎn)一個(gè)反轉(zhuǎn) const unsigned char bapaiz[8]={0X0E,0X0C,0X0D,0X09,0X0B,0X03,0X07,0X06}。 } } endififndef BLDefine define BLDefine /**************************************** 本頭文件包含程序中要用到的所有變量的定義 ****************************************/ /*AD 轉(zhuǎn)換芯片 AD0832 與 52 引腳的連接*/ sbit CS = P1^3。 ShiWei=(da/10)%10。 } if(da=100amp。 sendbyte(GeWei)。 sendbyte(10)。 } if((da10) amp。 } void senddata(unsigned int da) { unsigned char GeWei, ShiWei, BaiWei。 num=1。c++) { CLK1=0。32 } endififndef LS741642 define LS741642 void sendbyte(unsigned char byte){ unsigned char num, c。 } ADtemp0 = ReadADC(0)。Temp = (unsigned int)(5 * Temp * 10 / 255)。 Temp=(Temp1)|DO。 for(j1=0。 ADC_CLK=1。 _nop_()。 CS =0。 }31ifndef ADC0832 define ADC0832 unsigned int ReadADC(unsigned char channel){ unsigned char i1,j1。 //這里裝載了兩個(gè)任務(wù),因此在定義 MAX_TASKS 時(shí)也必須定義為 2 task_load(task1, 0)。 } } void task3() { while(1) { if(VolNum = 72) { SignalProcess()。 } } void task2() { while(1) { if((TimeStartFlag == 0) amp。 return 。 0xff。 if(++task_id == MAX_TASKS) { task_id = 0。在此,謹(jǐn)向老師表示崇高的敬意和衷心的感26
點(diǎn)擊復(fù)制文檔內(nèi)容
語文相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1