【多功能視力檢測系統(tǒng)設計探究14000字(論文)】_第1頁
【多功能視力檢測系統(tǒng)設計探究14000字(論文)】_第2頁
【多功能視力檢測系統(tǒng)設計探究14000字(論文)】_第3頁
【多功能視力檢測系統(tǒng)設計探究14000字(論文)】_第4頁
【多功能視力檢測系統(tǒng)設計探究14000字(論文)】_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

-1-多功能視力檢測系統(tǒng)設計研究目錄TOC\o"1-2"\h\u19428多功能視力檢測系統(tǒng)設計 -1-140831引言 -2-249792概述 -4-106952.1視力檢測系統(tǒng)概述 -4-57462.2本設計方案思路 -5-270812.3研發(fā)方向和技術關鍵 -5-102882.4主要技術指標 -5-303103總體設計 -6-60083.1檢測系統(tǒng)工作內(nèi)容設計 -6-228683.2檢測系統(tǒng)工作流程設計 -6-30643.3檢測系統(tǒng)結構框架設計 -8-53994硬件設計 -8-147274.1微處理器模塊設計 -9-256024.2復位電路及電源電路設計 -10-224304.3調試接口和語音模塊設計 -10-133954.4按鍵輸入模塊設計 -11-14124.5顯示模塊設計 -11-292355軟件設計 -12-22605.1總體方案 -12-303595.2程序流圖 -13-3335.3模塊說明 -15-272276制作與調試 -22-174226.1硬件電路的制作 -22-100026.2調試 -22-249917結論 -23-摘要中國是當今世界上近視人口數(shù)目最多的國家,我國的近視人口數(shù)目還在不斷攀升。但是,當今社會上廣泛使用的視力測量方法都有些許不方便,基于此,本畢業(yè)設計研究了一種自助式的視力檢測系統(tǒng),該系統(tǒng)是一款主從一體系統(tǒng),主機用于檢測視力,從機可以收到視力結果,在實際應用中從機可用于醫(yī)生或其他檢測人員進行其他操作,該系統(tǒng)擁有較大的市場潛力和前景。本畢業(yè)設計主要設計自主研發(fā)的基于STM32的自助式視力檢測系統(tǒng),繼而確保一個人即可實現(xiàn)視力較為精準的測試。該視力檢測系統(tǒng)主要包括STM32控制器、OLED顯示模塊、HC05藍牙模塊以及SYN6288語音合成模塊,對遙控器輸入的方向信號的處理過程是整個系統(tǒng)的關鍵。視力檢測的檢測過程,首先由STM32單片機從大到小隨機產(chǎn)生字符‘E’,將該字符顯示到OLED屏幕上,檢測者可以通過手中的遙控器輸入個人所認為看到的‘E’的方向,單片機接收來自遙控器的信號,通過處理該信號,對比顯示的字符方向與輸入的方向,判斷其輸入的方向是否正確。檢測算法簡化為從1.0開始逐級增加到5.0,過程中出現(xiàn)兩次錯誤后即終止測試,錯誤的前一次值即為視力值,并語音播報其最終視力檢測的結果。關鍵詞:視力檢測;OLED顯示;語音合成;藍牙通信1引言中國隨著歷史的發(fā)展已經(jīng)成為世界上的人口大國,并且在各個領域都在不斷進步,經(jīng)濟實力的不斷提高,社會文明的不斷進步,除了在國防科技和經(jīng)濟文化等方面不斷取得巨大成就外,我國國民對自身的身體健康素質也在快速的往好的方向發(fā)展變化。其中,視力作為人們?nèi)粘I钪薪邮沼嵪⒌淖钪匾姆绞?,在我們的生活中起到關鍵性的作用,因此,對視力方面也愈加重視。相關的調查研究顯示出,中國的近視人口大約占國家總人口的33%,因此,針對視力檢測方面的研究更具有迫切性,關于視力檢測儀器的發(fā)展也具有廣闊的前景和巨大的市場潛力。在市面上主要有兩種視力檢測的方法,一種是人工棒點的簡易測試裝置,該方法需要配備一名專業(yè)人員,按照所指方向與被檢測者指向的方向,來變換字符E的大小,該方法在一些小城市和發(fā)展水平較為落后的地方使用較廣,但是其準確度易受光線和醫(yī)務人員的專業(yè)程度的影響,在當代逐漸被淘汰掉,發(fā)展為更為先進的人工燈光定位視力檢測裝置,用高級的背投光技術替代長棍點擊,既減輕了工作人員的工作負擔,也在一定程度上減輕了光線的干擾,從而提高了視力檢測的準確程度;另一種方法是利用精密儀器的驗光儀器的屈光檢查,它主要是一種利用電子光學技術來準確地測量人類眼球的彎曲和半徑,并通過圖像投影技術來準確地測得人類的視力結果的技術,測試的過程中全程都是由儀器完成,不必被測試者一起進行判斷,該方法雖然具有測量速度快,精確性高的特點,但是這種儀器價格高昂,適合在專業(yè)的眼鏡商店和大型醫(yī)院等場合所為使用。因此,雖然視力檢測儀器具有廣大的市場潛力,但是在檢測儀器的方便程度和檢測質量方面都有著許多的問題,基于此,這是本課題研究的根本原因,即為了設計出方便快捷且檢測結果良好的視力檢測儀器,從而推動全民視力檢測,有助于緩解社會目前日益嚴重的視力問題。本課題設計的多功能視力檢測系統(tǒng)采用STM32單片機芯片系統(tǒng)及相關的控制程序來實現(xiàn)自助式的視力檢測,能對被檢測者的近視程度進行檢測,并采用語音播報其視力檢測結果。采用STM32單片機主要是由于其產(chǎn)品具有良好的特點和性能品質價格比,集成程序化程度高,方便于攜帶,可控性好,低功耗,便于生產(chǎn)嵌入式小型產(chǎn)品等優(yōu)良特點;以及在現(xiàn)代,單片機控制電路技術成熟,外設模塊多,方便獲取等優(yōu)點,因此,可以普遍適用于家庭、各類診所和眼鏡店等等場所。2概述2.1視力檢測系統(tǒng)概述多功能視力檢測系統(tǒng)的工作原理是綜合運用電子模塊實現(xiàn)一個較為智能化的電子設備,從而更新取代傳統(tǒng)的視力測試方法,該系統(tǒng)一般包括STM32單片機控制部分、OLED顯示模塊、HC-05藍牙模塊和SYN6288語音播報模塊。如圖2-1所示,當輸入用戶信息后即可進入視力檢測,首先單片機模塊從大到小依次產(chǎn)生隨機方向的字符‘E’,并將其顯示到OLED屏上,被檢測者站在距離屏幕五米的地方,通過遙控器,輸入自己所認為的‘E’的方向,藍牙模塊接收該方向信號之后,并將該信號發(fā)送給單片機,STM32單片機處理該信號,并比對與顯示的方向是否一致,若是,則將顯示的隨機字符‘E’變小,并繼續(xù)測試,若不是,則將顯示的隨機字符‘E’變大,總共檢測十次,若同一字符大小錯兩次,則視力檢測的結果為該錯誤字符的上一個較大字符。最終該視力結果將由語音播報出來。藍牙發(fā)射器藍牙發(fā)射器藍牙接收器存儲器單片機單片機按鍵輸入液晶顯示用戶信息作答結果語音播報圖2-1系統(tǒng)總體框圖本視力檢測系統(tǒng)可以用于家庭或者小型眼鏡店等場所,它可以較為準確的測量出用戶的視力信息,并且具有能量消耗低、方便快捷等優(yōu)勢特點。目前的該視力檢測系統(tǒng)采用STM32單片機為主控制器,因為其在使用上比較普遍,可連接的外設也多,功能比較豐富,而且功耗和體積都比較小,不但可以省去又大又重的檢測儀器,整個系統(tǒng)本身也可以制作得又小又輕,非常方便使用和搬移。我認為視力檢測儀應有以下幾個方面的發(fā)展趨勢:(1)可以實現(xiàn)的功能越來越多,視力檢測系統(tǒng)應朝著系列化、功能化的方向發(fā)展,一個視力檢測系統(tǒng)應不僅可以測量近視程度,還有散光,色覺等其他方面的功能。系列化、功能化的好處是便于使用、更新和維修,同時價格也較為實惠。(2)采用各種新的科學技術增加功能的豐富性和有趣性,例如用計算機來采集數(shù)據(jù),同時操控整個視力檢測的進程,分析視力檢測的結果并提出相關的、有益的建議等。2.2本設計方案思路整個視力檢測系統(tǒng)是以個人自助式檢測為主要目的,使用可以調整控制的軟件和硬件結構所進行構建的,使其具有明確詳細的使用功能,且就其現(xiàn)實意義而言,其具有可控制行、價格低廉、體型小、能耗低的優(yōu)良特點,是一種集實用性和便捷性一體的視力檢測專用系統(tǒng)。在方向信號接收方面設計HC-05藍牙模塊電路;在方向信號的處理和解析方面,采用ARM先進架構的32位MCU的STM32F103VE型單片機芯片;在字符E的顯示上采用0.96寸,像素大小為128x64的OLED顯示屏;在最終的結果處理上,采用SYN6288語音合成芯片,因為其語音合成效果大概率是清楚可靠且較為標準的。該處理系統(tǒng)的硬件視力圖像檢測處理系統(tǒng)的硬件設計過程可以大致分為應用硬件和集成電路兩個基本方面的硬件設計與應用軟件的可編程設計,在硬件設計上,采用分模塊設計電路,先設計調試好各個模塊,再將所有模塊連接起來,進行聯(lián)調;在軟件設計上,也同樣按照子模塊劃分,設計好各個模塊的可執(zhí)行代碼,調試成功后,最后進行軟硬件聯(lián)調。2.3研發(fā)方向和技術關鍵(1)合理劃分視力檢測的等級,提高檢測的精度;(2)對接受到的方向信號的處理;(3)視力檢測的算法設計,檢測次數(shù)越多越精確;(4)最終檢測結果的語音播報。2.4主要技術指標(1)測試距離:5米(2)功耗:<0.5W(3)電壓:5V3總體設計3.1檢測系統(tǒng)工作內(nèi)容設計本課題計劃對市場上現(xiàn)存的視力檢測工具進行更加智能化的設計,使其更加便于使用以及功能豐富。本課題設計的多功能視力檢測系統(tǒng),是以STM32為主控制器,其他外部模塊相連接而成的,在系統(tǒng)中,單片機是核心,連接著藍牙模塊、OLED顯示模塊、語音合成模塊,各個模塊的體積都偏小,單片機也是使用的正點原子的Mini板,該板子是市面上所有板子中體積較小的一種。該視力檢測系統(tǒng)首先在OLED顯示屏上顯示最大號的字符‘E’,方向是隨機的,然后被檢測者手持遙控器,輸入自己所認為看到的‘E’的方向,通過遙控器的紅外傳輸,將該方向信號傳回單片機中,單片機處理該信號,并將其與顯示的E的方向進行比較,正確,則將字符變小,否則,將字符變大,錯誤兩次則推出檢測過程,視力結果即為錯誤的前一次視力值,顯示屏會顯示該視力結果,并語音播報該視力值,整體檢測過程較為簡單方便,非常適合個人自助式檢測視力。此外,除了進行視力檢測的基本功能外,該系統(tǒng)應具備初始化系統(tǒng),對各個儀器部件進行初始化和檢查,以及若測試者遲遲不應答或出現(xiàn)意外的情況,系統(tǒng)應具備一定的保護措施。3.2檢測系統(tǒng)工作流程設計根據(jù)上部分的工作內(nèi)容設計視力檢測系統(tǒng),我們對該自助式視力檢測系統(tǒng)進行工作步驟上的進一步細分,總的來看可以劃分為隨機字符E的生成—遙控器的輸入—判斷輸入的正誤—程序處理—結果顯示及語音播報這幾個關鍵的部分。為了更加科學的完成本課題的實驗功能,我們不僅要對各部分工作進行相應的模塊化分析,又要兼顧整個系統(tǒng)的性能的合理性。我們對視力檢測系統(tǒng)在一個檢測周期中的工作步驟進行了合理的設定,也即對被檢測者在進行自主測試時,檢測系統(tǒng)需要完成的工作內(nèi)容進行科學的設計,如下:初始化階段:當測試即將開始時,系統(tǒng)上電,系統(tǒng)開始進行初始化,為視力檢測做好準備工作,當系統(tǒng)初始化順利時,才繼續(xù)進行測試工作,當初始化錯誤時,則系統(tǒng)報錯,設計者來解決該錯誤。此后,輸入測試者信息,測試即可開始。隨機字符生成階段:在整個檢測過程中,都是由STM32單片機生成隨機字符E,該字符是從其存儲器中調出。開始時,控制器調出最大號的字符E,方向隨機,同時將它顯示在OLED顯示屏上,然后等待被檢測者遙控輸入自己認為的字符E的方向。隨機字符方向判斷階段:當被檢測者通過遙控器輸入方向后,藍牙接收該方向信號,并將其傳送到控制器里,檢測進入判斷階段,系統(tǒng)會根據(jù)接收到的測試者輸入的符號方向與原來顯示的方向信息進行對比。若檢測到方向一致,則說明被檢測者判斷正確,否則說明判斷有錯。檢測控制階段:在整個視力檢測的過程中,系統(tǒng)要逐個對隨機字符E從大到小的顯示,也即每一個新顯示在OLED屏上的字符都比上一個字符要小一號。此外,還有判斷正誤的步驟,只有當輸入的方向判斷為真,系統(tǒng)才會繼續(xù)顯示小一號的字符,若系統(tǒng)判斷為假,則顯示大一號的字符,若同一字符大小兩次判斷為假,則被檢測者的視力結果為該錯誤字符的上一個字符大小進行輸出。結果生成階段:系統(tǒng)將上一階段的判斷結果的字符大小作為被檢測者的視力結果進行輸出,并將結果顯示在OLED屏上,同時語音播報其視力大小。其中,下面的流程框圖是檢測系統(tǒng)在一個周期內(nèi)的工作流程框圖:輸入測試者信輸入測試者信息輸入E的方向輸入E的方向藍牙發(fā)射上述信息藍牙發(fā)射上述信息圖3-1遙控模塊流程圖生成隨機方向的E生成隨機方向的E判斷輸入是否正確判斷輸入是否正確檢測結果并播報檢測結果并播報圖3-2生成E和接受判斷方向模塊流程圖3.3檢測系統(tǒng)結構框架設計自助式視力檢測系統(tǒng)的兩大構成部分:硬件電路設計和軟件程序設計。本課題所研究的自助式視力檢測系統(tǒng)結構較為簡單、使用上也較為方便,同時,由于檢測次數(shù)足夠,所以檢測結果準確可靠。根據(jù)自助式視力檢測的技術要求,為了更好地使得系統(tǒng)各個部分的功能得到完善,我們將檢測系統(tǒng)各個部分按照在整個系統(tǒng)中的功能分別進行相應的模塊和劃分,整體上我們可以將其劃分為以下幾個部分,STM32主控制器模塊、藍牙傳輸模塊、OLED顯示模塊、語音合成模塊。同時為了使得檢測系統(tǒng)在整體上性能穩(wěn)定、可以控制,還要保證各個小的模塊在功能上較為完整,在結構上緊湊,這樣才能實現(xiàn)系統(tǒng)的完整功能,保證其體積不過于大。從系統(tǒng)的緊湊性上來說,過于復雜的電路結構不僅有可能導致電路混亂而且會造成電路原件的浪費,因此,我們要盡可能減少外部單元的使用,精簡模塊結構,以此來增加整個系統(tǒng)的可靠程度;從系統(tǒng)的穩(wěn)定性來說,自助式視力檢測系統(tǒng)在使用上要存在必要的可調節(jié)性,來減少外界環(huán)境帶來的不可抗拒的影響。綜合上述考慮,我們最終在硬件模塊的主控制器模塊選的是STM32F10系列,正點原子的Mini板,總共有兩塊板子,一塊用于作主機處理信號,一塊用于作從機,接收信號并作其他用途,如打印或分析等;用于顯示隨機字符E的顯示屏選的是4.3寸的OLED顯示屏,用于語音播報其視力結果的語音合成模塊采用的是SYN6288,進行信號傳輸?shù)乃{牙傳輸模塊選用的是HC-05。4硬件設計針對上述關于自助式視力檢測系統(tǒng)的硬件設計與選擇的分析,我們采用硬件模塊化的設計方法,在前文已經(jīng)對系統(tǒng)的功能框架和工作內(nèi)容有了見到的分析。本章將有機會就如何檢測操作系統(tǒng)應用中的各個硬件主要組成部分問題做更為詳細的硬件設計與應用分析。根據(jù)上述基于前文的案例分析,我們將整個自助式視力檢測系統(tǒng)模塊劃分調整為以下幾個集成模塊:數(shù)字微處理器集成模塊,復位控制電路和驅動控制器集成模塊,語音信號合成控制模塊,按鍵信號輸入控制模塊,OLED顯示模塊??紤]這幾個模塊的各自特點進行了相對獨立的分析設計,又同時要保證各個模塊之間的協(xié)調和整個系統(tǒng)的平穩(wěn)運轉。具體的控制方案見下圖4-1。STMSTM32微處理器運算單元JTAG調試電路復位電路按鍵鍵盤電源模塊OLED顯示屏語音合成模塊圖4-1STM32微處理器控器4.1微處理器模塊設計結合上述對硬件設計總體的設計,檢測系統(tǒng)的主控制器模塊的設計是整個系統(tǒng)設計的核心之處。根據(jù)微處理器的定義可知,微處理器是一種具有處理和控制功能的半導體芯片,它具有CPU的功能,是一種較小規(guī)模和體積的集成電路器件。它可以實現(xiàn)指令的調用和執(zhí)行,以及與外設的信息傳輸和操控功能,是嵌入式系統(tǒng)中最為重要的運算和控制中心單元。且微處理器具有體積小、可控性好、模塊化簡單等優(yōu)異性能,因此其應用更為廣泛。我們從功耗、性能、成本的角度上綜合考慮后,最終選出最適合該課題的微控制器模塊,即意法半導體公司的微處理器模塊,叫STM32F103VE,該芯片在市場上流通較廣,具有32位的高端處理性能,具有較高的集成度和優(yōu)秀的運算能力,不僅能滿足本課題所需的全部設計的功能需要,而且其優(yōu)異的性能可以大大的緩解我們的工作難度。所以最后選擇STM32單片機作為我們自助式視力檢測系統(tǒng)的主控制器模塊。關于STM32F103VE的配置和特點,我們下面作較為詳細的介紹。這款核心芯片不僅采用基于ARM公司的Cortex-M3處理器的32位的RISC三內(nèi)核核心微控制器,而且對于CM3的核心內(nèi)核硬件架構非常精工細作,且其代碼的可移植性強,非常方便優(yōu)質C語言代碼的升級和移植。該核心芯片的CPU模塊在內(nèi)核上的工作頻率可以達到72MHz,擁有128K個字節(jié)的Flash和20K個字節(jié)的SRAM;它們還擁有兩條點的APB外部內(nèi)設接口總線及80個點的I/O輸出接口。如圖4-2為該芯片的系統(tǒng)結構。對STM32芯片的設計時,我們要做好下述準備,電源供給方式,外設連接方式,復位電路設置和晶振電路的設置。在時鐘晶振方面,我們利用STM32的內(nèi)部系統(tǒng)時鐘SYSCLK,并通過PLL鎖存器電路,為整個系統(tǒng)的各個部分提供正常的工作頻率;在接口調試方面,我們采用芯片提供的JTAG調試接口對系統(tǒng)進行調試工作;關于信息傳輸部分,通過紅外遠程發(fā)送遙控信息和藍牙傳輸信息,將信號傳輸?shù)絾纹瑱C中進行控制,最后根據(jù)接收到的信息,分析實驗數(shù)據(jù),并按照算法設定進行相應的步驟,最終通過GPIO接口和SPI外設接口向顯示屏發(fā)送相關的數(shù)據(jù)信息,從而將檢測結果顯示在OLED屏幕上,并且語音播報該結果。4.2復位電路及電源電路設計在復位電路和電源供給方面,首先,復位電路必須有科學合理的設計方案,否則系統(tǒng)可能出現(xiàn)錯誤,比如系統(tǒng)突然死機等,尤其是對于32位的ARM芯片,其運算速度高,功耗較低,所以在設計電路的過程中,必須設置一種合理科學的復位電路,不僅要考慮外部環(huán)境因素如溫度、濕度等的影響,還要考慮電路內(nèi)部本身可能產(chǎn)生的影響,如電路的延遲和波動等等。該STM32芯片有三種主要的復位方式,即系統(tǒng)復位、上電復位和按鍵復位。在這里我們簡單地介紹了復位的具體工作流程,當我們按下一個復位鍵RST時,芯片的NRST便會向其發(fā)出一個高電平的復位信號并向其輸出一個該高電平的復位信號,這時整個系統(tǒng)便可以對其進行高電平的復位操作,如下圖4-3所示。其次,在系統(tǒng)的電源和供給設備方面,因為電源供應是整個系統(tǒng)非常重要的一環(huán),它不僅關于整個系統(tǒng)的功耗,還與整個系統(tǒng)平穩(wěn)運轉有關,所以我們對于電源和集成器的設計必須認真謹慎;在本研究課題中,除了對單片機供電,還可能需對OLED顯示模塊即OLED顯示屏和語音合成模塊進行供電;STM32單片機的額定工作頻率是3.3V/5.0V,我們可以直接通過使用STM32單片機的USB接口與計算機直接相連供電,因為電腦能提供最大500mV的直流電,可以實現(xiàn)本課題的電源需要。OLED的一個顯示屏幕模塊直接將其外部連接在一臺新的單片化主機上,則通過片機的供電系統(tǒng)向顯示屏幕內(nèi)部供電,不再外加供電模塊。4.3調試接口和語音模塊設計在調試電路與外設連接方式的選擇上,我們采用了JTAG電路,該調試電路的設計基礎上就是一種IEEE1149.1兼容的國際標準測試協(xié)議,其主要作用之一就是被廣泛應用來對整個芯片內(nèi)部進行調試。相關的JTAG引腳有TCK,TMS,TDI,TDO以及TRST,在使用JTAG接口時,可以對芯片內(nèi)部的各個部件進行調試訪問,還可以通過該接口進行在線編程等工作。在各種語音音頻合成四個模塊的技術選擇和芯片設計上,本文的研究課題主要研究選擇了SYN6288語音音頻合成四個模塊,它們所采用的芯片是一款技術性能和應用品質上性價比較高的音頻語音合成芯片,不僅完全具備了各種語音音頻合成的應用效果好,聲音圓潤的特點,且其體積小,非常符合本課題對于模塊的要求。它通過UART異步串口進行通信的方式,實現(xiàn)將所有需要編寫和合成的文字轉換為語音或者TTS對各種語音格式的數(shù)字化和切換,允許不同類型的文字,如GB2312、GBK、BIG5等,且可以支持多種命令,同時具有休眠的功能。4.4按鍵輸入模塊設計在自助式視力檢測系統(tǒng)的設計中,為了實現(xiàn)人機一體化,達到由被檢測者引導檢測系統(tǒng)的進程的目的,本課題使用了遙控器按鍵輸入模塊,來輸入所看到的隨機字符的方向,該過程時紅外遠程發(fā)送實現(xiàn)的,在購買正點原子的STM32開發(fā)板的時候,同時購買了其配套的紅外遙控器。紅外遙控具有諸多優(yōu)點,如功耗低,抗干擾能力強,成本低等,非常適合本實驗的研究,在本課題中,雖然該款紅外遙控器有其他按鍵,較多的附加功能,但在使用時,只需用到上下左右四個按鍵功能,用于輸入檢測者看到的上下左右四個方向信息,其余的按鍵均閑置下來,這可以有助于整個測試過程的順利完成和設計功能的實現(xiàn)。除了紅外遙控按鍵的輸入外,本系統(tǒng)中還有一個STM32單片機上的遙控按鍵輸入,以初始化單片機以及進行開始檢測的過程,用的就是WK_UP這個按鍵,來自動喚醒這個STM32單片機,這個按鍵通常都是由一個高電平來進行自動開啟的。注意使用該鍵的過程中,一定要同時斷開PA0和DS18B20的跳線帽,因為18B20是有上拉電阻的,會影響WK_UP的按鍵輸入過程。4.5顯示模塊設計在本課題中,為了給被檢測者提供清晰有效的隨機字符E的圖片,我們需要對顯示屏進行深入仔細的設計,以使其滿足課題的要求。從OLED的亮度上來看,為了保證整個測試系統(tǒng)在不同亮度環(huán)境下的顯示效果,同時也要節(jié)約功耗,所以選擇的顯示屏不可過暗,也不可過亮,否則,要么會導致被檢測者難以看清字符,要么會導致能耗過高,造成電能的浪費;從顯示屏色彩的飽和度上來看,在顯示時,隨機字符E的顏色必修飽滿,看起來清晰,且字符本身與背景要有較大的顏色差,增加顏色的層次感和豐富度,不僅使得顯示效果清晰可辨,同時可以增加美感,有助于檢測的順利進行;從使用壽命上來看,顯示屏的穩(wěn)定年限較長一點,否則更替起來會在一定程度上影響整個系統(tǒng)的穩(wěn)定性和協(xié)調性;最后從尺寸上來看,尺寸不可過小,必須足夠顯示所需顯示的最大隨機字符,顯示屏也不可過大,過大會導致功耗過高,同時導致整個檢測系統(tǒng)的體積過大。綜合以上幾個方面因素的分析,最終選擇了0.96寸的ATK-OLED顯示屏作為顯示模塊。該OLED顯示模塊主要具有以下幾個特點:第一,它主要具有兩種顏色,純藍色或者是藍黃雙色兩種顯示模塊,在本研究課題中,選擇了純藍色;第二,該顯示模塊在屏幕上具有很好的分辨率,其特點是分辨率范圍為128*64,第三,該OLED顯示屏本身具有0.96寸的超小尺寸,是目前市面上所有的顯示屏模塊中最小的一類,而且該顯示屏模塊的尺寸僅大約為27mm*26mm;第四,它擁有了比較多的五線網(wǎng)絡接口設備,支持8086、6800、4線SPI等五種網(wǎng)絡接口。第五,它是一個集成DC/DC,無需外部輸出高壓,僅只要向其提供3.3V的電源,就能正常運行;最后,該模塊的額定電壓是低電壓,所以它是一個低功耗的器材,非常符合我們的課題設計的要求。5軟件設計5.1總體方案完成上述硬件電路的設計以及硬件模塊的選型之后,就到了軟件程序開發(fā)的階段。對該產(chǎn)品視力顯示檢測控制系統(tǒng)的設計軟件進行程序設計部分中,我們將整個檢測系統(tǒng)過程劃分為形成六個基本部分并從進行設計入手,分別為該檢測系統(tǒng)基本工作原理內(nèi)容、初始化程序和系統(tǒng)軟件設計、OLED視力顯示控制模塊的設計、語音合成模塊的設計、隨機字符判斷程序的設計、遙控按鍵程序的設計,這樣就將較大的整個系統(tǒng)的設計過程細分為較為具體的小塊的工作內(nèi)容。整個軟件設計都以Keil5作為開發(fā)平臺,在Keil5上開發(fā)比較簡單并不復雜,首先按照使用說明,根據(jù)該課題進行實驗時,先創(chuàng)建一個自助式視力檢測系統(tǒng)的工程,之后按照要求配置好環(huán)境,選擇合適的路徑保存起來即可。使用的是C語言進行編寫代碼,一是因為C語言具有強大的代碼功能實現(xiàn),二是因為我們在大學期間學習過C語言,對此的編程有一定的了解。在整個代碼編寫的過程中,為了化繁為簡,我們進行模塊化編寫,先由之前分好的小模塊,編寫相應的函數(shù)功能,并且為了增加代碼的可移植性和可讀性,與硬件相關的部分程序均以宏定義的方式去寫。關于模塊中的主程序部分是如何實現(xiàn),因為模塊中的主程序主要是起到了控制和管理決策的重要作用,可以負責管理整個程序運行,讓每一個程序按照自己制定和設計的程序思路去正常運行,而各個模塊的小操作功能都是通過在每一個主程序中分別調用函數(shù)和子程序來完成實現(xiàn)的,基本的子程序部分的函數(shù)有:按鍵掃描Key_Scan子程序函數(shù),隨機字符生成函數(shù),OLED顯示函數(shù)等等。5.2程序流圖當系統(tǒng)開機上電后,整個程序首先執(zhí)行初始化代碼,之后進入視力檢測系統(tǒng)的主頁面,并顯示課題設計的名稱即《多功能視力檢測系統(tǒng)》以及其他的相關信息,然后根據(jù)按鍵指示選擇是否開始視力檢測,檢測過程首先是產(chǎn)生最大號的隨機字符E,被檢測者通過遙控器使用無線紅外技術輸入該字符的方向,系統(tǒng)程序會比對輸入的字符和顯示的字符的方向,來進行下一步操作。程序流圖可以幫助更好的理解整個系統(tǒng)的過程,整個軟件部分分為主函數(shù)部分和子罕虎部分,子函數(shù)部分又細分為各個小函數(shù),這樣在程序代碼的編寫時會更加有條理性。如下圖5-1所示,是整個軟件過程的系統(tǒng)框架,如圖5-2所示,是整個代碼核心算法部分流程圖。Keil軟件系統(tǒng)框架Keil軟件系統(tǒng)框架主函數(shù)部分實現(xiàn)對整個程序的進行控制和管理,設置主要參數(shù)以及調用子函數(shù)程序子函數(shù)部分OLED顯示函數(shù)隨機字符產(chǎn)生函數(shù)初始化函數(shù)語音合成函數(shù)遙控按鍵函數(shù)圖5-1軟件系統(tǒng)框架生成不同方向的E生成不同方向的E接收判斷的方向兩個方向是否一致生成小一號的E生成大一號的E最小E最大E輸出結果輸出結果語音播報結果YNYYNN圖5-2判斷算法流程圖5.3模塊說明通過上述對視力檢測系統(tǒng)的工作流程以及選擇好的開發(fā)環(huán)境的分析,我們開始對各模塊進行程序設計,為了更加清楚的展示分析過程,我們詳細價紹該檢測系統(tǒng)的各個模塊的功能是如何實現(xiàn)的。(1)主程序設計:在主程序部分中,首先,為了使得各個子程序部分的順利運行,需要進行初始化和調取各種頭文件庫,配置相關的結構和配置程序,以及其他與硬件相關的宏定義等。HSE:4--16MHzHSI:8MHzLSE:32.768KHzLSI:40KHzPLLCLKAHB預分頻器APB1APB2其他(2)初始化程序設計:在上述的介紹當中,我們都講道理初始化及其重要的作用,是為了保證課題實驗的正常運轉設計的,我們在整個系統(tǒng)工作之前,要通過初始化程序來使得各個模塊先回到原始狀態(tài),為了方便后續(xù)程序的運行。首先,眾所周知,時鐘檢測器和系統(tǒng)就像是如同整個系統(tǒng)的一塊心臟一樣,所以為了能夠使得檢測到的系統(tǒng)有序地工作,我們就需要對所有的時鐘進行合理配置,所有外設想要進行工作,都必須得有一個時鐘,而STM32本身在系統(tǒng)啟動的這個時候,會自動執(zhí)行一個匯編文件,該匯編文件中我們會自動調用SystemInit()的函數(shù),HSE:4--16MHzHSI:8MHzLSE:32.768KHzLSI:40KHzPLLCLKAHB預分頻器APB1APB2其他圖5-3STM32大概時鐘系統(tǒng)圖可以看出,這是一個時鐘樹,這里面有很多的時鐘,下面我們介紹一下,這些時鐘具體的怎么配置的。首先我們了解以下是HSE時鐘,它采用的是高速的外部晶振,使用的是無源晶振,通常都是8MHz,通過一個OSC_OUT和一個OSC_IN與整個單片機芯片進行連接,通過RCC_CR中的時鐘寄存器的HSEON這個位置進行控制;與HSE相對的叫LSE,它也是高速的,也是8MHz,兩者之間的主要區(qū)別就是,HSE比LSE的工作精度高,LSE受溫度的變化影響較大,會有一定的溫漂;HSE時鐘,比較高速的內(nèi)部時鐘,頻率也是8MHz,當HSE發(fā)生了故障的時候,可以通過CSS系統(tǒng),即時鐘安全系統(tǒng)等方式來進行控制,這時系統(tǒng)的時鐘就會自動地切換到HSI,直至HSE啟動成功,HSI也就是有了對應RCC_CR時鐘寄存器的HSI這個位置來進行控制;下面簡單地介紹一下PLLSRC即鎖相環(huán)的時鐘源,PLL有兩個輸入倍頻時鐘,為HSE和HSI,PLL主要是用作倍頻,可以選擇倍頻因子,從2倍輸入到16倍,倍頻后的輸入時鐘叫做PLLCLK,由PLLXTPRE和PLLMUL兩個因子來進行控制;還有一個重要的系統(tǒng)時鐘,叫做SYSCLK系統(tǒng)的時鐘,它是來源于HSI、HSE和PLLCLK,由SW位即系統(tǒng)中的時鐘切換位來進行控制。配置好系統(tǒng)的運行時鐘之后,單片機就開始會分別有很多條外設總線,例如一條AHB總線,在每條AHB總線上會分別有兩個外設預分頻器,是APB1和APB2,在這兩條外設總線上已經(jīng)分別掛載了許多的常用單片機外設,所以我們在開始考慮到如何使用具體外設時,只需要配置好AHB、APB1和APB2即可。還有其他的時鐘,如RTC、LSI等,在這里就不多介紹了。在我們系統(tǒng)編寫代碼的這個時候,默認宏定義為72MHz。到此,整個STM32的時鐘系統(tǒng)即介紹完了,在編寫程序的過程中,一定要按照上述說明仔細參考,才能不出錯。串口通信程序的設計:一個處理器和外部設備之間所進行的通信一般主要有兩種形式,并行通信和串行通訊,兩者各自都有其優(yōu)劣點;串行通信也可以劃分為多個同步通信,如SPI、IIC等,以及異步通信,如UART。串口的通訊過程可以劃分為數(shù)據(jù)接收和數(shù)據(jù)發(fā)送兩個過程,再將數(shù)據(jù)接收的過程中,外部設備先將該數(shù)據(jù)傳入單片機的一個串行輸入移位寄存器,再將該移位寄存器的數(shù)據(jù)直接傳給一個數(shù)據(jù)緩沖寄存器,最后將其發(fā)送給MCU內(nèi)核,數(shù)據(jù)傳輸?shù)倪^程剛好恰恰相反。與串口類型相關的寄存器主要有三個:狀態(tài)寄存器、數(shù)據(jù)寄存器和波特率寄存器;對于串口操作常見的庫函數(shù)主要有:USART_Init()串口初始化函數(shù),USART_Cmd()可以使得所有能夠進行串口操作的函數(shù)、USART_Cmd()可以使得所有能夠進行相關的串口操作中斷、USART_SendData()可以將發(fā)送的數(shù)據(jù)轉換成串口函數(shù)、USART_SendData()接收的數(shù)據(jù)函數(shù)等等,下圖5-4是串口配置的相關軟件程序流圖:串口時鐘使能,串口復位串口時鐘使能,串口復位GPIO端口模式設置,串口參數(shù)初始化開啟中斷并且初始化NVIC使能串口并編寫中斷處理函數(shù)串口數(shù)據(jù)收發(fā)并獲取串口傳輸狀態(tài)圖5-4串口配置流程圖復位SSD1306,RST=0,延時10ms后,RST=1驅動IC初始化代碼開啟顯示清0顯存開始顯示OLED顯示模塊程序的設計:我們所需要選擇的一個顯示模塊就是OLED模塊,它的主要控制器選擇的是SSD1306,為了更好地使得這個OLED顯示模塊的正常運行工作,我們首先必須需要通過設置STM32與OLED模塊相互進行連接的IO,將其設置成為一個輸出,然后才是對OLED模塊進行初始化,這一部分在上一小節(jié)已經(jīng)完成了,最后可以通過函數(shù)將隨機字符E顯示到OLED模塊上。值得注意的一點就是,該模塊并沒有與5.0v的接口相互兼容,所以不能夠直接連到5.0v的操作系統(tǒng),否則很有可能會燒壞這個模塊。此外,我們選取了直接訪問的端口連接方式,而且還需對顯示模塊的驅動進行相應的編程。下面是利用重要函數(shù):畫點函數(shù),voidOLED_DrawPoint();接著是顯示字符函數(shù),OLED_ShowChar(),顯示字符,同時還需用到字符集的點陣數(shù)據(jù),這里我們使用了PCtoLCD2010完美版。至此,關于通OLED如何顯示各個模塊的詳細介紹也就到此結束,下面我們講的是部分關于通過OLED如何顯示各個模塊的程序代碼進行程序優(yōu)化流程圖復位SSD1306,RST=0,延時10ms后,RST=1驅動IC初始化代碼開啟顯示清0顯存開始顯示圖5-5OLED初始化過程OLED初始化,配置其為推挽輸出OLED初始化,配置其為推挽輸出清OLED屏,調用函數(shù):OLED_Clear()清OLED屏,調用函數(shù):OLED_Clear()OLED顯示,調用各種顯示函數(shù):OLED_DrawPoint()、OLED_Fill()等等OLED顯示,調用各種顯示函數(shù):OLED_DrawPoint()、OLED_Fill()等等圖5-6OLED顯示程序流程(5)隨機字符判斷程序設計:在前文關于工作內(nèi)容的設計中,我們了解到并畫出了隨機字符E的判斷流程圖,這是整個系統(tǒng)設計最核心的部分,我們不僅需要對遙控器傳來的方向信號和顯示的方向進行比較,還要關注比較之后的下一步操作。整個判斷算法可以分為兩個部分,循環(huán)和判斷,檢測過程可簡化為從1.0開始,逐漸增加到5.0,出現(xiàn)2次錯誤后即中止測試,錯誤的前一次值即為視力值。這部分判斷程序的代碼流程圖在上文的圖5-2。紅外遙控初始化,開啟定時器對應通道為輸入捕獲功能。頻率為1MHz開啟定時器輸入捕獲更新中斷和捕獲中斷捕獲到上升沿時,設置捕獲極性為下降沿捕獲,同時設置計數(shù)值為0,變量RmtSta的位4為1當捕獲到下降沿時,讀取定時器的值賦值給Dval,然后設置捕獲極性為上升沿捕獲定時器發(fā)生溢出中斷,且是第一次溢出,標記完成一次按鍵采集(6)紅外遙控程序設計:紅外遙控一般采用的程序編碼方法主要有PWM的NEC協(xié)議和PhilipsPPM的RC-5協(xié)議,而我們所用的STM32開發(fā)板是正點原子的,他們所配套使用的是NEC協(xié)議,該協(xié)議的載波頻率是38KHz。在單片機上連接紅外接收頭,該紅外接收頭連接著定時器的輸入,對紅外遙控進行解碼的時候,用的是定時器的輸入捕獲功能,主要解析接收到載波信號的高電平持續(xù)時間來判斷該信號。在我們的工程中,該模塊添加的是remote.c和remote.h文件,里面包含了一個Remote_Init()的函數(shù),這個函數(shù)主要是專門用來對IO口進行初始化,并且在文件中配置了TIM5_CH2定時器作為對輸入的捕獲,還有一個是TIM5_IRQHandler()的函數(shù),它也就是TIM5的一個中斷服務函數(shù),最后就是Remote_Scan函數(shù),該函數(shù)主要是專門用來傳遞輸出解碼鍵的值,來判斷對應遙控器的按鍵位置是哪個,即一種類似于按鍵掃描紅外遙控初始化,開啟定時器對應通道為輸入捕獲功能。頻率為1MHz開啟定時器輸入捕獲更新中斷和捕獲中斷捕獲到上升沿時,設置捕獲極性為下降沿捕獲,同時設置計數(shù)值為0,變量RmtSta的位4為1當捕獲到下降沿時,讀取定時器的值賦值給Dval,然后設置捕獲極性為上升沿捕獲定時器發(fā)生溢出中斷,且是第一次溢出,標記完成一次按鍵采集圖5-7紅外遙控程序流程圖(7)按鍵控制程序設計:在本課題設計中,要配置按鍵控制,首先要使能按鍵對應的IO口時鐘,調用相關的函數(shù)使能,接著是對按鍵IO進行相應的初始化操作,需要把按鍵IO配置成輸入模式,有兩種輸入方式,上拉輸入和下拉輸入方式,最后是對按鍵進行掃描,監(jiān)控其是否被按下。關于按鍵操作程序部分,主要說明它包含兩個基本的函數(shù),KEY_Init()和KEY_Scan()兩個基本函數(shù),前者主要是一種用來對與按鍵輸入相連接的硬件電路進行了初始化,后者主要是一種用來掃描IO口中有無按鍵的輸入,然后根據(jù)按下的按鍵信號來對其進行一些相應的動作,關于按鍵掃描的方式主要有兩種,支持長按和不支持長按,在本文研究課題中,我們可以選擇不支持長按的模式,將mode設置為0,即表示不支持長按;不支持連續(xù)按的按鍵掃描思路是只認為第一次按下是有效的,后面即使有按下的操作,沒有松開,也認為這個按下信號是無效的,下面是關于按鍵操作程序的部分關鍵代碼的操作流程圖5-8:使能按鍵對應的IO口時鐘。調用函數(shù):RCC_APB2PeriphClockCmd()使能按鍵對應的IO口時鐘。調用函數(shù):RCC_APB2PeriphClockCmd()初始化IO模式:上拉/下拉輸入。調用函數(shù):GPIO_Init()掃描IO口電平。調用函數(shù):KEY_Scan()圖5-8按鍵控制程序流程圖藍牙通信程序設計:為了實現(xiàn)主機和從機之間的信息傳輸,我們選擇藍牙模塊進行通信,以便將測試結果傳輸給醫(yī)生或者檢測者,擴展該系統(tǒng)的應用。首先要選擇好配置藍牙通信的方式,在本課題中,我們選擇了串口配置,用到了XCOM這個配置軟件,還有藍牙串口助手這個APP下載在安卓手機上,藍牙配置過程中,會用到較多的指令集,如下表5-1所示:表5-1藍牙指令集指令響應參數(shù)ATOK無AT+RESETOK無AT+VERSION?OK軟件版本號續(xù)表5-1藍牙指令集AT+ADDR?+ADDR:<Param>OKParam藍牙模塊地址AT+NAME?+NAME:<Param>OKParam藍牙設備名稱AT+ROLE?+ROLE:<Param>OK從角色(Slave)主角色(Master)本文的研究課題主要選擇的藍牙接口模塊是一個HC-05藍牙接口模塊,是與中國正點原子藍牙開發(fā)板配套的一個引腳藍牙接口模塊,總共分別設計了六個引腳藍牙接口:VCC、GND、TXD、RXD、KEY、LED;LED指的是一種藍牙指示燈,當一個新的藍牙模塊處于不同的藍牙工作環(huán)境狀態(tài)時,Led兩種指示燈燈光閃爍的表現(xiàn)方式就可能會不一樣,當該燈慢閃,即一秒閃一次時,模塊進入AT狀態(tài),這是可以使用上表的AT指令集進行相關的配置,當該燈快閃時,即一秒閃兩次時,該燈已經(jīng)進入了可配對狀態(tài),當該燈出現(xiàn)雙閃時,即一次配對燈閃兩下,兩秒后再閃一次,表示該燈與藍牙模塊的配對成功,該燈非常方便判斷該燈所在狀態(tài),使用上很方便;KEY是讓每個藍牙模塊都會進入不同模式的控制引腳,高電平有效,當進入AT狀態(tài)指令,低電平時,就會進入串口透傳通信模式,這兩個模式的通信波特率也許不一樣;RXD/TXD位于藍牙模塊串口接收/發(fā)送引腳,這兩個都是TTL電平,不過我們也可以直接接RS232電平,這點需要非常小心注意,容易導致出錯,RXD接單片機的TXD,txd接單片機的RXD;VCC是一個電源,電壓范圍是3.3V-5.0V。該藍牙的波特率支持范圍很廣,從4800到138200中,常用的波特率都支持。該藍牙模塊的應用場景可以有兩個,即模塊跟手機通信和模塊之間通信,后者需配置藍牙模塊的角色,才可用于數(shù)據(jù)透析通信。下圖5-9為該模塊的使用流程圖:初始化相應的IO口,配置好時鐘和工作方式。初始化相應的IO口,配置好時鐘和工作方式。配置好兩個藍牙模塊的角色,并使其進入通信模式初始化相應的IO口,配置好時鐘和工作方式。單片機監(jiān)聽并處理藍牙模塊接收到的數(shù)據(jù)圖5-9藍牙模塊使用流程圖(9)觸摸屏顯示程序設計:在整個系統(tǒng)最后,我加了一個附加的內(nèi)容,就是在與STM32配套的4.3觸摸屏上顯示出本課題的名稱和其他信息。觸摸屏其實分為電容型和電阻型觸摸屏,我們使用的是電容型的。觸摸屏實際上就是一種能夠直接接受到觸頭等各種輸入信號的傳感器裝置,本質上是負責的是檢測觸摸點,與液晶屏有所區(qū)別,它有兩個電極,X和Y電極,所摸到的點就是兩個極的交匯點,來檢測觸摸。該新型觸摸屏幕是采用串口IIC三個接口用來進行寫入輸出各種觸摸傳感數(shù)據(jù)的,所需要采用的觸摸傳感器參數(shù)IC為GT9147。在軟件編程的時候,我們首先需要將該觸摸屏進行初始化操作,串口需要初始化為600,然后是對按鍵初始化,真正用于顯示的函數(shù),其實與OLED顯示的函數(shù)類似,首先也是對觸摸屏進行清屏,然后使用各種畫點和畫圖函數(shù)進行畫圖的,如LCD_ShowString()函數(shù)。還要在定時器上編寫一個觸摸屏的驅動程序代碼,在對該觸摸屏的驅動程序進行編寫時,首先也要對定時器進行初始化,然后把該定時器的坐標初始化成10ms,接著根據(jù)需要分別映射定時器的中斷矢量和該觸摸屏的中斷矢量,然后讓定時器的坐標使得所有的電機都可以,使得定時器啟動后就開始對電機進行計時,采樣在得到了該觸摸屏的位置和坐標數(shù)據(jù)之后,將該電機的位置變成了觸摸屏轉變成了一個顯示的坐標。如下圖5-10為觸摸屏顯示程序流程圖

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論