基于單片機的智能臺燈的設計與實現_第1頁
基于單片機的智能臺燈的設計與實現_第2頁
基于單片機的智能臺燈的設計與實現_第3頁
基于單片機的智能臺燈的設計與實現_第4頁
基于單片機的智能臺燈的設計與實現_第5頁
已閱讀5頁,還剩28頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

··PAGE21·1緒論1.1課題背景和意義隨著科技的發展,各種各樣的家用電器走進了人們的生活,提高了人們的工作效率、改善了人們的生活,其中臺燈已是千家萬戶生活的必需品。現在的電器趨于之智能化,在各個領域都有出色的應用,傳統的臺燈大多手動開關,導致人們往往會忘記關燈造成能源浪費,夜晚時抹黑開燈又非常不方便,使得傳統臺燈受到更新換代的威脅,臺燈也將走上智能化。本設計的智能臺燈可分成自動和手動兩種模式。自動模式下臺燈會根據環境光的亮暗以及人是否被臺燈檢測到來自動開啟臺燈。手動模式為了讓不習慣自動的人能像普通臺燈一樣使用。智能臺燈最大的優點就是方便和省電。方便不用多說來之即亮,去之即暗,在這講究高效的時代不用動手能給我們帶來巨大的便利。省電更加重要,當今社會還有很多國家人民用不上電,減少電能的浪費能帶來巨大的經濟效益同時還能保護環境。1.2發展趨勢智能照明不僅僅為一盞燈、一個開關,智能照明將會和家居連成一塊,成為一個智能家居系統,全方位的為用戶提供舒服的環境,隨著整體智能家居、智慧城市的發展和物聯網的加入,智能一體化解決方案將不同智能單品連成一片智能的藍海。智能照明的巨大附加值也將改變行業格局。智能照明的本質是電子化和網絡化,不僅可以實現照明系統的智能控制、場景照明的自動調節和基本功能,而且是互聯網的入口,從而衍生出更多的高附加值服務,如:健康管理、地圖定位、商品導購和廣告等。1.3研究的主要內容本設計主要研究單片機控制的智能臺燈系統,主要由單片機、紅外人體感應模塊、光敏電阻模塊、音頻輸出模塊組成。系統主要實現以下功能要求:實現紅外傳感器對人體位置的感知,判斷是否開關。實現感知環境光,對周圍亮度進行識別,自動調整臺燈的光線。實現按下睡眠按鈕,臺燈打開呼吸燈以及播放搖籃曲。1.4論文結構本篇論文使用六個章節進行敘述,其結構如下。第一章主要講述的內容為系統的研究背景和意義、發展趨勢、研究的主要內容等。第二章主要講述的內容為智能臺燈總體設計,包括相關的需求分析、組成系統的主要模塊以及其相關的硬件參數。第三章主要講述的內容為系統的硬件設計,包括STC89C52RC單片機、電源模塊、按鍵模塊、LED照明模塊、紅外人體感應模塊、光敏采集模塊、PWM控制呼吸燈模塊、音頻播放模塊的功能結構圖和原理第四章主要講述的內容為系統的軟件設計,包括單片機、光敏電阻AD采集、呼吸燈PWM控制、音頻輸出相關流程圖以及關鍵代碼。第五章主要講述的內容為系統的測試與調試,包括調試思想、方法和遇到的問題與解決辦法第六章主要講述的內容為總結與展望,包括在本次畢業設計過程中的心得體會、找到作品的不足之處等。2系統總體設計2.1需求分析2.1.1功能分解(1)模式選擇根據需求,可分解為自動模式、手動模式2種,通過按鍵切換。(2)紅外人體感應在自動模式下,感應到正面出現人體,臺燈點亮照明,沒有人體,臺燈自動關閉。(3)環境光感應在自動模式下且有人體時,感應周圍光線強度,自動調節照明光亮。(4)按鍵可調亮度在手動模式下,通過按鍵可調節亮度強弱控制。(5)音頻輸出在手動模式下,可實現按睡眠按鍵,控制進入播放催眠曲。(6)呼吸燈效果在手動模式下,可實現按睡眠按鍵,控制呼吸燈PWM調節。2.1.2需求測試參數本設計由4個按鍵,和人體感應傳感器、光敏傳感器采集數據作為輸入信號。按鍵1(模式切換按鍵)控制手動以及自動的兩種模式進行切換,自動模式下人體感應傳感器及光敏傳感器采集信息能夠引導控制;手動模式下,通過按鍵2(調光加)調亮LED模塊,通過按鍵3(調光減)調滅LED模塊,通過按鍵4(睡眠按鍵)進入睡眠程序,音頻輸出模塊播放催眠音樂及呼吸燈閃爍控制。人體感應利用合適的人體監測傳感器,感應到人體時LED模塊點亮。環境光變化感應利用合適的光敏電阻,感應環境光變化情況,改變LED模塊的亮度情況。按鍵控制燈光可利用按鍵增加LED模塊亮度或者降低LED模塊亮度。音頻輸出可控音頻輸出模塊可輸出音樂可控。呼吸燈開關可控 呼吸燈LED模塊可進行閃爍。2.2系統組成2.2.1STC89C52RC單片機單片機的種類和型號具有有成千上萬種,很多公司都研制開發自己的單片機芯片,并且廣泛應用于各種產品。Intel、philips、摩托羅拉、宏晶等種類繁多。大體上可以分為51系列單片機和非51系列單片機等形式。在非51系列單片機中,也不乏性能優異的產品,如德州儀器(TI)MSP430系列單片機,它是一款簡化指令集、超低功耗的16位單片機,處理能力強而且容量大、運算速度快、片內資源豐富等特點。另一個例子是凌陽的16位微控制器。其中CPU內核采用MicrocontrollerandSignalProcessor推出的16位單片機和信號處理器,具有功能強大、執行效率高、功耗低、電壓低、片內資源豐富等優點。但由于51系列單片機仍是高校教學的主要內容,熟練應用51系列單片機可為其他類型單片機的使用打下堅實的基礎,本次設計仍選51系列單片機。目前,在教學實驗和競賽設計中應用最廣泛的51系列單片機是AT89系列和STC系列。本實驗系統的設計選用了宏晶科技公司的STC89C52RC單片機。這是宏晶科技推出的新一代單片機,具有高速、高可靠性、低功耗、價格低、強防靜電、強抗干擾等優秀特點。其教學系統與傳統的51系列單片機兼容,與51系列單片機相同的教學系統可以很好地結合教學過程。STC89C52單片機的芯片封裝形式如圖2.1所示。圖2.1STC89C52封裝圖STC89C52RC單片機的基本參數如下:(1)工作電壓5V,時鐘頻率為0--80MHz。(2)具有8KBFLASHROM;512BSRAM;2KBEEPROM。(3)3個定時/計數器,其中定時器0還可以當成2個8位定時器使用。(4)1個全雙工串行口,在44個引腳的封裝中,除了P0-P3四個并行I/O口外,還提供了P4.0-P4.3四個附送的I/O端口。(5)8個中斷源和4個中斷優先級;與AT89系列單片機相比,STC系列單片機具有ISP在線編程功能是STC89C52RC單片機的一大特點。燒寫程序時,不需要專門的編程器,只需通過串口即可將程序下載到單片機。ISP即在線系統內編程,指設計者對邏輯器件進行編程或重復編程,以便在電子系統或自己設計的電路板上重構邏輯的能力。電子系統中邏輯器件的這種邏輯重構可以在系統形成之前或之中甚至之后進行。這與傳統的PLD編程和組裝到系統中的過程非常不同。ISP的實現相對簡單。通常,上位機軟件可以用串口進行通信,內部存儲器可以重寫。對于單片機來說,上位機發送的數據首先通過串口接收,然后寫入內存。這樣,只要預留了單片機與上位機之間的通信接口,即使芯片已經焊接固定在電路板上,單片機內部存儲器中的數據也可以重寫,而不需要取出芯片。在單片機的實驗和開發過程中,消除了對程序員的依賴,電路調試可以很快成為成品,避免了調試過程中頻繁插拔芯片的不便,提高了開發效率。2.2.2紅外人體感應模塊紅外探測器在家庭安全監控系統中應用較早,已經發展的相對成熟。紅外探測器分為主動式紅外入侵探測器和被動式紅外入侵探測器。主動式紅外入侵探測器由發射機和接收機組成,發射機自身發出經過調制的紅外光束,該光束被接收機接收后由接收機中的紅外光電傳感器轉換為電信號,因其探測距離遠,廣泛應用于周界防范;被動式紅外入侵探測器根據紅外能量的位置變化,判斷是否有人移動,其廣泛應用于辦公樓等室內環境。綜合兩種紅外探測器的優缺點及適用場所,本系統選用被動式紅外入侵探測器。自然界中任何物體都是有溫度的,因此也都會發射出紅外線,本系統借助物體不同的溫度和紅外線波長,檢測家庭內部入侵者。本系統選用的熱釋電人體紅外傳感器是HCSR_501,該傳感器工作電壓為4.5~20V,工作原理為熱釋電效應,滿足家庭安全系統高可靠性、高靈敏度的要求。該傳感器的濾光窗外安裝有菲涅爾透鏡,當沒有此透鏡時,傳感器的探測半徑不足2m,但是安裝此菲涅爾透鏡后,探測距離可以達到10m,適用于家庭內部的人員檢測。菲涅爾透鏡具有兩個功能,一方面可以將入侵人員的紅外信號折射到傳感元件上;另一方面是當檢測區域有人經過時,傳感器會因為檢測到其發出的接近10μm的紅外波長,而失去電荷平衡,釋放電荷,經過放大電路等處理后的信號會傳輸給單片機,此時即可得出有人進入檢測區域。HCSR_501采用LHI778探頭和BIS001紅外集成電路芯片。BIS001包括運算放大器、電壓比較器、定時器以及狀態寄存器等。它是一種數模混合專用紅外集成單元。BIS001有兩種工作模式:可重復觸發工作模式和不可重復觸發工作模式,這就意味著HCSR_501也有這兩種工作模式。可重復觸發工作方式意味著,當HCSR_501輸出高水平,如果仍有人體移動探測區域在一段時間內,HCSR_501總是輸出高水平,直到那個人離開檢測區域和延遲一段時間,這個時候高電平就會變為低電平;不可重復觸發方法是HCSR_501輸出高電平時,延時一段時間后自動輸出低電平。本系統設計了熱釋電人體紅外傳感器,HCSR_501的2引腳與單片機的I/O口相連接。當有人體出現在檢測區域時,HCSR_501傳感器將人體發出的紅外線轉換為電壓信號,該信號會通過與單片機I/O口連接的引腳傳輸給單片機。因為HCSR_501傳感器的局限性,在安裝時也要稍加注意,經過多次試驗得出該傳感器不僅會對檢測區域的人體發出的紅外線產生反應,而且在陽光或者強烈燈光的照射下,傳感器也會具有反饋信息,影響檢測結果,因此在安裝時應該避免太陽光和燈光的直接照射。本系統設計了熱釋電人體紅外傳感器。HCSR_501的2腳與單片機的I/O口相連。當人體出現在檢測區域時,HCSR_501傳感器會將人體發出的紅外光轉換成電壓信號,通過與MCU的I/O口相連的引腳傳送給MCU。由于HCSR_501傳感器有一定的局限性,安裝時需要注意。經過多次測試,得出的結論是,傳感器不僅會對檢測區域內人體發出的紅外輻射產生反應,而且在太陽光或強光的照射下也會有反饋信息,影響檢測結果。因此,在安裝過程中應避免直接暴露在陽光和光線下。2.2.3光敏電阻模塊光敏電阻器是根據半導體器件的光電效應制作的。在一定的光照條件下,其電阻值隨入射光的強度而變化即:入射光越強,電阻值對應越小;入射光越弱,電阻值對應更大。光敏電阻常用于光強測量、光強控制和光電轉換等領域,如照明自動控制電路、相機控制自動曝光等。光敏電阻器的結構很簡單,一種常用的金屬封裝的光敏電阻結構圖如圖2.2(a)所示,實物圖如圖2.2(b)所示。圖2.2光敏電阻光敏電阻的光阻很小,在幾十歐姆到幾百歐姆之間,阻值很高,已經達到M歐姆的水平,由于光敏電阻的光阻和暗電阻差別很大,所以靈敏度的角度光敏電阻的含量更高,但由于光照的非線性特性,光敏電阻不適合測量所需的線性亮度變化,常用作開關型光電信號的傳感器。本系統使用的光敏電阻為可見光光敏電阻,用于檢測周圍環境的亮度。2.2.3音頻輸出模塊語音播報模塊JQ8900-16P是一款具有單片機內核的語音芯片,功能多音質好應用范圍廣性能穩定是JQ8900系列語音單片機的特長,彌補了以往各類語音芯片應用領域狹小的缺陷。對音質的追求當然也是精益求精的,完全支持6K~22KHz采樣率的音頻加載,芯片將加載的音頻音質幾乎完整無損地展現出來。JQ8900系列語音單片機支持SPI-FLASH內容在線下載,SPIFLASH直接枚舉成U盤,使得操作更加簡便。語音廣播模塊JQ8900-16P是一款單芯片核心的語音芯片,具有功能多、音質好、應用范圍廣、性能穩定等特點。當然,該芯片對音質的追求也在不斷提高。完全支持音頻加載,采樣率為6K~22KHz,芯片幾乎完全無損地顯示加載后的音頻音質。JQ8900系列語音MCU支持在線下載SPI-FLASH內容,SPIFLASH直接枚舉到U盤,操作更方便。JQ8900-16p采用SOC方案,集成16位MCU和音頻解碼專用的ADSP,采用硬解碼,保證系統的穩定性和音質。該模塊小尺寸更適合嵌入其他產品。該芯片最大的優點是可以靈活替換SPI-Flash中的語音內容,免去傳統語音芯片安裝上位機替換語音的麻煩。SPIFlash可以直接模擬成U盤,非常方便,就像復制U盤一樣。讓產品開發和生產變得方便簡單。一線串口控制模式和RX232串口控制可選,為研發提供了更多的選擇性。參數如表2.1。表2.1JQ8900-16P硬件參數名稱參數MP3文件格式1、支持所有比特率11172-3和ISO13813-3layer3音頻解碼2、采樣率支持(KHZ):8/11.025/12/16/22.05/24/32/44.1/483、支持Normal、Jazz、Classic、Pop、Rock等音效USB接口2.0標準UART接口標準串口,TTL電平,波特率可設輸入電壓DC2.8-5.5V最佳為4.2V,IO電平為3.3V額定電流睡眠電流:500uA;工作電流:10MA尺寸標準的SSOP24封裝工作溫度-40度~85度濕度5%~95%2.2.4AD采集模塊XPT2046是一款4線電阻式觸摸屏控制器,具有12位分辨率和125KHz轉換速率逐級逼近A/D轉換器。XPT2046支持從1.5V到5.25V的低電壓I/O接口。XPT2046可以通過執行兩個A/D轉換來檢測被壓屏幕的位置,此外還可以測量施加在觸摸屏上的壓力。內部2.5V參考電壓可作為輔助輸入、溫度測量和電池監測。電池監測電壓范圍可從0V到6V。XPT2046集成了一個片上溫度傳感器。在2.7V的典型工作狀態下,基準電壓斷開,功耗可小于0.75mW。XPT2046采用很小的封裝形式:TSSOP-16、QFN-16和VFBGA-48。工作溫度范圍為-40℃~+85℃。與ADS7846、TSC2046、AK4182A完全兼容。本芯片工作的電壓范圍為1.5V~5.25V,支持1.5V~5.25V的數字I/O口,內部建2.5V參考電壓源,電源電壓測量(0V~6V),內部建結溫測量功能,觸摸壓力測量,采用3線制SPI通信接口,硬件參數如表2.2所示。表2.2JQ8900-16P硬件參數名稱參數VCC和IOVDD電壓-0.3V至+6V模擬輸入信號電壓-0.3V至+VCC+0.3V數字輸入信號電壓-0.3V至IOVDD+0.3V功耗250mW最大結溫+150℃工作溫度-40℃~+85℃貯存溫度-65℃~+150℃焊接溫度(小于10秒)+300℃2.2.5DA模塊模擬輸出部分采用運放,選用LM358芯片,LM358是雙運放。內部包含兩個獨立的高增益內部頻率補償運算放大器,適用于電源電流與電源電壓無關的單電源和雙電源工作模式的寬電源電壓范圍,在推薦的操作條件下,它可用于傳感器放大器、直流增益模塊和所有其他運算放大器,可由單個電源供電的應用芯片封裝如圖2.3所示。硬件特性:(1)內部頻率補償(2)直流電壓增益高(約100dB)(3)單位增益頻帶寬(約1MHz)(4)電源電壓范圍寬:單電源(3—30V)(5)雙電源(±1.5一±15V)(6)壓擺率(0.3V/us)(7)低功耗電流,適合于電池供電·低輸入偏流(8)低輸入失調電壓和失調電流(9)\t"/item/lm358/_blank"共模輸入電壓范圍寬,包括接地(10)差模輸入電壓范圍寬,等于電源電壓范圍(11)輸出電壓擺幅大(0至Vcc-1.5V)圖2.3LM358封裝圖

3硬件設計本章主要敘述了基于STC89C52RC單片機智能臺燈的硬件設計方案。系統結構圖如圖3.1所示,該系統可以分為8個模塊,以下根據劃分的模塊詳細介紹硬件構成。圖3.1系統硬件結構框圖3.1單片機最小系統單片機的最小系統包括時鐘電路和復位電路兩部分。時鐘電路提供時鐘基準給單片機的各個部件,使各個模塊按照一定的時序有序的工作。時鐘的具體數值決定著單片機的工作節奏。復位電路可為單片機系統提供同步復位信號。在單片機的應用系統中,除單片機芯片本身需要進行復位、外部擴展的I/O口電路等需要復位外,對于單片機程序也必須初始化之后才能夠執行。3.2電源模塊電源模塊在整個設計系統中的一個基礎部分,是整個硬件系統正常運行的基礎保證。不同的芯片對電源的要求往往不同,尤其一些專用的特殊功能的芯片,對電源的要求往往比較嚴格。本次設計整個系統所用的各種芯片,所有芯片在3.3V和5V供電情況下能滿足工作需求,故不需特別電壓等級電源模塊。圖3.3電源電路3.3按鍵模塊在單片機控制系統中,操作人員經常需要輸入數據,并且在程序和調試過程中需要進行操作。按鍵的主要形式有兩種,一種是獨立按鍵電路,另一種是矩陣鍵盤電路。獨立按鍵是僅由I/O口線組成的單按鍵電路,具有程序設計簡單、電路配置靈活等特點。但由于每個按鍵必須占用一個I/O口,所以適用于按鍵數量較少的場合。矩陣鍵盤可以使用更少的I/O端口來使用更多的按鍵,并且通常由具有更多按鍵的控制系統使用。經次分析本系統按鍵少,適合獨立按鍵。如電路圖3.4所示。圖3.4獨立按鍵電路3.4LED照明模塊LED照明模塊由4組發光二極管組成。發光二極管正極接電源正極,負極接單片機P21、P22、P23、P24口,由低電平驅動使二極管發光。如圖3.5所示。圖3.5LED燈照明電路3.5紅外人體感應模塊HCSR_501的VCC引腳接5V供電,GND腳接單片機GND,I/O引腳與單片機的P17引腳相連接。當有人體出現在檢測區域時,HCSR_501傳感器將人體發出的紅外線轉換為電壓信號,該信號會通過與單片機P17口連接的2引腳傳輸給STC89C52RC單片機,單片機根據電平信號進行邏輯判斷。圖3.6紅外人體感應電路3.6光敏采集模塊AD轉換器可以將連續的模擬量轉換為不連續的數字量,這嚴格上是實際數字的近似值。根據轉換結果輸出方式的不同可以得到分為串行輸出和并行輸出。AD轉換器可分為積分型、逐次逼近型、并聯比較型或串并聯比較型、σ-δ調制型、電容陣列逐次比較型和電壓頻率轉換型。ADC按其設計架構可分為∑-δ型、逐次逼近型、子范圍型、電子管型和Flash型。∑-δ型采用過采樣和數字濾波技術,具有高分辨率、高性價比、低功耗等優點,廣泛應用于直流和低頻信號測量。在實際應用中,AD的選擇取決于ADC指標的范圍、帶寬、類型(單端或差分、單極或雙極性)、精度、INL和DNL。為了方便與主控芯片的通訊,選用的AD芯片應有通用的SPI接口或其他通用接口,本設計采用XPT2046芯片,SPI通訊連接方式。XPT2046是一款典型的逐次逼近型SARADC,包括采樣/保持、模數轉換、串口數據輸出等功能。同時,芯片內部集成2.5V參考電壓源、溫度檢測電路,使用外部時鐘。XPT2046可由電壓范圍為2.7V至5.5V的單電源供電。參考電壓的大小直接決定了ADC的輸入范圍。參考電壓可以是內部參考電壓,也可以直接從外部參考電壓源輸入,范圍為1V至VCC(需要外部參考電壓源的低輸出阻抗)。X、Y、Z、VBAT、Temp和AUX模擬信號由片內控制寄存器選擇進入ADC,可配置為單端或差分模式。選擇VBAT、Temp和AUX時應配置單端模式。如圖3.7所示,光敏電阻接采集電路AIN2接口,單片機P34接AD芯片DIN腳,P35接AD芯片CS片選腳,P36接AD芯片CLK時鐘腳,P37接AD芯片DOUT腳。圖3.7光敏電阻AD采集電路3.7PWM控制呼吸燈模塊PWM(PulseWidthModulation)可以有效地控制模擬電路,它是通過微處理器輸出數字信號來實現的,在通信、測量、電源控制和變換等諸多領域得到了廣泛的應用。采用PWM方式,實現了模擬信號數字化的要求。高分辨率計數器用于調制其他波的占空比,從而實現對特定模擬信號電平的數字編碼。在任何時候,PWM信號也是數字信號,因為全幅直流要么存在要么不存在。電壓或電流源以開關重復脈沖序列施加到模擬負載。只要有足夠的帶寬,PWM編碼就可以用于任何模擬量。PWM具有這樣的優點:從處理器到被控信號都是數字的,無需A/D轉換。將信號保持為數字形式可以有效降低噪聲對信號的影響。為了讓噪聲影響數字信號,它需要足夠強以使邏輯0變為邏輯1或邏輯1變為邏輯0。PWM相比模擬控制的另一個優點是它具有更強的抗噪聲能力。這也是PWM在某些場合應用在通信中的主要原因。與模擬信號相比,PWM可以顯著延長通信距離。接收到信號后,可以使用適當的LC或RC網絡濾除調制的高頻方波,從而恢復信號。。PWM(脈沖寬度調制)是一種電壓調節方式,它通過控制一個固定的電壓開關頻率,達到改變負載電壓的目的,從而達到控制要求。在本系統設計中,通過PWM計數調節輸出電壓值變化,從而使LED燈進行燈光變化,達到預期呼吸燈的效果。如圖3.8所示單片機P21引腳控制PWM信號輸出,PWM控制電路的DAC腳連接LED燈,實現呼吸燈效果。圖3.8PWM控制呼吸燈電路3.8音頻播放模塊JQ8900-16P支持MP3/WAV硬件解碼,支持多種控制模式:包括兩線串口模式、一線串口控制、按鍵模式,支持U盤、TF卡、SPIFLASH,支持USB卡、讀卡器、HID控制,支持SPIFLASH模擬成U盤,直接像操作U盤一樣更新SPIFLASH里的語音。本系統設計采用模擬U盤方式,直接更新內部語音文件。模塊封裝引腳圖如圖3.9所示。圖3.9音頻模塊封裝本設計硬件接口連接參考表3.1引腳功能表。DC-5V接5V電源,GND接單片機開發板GND,SPK-接揚聲器喇叭+,SPK+接揚聲器喇叭-,模塊IO1腳接單片機的P16腳,模塊IO2腳接單片機P15腳。表3.1音頻模塊引腳功能表引腳序號引腳名稱功能描述備注1VPP一線串口2BUSY播放指示燈有音頻輸出時高,無音頻輸出低3RXUART串行數據輸入3.3VTTL電平4TXUART串行數據輸出3.3VTTL電平5GND地電源地6DC-5V模塊電源輸入不可以超過5.2V7SPK-喇叭+接2W/8R以下無源喇叭8SPK+喇叭-9IO7觸發輸入口7對地觸發10IO6觸發輸入口6對地觸發11IO5觸發輸入口5對地觸發12IO4觸發輸入口4對地觸發13IO3觸發輸入口3對地觸發14IO2觸發輸入口2對地觸發15IO1觸發輸入口1對地觸發16DAC音頻輸出外接功放驅動方式采用引腳對地觸發方式,即通過驅動模塊IO腳的方式,觸發模塊內的播放文件,觸發的對應關系如圖3.10所示,觸發引腳IO1即播放存儲編號為00001.MP3文件,觸發引腳IO2即播放存儲編號為00002.MP3文件,以此類推。4軟件設計4.1主程序設計基于STC89C52RC單片機的智能臺燈由人體感應模塊模塊、光敏電阻采集模塊、LED照明模塊、獨立按鍵模塊、音頻輸出模塊和PWM控制呼吸燈模塊組成。4.1.1單片機引腳資源使用單片機引腳資源分別如表4.1所示。表4.1單片機引腳占用表單片機引腳宏定義連接對象P2.2LED1LED燈1P2.3LED2LED燈2P2.4LED3LED燈3P3.1KEY1按鍵1P3.0KEY2按鍵2P3.2KEY3按鍵3P3.3KEY4按鍵4P1.6MP3音頻控制1端口P1.5MP3_2音頻控制2端口P1.7HR人體紅外檢測端口P2.1PWMOUTLEDLED呼吸燈P3.4DINAD芯片輸入P3.5CSAD芯片片選P3.6CLKAD芯片時鐘P3.7DOUTAD芯片輸出其引腳宏定義代碼如下:sbitPWMOUTLED=P2^1;sbitLED1=P2^2;sbitLED2=P2^3;sbitLED3=P2^4;sbitKEY1=P3^1; sbitKEY2=P3^0; sbitKEY3=P3^2; sbitKEY4=P3^3; sbitMP3=P1^6; sbitMP3_2=P1^5; sbitHR=P1^7;sbitDOUT=P3^7; //輸出sbitCLK=P3^6; //時鐘sbitDIN=P3^4; //輸入sbitCS=P3^5; //片選4.1.1主程序設計流程主程序初始化完成后,進行周期采集AD芯片的光敏電阻采集數值,通過KEY4的狀態記錄,判斷當前出于自動/手動模式。當自動模式時,人體紅外檢測模塊查看是否有人體接近,當檢測到人時判斷采集的光敏數值,經多次環境試驗小于700時屬于完全黑暗狀態,因此4個照明LED全部點亮;大于700并小于1000時,3個照明LED點亮;大于1000并小于1700時,2個照明LED點亮;大于1700并小于2400時,1個照明LED點亮;大于2400時屬于光線充足狀態,因此4個照明LED全部關閉。當手動模式時,按鍵KEY1決定是否調亮照明,當KEY1觸發內部邏輯光照檔位5時,全部LED燈點亮;檔位為4時,3個LED點亮;檔位為3時,2個LED點亮;檔位為2時,1個LED點亮;檔位為1時,所有LED全滅。按鍵KEY2決定是否調暗照明,通過調節邏輯光照檔位進行調光,與上面所述檔位變化一致。當KEY3按鍵睡眠按鍵觸發時,呼吸燈閃爍程序執行,音頻播放催眠曲程序執行。之后以此循環進行。如圖4.1所示。圖4.1主程序流程圖4.2光敏電阻AD采集XPT2046數據接口為串行接口,其典型工作時序如圖4.2所示。圖4.2中顯示的信號來自微控制器或帶有基本串行接口的數據信號處理器。處理器和轉換器之間的通信需要8個時鐘周期,并且可以使用SPI、SSI和Microwire等同步串行接口。一次完整的轉換需要24個串行同步時鐘(DCLK)才能完成。前八個時鐘用于通過DIN引腳輸入控制字節。當轉換器獲得關于下一次轉換的足夠信息時,它會根據獲得的信息設置輸入多路復用器和參考源輸入,并進入采樣模式,如果需要,啟動觸摸屏驅動程序。再過三個時鐘周期后,控制字節被設置,轉換器進入轉換狀態。此時,輸入采樣器保持進入保持狀態,觸摸屏驅動停止工作(單端模式)。然后12個時鐘周期將完成真正的模數轉換。如果是公制比例轉換(SER/--DFR=0),驅動器會在整個轉換過程中工作,第13個時鐘輸出轉換結果的最后1位。剩余的3個以上時鐘周期將用于完成轉換器忽略的最后一個字節(DOUT置低)。圖4.28位總線接口無DCLK時鐘延遲24時鐘周期轉換時序控制字節DIN輸入的控制字如表4.2所示,用于對XPT2046發起轉換、尋址、設置ADC分辨率、配置和執行斷電控制。圖4.2、表4.2和表4.3給出了控制字的控制位的詳細描述。起始位——第一個位為S位。控制字必須以1開頭,即S=1。在XPT2046的DIN引腳檢測到起始位之前,所有輸入都將被忽略。地址位——接下來的3位(A2、A1和A0)選擇多路選擇器的當前通道、觸摸屏驅動器和參考源輸入。MODE——模式選擇位,用于設置ADC分辨率。MODE=0時,下一次轉換為12位MODE;MODE=1時,下一次轉換將采用8位MODE。為了在X、Y和觸摸壓力測量中獲得最佳性能,首選差分工作模式。參考電壓是來自開關驅動器的電壓。在單端模式下,轉換器的參考電壓固定為VREF相對于GND引腳的電壓。PD0、PD1--表4.2顯示了電源故障和內部參考電壓配置之間的關系。ADC的內部參考電壓可以單獨關閉或打開,但需要額外的時間將內部參考電壓穩定到轉換前的最終穩定值。如果內部參考源沒電,還要確保有足夠的喚醒時間。ADC需要即時使用,無需喚醒時間。另請注意,當BUSY為高電平時,內部參考源禁止進入斷電模式。如果您想在XPT2046的頻道更改后關閉參考源,請再次向XPT2046寫入命令。表4.2制字的控制位命令位7(MSB)位7(MSB)位7(MSB)位7(MSB)位7(MSB)位7(MSB)位7(MSB)位7(MSB)SSSSSSSS表4.3控制字節各位描述位名稱功能描述7S開始位。為1表示一個新的控制字節到來,為0則忽略PIN引腳上數據6-4A2-A0通道選擇位。3MODE12位/8位轉換分辨率選擇位。為1選擇8位為轉換分辨率,為0選擇12位分辨率2SER/DFR單端輸入方式/差分輸入方式選擇位。為1是單端輸入方式,為0是差分輸入方式1-0PD1-PD0低功率模式選擇位。若為11,器件總處于供電狀態;若為00,器件在變換之間處于低功率模式根據以上描述,光敏電阻值的獲取,要用SPI方式讀取相關值,使用datapros()函數調用Read_AD_Data()函數實現,具體代碼如下:/*******************************************************************************函數名:datapros()*函數功能 :數據處理函數*輸入:無*輸出 :無******************************************************************************/voiddatapros(){ temp=Read_AD_Data(0xA4); //AIN2光敏電阻 }/*****************************************************************************函數名:TSPI_Start*輸入:無*輸出:無*功能:初始化觸摸SPI****************************************************************************/voidSPI_Start(void){ CLK=0; CS=1; DIN=1; CLK=1; CS=0; }/*****************************************************************************函數名:SPI_Write*輸入:dat:寫入數據*輸出:無*功能:使用SPI寫入數據****************************************************************************/voidSPI_Write(uchardat){ uchari; CLK=0; for(i=0;i<8;i++) { DIN=dat>>7; //放置最高位 dat<<=1; CLK=0; //上升沿放置數據 CLK=1; }}/*****************************************************************************函數名:SPI_Read*輸入:無*輸出:dat:讀取到的數據*功能:使用SPI讀取數據****************************************************************************/uintSPI_Read(void){ uinti,dat=0; CLK=0; for(i=0;i<12;i++) //接收12位數據 { dat<<=1; CLK=1; CLK=0; dat|=DOUT; } returndat; }/*****************************************************************************函數名:Read_AD_Data*輸入:cmd:讀取的X或者Y*輸出:endValue:最終信號處理后返回的值*功能:讀取觸摸數據****************************************************************************/uintRead_AD_Data(ucharcmd){ uchari; uintAD_Value; CLK=0; CS=0; SPI_Write(cmd); for(i=6;i>0;i--); //延時等待轉換結果 CLK=1; //發送一個時鐘周期,清除BUSY _nop_(); _nop_(); CLK=0; _nop_(); _nop_(); AD_Value=SPI_Read(); CS=1; returnAD_Value; }4.3呼吸燈PWM控制PWM(脈寬調制)對模擬信號電平進行數字編碼的方法,計算機只能輸出0或5v的數字電壓值而不是輸出模擬電壓,而如果我們想得到一個模擬電壓值,就是通過使用高分辨率計數器,更改方波占空比以對模擬信號電平進行編碼。因為全幅直流電源只有5V(1)和0V(0)兩種情況。電壓以連接(1)或斷開(0)的重復脈沖序列被鉗位到模擬負載,連接為直流電源輸出,斷開為直流電源斷開。通過控制接通和斷開時間,只要帶寬足夠,可以輸出任何不大于最大電壓的模擬電壓,如圖4.3所示。圖4.3PWM調節電壓幅值關系圖我們使用單片機是STC89C52RC型號,其內部有3個16位Timer,分別為T/C0、T/C1、T/C2,通過配置單片機相關寄存器即可實現Timer的功能控制。控制PWM需要用到定時器來生成不同占空比的波形,本次設計采用定時器中斷的方式。使用的寄存器內容如表4.4、表4.5、表4.6所示。表4.4IE寄存器功能描述位名稱功能0EX0外部中斷0的中斷允許位1ET0Timer0的溢出中斷允許位2EX1外部中斷1的中斷允許位3ET1Timer1的溢出中斷允許位4ES串行口中斷允許位5ET2Timer6--7EA中斷允許總控制位表4.5TCON寄存器功能描述位名稱功能0IT0外部中斷0的觸發方式選擇位。功能和IE1類似1IE0外部中斷0的中斷請求標志位。功能和IE1類似2IT1外部中斷1的觸發方式選擇位。當IT1=1時,為下降沿觸發方式,也就是從高到低的跳變會觸發外部中斷1。當IT1=0時,為低電平觸發,也就是單片機檢測到該引腳電平為低時,會觸發外部中斷13IE1外部中斷1的中斷請求標志位。當IE1=1的時候,表示外部中斷1被觸發,正在請求單片機處理中斷事件。當單片機相應中斷,處理中斷事件時,該位由單片機自動清零4TR0啟動定時器/計數器0啟動位,功能和TR1類似5TF0定時器/計數器T0溢出中斷請求標志位。功能和TF1類似.6TR1啟動定時器/計數器1啟動位,TR=1啟動計時,TR=0停止計時7TF1定時器/計數器T1溢出中斷請求標志位。當T1溢出時,該位自動置1。單片機響應相應中斷時,系統自動清零TF1,也可以程序清零表4.6TMOD寄存器功能描述位名稱功能0M0工作方式選擇位1M1工作方式選擇位2C/T計數器模式和定時器模式選擇位,C/T=1時,為計數器模式,C/T=0時,為定時器模式。C為counter的縮寫,T為timer的縮寫,這樣方便理解3GATET1(0)的啟動源選擇位,GATE=1時,用外部中斷引腳INT1(INT0)上的高電平來啟動T1(T0);GATE=0時,用TCON里的TR1(TR0)來啟動T1(T0)。4M0相似于0位5M1相似于1位6C/T相似于2位7GATE相似于3位根據以上所述,我們使用定時器T0進行中斷服務,PWM_Config()函數控制PWM占空比配置,PWM_Close()函數關閉PWM生成,在主函數中進行此驅動的調用,代碼如下所示。主函數內關于PWM調用的代碼如下,當標志位變量fx為0時,cont變量循環累加,當標志位變量fx為1時,cont變量循環累減,PWM根據cont的變化值為參數作為占空比參數使用,進行PWM生成。if(fx==0){ cont+=10; if(cont>=90) fx=1; }else{ cont-=10; if(cont<=0) fx=0; } //LED亮->暗PWM_Config(100,cont);//配置PWM頻率為100HZ,占空比為contdelay_ms(800); PWM_Close();PWM驅動函數如下所示:/*使用T0配置PWM高低電平的頻率*//*fr為PWM的頻率,100HZ無閃爍,dc是PWM的占空比(高電平占的百分比)*/voidPWM_Config(u16fr,u8dc){ u32tmp; u16heigh,low; tmp=SYSCLOCK/12;//一個機器周期頻率 tmp=tmp/fr;//一個機器周期中fr的頻率所需計數值(包括高電平和低電平) heigh=(tmp*dc)/100;//高電平占dc%,所需計數值 low=tmp-heigh;//低電平所需計數值 Heigh=65536-heigh;//高電平計數初值 low=65536-low;//低電平計數初值 heighHR0=(u8)(heigh>>8);//高電平裝入初值的高字節 heighLR0=(u8)heigh;//高電平裝入初值的低字節 lowHR0=(u8)(low>>8);//低電平裝入初值的高字節 lowLR0=(u8)low;//低電平裝入初值的低字節 TMOD&=0xF0;//清零T0控制位 TMOD|=0x01;//設定T0工作方式1,16位可設定時器 TH0=heighHR0; TL0=heighLR0;//裝入高電平計數初值 PWMOUTLED=1;//開始時PWM輸出高電平 TR0=1; ET0=1; EA=1;}/*關閉PWM*/voidPWM_Close(){ TR0=0;//關閉Timer0 ET0=0;//關閉T0中斷 PWMOUTLED=1;//PWM輸出高電平}/*定時器T0中斷服務*/voidTimer0_ISP()interrupt1{ //判斷PWM現在輸出的是高電平還是低電平 if(PWMOUTLED) { TH0=lowHR0; TL0=lowLR0;//裝載低電平計數初值 PWMOUTLED=0;//PWM輸出低電平 } else { TH0=heighHR0; TL0=heighLR0;//重裝裝載高電平計數初值 PWMOUTLED=1;//PWM輸出高電平 }}4.4音頻輸出JQ8900-16P可將需要的音頻文件按照模塊識別的方式命名,本設計將催眠曲的MP3文件提前命名為00001.mp3文件,以及一個空音頻文件命名為00002.mp3文件,用數據線放入模塊內部,引腳觸發方式和文件名稱對應關系如圖4.4所示。圖4.4音頻模塊引腳與文件對應關系JQ8900-16P有7個觸發IO口,最多支持19段語音觸發播放,7個IO口一對一對地觸發播放和3*4矩陣方式,觸發的關系如表4.7所示。表4.7JQ8900-16P引腳觸發關系描述IO1到地IO1對地短路播放語音1IO4-IO1IO4對IO1短路播放語音11IO2到地IO2對地短路播放語音2IO4-IO2IO4對IO2短路播放語音12IO3到地IO3對地短路播放語音3IO4-IO7IO4對IO7短路播放語音13IO4到地IO4對地短路播放語音4IO5-IO1IO5對IO1短路播放語音14IO5到地IO5對地短路播放語音5IO5-IO2IO5對IO2短路播放語音15IO6到地IO6對地短路播放語音6IO5-IO7IO5對IO7短路播放語音16IO7到地IO7對地短路播放語音7IO6-IO1IO6對IO1短路播放語音17IO1-IO3IO1對IO3短路播放語音8IO6-IO2IO6對IO2短路播放語音18IO2-IO3IO2對IO3短路播放語音9IO6-IO7IO6對IO7短路播放語音19IO3-IO7IO3對IO7短路播放語音10根據表格知可以使用模塊的IO1和IO2引腳作為音頻觸發引腳,IO1接地觸發播放催眠曲,實現功能,IO2接地觸發一段空音頻,用于打斷催眠曲播放效果,停止播放音頻。主程序根據需求,直接觸發對應MP3及MP3_2兩個指示引腳,觸發即可。

5調試與系統測試5.1調試思想本系統調試的主要思路是,上電前檢查所有硬件接線,單片機開發板完成上電后,檢查各個模塊是否正常工作,按鍵和LED是否按照設計思路進行變化,語音模塊是否能正常播放,光敏電阻和人體紅外傳感器是否能正常檢測。5.2調試方法(1)人體紅外傳感器模塊測試①開發板上電后,按鍵KEY4切換到自動模式;②接近HCSR-501模塊,對光敏電阻進行稍微遮擋使環境光變暗;③觀察LED燈組,如LED燈點亮說明人體紅外傳感器工作正常,反之排查問題。(2)光敏電阻模塊測試①開發板上電后,按鍵KEY4切換到自動模式;②接近HCSR-501模塊,對光敏電阻進行完全遮擋模擬環境光全黑的狀態,觀察LED燈組是否全部點亮;③調整對光敏電阻的遮擋,適當增加光強,觀察LED燈組是否三個點亮;④依照步驟③將光強適當增強,觀察LED燈組是否兩個點亮;⑤依照步驟③將光強適當增強,觀察LED燈

溫馨提示

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

評論

0/150

提交評論