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

正文內(nèi)容

基于51單片機的電子式指南針的設(shè)計最后附源代碼(編輯修改稿)

2025-01-09 05:09 本頁面
 

【文章內(nèi)容簡介】 還有很多沒有使用的端口,鍵盤連接上直接采用了每個按鍵占用一個端口的形式 ,如圖 所示,電路的中的幾個電阻屬于上拉電阻,保證在沒有輸入的情況下端口電平穩(wěn)定為高,同時也可以達到省電的目的。鍵盤的讀取采用掃描的形式,當檢測到有按鍵按下時,消抖動后進行鍵值判斷。 圖 串口邏輯電路 圖 12 第 4 章 系統(tǒng)軟件 主監(jiān)控程序 整個監(jiān)控系統(tǒng)中各個模塊間存在一定的先后順序且程序模塊數(shù)量較少,為了減少系統(tǒng)的程序量,設(shè)計過程中系統(tǒng)的監(jiān)控程序采用了傳統(tǒng)的前后臺方式。整個監(jiān)控程序主要由指南針模塊驅(qū)動、液晶顯示驅(qū)動、實時時鐘驅(qū)動和串口驅(qū) 動組成。整個系統(tǒng)監(jiān)控程序流程如圖所示。當系統(tǒng)上電后,最先執(zhí)行的就是對系統(tǒng)各個部件進行初始化的代碼,其中主要包括對系統(tǒng)內(nèi)部定時器、實時時鐘、 LCM驅(qū)動、指南針模塊以及對系統(tǒng)通信串口的初始化。系統(tǒng)初始化完成時對指南針模塊進行讀取,此時指南針模塊將根據(jù) ADJUST 端口的電平狀態(tài)判定是否需要校正指南針,其后將得到的數(shù)據(jù)上傳至微控制器,微控制器根據(jù)得到的數(shù)據(jù)驅(qū)動 LCM 進行相應(yīng)的顯示,隨后微控制器將對系統(tǒng)鍵盤端口進行掃描,并根據(jù)掃描得到的鍵值進行相應(yīng)的處理。前后臺式的監(jiān)控系統(tǒng)結(jié)構(gòu)簡單,但是其實時性較差。系統(tǒng)中由于各個程 序之間相互關(guān)聯(lián),且對實時性要求不是很高,前后臺能夠滿足其要求。 ]2[ 代碼如下所示: void main(void) { 圖 系統(tǒng)監(jiān)控程序流程 13 unsigned int Angle。 InitScreen()。 /* 初始化 LCM */ DisMain()。 /* 初始化系統(tǒng)部件 */ while(1) { Angle = GetDirction()。 /* 獲得指南針方位 */ DisCurDirc(Angle)。 /* 顯示系統(tǒng)角度 */ DisCurTime(11, 15)。 /* 顯示系統(tǒng)時間 */ DisCurDate()。 /* 顯示系統(tǒng)日期 */ RollScreen()。 /* 顯示系統(tǒng)廣告 */ ScanKey()。 /* 掃描鍵盤并判定發(fā)送 */ } } 實時時鐘驅(qū)動 本次設(shè)計采用的 PCF8583 實時時鐘芯片采用的 I2C 接口,對它的所有操作直接通過對其內(nèi)部線性的 CMOS RAM 區(qū)進行操作即可即對 PCF8583 的操作主要是通過 I2C 總線對其內(nèi)部 RAM 進行讀寫。整個驅(qū)動流程如圖 所示。 圖 PCF8583 驅(qū)動流程 14 人機界面驅(qū)動 液晶模塊驅(qū)動 液晶顯示驅(qū)動處于系統(tǒng)的最后端,屬于人機交互界面。直觀的液晶顯示能夠使得系統(tǒng)更容易操控。本次設(shè)計采用了 PG160128 點陣的 LCM 模塊。整個 LCM 驅(qū)動的構(gòu)架圖如 圖 所示。采用層次設(shè)計的驅(qū)動可以很好的移植到不同的處理器。 鍵盤驅(qū)動 系統(tǒng)中將按鍵電路中按鍵 1K 、 2K 、 3K 、 4K 、 5K 分別與單片機的 P1P1 P1 P1 P17 引腳進行連接,此按鍵是低電平有效,當有鍵按下時,與按鍵相連接的單片機引腳檢測到這個信號,然后進行相應(yīng)的處理后再輸出。 ]2[ 傳感器模塊驅(qū)動 本次設(shè)計采用的是 FAD_DCMP_SPI 指南針模塊。模塊采用 SPI 接口與 MCU 進行數(shù)據(jù)交換。整個模塊驅(qū)動包括了讀取 PNI11096 數(shù)據(jù)、處理數(shù)據(jù)、封裝數(shù)據(jù)和通過 SPI 時序發(fā)送數(shù)據(jù)幾個部分。程序的流程如圖 所示。 圖 指南針模塊內(nèi)部數(shù)據(jù)處理流程 圖 LCM 驅(qū)動程序架構(gòu) 15 在整個指南針模塊程序的設(shè)計過程中最主要的也就是其數(shù)據(jù)的處理,直接關(guān)系到系統(tǒng)的精度。在還沒有處理之前從 PNI11096 讀取的數(shù)據(jù)真實的反應(yīng)了水平面內(nèi)地磁場的分布情況,如圖 所示,這是均勻轉(zhuǎn)動指南針模塊得到的地磁場強度分布,圖中顯示地磁場強度在不同方向上的分布是不同的,經(jīng)過歸一化后,可以很好的將其歸一化為圓,使得在各個方向上的磁場強度均勻,這樣既可以方便進行角度計算又可以提高測量精度,如圖 。 指南針模塊在第一次使用前都必須校正,系統(tǒng)上電時將模 塊的 ADJUST 引腳拉低即可進入校正狀態(tài),將模塊在水平面內(nèi)均勻的轉(zhuǎn)動一周后校正結(jié)束。校正時主要調(diào)整的系數(shù)就是本地的磁偏角。將磁場強度歸一化后,直接對 X,Y 軸的強度進行計算就可以得到當前方向與正東方向的夾角,如圖 所示。 從圖 中可以看出夾 角就是: )/tan( xyaangle ? () 指南針模塊關(guān)鍵程序如下: float pi=atan(1)*4。 int Xvalue,Yvalue。 圖 未處理時真實磁場強度分布 圖 歸一化后磁場強度分布 圖 角度的計算 16 int angle,heading。 GetRawXY()。 /*計算坐標函數(shù) */ Xvalue=XrawXoffset。 /*減去 x坐標補償量 */ Yvalue=YrawYoffset。 if(Xvalue Yvalue) Yvalue=( Yvalue*Xrange)/Yrange。 /*Y 增益匹配 */ else Xvalue=( Xvalue*Yrange)/Xrange。 /*X 增益匹配 */ angle=atan(Yvalue/Xvalue)*180/pi。 /*計算角度 */ if(Xvalue=0amp。amp。Yvalue=0) heading=angle。 /*第一象限 */ else if(Xvalue0amp。amp。Yvalue=0) heading=180angle。 /*第二象限 */ else if(Xvalue0amp。amp。Yvalue0) heading=180+angle。 /*第三象限 */ else if(Xvalue=0amp。amp。Yvalue0) heading=360angle。 /*第四象限 */ 17 第 5章 仿真結(jié)果 本研究采用 Proteus軟件進行仿真,采用 Keil軟件編譯。整個電路包括 CPU、系統(tǒng)時 鐘、實時時鐘電路、指南針模塊接口、 LCD顯示模塊、通信模塊和鍵盤輸入電路。仿真時使用虛擬終端模擬上位機,并顯示出時鐘窗口。 本研究所用 MCU采用 DS89C450,與 89C52兼容,在仿真中采用 AT89C52代替,另外,實時時鐘采用 PCF8583芯片, LCD采用 160128 點陣的單色液晶顯示屏 。仿真結(jié)果表明電子指南針精度可達 1176。 。仿真圖如圖 。 圖 Proteus 仿真圖 18 第 6章 結(jié)論 所設(shè)計的系統(tǒng)中包含了磁場傳感器、微控制器、顯示部件、輸入部件和實時時鐘等部分,微控制器通過對磁場傳感器配套的 ASIC 進行讀取獲 得當前方向地磁場的強度,通過一定的運算后由直觀的人機界面顯示出來,并可通過微控制器的串口和上位機建立連接進行數(shù)據(jù)的傳輸 。 在整個設(shè)計系統(tǒng)中充分掌握各模塊電路的工作原理,對硬件電路進行設(shè)計 ,并使用 C語言編寫全部的驅(qū)動程序。本系統(tǒng)用于方位指示 實測精度可以達到 1176。,顯示直觀,并且可以嵌入到其它電子設(shè)備(如 GPS)中。 因為個人在知識面和能力方面還有限,再加上條件的限制,電子指南針的 采樣精度和抗干擾能力等 各項技術(shù)指標的提高、諸多功能的完善還需要進一步的研究和開發(fā) , 此外在完成基本功能的基礎(chǔ)上,還需要努力提高軟件的效率 、硬件系統(tǒng)的穩(wěn)定性、降低 系統(tǒng) 功耗等 。 19 致 謝 非常感謝 xx老師在我大學的最后學習階段 —— 畢業(yè)設(shè)計階段給自己的指導(dǎo),從最初的定題,到資料收集,到寫作、修改,到論文定稿, 老師 給了
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1