目 錄
第一章 前言
1.1 本課題的研究背景和意義
1.2 本課題研究的主要內(nèi)容
1.3 本論文的主要內(nèi)容及結(jié)構(gòu)安排
第二章 系統(tǒng)設(shè)計(jì)
系統(tǒng)總體設(shè)計(jì)方案
2.1 系統(tǒng)硬件設(shè)計(jì)
2.2.1 主控板電路設(shè)計(jì)
2.2.2 STC89C52簡介
2.2.3 檢測模塊的設(shè)計(jì)與選用
2.2.4繼電器輸出模塊
2.2.5 nRF2401A無線射頻模塊
2.2.6 基于MAX232與PC通訊
2.3.1 遙控器的設(shè)計(jì)
2.3.2 顯示屏LCD1602
2.3.3 時鐘芯片DS1302
2.3.4 LM7805與AMS1084
2.3.5 按鍵指示電路及實(shí)現(xiàn)
2.4 硬件設(shè)計(jì)開發(fā)
2.4.1 開發(fā)環(huán)境protel99SE
2.4.2 電路板的制作
第三章 程序的設(shè)計(jì)實(shí)現(xiàn)
3.1 系統(tǒng)整體程序框架
3.2.1 主控板程序設(shè)計(jì)
3.2.2 燈光延時等待的設(shè)計(jì)與思考
3.3.1 遙控器程序設(shè)計(jì)
3.3.2 NRF2401A無線射頻通訊的程序設(shè)計(jì)
3.3.2 LCD1602顯示模塊的程序設(shè)計(jì)
3.3.3 DS1302時鐘芯片的設(shè)計(jì)
3.4軟件設(shè)計(jì)開發(fā)
3.4.1 軟件開發(fā)環(huán)境KeiluVision4簡介
3.4.2 KEIL的使用
3.4.3單片機(jī)程序的燒寫
第四章 調(diào)試結(jié)果
結(jié)束語
1 緒論
1.1 本課題的研究背景和意義
隨著科技的發(fā)展,和人們的生活水平不斷提高,居住環(huán)境的改善備受關(guān)注,于是家居智能化的快速興起,滿足人們對舒適,安全,便捷以及節(jié)能環(huán)保的時尚生活的追求。現(xiàn)階段人類社會的進(jìn)步越來越依賴于對能源的開發(fā)與利用,然而人們對能源無盡的需求量和有限的能源數(shù)量形成了不可抗拒的矛盾,能源匱乏不僅是我國所面臨的危機(jī),更是世界所面臨的嚴(yán)峻考驗(yàn)。而中國是一個人口大國,家庭是其中最基本的一個組成單元,家庭照明占我國電能消耗的一大部分。管理好家庭燈光照明系統(tǒng),不僅能減少電能的巨大浪費(fèi),優(yōu)化我們的生活方式和居住環(huán)境,還能為我們提供優(yōu)質(zhì)、舒適、安全的生活空間。
燈光的智能化是智能家居的重要組成部分,本文介紹了一種基于單片機(jī)和無線射頻技術(shù)的的智能燈光控制系統(tǒng)(增多)
1.2 本課題研究的主要內(nèi)容
本設(shè)計(jì)所制作的智能燈光主要用來控制照明燈,通過檢測室內(nèi)有無人員和室內(nèi)光線的強(qiáng)弱來控制照明燈的開啟和關(guān)閉,以達(dá)到根據(jù)不同的環(huán)境,人們的不同需要實(shí)現(xiàn)室內(nèi)不同位置的照明需求,并且可以通過遙控對室內(nèi)的燈光進(jìn)行控制,實(shí)現(xiàn)自動/手動切換,更加人性化的設(shè)計(jì),讓該系統(tǒng)有了更高的實(shí)用價值。
該設(shè)計(jì)主要由主控板和遙控器組成,其中:主控板包括單片機(jī)控制模塊、檢測輸入模塊、射頻通訊模塊、PC上位機(jī)監(jiān)控模塊、驅(qū)動電路模塊、繼電器輸出模塊。遙控器包括單片機(jī)控制模塊、無線射頻模塊、鍵盤模塊、顯示器模塊。通過測試,系統(tǒng)穩(wěn)定,能夠根據(jù)外界環(huán)境的變化自動進(jìn)行開關(guān)的控制。由于單片機(jī)的I/O口資源豐富,可將后級擴(kuò)展成多路自動開關(guān),同時控制多路照明燈,使其應(yīng)用于賓館、學(xué)校、家庭等環(huán)境。所以該設(shè)計(jì)具有較廣泛的應(yīng)用前景。(合并)
1.3 論文的主要內(nèi)容及結(jié)構(gòu)安排鑒于無線通訊與燈光智能系統(tǒng)的重要意義及單片機(jī)在該系統(tǒng)中的獨(dú)特優(yōu)勢,本論文選擇以單片機(jī)為核心,以紅外感應(yīng)與光強(qiáng)感應(yīng)為被測量,開關(guān)按鈕可切換狀態(tài),設(shè)計(jì)了智能燈光系統(tǒng)。不但實(shí)現(xiàn)了下位機(jī)對燈光的自動控制、實(shí)時監(jiān)測與遙控器的通訊,還在此基礎(chǔ)上實(shí)現(xiàn)了對時間的顯示,操作系統(tǒng)的簡便化,讓系統(tǒng)更容易被用戶使用。
論文結(jié)構(gòu)安排如下:
第一章:智能燈光系統(tǒng)的普遍性性與研究現(xiàn)狀,以及論文的主要內(nèi)容與結(jié)構(gòu)。
第二章:總體設(shè)計(jì)方案與硬件設(shè)計(jì),其中包括主控板和遙控器的設(shè)計(jì)。
第三章:主控板和遙控器的程序設(shè)計(jì)。
第四章:調(diào)試結(jié)果。
2 方案設(shè)計(jì)
圖2-1 系統(tǒng)總體設(shè)計(jì)方案
系統(tǒng)總體設(shè)計(jì)方案
如圖2-1所示,單片機(jī)選用STC89C52,通過光強(qiáng)檢測模塊檢測出外界光強(qiáng),是否合適開燈,由紅外檢測模塊檢測是否有人進(jìn)入房間,通過主控板的單片機(jī)進(jìn)行控制。在主控板上有狀態(tài)轉(zhuǎn)換按鍵,通過按鍵控制各個房間的狀態(tài),是強(qiáng)制開/強(qiáng)制關(guān)/自動狀態(tài)。主控板通過無線射頻模塊與遙控器通訊,給遙控器傳送各個房間的狀態(tài)信息,并且接收遙控器發(fā)來的控制信號。在遙控器上,把接收來的狀態(tài)信號,將其通過LCD1602顯示屏顯示出來。用戶在不去該房間的情況下監(jiān)控房間燈光的狀態(tài),并且通過遙控器上的鍵盤進(jìn)行控制。時鐘模塊將當(dāng)前時間發(fā)送給單片機(jī),單片機(jī)再通過程序控制,將時間顯示在顯示屏上。
2.1 系統(tǒng)硬件設(shè)計(jì)
單片機(jī)選用的是STC89C52,光強(qiáng)檢測模塊采用光敏電阻實(shí)現(xiàn),紅外檢測模塊采用HC-SR501 人體紅外感應(yīng)模塊,RS232通訊模塊采用MAX232對信號轉(zhuǎn)換,無線射頻模塊采用nRF2401A模塊,顯示屏使用LCD1602,時鐘芯片使用DS1302,鍵盤使用可復(fù)位按鍵開關(guān)。
2.2.1 主控板電路設(shè)計(jì)
電路設(shè)計(jì)我用的是protel99繪制。由于光強(qiáng)檢測和紅外檢測需要較大的空間,我將單片機(jī)P1口都接出來了外部接口,將其制作成方便安裝的分離模塊式。P0口主要功能是與nRF2401A無線射頻模塊相連。P2口我將其分成三部分P2.0,P2.1,P2.2三個管腳我用它們作為繼電器輸出接口;P2.3,P2.4,P0.7作為各個房間的自動狀態(tài)指示燈;P2.5,P2.6,P2.7采集主控板上按鍵信號,用于轉(zhuǎn)換各個房間的控制狀態(tài)。TXD和RXD兩個管腳分別接MAX232芯片的R1_OUT和T1_IN位,作為單片機(jī)與PC通訊的接口。電路原理圖如圖2-2所示。
圖2-2 主控板總原理圖

2.2.2 STC89C52簡介

STC89C52是一種低功耗、高性能、價格低廉的CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash 儲存器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。CPU 停止工作,允許RAM、定時器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。其引腳圖如圖2-3所示。 圖2-3 STC89C52單片機(jī)
2.2.3 檢測模塊的設(shè)計(jì)與選用
1)光強(qiáng)檢測模塊
光強(qiáng)檢測模塊采用的是光敏電阻5516,其亮電阻約5KΩ,暗電阻約500KΩ。將其與電阻串聯(lián),與三極管9014組成光強(qiáng)檢測模塊,工作電壓為5V(如圖2-4所示)。在光照下,其阻值迅速下降,三極管9014的基極電壓升高,三極管導(dǎo)通,輸出信號由高變低。當(dāng)光照強(qiáng)度變暗后,光敏電阻的阻值升高,三極管基極電壓降低, 圖2-4 光強(qiáng)檢測模塊電路

三級管截止,光強(qiáng)檢測信號由低變高。
2)紅外檢測模塊
紅外檢測模塊采用封裝好的紅外熱釋傳感器HC-SR501(圖2-5),感應(yīng)范圍138°*125°,感應(yīng)距離7m,工作溫度-15~+70℃。通過跳線將其觸發(fā)模式調(diào)成可重復(fù)收發(fā)模式,接入工作電壓+5V,將其信號端接入單片機(jī)端口。 圖2-5 紅外傳感器
2.2.4繼電器輸出模塊

該系統(tǒng)采用的繼電器為24V繼電器,需要使用ULN2003將單片機(jī)輸出的5V電壓信號放大到24V驅(qū)動繼電器工作。由于STC89C52單片機(jī)一般用并口進(jìn)行編程,理論上可以直接用單片機(jī)的幾根I/O口接并口線,但如果電路板沒做好,可能會連帶把計(jì)算機(jī)并口燒壞,所以要加個74HC244芯片隔離一下。(如圖2-7所示)
ULN2003是高耐壓、大電流復(fù)合晶體管陣列,由七個硅NPN 復(fù)合晶體管組成(圖2-6)。ULN2003 工作電壓高,工作電流大,灌電流可達(dá)500mA,并且能夠在關(guān)態(tài)時承受50V 的電壓,輸出還可以在高負(fù)載電流并行運(yùn)行,多用于單片機(jī)、智能儀表、PLC、數(shù)字量輸出卡等控制電路中。可直接驅(qū)動繼電器等負(fù)載。由于ULN2003是一個非門電路,繼電器線圈另一端接在+24V電源上,當(dāng)+5V的控制信號傳送到ULN2003中, 圖2-6 ULN2003 ULN2003會輸出一個低電平,讓線圈吸合。
74HC244是一個三態(tài)緩沖器,作為單片機(jī)輸出緩沖作用。可以將單片機(jī)輸出信號長時間保持。
圖2-7 繼電器輸出模塊電路圖
2.2.5 nRF2401A無線射頻模塊
作為主控板與遙控器通訊的重要組成樞紐,無線射頻模塊,該系統(tǒng)選用的是nRF2401A無線射頻模塊,如圖2-8所示。nRF2401A是挪威Nordic公司推出的2.4G單片無線射頻收發(fā)芯片,芯片內(nèi)置頻率合成器、功率放大器、晶體振蕩器和調(diào)制器等功能模塊,輸出功率和通信頻道可通過程序進(jìn)行配置。該芯片具有接收靈敏度高、外圍電路少、發(fā)射功率低、傳輸速率高、低功耗等優(yōu)點(diǎn)。nRF2401 適用于多種無線通信的場合,如:無線鼠標(biāo)、無心數(shù)據(jù)采集、小型無線網(wǎng)絡(luò)、無線抄表、門禁系統(tǒng)、小區(qū)傳呼、監(jiān)控系統(tǒng)、非接觸RF智能卡、無線遙控、無線音頻/視頻數(shù)據(jù)傳輸?shù)取?/font>
圖2-8 nRF2401A引腳示意圖
nFR2401A引腳功能如表2-1所示:
表2-1 NRF2401A引腳功能表
| | | |
| | | |
| | | |
| | | |
| | | |
| | | 使nFR2401A工作于接收或發(fā)送狀態(tài) |
| | | 頻道2接收數(shù)據(jù)準(zhǔn)備好 |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | 頻道1接收數(shù)據(jù)準(zhǔn)備好 |
| | | |
| | | |
| | | |
| | | |
nFR2401A的工作模式有配置模式、收發(fā)模式、待機(jī)模式、關(guān)機(jī)模式四種。模式由主控芯片通過軟件設(shè)置。芯片上電后,STC89C52通過接口將配置數(shù)據(jù)送入芯片,設(shè)置收發(fā)模式、收發(fā)頻率、接收地址、發(fā)射功率、CRC校驗(yàn)和的長度、有效數(shù)據(jù)的長度等。傳輸中,只有地址,校驗(yàn)和匹配的數(shù)據(jù)包才能被進(jìn)一步處理,產(chǎn)生中斷信號。這時,S3C2440讀取數(shù)據(jù)。在同一時刻nRF2401A只能處于接收或發(fā)送模式中的一種,一般以接收模式為待機(jī)狀態(tài)。
nRF2401A工作模式如表2-2所示:
表2-2 nRF2401A工作模式 該系統(tǒng)是用的是通道一,所以單片機(jī)接口只需接入PWR_UP,CE,CS,CLK1四個控制位和數(shù)據(jù)位DATA1。同時將CLK2第二通道的脈沖輸入信號接地,以防干擾。
nRF2401A工作電壓為+3.3V而單片機(jī)使用的是+5V的直流電源,所以使用AMS1084-3.3V降壓芯片將+5V的直流電轉(zhuǎn)換成+3.3V的直流電為nRF2401A供電。其外圍電路如圖2-9所示。
圖2-9 AMS1088-3.3V外圍電路 圖2-10 MAX232
2.2.6 基于MAX232與PC通訊

MAX232是一種把電腦的串行口rs232信號電平(-10 ,+10v)轉(zhuǎn)換為單片機(jī)所用到的TTL信號點(diǎn)平(0 ,+5)的芯片, 使用+5v單電源供電,MAX232共16跟引腳,第一部分是電荷泵電路。由1、2、3、4、5、6腳和4只電容構(gòu)成。功能是產(chǎn)生+12v和-12v兩個電源,提供給RS-232串口電平的需要。第二部分是數(shù)據(jù)轉(zhuǎn)換通道。由7、8、9、10、11、12、13、14腳構(gòu)成兩個數(shù)據(jù)通道。其中13腳(R1IN)、
12腳(R1OUT)、11腳(T1IN)、14腳(T1OUT)為第一數(shù)據(jù)通道。8腳(R2IN)、9腳(R2OUT)、10腳(T2IN)、7腳(T2OUT)為第二數(shù)據(jù)通道。其接線電路如圖2-10所示。 圖2-11 MAX232周邊電路
在該系統(tǒng)中,MAX232分別連接著RS232串口和單片機(jī)的TXD,RXD位,使用的是通道1,即使用的輸入輸出的管腳是T1_OUT,T1_IN,R1_OUT,R1_IN。周邊電路如圖2-11所示。
2.3.1 遙控器的設(shè)計(jì)
在遙控器的設(shè)計(jì)中,P0口外接一個排阻,排阻公共端接的是AMS1084-3.3V輸出的+3.3V電源,主要控制nRF2401A無線射頻模塊,負(fù)責(zé)與主控板進(jìn)行無線通訊;P1口連接的是LCD1602顯示屏的8位數(shù)據(jù)位DB0-DB7,P3.4接LCD的E端(使能端),P3.5接LCD1602的R/W管腳,負(fù)責(zé)控制LCD1602的讀寫控制,P3.6接LCD1602的RS管腳,負(fù)責(zé)對寄存器的選擇。同時,LCD1602的VSS位接地,VDD接LM7805提供的+5V電源。并且VEE外接一個電位器,控制背光亮度。單片機(jī)的P2.1-P2.4分別接了四個低電平觸發(fā)的按鍵,作為UP上翻,DOWN下翻,SWITCH切換,BACKLIGHT背光。P2.5-P2.7三位分別接入時鐘芯片DS1302的SLCK,I/O,CE,作為讀寫時間的控制位和數(shù)據(jù)通道。同時單片機(jī)的TXD,RXD與MAX232相連,通過RS232串口與計(jì)算機(jī)通訊。總電路原理圖如圖2-12所示。
圖2-12 遙控器總電路原理圖
2.3.2 顯示屏LCD1602
1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號等的點(diǎn)陣型液晶模塊。它由若干個5X7或者5X11等點(diǎn)陣字符位組成,每個點(diǎn)陣字符位都可以顯示一個字符,每位之間有一個點(diǎn)距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因?yàn)槿绱怂运荒芎芎玫仫@示圖形。
LCD1602功能管腳如表2-3所示:
表2-3 LCD1602功能管腳
在設(shè)計(jì)中,我們將VCC和VSS分別接電源+5V和地,為LCD1602供電,在VEE端接了一個20K的變阻器到+5V電源,通過調(diào)整變阻器的阻值來調(diào)整LCD1602的對比度,當(dāng)電壓越高時對比度越弱,反之越強(qiáng)。RS寄存器選擇端,RW讀寫信號線,E使能端這三位分別接入單片機(jī)的P3.6,P3.5,P3.4。通過程序控制這三位控制位對LCD1602的讀寫操作。15腳和16腳主要是為LCD1602的背光供電,將其分別接入電源+5V和電源地。
2.3.3 時鐘芯片DS1302
DS1302 是美國DALLAS公司推出地一種高性能、低功耗、帶RAM的實(shí)時時鐘電路,它能對年、月、日、周、時、分、秒進(jìn)行計(jì)時,具有閏年補(bǔ)償功能。工作電壓為2.5V~5.5V,外接32.768MHz的晶振。采用三線接口與單片機(jī)進(jìn)行同步通信,并可采用突發(fā)方式,一次傳送多個字節(jié)的時鐘信號或RAM數(shù)據(jù)。DS1302內(nèi)部有一個31×8的RAM寄存器,用于臨時性存放數(shù)據(jù)。DS1302是DS1202的升級產(chǎn)品,與DS1202兼容,但增加了主電源/后備電源雙電源引腳,同時提供了對后備電源進(jìn)行涓細(xì)電流充電的能力。
DS1302功能引腳如表2-4所示:
表2-4 DS1302管腳功能
| | |
| | |
| | |
| | |
| | |
| | 復(fù)位/片選線,通過把RST輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。 |
| | |
| | |
| | |
在該系統(tǒng)中,VCC2用LM7805提供的+5V電壓供電,VCC1備用電源使用的是紐扣電池CR2016,提供的電壓是+3V。I/O管腳接單片機(jī)的P2.6腳,作為單片機(jī)對DS1302進(jìn)行讀寫操作的數(shù)據(jù)通道,SCLK接入單片機(jī)P2.5口,作為單片機(jī)與DS1302的通訊時鐘輸入端,CE接入單片機(jī)P2.7口主要對DS1302發(fā)送片選信號。
2.3.4 LM7805與AMS1084
1)LM7805應(yīng)用
圖2-13 LM7805典型應(yīng)用電路
單片機(jī)電源電路的設(shè)計(jì)以三端集成穩(wěn)壓器LM7805為核心,它屬于串聯(lián)穩(wěn)壓電路,其工作原理與分立元件的串聯(lián)穩(wěn)壓電源相同。圖2-13是三端穩(wěn)壓集成電路LM7805的典型應(yīng)用電路,三端集成穩(wěn)壓器設(shè)置的啟動電路,在穩(wěn)壓電源啟動后處于正常狀態(tài)時,啟動電路與穩(wěn)壓電源內(nèi)部其他電路脫離聯(lián)系,這樣輸入電壓變化不直接影響基準(zhǔn)電路和恒流源電路,保持輸出電壓的穩(wěn)定。電路中Ci的作用是消除輸入連線較長時其電感效應(yīng)引起的自激振蕩,減小紋波電壓,取值范圍在0.1μF~1μF之間,本文Ci選用0.33μF;在輸出端接電容Co是用于消除電路高頻噪聲,改善負(fù)載的瞬態(tài)響應(yīng),一般取0.1μF左右,本文Co即選用0.1μF。一般電容的耐壓應(yīng)高于電源的輸入電壓和輸出電壓。另外,為避免輸入端斷開時Co從穩(wěn)壓器輸出端向穩(wěn)壓器放電,造成穩(wěn)壓器的損壞,在穩(wěn)壓器的輸入端和輸出端之間跨接一個二極管,對LM7805起保護(hù)作用。
LM7805輸入電壓為8V到36V,最大工作電流1.5A,具有輸入電壓范圍寬,工作電流大,輸出精度高且工作及其穩(wěn)定,外圍電路簡單等特點(diǎn),太陽能電池電壓即使有較大的波動,也能穩(wěn)定的輸出5V電壓,從而是單片機(jī)等控制電路正常工作,且成本低。
2)AMS1084
由于單片機(jī)、LCD、DS1302使用電壓為+5V直流電,而NRF2401A射頻使用電壓為+3.3V~+3.6V,所以需要將5V的直流電變壓成3.3V為NRF2401A射頻芯片供電,其接線圖如圖2-14所示
圖2-14 AMS1084-3.3V外部接線圖
2.3.5 按鍵指示電路及實(shí)現(xiàn)
在單片機(jī)應(yīng)用系統(tǒng)中,按鍵主要有兩種形式:1、獨(dú)立按鍵;2、矩陣編碼鍵盤。獨(dú)立按鍵的每個按鍵都單獨(dú)接到單片機(jī)的一個I/O口上,獨(dú)立按鍵則通過判斷按鍵端口的電位即可識別按鍵操作;而矩陣鍵盤通過行列交叉按鍵編碼進(jìn)行識別。
通常所用的按鍵為輕觸機(jī)械開關(guān),正常情況下按鍵的接點(diǎn)是斷開的,當(dāng)我們按壓按鈕時,由于機(jī)械觸點(diǎn)的彈性作用,一個按鍵開關(guān)在閉合時不會馬上穩(wěn)定地接通,在斷開時也不會一下子斷開。因而機(jī)械觸點(diǎn)在閉合及斷開的瞬間均伴隨有一連串的抖動,抖動時間的長短由按鍵的機(jī)械特性及操作人員按鍵動作決定,一般為5ms~20ms;按鍵穩(wěn)定閉合時間的長短是由操作人員的按鍵按壓時間長短決定的,一般為零點(diǎn)幾秒至數(shù)秒不等。
在本設(shè)計(jì)中由于按鍵不是太多,故采用獨(dú)立按鍵法,這樣可以減小編程的難度,圖2-15為本設(shè)計(jì)的按鍵接線圖。
圖2-15 按鍵接線圖
2.4.1 開發(fā)環(huán)境protel99SE
開發(fā)硬件設(shè)計(jì)主要使用的是protel 99軟件如圖15所示,protel是Altium公司在80年代末推出的EDA軟件,在電子行業(yè)的CAD軟件中,它當(dāng)之無愧地排在眾多EDA軟件的前面,是電子設(shè)計(jì)者的首選軟件,它較早就在國內(nèi)開始使用,在國內(nèi)的普及率也最高,有些高校的電子專業(yè)還專門開設(shè)了課程來學(xué)習(xí)它,幾乎所有的電子公司都要用到它,許多大公司在招聘電子設(shè)計(jì)人才時在其條件欄上常會寫著要求會使用protel。
Protel99 SE共分5個模塊,分別是原理圖設(shè)計(jì)、PCB設(shè)計(jì)(包含信號完整性分析)、自動布線器、原理圖混合信號仿真、PLD設(shè)計(jì)。
圖2-16 protel工作空間界面
首先進(jìn)入protel新建一個工程,在菜單欄中的file→new,然后選擇路徑和設(shè)定工程名稱,單機(jī)OK,這樣就成功的新建了一個工程。在右邊會出現(xiàn)工作空間,單機(jī)右鍵→new→選擇Schematic Document,這樣就新建了一個電氣原理圖(如圖2-16),修改原理圖名稱,然后進(jìn)入原理圖,繪制需要的電氣圖。
在原理圖繪制完畢后,對每個元件選擇相應(yīng)的封裝,接著在菜單欄里的design菜單中選擇Update to PCB,protel會自動在工作空間中生成與原理圖同名的PCB圖,并且在PCB中標(biāo)記有飛線,這樣會方便布線,分布號元器件位置,設(shè)置好線寬,焊盤等設(shè)置,即可開始繪圖。如圖2-17所示。
圖2-17 PCB圖形繪制
2.4.2 電路板的制作
繪制完畢PCB圖后,將其打印在轉(zhuǎn)印紙上,將其覆蓋在擦洗打磨干凈的覆銅板上,平整的固定住,與其一起在快速制版機(jī)中加熱。注意,溫度過高可能會使覆銅板銅皮翹起,溫度太低會使碳粉吸附不牢固。轉(zhuǎn)印好銅板后,將轉(zhuǎn)印好的銅板放入氯化鐵溶液中浸泡腐蝕,將沒有覆蓋碳粉的部分腐蝕掉,待腐蝕完畢后,用細(xì)砂紙將電路上的碳粉打磨掉露出同色的銅皮即可。使用0.5mm的鉆頭在焊盤上打孔,并且對照著PCB圖焊接好對應(yīng)的元器件,經(jīng)過萬用表測試無斷線無短路即可上電使用。成果如圖2-18所示。
圖2-18 焊接完畢的電路板
第三章 程序的設(shè)計(jì)實(shí)現(xiàn)
3.1 系統(tǒng)整體程序框架
本設(shè)計(jì)整體工作主要由單片機(jī)程序控制實(shí)現(xiàn),其工作過程為:電路啟動初始化,電路功能選擇,通訊握手,讀取信號,顯示信號,輸出選擇并確定輸出,單片機(jī)采集外部光強(qiáng)和紅外信號等,程序整體框架如圖3-1所示。
圖3-1 程序整體框架圖
3.2主控板程序設(shè)計(jì)
本設(shè)計(jì)流程框圖如圖3-2所示。首先上電,對各個模塊進(jìn)行初始化,然后檢測各個房間的燈光狀態(tài)(自動狀態(tài),強(qiáng)制開,強(qiáng)制關(guān)),將狀態(tài)寫給NRF2401A射頻芯片的緩存區(qū),并將其發(fā)射給遙控器。再進(jìn)行對各個狀態(tài)的處理,強(qiáng)制開狀態(tài)則將該房間對應(yīng)的管腳置1;反之,強(qiáng)制關(guān)則將對應(yīng)房間的管腳清零。繼電器輸出模塊會通過管腳電平變化改變繼電器線圈電流,控制線圈吸合或者斷開,從而控制房間燈光的開關(guān)。如果是自動狀態(tài),則通過光強(qiáng)傳感器、紅外傳感器判斷房間是否應(yīng)該開燈。當(dāng)外部亮度足夠亮,則不需要開燈;若外部亮度較暗,則通過紅外傳感器檢測是否有37℃的紅外頻率出現(xiàn),當(dāng)有人被紅外傳感器檢測到,紅外傳感器信號位跳變?yōu)楦唠娖剑瑔纹瑱C(jī)相應(yīng)管腳接收到該信號會進(jìn)行處理,控制對應(yīng)房間的管腳變?yōu)楦唠娖健?/div>
圖3-2 主控板程序流程圖
3.2.1 燈光延時等待的設(shè)計(jì)與思考
考慮到在家居時,很多人會暫時離開一下某件屋子,然后會回來,這樣使燈具頻繁的開關(guān)可能會導(dǎo)致燈具的損壞,所以設(shè)計(jì)了一套燈光延時等待程序,為了節(jié)省MCU的占用率,該段程序使用的是內(nèi)部定時器進(jìn)行計(jì)時,這樣可以再執(zhí)行其他程序的同時進(jìn)行延時。
通過TMOD將單片機(jī)內(nèi)部定時器0與定時器1的工作方式選方式一。TMOD狀態(tài)字如表3-1所示
表3-1 TMOD狀態(tài)字
計(jì)算出計(jì)時器每次計(jì)時時間,并對TH1,TL1,TH0,TL0進(jìn)行賦值。計(jì)算公式如3-2式。
T=(65536-X)TCY (3-2)
在式3-2中T為定時器定時時間,X為寄存器存儲值,將其高八位寫入TH中低八位寫入TL中;TCY為一個指令周期,TCY與晶振頻率f有關(guān),TCY =12/f。
由于每次計(jì)時器計(jì)時長度有限約10ms(方便計(jì)算),不能達(dá)到系統(tǒng)要求,在使用時,設(shè)定了一個時間次數(shù)變量TIME,讓其循環(huán)100次即可延時1S,如需時間改變,改變TIME值即可。定時器的調(diào)用步驟如圖3-3所示。
圖3-3 定時器調(diào)用框圖
鑒于本設(shè)計(jì)有多個房間(多于兩個)而單片機(jī)中僅有兩個定時器,所以在每次調(diào)用定時器時都會有一個對定時器選擇的程序。當(dāng)需要使用定時器時,先進(jìn)行判定,定時器0是否被其他房間所占用,若沒有被占用則使用定時器0,若被占用了,則使用定時器1 。若定時器0與定時器1同時被占用,則調(diào)用手動編寫的延時定時器程序,由于該程序段比較占用單片機(jī),會影響到系統(tǒng)整體的運(yùn)行速度,所及將其優(yōu)先級放在最后。
3.3.1 遙控器程序設(shè)計(jì)
遙控器主要包含的模塊有LCD1602顯示器,DS1302時鐘芯片,NRF2401A射頻模塊,還有按鍵部分。主要設(shè)計(jì)思路如下,首先上電對各個模塊初始化,讀取DS1302中的時間數(shù)據(jù),同時讓LCD液晶顯示屏顯示時間與房間,接著通過NRF2401A向主控板發(fā)送信號,要求返回各個房間的狀態(tài),并將其寫入LCE液晶顯示屏上。然后掃描鍵盤,判斷是否有房間狀態(tài)需要改變,若有鍵盤按下,則將按鍵信號通過NRF2401A射頻發(fā)送到主控板中,主控板接收到信號后改變房間狀體,同時返回當(dāng)前房間狀態(tài),讓遙控板上的LCD作出相應(yīng)的顯示。其流程框圖如圖3-4所示。
圖3-4 遙控器工作流程圖
3.3.2 NRF2401A無線射頻通訊的程序設(shè)計(jì)
1)初始化程序初始化函數(shù): void n1A_Init_Dev()
程序包括端口初始化和向芯片寫控制字操作,初始化流程如圖3-2所示。
圖3-5 NRF2401A初始化框圖
NRF2401A的工作模式如表3-2所示:
表3-2 NRF2401A工作模式
對nRF2401A的初始化包括nRF2401A上電和向nRF2401A寫控制字。nRF2401A上電是將芯片的PWR-UP管腳設(shè)置為高電平,上電以后才可以對nRF2401A進(jìn)行控制和讀寫操作。nRF2401A共有18Byte(144bit)的命令字。其配置字格式如表3-3所示。
表3-3 配置字格式
向nRF2401A寫控制字操作時序圖3-6所示。
圖3-6 向nRF2401A寫命令字時序圖
PWR-UP為高,, CE為低時,置位CS,芯片處于命令字寫入狀態(tài),通過通道1向芯片的控制字緩沖區(qū)寫入命令字,按照由高位到低位的順序,命令字全部寫入后,將CS置底,nRF2401A芯片將會根據(jù)命令字配置相應(yīng)的內(nèi)部模塊。在第一次配置操作結(jié)束后,只有最后兩個字節(jié)的命令字可以被更改,前16個字節(jié)的修改無效,如果需要修改前16個字節(jié)的命令字(如果通道接收地址,接收數(shù)據(jù)長度等),則需要掉電(PWR-UP置低)后重新上電(PWR-UP置高),才能對芯片進(jìn)行徹底初始化操作。
2)數(shù)據(jù)發(fā)送程序nRF2401A采用ShockBurstTM(突發(fā)模式)方式發(fā)送數(shù)據(jù)。單片機(jī)向nRF2401A發(fā)送數(shù)據(jù)流程圖3-4所示。
圖3-7 單片機(jī)向nRF2401A發(fā)送數(shù)據(jù)流程
單片機(jī)向nRF2401A發(fā)送數(shù)據(jù)的時序如圖3-8所示。
圖3-8 單片機(jī)向nRF2401A發(fā)送數(shù)據(jù)時序圖
圖3-9 單片機(jī)向nRF2401A發(fā)送數(shù)據(jù)格式
An~A0為接收機(jī)地址,不超過40位,通過更換地址,可以向多個nRF2401A模塊發(fā)送數(shù)據(jù);Dk~D0為待發(fā)送的數(shù)據(jù)。以上數(shù)據(jù)由單片機(jī)發(fā)送到nRF2401A之后,nRF2401A將會進(jìn)行打包并發(fā)射,打包后的數(shù)據(jù)格式如圖3-10所示。
圖3-10 nRF2401A對外發(fā)送數(shù)據(jù)的打包格式
其中,前緩沖是硬件自動添加,地址由用戶設(shè)定。為32-40位;循環(huán)冗余校驗(yàn)由內(nèi)置CRC糾檢錯硬件電路自動添加。可設(shè)為O、8或6位。所有的數(shù)據(jù)總共長度為256位。
3)據(jù)接收程序當(dāng)接收端成功接收到數(shù)據(jù)后,將會置位對應(yīng)的管腳數(shù)據(jù)請求DR1/DR2,單片機(jī)通過按鍵查詢該管腳狀態(tài),或者通過中斷方式接受數(shù)據(jù)。數(shù)據(jù)接收流程如圖3-11所示。
圖3-11單片機(jī)讀取數(shù)據(jù)流程
單片機(jī)從nRF20401A讀取數(shù)據(jù)的時序如圖3-12所示。
圖3-12 單片機(jī)從nRF2401A讀取數(shù)據(jù)時序圖
3.3.2 LCD1602顯示模塊的程序設(shè)計(jì)
四種基本操作
LCD有四種基本操作,具體如表3-4所示。
表3-4 LCD與單片機(jī)之間有四種基本操作
| | |
| | |
| | |
| | 寫數(shù)據(jù)操作(要顯示內(nèi)容) |
| | 讀數(shù)據(jù)操作(可以把顯示存儲區(qū)中的數(shù)據(jù)反讀出來) |
(1)讀狀態(tài)操作
執(zhí)行讀狀態(tài)字操作如表3-4所示,須滿足RS=0、R/W=1。根據(jù)管腳功能,當(dāng)為有效電平時,狀態(tài)命令字可從LCD模塊傳輸?shù)綌?shù)據(jù)總線。同時可以保持一段時間,從而實(shí)現(xiàn)讀狀態(tài)字的功能。圖2-8所示為讀入狀態(tài)字流程圖。
圖3-13 LCD讀入狀態(tài)字流程
(2)寫命令操作
由表3-4可知當(dāng)RS=0,R/W=0時,才可以通過單片機(jī)或用戶指令把數(shù)據(jù)即命令,寫到LCD模塊,此時就對LCD進(jìn)行調(diào)制。可采用查詢方式:先讀入狀態(tài)字,再判斷忙標(biāo)志,最后寫命令字。
1)命令字
表3-5所示為命令字,其主要介紹了指令名稱、控制信號及控制代碼。其指令名稱是指要實(shí)現(xiàn)的功能,控制代號是采用的十六進(jìn)制的數(shù)值表示的。
a.清零操作是指輸入某命令字后即能將整個屏幕顯示的內(nèi)容全部清除;
b.歸home位:將光標(biāo)送到初始位;其中的*號為任意,高低電平均可;
c.輸入方式:設(shè)光標(biāo)移動方向并指定整體顯示,是否移動。I/D=0:減量方式,S=1:移位,S=0:不移位;
d.顯示狀態(tài):D指設(shè)置整體顯示開關(guān);C指設(shè)置光標(biāo)顯示開關(guān);B指設(shè)置光標(biāo)的字符閃耀;
e.光標(biāo)畫面滾動:R/L指右移或左移;S/C指移動總體或光標(biāo);
f.功能設(shè)置:DL接口數(shù)位,L指顯示行數(shù),F(xiàn)顯示字型;
g.CGRAM地址設(shè)制:相當(dāng)于一個數(shù)據(jù)庫,可以在其中選擇所需要的符號;
h.DDRAM地址設(shè)制:顯示定位;
i.讀BF和AC:B為最高位忙的標(biāo)志,F(xiàn)為標(biāo)志位;
j.寫數(shù)據(jù):將數(shù)據(jù)按要求寫入到對應(yīng)的單元;
k.讀數(shù)據(jù):讀相應(yīng)單元內(nèi)的數(shù)據(jù)。
表3-5 命令字
2)寫命令字流程(如圖3-14所示)
圖3-14 LCD1602寫命令字流程圖
3)定義光標(biāo)位置
把顯示數(shù)據(jù)要某個位置,就是把顯示數(shù)據(jù)寫在相應(yīng)的DDRAM地址中,DDRAM地址占7位。Set DDRAM address命令如表3-6所示。光標(biāo)定位,寫入一個顯示字符后,DDRAM地址會自動加1或減1,加或減由輸入方式設(shè)置。
表3-6 SetDDRAMaddress命令
第1行DDRAM地址與第2行DDRAM地址并不連續(xù)。如表3-7所示。
表3-7 DDRAM地址
4)LCD初始化
從通電開始通過延時,先經(jīng)過判忙后再進(jìn)行功能設(shè)置,過一段時間后可以設(shè)制顯示狀態(tài)(如設(shè)置行、位或陣列)再經(jīng)過延時后清屏后再可以設(shè)置輸入方式,具體如圖3-15所示。
圖3-15 LCD初始化流程
LCD顯示程序的設(shè)計(jì)一般先要確定LCD的初始化、光標(biāo)定位、確定顯示字符后,LCD就可以按輸入的字符串顯示。
3.3.3 DS1302時鐘芯片的設(shè)計(jì)
1)DS1302的控制字
DS1302的控制字節(jié)如表3-8所示:
表3-8 命令字節(jié)格式
控制字節(jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入到DS1302中。位6如果為0,則表示存取日歷時鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進(jìn)行寫操作,為1表示進(jìn)行讀操作,控制字節(jié)總是從最低位開始輸出。
2)DS1302的數(shù)據(jù)輸入輸出
在控制指令字輸入后的下一個SCLK時鐘的上升沿時數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時從低位0位至高位7,數(shù)據(jù)讀寫時序如圖3-16所示:
圖3-16 數(shù)據(jù)讀寫時序
3) DS1302的寄存器
DS1302共有12個寄存器,其中有7個寄存器與日歷、時鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式。其日歷、時間寄存器及其控制字見表2。
此外,DS1302還有年份寄存器、控制寄存器、充電寄存器、時鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。時鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器的內(nèi)容。 DS1302與RAM相關(guān)的寄存器分為兩類,一類是單個RAM單元,共31個,每個單元組態(tài)為一個8位的字節(jié),其命令控制字為C0H--FDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;再一類為突發(fā)方式下的RAM寄存器,此方式下可一次性讀寫所有的RAM的31個字節(jié),命令控制字為FEH(寫)、FFH(讀)。
表3-9 DS1302的日歷、時鐘寄存器及其控制字
1
因?yàn)槭褂昧藭r鐘芯片DS1302,時間程序只需從DS1302各寄存器中讀出時、分、秒等數(shù)據(jù),再處理即可。在首次對DS1302進(jìn)行操作之前,必須對它進(jìn)行初始化,然后從DS1302中讀出數(shù)據(jù),由于在DS1302的硬件設(shè)計(jì)中配置有備用電源所以除了第一次使用后面即使斷電也不對其進(jìn)行初始化。將讀出的數(shù)據(jù)經(jīng)過處理后,變成分離的個位十位的BCD碼,送給顯示緩沖單元。時間程序流程圖見圖3-17所示。
圖3-17 時間程序流程圖
3.4軟件設(shè)計(jì)開發(fā)
3.4.1 軟件開發(fā)環(huán)境KeiluVision4簡介

KeiluVision4是美國KeilSoftware公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng),使用接近于傳統(tǒng)c語言的語法來開發(fā),與匯編相比,C語言易學(xué)易用,而且大大的提高了工作效率和項(xiàng)目開發(fā)周期,他還能嵌入?yún)R編,您可以在關(guān)鍵的位置嵌入,使程序達(dá)到接近于匯編的工作效率。KEILC51標(biāo)準(zhǔn)C編譯器為8051微控制器的軟件開發(fā)提供了C語言環(huán)境,同時保留了匯編代碼高效,快速的特點(diǎn)。C51編譯器的功能不斷增強(qiáng),使你可以更加貼近CPU本身,及其它的衍生產(chǎn)品。C51已被完全集成到uVision4的集成開發(fā)環(huán)境中,這個集成開發(fā)環(huán)境包含:編譯器,匯編器,實(shí)時操作系統(tǒng),項(xiàng)目管理器,調(diào)試器。uVision4 IDE可為它們提供單一而靈活的開發(fā)環(huán)境。
3.4.2 KEIL的使用
首先在需要使用keil建立一個新的工程,在菜單欄里的PROJECT→NEW uVision Project,為其命名點(diǎn)擊OK即完成創(chuàng)建工程。在彈出窗口中選擇使用的芯片類型,該系統(tǒng)使用的是52系列,由于KeiluVision4中沒有STC單片機(jī),所以使用AT89C52代替。建立完成后,左邊的工作欄會如圖3-18所示。


圖3-18 keil工作空間 圖3-19 添加C文件
接著新建一個文本文件,將其保存在該工程目錄下,后綴名為.C。在其中輸入編寫的C程序源代碼。在左邊的工作空間中的群組圖標(biāo)上單擊鼠標(biāo)右鍵,選擇“Add files to group …”找到先前編寫的C程序如圖3-19所示,將其添加入工程。之后對工程編譯,鏈接,生成HEX文件。
3.4.3單片機(jī)程序的燒寫
使用STC通用下載器STC_ISP如圖3-20,首先將主板或者開發(fā)板的RS232接口鏈接PC,關(guān)閉主板電源,在STC下載器中,選擇單片機(jī)型號為STC89C52,單擊打開程序文件按鈕,選擇編譯連接生成的HEX文件。下一步選擇COM口,選擇主板鏈接的COM端口,設(shè)置好波特率,單擊下載按鈕,等到提示框顯示“請給MCU上電”時打開主板電源,為單片機(jī)供電,如果通訊成功,則會顯示正在下載,下載成功等字樣。
圖3-20 STC_ISP下載器界面
第四章 運(yùn)行調(diào)試
先將主控板接好各個模塊,測試在不通訊的情況下,是否可以正常運(yùn)行達(dá)到自動開燈關(guān)燈,強(qiáng)制開強(qiáng)制關(guān)的實(shí)現(xiàn),離開延時等功能。經(jīng)調(diào)試,最終能正常工作,實(shí)現(xiàn)在自動狀態(tài)下,檢測光強(qiáng),判斷開燈條件,檢測紅外,自動開燈以及人走延時的功能。如圖4-1所示。
圖4-1 燈光調(diào)試
下一步則是調(diào)試射頻通訊,在調(diào)試好主控板的條件下,將射頻通訊的程序加載進(jìn)主程序,嘗試用遙控板上的按鈕遙控控制主控板的各個房間的狀態(tài)。經(jīng)修改上電,最終成功通訊。然后調(diào)試LCD1602液晶屏,先將LCD1602的子程序加載,嘗試寫一些固定的字符,成功顯示之后,即可調(diào)試DS1302,將DS1302的時間寫入顯示緩存,讓LCD將時間顯示出來。如圖4-2所示。
圖4-2 LCD與DS1302調(diào)試
當(dāng)各個部分都調(diào)試成功后,將其組合,把遙控板的射頻通訊返回的房間狀態(tài)顯示在顯示屏上,并且可以實(shí)時監(jiān)測。
結(jié)束語
本智能燈光照明系統(tǒng)的設(shè)計(jì)分為硬件電路設(shè)計(jì)和程序設(shè)計(jì)兩個部分,硬件電路設(shè)計(jì)屬于前期的主要工作,通過方案論證與可行性分析,最終確定由89C52單片機(jī)完成主電路的控制與設(shè)計(jì),并展開外圍電路與控制硬件電路設(shè)計(jì),硬件電路的設(shè)計(jì)主要是電路原理圖的繪制以及參數(shù)的確定。
軟件的設(shè)計(jì)采用模塊化的程序設(shè)計(jì)方法,在主控板中分為主程序部分、按鍵采集模塊、NRF2401A射頻通訊模塊、按鍵掃描模塊等;在遙控器中分為主程序模塊,DS1302時鐘模塊,LCD1602顯示模塊,NRF2401A射頻通訊模塊。程序的設(shè)計(jì)既參考了一些資料里的內(nèi)容,也有相當(dāng)多的自我設(shè)計(jì),比如說DS1302時鐘讀寫程序,就是參考了網(wǎng)友提供的實(shí)時讀取的實(shí)現(xiàn)的方法,但主程序中主要構(gòu)架,自動手動狀態(tài)切換,反饋房間狀態(tài)等等都是自己的、設(shè)計(jì),因?yàn)檫@些東西涉及到具體硬件電路,是找不到相關(guān)資料的,在數(shù)據(jù)傳輸中有簡單的單字節(jié)算法,也有雙字節(jié)的,有的則采用巧妙的算法有效避免出現(xiàn)雙字節(jié),從而使程序設(shè)計(jì)變得簡單。
對于本設(shè)計(jì),如果進(jìn)行進(jìn)一步的的研究,我認(rèn)為應(yīng)該在以下兩個個方面重點(diǎn)考慮:
(1)在硬件方面,可以嘗試制作雙面板這樣可以大大節(jié)省空間,縮小電路板的體積。
(2)在系統(tǒng)設(shè)計(jì)中嘗試制作與PC的實(shí)時通訊,連接入internet,從而可以進(jìn)行超遠(yuǎn)程控制。
致謝
經(jīng)過幾個月的努力,在指導(dǎo)老師的幫助下,終于完成了智能燈光照明系統(tǒng)的設(shè)計(jì)和調(diào)試。從確定設(shè)計(jì)題目的那天開始,指導(dǎo)老師就開始不斷地給我提供幫助,從最初的方案確定,到元器件的選擇,電路的修改和調(diào)試,程序的編寫和修改,以及論文的制作等等,很多都是涉及到細(xì)節(jié)的問題;正是由于指導(dǎo)老師無私幫助,我才得以完成設(shè)計(jì),指導(dǎo)老師自己也是很忙的,他帶有很多實(shí)驗(yàn)課,每次與指導(dǎo)老師見面幾乎都是在實(shí)驗(yàn)室,可想而知指導(dǎo)老師對我的關(guān)心,在做畢業(yè)設(shè)計(jì)的同時也是一個學(xué)習(xí)和成長的過程,雖然設(shè)計(jì)中很多東西都是指導(dǎo)老師以前做過的,但是指導(dǎo)老師幾乎每次都對我說:先自己慢慢做,有什么問題再來問我,正是由于指導(dǎo)老師嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度,才使我從最初接觸這個課題時的迷茫變?yōu)楝F(xiàn)在豁然開朗,期間指導(dǎo)老師不斷提供的幫助和鼓勵是很重要的,特別要提及的是關(guān)于充電器的應(yīng)用問題,要是沒有指導(dǎo)老師提供的指導(dǎo)和建議是根本不可能完成的。在此,對指導(dǎo)老師的幫助表示感謝!
完整的Word格式文檔51黑下載地址:
畢業(yè)論文-基于STC89C52單片機(jī)的智能燈光設(shè)計(jì).doc
(3.91 MB, 下載次數(shù): 87)
2018-5-1 15:10 上傳
點(diǎn)擊文件名下載附件