久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 46484|回復: 0
打印 上一主題 下一主題
收起左側

基于STC89C52單片機的智能燈光設計論文

[復制鏈接]
跳轉到指定樓層
樓主
ID:319867 發表于 2018-5-1 15:10 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
目 錄
第一章 前言
1.1 本課題的研究背景和意義
1.2 本課題研究的主要內容
1.3 本論文的主要內容及結構安排
第二章 系統設計
系統總體設計方案
2.1 系統硬件設計
2.2.1 主控板電路設計
2.2.2 STC89C52簡介
2.2.3 檢測模塊的設計與選用
2.2.4繼電器輸出模塊
2.2.5 nRF2401A無線射頻模塊
2.2.6 基于MAX232與PC通訊
2.3.1 遙控器的設計
2.3.2 顯示屏LCD1602
2.3.3 時鐘芯片DS1302
2.3.4 LM7805與AMS1084
2.3.5 按鍵指示電路及實現
2.4              硬件設計開發
2.4.1 開發環境protel99SE
2.4.2 電路板的制作
第三章 程序的設計實現
3.1 系統整體程序框架
3.2.1 主控板程序設計
3.2.2 燈光延時等待的設計與思考
3.3.1 遙控器程序設計
3.3.2 NRF2401A無線射頻通訊的程序設計
3.3.2 LCD1602顯示模塊的程序設計
3.3.3 DS1302時鐘芯片的設計
3.4軟件設計開發
3.4.1 軟件開發環境KeiluVision4簡介
3.4.2 KEIL的使用
3.4.3單片機程序的燒寫
第四章 調試結果
結束語

1 緒論

1.1 本課題的研究背景和意義
隨著科技的發展,和人們的生活水平不斷提高,居住環境的改善備受關注,于是家居智能化的快速興起,滿足人們對舒適,安全,便捷以及節能環保的時尚生活的追求,F階段人類社會的進步越來越依賴于對能源的開發與利用,然而人們對能源無盡的需求量和有限的能源數量形成了不可抗拒的矛盾,能源匱乏不僅是我國所面臨的危機,更是世界所面臨的嚴峻考驗。而中國是一個人口大國,家庭是其中最基本的一個組成單元,家庭照明占我國電能消耗的一大部分。管理好家庭燈光照明系統,不僅能減少電能的巨大浪費,優化我們的生活方式和居住環境,還能為我們提供優質、舒適、安全的生活空間。
燈光的智能化是智能家居的重要組成部分,本文介紹了一種基于單片機和無線射頻技術的的智能燈光控制系統(增多)
1.2 本課題研究的主要內容
本設計所制作的智能燈光主要用來控制照明燈,通過檢測室內有無人員和室內光線的強弱來控制照明燈的開啟和關閉,以達到根據不同的環境,人們的不同需要實現室內不同位置的照明需求,并且可以通過遙控對室內的燈光進行控制,實現自動/手動切換,更加人性化的設計,讓該系統有了更高的實用價值。
該設計主要由主控板和遙控器組成,其中:主控板包括單片機控制模塊、檢測輸入模塊、射頻通訊模塊、PC上位機監控模塊、驅動電路模塊、繼電器輸出模塊。遙控器包括單片機控制模塊、無線射頻模塊、鍵盤模塊、顯示器模塊。通過測試,系統穩定,能夠根據外界環境的變化自動進行開關的控制。由于單片機的I/O口資源豐富,可將后級擴展成多路自動開關,同時控制多路照明燈,使其應用于賓館、學校、家庭等環境。所以該設計具有較廣泛的應用前景。(合并)
1.3 論文的主要內容及結構安排
鑒于無線通訊與燈光智能系統的重要意義及單片機在該系統中的獨特優勢,本論文選擇以單片機為核心,以紅外感應與光強感應為被測量,開關按鈕可切換狀態,設計了智能燈光系統。不但實現了下位機對燈光的自動控制、實時監測與遙控器的通訊,還在此基礎上實現了對時間的顯示,操作系統的簡便化,讓系統更容易被用戶使用。
論文結構安排如下:
第一章:智能燈光系統的普遍性性與研究現狀,以及論文的主要內容與結構。
第二章:總體設計方案與硬件設計,其中包括主控板和遙控器的設計。
第三章:主控板和遙控器的程序設計。
第四章:調試結果。


2 方案設計
圖2-1 系統總體設計方案
系統總體設計方案
如圖2-1所示,單片機選用STC89C52,通過光強檢測模塊檢測出外界光強,是否合適開燈,由紅外檢測模塊檢測是否有人進入房間,通過主控板的單片機進行控制。在主控板上有狀態轉換按鍵,通過按鍵控制各個房間的狀態,是強制開/強制關/自動狀態。主控板通過無線射頻模塊與遙控器通訊,給遙控器傳送各個房間的狀態信息,并且接收遙控器發來的控制信號。在遙控器上,把接收來的狀態信號,將其通過LCD1602顯示屏顯示出來。用戶在不去該房間的情況下監控房間燈光的狀態,并且通過遙控器上的鍵盤進行控制。時鐘模塊將當前時間發送給單片機,單片機再通過程序控制,將時間顯示在顯示屏上。
2.1 系統硬件設計
單片機選用的是STC89C52,光強檢測模塊采用光敏電阻實現,紅外檢測模塊采用HC-SR501 人體紅外感應模塊,RS232通訊模塊采用MAX232對信號轉換,無線射頻模塊采用nRF2401A模塊,顯示屏使用LCD1602,時鐘芯片使用DS1302,鍵盤使用可復位按鍵開關。

2.2.1 主控板電路設計
電路設計我用的是protel99繪制。由于光強檢測和紅外檢測需要較大的空間,我將單片機P1口都接出來了外部接口,將其制作成方便安裝的分離模塊式。P0口主要功能是與nRF2401A無線射頻模塊相連。P2口我將其分成三部分P2.0,P2.1,P2.2三個管腳我用它們作為繼電器輸出接口;P2.3,P2.4,P0.7作為各個房間的自動狀態指示燈;P2.5,P2.6,P2.7采集主控板上按鍵信號,用于轉換各個房間的控制狀態。TXD和RXD兩個管腳分別接MAX232芯片的R1_OUT和T1_IN位,作為單片機與PC通訊的接口。電路原理圖如圖2-2所示。

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

2)紅外檢測模塊
紅外檢測模塊采用封裝好的紅外熱釋傳感器HC-SR501(圖2-5),感應范圍138°*125°,感應距離7m,工作溫度-15~+70℃。通過跳線將其觸發模式調成可重復收發模式,接入工作電壓+5V,將其信號端接入單片機端口。                                                       圖2-5 紅外傳感器
2.2.4繼電器輸出模塊
該系統采用的繼電器為24V繼電器,需要使用ULN2003將單片機輸出的5V電壓信號放大到24V驅動繼電器工作。由于STC89C52單片機一般用并口進行編程,理論上可以直接用單片機的幾根I/O口接并口線,但如果電路板沒做好,可能會連帶把計算機并口燒壞,所以要加個74HC244芯片隔離一下。(如圖2-7所示)
ULN2003是高耐壓、大電流復合晶體管陣列,由七個硅NPN 復合晶體管組成(圖2-6)。ULN2003 工作電壓高,工作電流大,灌電流可達500mA,并且能夠在關態時承受50V 的電壓,輸出還可以在高負載電流并行運行,多用于單片機、智能儀表、PLC、數字量輸出卡等控制電路中。可直接驅動繼電器等負載。由于ULN2003是一個非門電路,繼電器線圈另一端接在+24V電源上,當+5V的控制信號傳送到ULN2003中,                                                        圖2-6 ULN2003                                         ULN2003會輸出一個低電平,讓線圈吸合。
74HC244是一個三態緩沖器,作為單片機輸出緩沖作用?梢詫纹瑱C輸出信號長時間保持。
圖2-7 繼電器輸出模塊電路圖

2.2.5 nRF2401A無線射頻模塊
作為主控板與遙控器通訊的重要組成樞紐,無線射頻模塊,該系統選用的是nRF2401A無線射頻模塊,如圖2-8所示。nRF2401A是挪威Nordic公司推出的2.4G單片無線射頻收發芯片,芯片內置頻率合成器、功率放大器、晶體振蕩器和調制器等功能模塊,輸出功率和通信頻道可通過程序進行配置。該芯片具有接收靈敏度高、外圍電路少、發射功率低、傳輸速率高、低功耗等優點。nRF2401 適用于多種無線通信的場合,如:無線鼠標、無心數據采集、小型無線網絡、無線抄表、門禁系統、小區傳呼、監控系統、非接觸RF智能卡、無線遙控、無線音頻/視頻數據傳輸等。
圖2-8 nRF2401A引腳示意圖
nFR2401A引腳功能如表2-1所示:
表2-1 NRF2401A引腳功能表
引腳
名稱
引腳功能
描述
1
VCC
電源
電源正極
2
VCC
電源
電源正極
3
GND
電源
電源地
4
PWR_UP
數字輸入
芯片激活端
5
CE
數字輸入
使nFR2401A工作于接收或發送狀態
6
DR2
數字輸入
頻道2接收數據準備好
7
GND
電源
電源地
8
CLK2
數字I/O
頻道2接收數據時鐘輸入/輸出
9
GND
電源
電源地
10
DOUT2
數字輸出
頻道2接收數據
11
CS
數字輸入
配置模式的片選端
12
DR1
數字輸入
頻道1接收數據準備好
13
GND
電源
電源地
14
CLK1
數字I/O
頻道2接收數據時鐘輸入/輸出
15
GND
電源
電源地
16
DATA
數字I/O
頻道1接收/發送數據端

nFR2401A的工作模式有配置模式、收發模式、待機模式、關機模式四種。模式由主控芯片通過軟件設置。芯片上電后,STC89C52通過接口將配置數據送入芯片,設置收發模式、收發頻率、接收地址、發射功率、CRC校驗和的長度、有效數據的長度等。傳輸中,只有地址,校驗和匹配的數據包才能被進一步處理,產生中斷信號。這時,S3C2440讀取數據。在同一時刻nRF2401A只能處于接收或發送模式中的一種,一般以接收模式為待機狀態。
工作模式
PWR_UP
CE
CS
收發模式
1
1
0
配置模式
1
0
1
空閑模式
1
0
0
關機模式
0
X
X

nRF2401A工作模式如表2-2所示:
                            表2-2 nRF2401A工作模式                                                       該系統是用的是通道一,所以單片機接口只需接入PWR_UP,CE,CS,CLK1四個控制位和數據位DATA1。同時將CLK2第二通道的脈沖輸入信號接地,以防干擾。
nRF2401A工作電壓為+3.3V而單片機使用的是+5V的直流電源,所以使用AMS1084-3.3V降壓芯片將+5V的直流電轉換成+3.3V的直流電為nRF2401A供電。其外圍電路如圖2-9所示。
                                                                                                                                                                                                                                                                                                                                                                                                

圖2-9 AMS1088-3.3V外圍電路                                                                                           圖2-10 MAX232




2.2.6 基于MAX232與PC通訊
MAX232是一種把電腦的串行口rs232信號電平(-10 ,+10v)轉換為單片機所用到的TTL信號點平(0 ,+5)的芯片, 使用+5v單電源供電,MAX232共16跟引腳,第一部分是電荷泵電路。由1、2、3、4、5、6腳和4只電容構成。功能是產生+12v和-12v兩個電源,提供給RS-232串口電平的需要。第二部分是數據轉換通道。由7、8、9、10、11、12、13、14腳構成兩個數據通道。其中13腳(R1IN)、
12腳(R1OUT)、11腳(T1IN)、14腳(T1OUT)為第一數據通道。8腳(R2IN)、9腳(R2OUT)、10腳(T2IN)、7腳(T2OUT)為第二數據通道。其接線電路如圖2-10所示。                                                                                                                             圖2-11 MAX232周邊電路
在該系統中,MAX232分別連接著RS232串口和單片機的TXD,RXD位,使用的是通道1,即使用的輸入輸出的管腳是T1_OUT,T1_IN,R1_OUT,R1_IN。周邊電路如圖2-11所示。                                                                                                                                                                     
2.3.1 遙控器的設計
在遙控器的設計中,P0口外接一個排阻,排阻公共端接的是AMS1084-3.3V輸出的+3.3V電源,主要控制nRF2401A無線射頻模塊,負責與主控板進行無線通訊;P1口連接的是LCD1602顯示屏的8位數據位DB0-DB7,P3.4接LCD的E端(使能端),P3.5接LCD1602的R/W管腳,負責控制LCD1602的讀寫控制,P3.6接LCD1602的RS管腳,負責對寄存器的選擇。同時,LCD1602的VSS位接地,VDD接LM7805提供的+5V電源。并且VEE外接一個電位器,控制背光亮度。單片機的P2.1-P2.4分別接了四個低電平觸發的按鍵,作為UP上翻,DOWN下翻,SWITCH切換,BACKLIGHT背光。P2.5-P2.7三位分別接入時鐘芯片DS1302的SLCK,I/O,CE,作為讀寫時間的控制位和數據通道。同時單片機的TXD,RXD與MAX232相連,通過RS232串口與計算機通訊?傠娐吩韴D如圖2-12所示。
圖2-12 遙控器總電路原理圖
2.3.2 顯示屏LCD1602
1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數字、符號等的點陣型液晶模塊。它由若干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因為如此所以它不能很好地顯示圖形。
LCD1602功能管腳如表2-3所示:
表2-3 LCD1602功能管腳
第1腳
VSS接電源地。
第2腳
VCC接+5V
第3腳
VEE背光對比度調整端
第4腳
RS寄存器選擇端
第5腳
RW讀寫信號線
第6腳
E 使能端
第7~14腳
D0~D7八位雙向數據線
第15-16腳
15腳背光正極,16腳背光負極
在設計中,我們將VCC和VSS分別接電源+5V和地,為LCD1602供電,在VEE端接了一個20K的變阻器到+5V電源,通過調整變阻器的阻值來調整LCD1602的對比度,當電壓越高時對比度越弱,反之越強。RS寄存器選擇端,RW讀寫信號線,E使能端這三位分別接入單片機的P3.6,P3.5,P3.4。通過程序控制這三位控制位對LCD1602的讀寫操作。15腳和16腳主要是為LCD1602的背光供電,將其分別接入電源+5V和電源地。
2.3.3 時鐘芯片DS1302
DS1302 是美國DALLAS公司推出地一種高性能、低功耗、帶RAM的實時時鐘電路,它能對年、月、日、周、時、分、秒進行計時,具有閏年補償功能。工作電壓為2.5V~5.5V,外接32.768MHz的晶振。采用三線接口與單片機進行同步通信,并可采用突發方式,一次傳送多個字節的時鐘信號或RAM數據。DS1302內部有一個31×8的RAM寄存器,用于臨時性存放數據。DS1302是DS1202的升級產品,與DS1202兼容,但增加了主電源/后備電源雙電源引腳,同時提供了對后備電源進行涓細電流充電的能力。
DS1302功能引腳如表2-4所示:
表2-4 DS1302管腳功能
管腳號
管腳名稱
描述
1
VCC2
主電源,使用+5V供電
2
XLAT1
32.768MHz晶振接口
3
XLAT2
同上
4
GND
電源地
5
CE
復位/片選線,通過把RST輸入驅動置高電平來啟動所有的數據傳送。
6
I/O
串行數據輸入輸出端(雙向)。
7
SCLK
時鐘輸入端
8
VCC1
備用電源正極,可采用大電容或者電池供電。
在該系統中,VCC2用LM7805提供的+5V電壓供電,VCC1備用電源使用的是紐扣電池CR2016,提供的電壓是+3V。I/O管腳接單片機的P2.6腳,作為單片機對DS1302進行讀寫操作的數據通道,SCLK接入單片機P2.5口,作為單片機與DS1302的通訊時鐘輸入端,CE接入單片機P2.7口主要對DS1302發送片選信號。
2.3.4 LM7805與AMS1084
1)LM7805應用
圖2-13 LM7805典型應用電路
單片機電源電路的設計以三端集成穩壓器LM7805為核心,它屬于串聯穩壓電路,其工作原理與分立元件的串聯穩壓電源相同。圖2-13是三端穩壓集成電路LM7805的典型應用電路,三端集成穩壓器設置的啟動電路,在穩壓電源啟動后處于正常狀態時,啟動電路與穩壓電源內部其他電路脫離聯系,這樣輸入電壓變化不直接影響基準電路和恒流源電路,保持輸出電壓的穩定。電路中Ci的作用是消除輸入連線較長時其電感效應引起的自激振蕩,減小紋波電壓,取值范圍在0.1μF~1μF之間,本文Ci選用0.33μF;在輸出端接電容Co是用于消除電路高頻噪聲,改善負載的瞬態響應,一般取0.1μF左右,本文Co即選用0.1μF。一般電容的耐壓應高于電源的輸入電壓和輸出電壓。另外,為避免輸入端斷開時Co從穩壓器輸出端向穩壓器放電,造成穩壓器的損壞,在穩壓器的輸入端和輸出端之間跨接一個二極管,對LM7805起保護作用。
LM7805輸入電壓為8V到36V,最大工作電流1.5A,具有輸入電壓范圍寬,工作電流大,輸出精度高且工作及其穩定,外圍電路簡單等特點,太陽能電池電壓即使有較大的波動,也能穩定的輸出5V電壓,從而是單片機等控制電路正常工作,且成本低。
2)AMS1084
由于單片機、LCD、DS1302使用電壓為+5V直流電,而NRF2401A射頻使用電壓為+3.3V~+3.6V,所以需要將5V的直流電變壓成3.3V為NRF2401A射頻芯片供電,其接線圖如圖2-14所示
圖2-14 AMS1084-3.3V外部接線圖


2.3.5 按鍵指示電路及實現
在單片機應用系統中,按鍵主要有兩種形式:1、獨立按鍵;2、矩陣編碼鍵盤。獨立按鍵的每個按鍵都單獨接到單片機的一個I/O口上,獨立按鍵則通過判斷按鍵端口的電位即可識別按鍵操作;而矩陣鍵盤通過行列交叉按鍵編碼進行識別。
通常所用的按鍵為輕觸機械開關,正常情況下按鍵的接點是斷開的,當我們按壓按鈕時,由于機械觸點的彈性作用,一個按鍵開關在閉合時不會馬上穩定地接通,在斷開時也不會一下子斷開。因而機械觸點在閉合及斷開的瞬間均伴隨有一連串的抖動,抖動時間的長短由按鍵的機械特性及操作人員按鍵動作決定,一般為5ms~20ms;按鍵穩定閉合時間的長短是由操作人員的按鍵按壓時間長短決定的,一般為零點幾秒至數秒不等。
在本設計中由于按鍵不是太多,故采用獨立按鍵法,這樣可以減小編程的難度,圖2-15為本設計的按鍵接線圖。
圖2-15 按鍵接線圖



    •              硬件電路板制作
2.4.1 開發環境protel99SE
開發硬件設計主要使用的是protel 99軟件如圖15所示,protel是Altium公司在80年代末推出的EDA軟件,在電子行業的CAD軟件中,它當之無愧地排在眾多EDA軟件的前面,是電子設計者的首選軟件,它較早就在國內開始使用,在國內的普及率也最高,有些高校的電子專業還專門開設了課程來學習它,幾乎所有的電子公司都要用到它,許多大公司在招聘電子設計人才時在其條件欄上常會寫著要求會使用protel。
Protel99 SE共分5個模塊,分別是原理圖設計、PCB設計(包含信號完整性分析)、自動布線器、原理圖混合信號仿真、PLD設計。
圖2-16 protel工作空間界面
首先進入protel新建一個工程,在菜單欄中的file→new,然后選擇路徑和設定工程名稱,單機OK,這樣就成功的新建了一個工程。在右邊會出現工作空間,單機右鍵→new→選擇Schematic Document,這樣就新建了一個電氣原理圖(如圖2-16),修改原理圖名稱,然后進入原理圖,繪制需要的電氣圖。
在原理圖繪制完畢后,對每個元件選擇相應的封裝,接著在菜單欄里的design菜單中選擇Update to PCB,protel會自動在工作空間中生成與原理圖同名的PCB圖,并且在PCB中標記有飛線,這樣會方便布線,分布號元器件位置,設置好線寬,焊盤等設置,即可開始繪圖。如圖2-17所示。
圖2-17 PCB圖形繪制
2.4.2 電路板的制作
繪制完畢PCB圖后,將其打印在轉印紙上,將其覆蓋在擦洗打磨干凈的覆銅板上,平整的固定住,與其一起在快速制版機中加熱。注意,溫度過高可能會使覆銅板銅皮翹起,溫度太低會使碳粉吸附不牢固。轉印好銅板后,將轉印好的銅板放入氯化鐵溶液中浸泡腐蝕,將沒有覆蓋碳粉的部分腐蝕掉,待腐蝕完畢后,用細砂紙將電路上的碳粉打磨掉露出同色的銅皮即可。使用0.5mm的鉆頭在焊盤上打孔,并且對照著PCB圖焊接好對應的元器件,經過萬用表測試無斷線無短路即可上電使用。成果如圖2-18所示。
圖2-18 焊接完畢的電路板


第三章 程序的設計實現
3.1 系統整體程序框架
本設計整體工作主要由單片機程序控制實現,其工作過程為:電路啟動初始化,電路功能選擇,通訊握手,讀取信號,顯示信號,輸出選擇并確定輸出,單片機采集外部光強和紅外信號等,程序整體框架如圖3-1所示。

圖3-1 程序整體框架圖

3.2主控板程序設計
本設計流程框圖如圖3-2所示。首先上電,對各個模塊進行初始化,然后檢測各個房間的燈光狀態(自動狀態,強制開,強制關),將狀態寫給NRF2401A射頻芯片的緩存區,并將其發射給遙控器。再進行對各個狀態的處理,強制開狀態則將該房間對應的管腳置1;反之,強制關則將對應房間的管腳清零。繼電器輸出模塊會通過管腳電平變化改變繼電器線圈電流,控制線圈吸合或者斷開,從而控制房間燈光的開關。如果是自動狀態,則通過光強傳感器、紅外傳感器判斷房間是否應該開燈。當外部亮度足夠亮,則不需要開燈;若外部亮度較暗,則通過紅外傳感器檢測是否有37℃的紅外頻率出現,當有人被紅外傳感器檢測到,紅外傳感器信號位跳變為高電平,單片機相應管腳接收到該信號會進行處理,控制對應房間的管腳變為高電平。
圖3-2 主控板程序流程圖
3.2.1 燈光延時等待的設計與思考
考慮到在家居時,很多人會暫時離開一下某件屋子,然后會回來,這樣使燈具頻繁的開關可能會導致燈具的損壞,所以設計了一套燈光延時等待程序,為了節省MCU的占用率,該段程序使用的是內部定時器進行計時,這樣可以再執行其他程序的同時進行延時。
通過TMOD將單片機內部定時器0與定時器1的工作方式選方式一。TMOD狀態字如表3-1所示
表3-1 TMOD狀態字
D7
D6
D5
D4
D3
D2
D1
D0
GATE
C/~T
M1
M0
GATE
C/~T
M1
M0
定時器/計數器1
定時器/計數器0


計算出計時器每次計時時間,并對TH1,TL1,TH0,TL0進行賦值。計算公式如3-2式。
T=(65536-X)TCY                                                                                                                                                                       (3-2)
在式3-2中T為定時器定時時間,X為寄存器存儲值,將其高八位寫入TH中低八位寫入TL中;TCY為一個指令周期,TCY與晶振頻率f有關,TCY =12/f。
由于每次計時器計時長度有限約10ms(方便計算),不能達到系統要求,在使用時,設定了一個時間次數變量TIME,讓其循環100次即可延時1S,如需時間改變,改變TIME值即可。定時器的調用步驟如圖3-3所示。
圖3-3 定時器調用框圖
鑒于本設計有多個房間(多于兩個)而單片機中僅有兩個定時器,所以在每次調用定時器時都會有一個對定時器選擇的程序。當需要使用定時器時,先進行判定,定時器0是否被其他房間所占用,若沒有被占用則使用定時器0,若被占用了,則使用定時器1 。若定時器0與定時器1同時被占用,則調用手動編寫的延時定時器程序,由于該程序段比較占用單片機,會影響到系統整體的運行速度,所及將其優先級放在最后。

3.3.1 遙控器程序設計

遙控器主要包含的模塊有LCD1602顯示器,DS1302時鐘芯片,NRF2401A射頻模塊,還有按鍵部分。主要設計思路如下,首先上電對各個模塊初始化,讀取DS1302中的時間數據,同時讓LCD液晶顯示屏顯示時間與房間,接著通過NRF2401A向主控板發送信號,要求返回各個房間的狀態,并將其寫入LCE液晶顯示屏上。然后掃描鍵盤,判斷是否有房間狀態需要改變,若有鍵盤按下,則將按鍵信號通過NRF2401A射頻發送到主控板中,主控板接收到信號后改變房間狀體,同時返回當前房間狀態,讓遙控板上的LCD作出相應的顯示。其流程框圖如圖3-4所示。
圖3-4 遙控器工作流程圖

3.3.2 NRF2401A無線射頻通訊的程序設計
1初始化程序
初始化函數:              void  n1A_Init_Dev()
程序包括端口初始化和向芯片寫控制字操作,初始化流程如圖3-2所示。
圖3-5 NRF2401A初始化框圖
NRF2401A的工作模式如表3-2所示:
表3-2 NRF2401A工作模式
工作模式
PWR_UP
CE
CS
收發模式
1
1
0
配置模式
1
0
1
空閑模式
1
0
0
關機模式
0
X
X

對nRF2401A的初始化包括nRF2401A上電和向nRF2401A寫控制字。nRF2401A上電是將芯片的PWR-UP管腳設置為高電平,上電以后才可以對nRF2401A進行控制和讀寫操作。nRF2401A共有18Byte(144bit)的命令字。其配置字格式如表3-3所示。
表3-3 配置字格式
位(bit)
位數
名字
功能
111~104
8
DATA1_W
通道1有效數據長度
63~24
0
ADDR1
通道1地址
23~18
6
ADDR_W
通道1地址長度
17
1
CRC_L
8或6位CRC,0是8位,1是16位
16
1
CRC_EN
CRC使能位
14
1
CM
1是ShockBurstTM模式
12~10
3
XO_F
晶振頻率選擇
9~8
2
RF_PWR
發射功率
7~1
7
RF_CH#
信道頻率
0
1
RXEN
0使能發射,1使能接收

向nRF2401A寫控制字操作時序圖3-6所示。

圖3-6 向nRF2401A寫命令字時序圖
PWR-UP為高,, CE為低時,置位CS,芯片處于命令字寫入狀態,通過通道1向芯片的控制字緩沖區寫入命令字,按照由高位到低位的順序,命令字全部寫入后,將CS置底,nRF2401A芯片將會根據命令字配置相應的內部模塊。在第一次配置操作結束后,只有最后兩個字節的命令字可以被更改,前16個字節的修改無效,如果需要修改前16個字節的命令字(如果通道接收地址,接收數據長度等),則需要掉電(PWR-UP置低)后重新上電(PWR-UP置高),才能對芯片進行徹底初始化操作。
2數據發送程序
nRF2401A采用ShockBurstTM(突發模式)方式發送數據。單片機向nRF2401A發送數據流程圖3-4所示。
圖3-7 單片機向nRF2401A發送數據流程



單片機向nRF2401A發送數據的時序如圖3-8所示。

圖3-8 單片機向nRF2401A發送數據時序圖
圖3-9 單片機向nRF2401A發送數據格式
An~A0為接收機地址,不超過40位,通過更換地址,可以向多個nRF2401A模塊發送數據;Dk~D0為待發送的數據。以上數據由單片機發送到nRF2401A之后,nRF2401A將會進行打包并發射,打包后的數據格式如圖3-10所示。
前緩沖
地址
有效數據
循環冗余校驗

圖3-10 nRF2401A對外發送數據的打包格式
其中,前緩沖是硬件自動添加,地址由用戶設定。為32-40位;循環冗余校驗由內置CRC糾檢錯硬件電路自動添加?稍O為O、8或6位。所有的數據總共長度為256位。
3據接收程序
當接收端成功接收到數據后,將會置位對應的管腳數據請求DR1/DR2,單片機通過按鍵查詢該管腳狀態,或者通過中斷方式接受數據。數據接收流程如圖3-11所示。
圖3-11單片機讀取數據流程

單片機從nRF20401A讀取數據的時序如圖3-12所示。

圖3-12 單片機從nRF2401A讀取數據時序圖

3.3.2 LCD1602顯示模塊的程序設計
              四種基本操作
LCD有四種基本操作,具體如表3-4所示。
表3-4 LCD與單片機之間有四種基本操作
RS
R/W
操作
0
0
寫命令操作(初始化,光標定位等)
0
1
讀狀態操作(讀忙標志位)
1
0
寫數據操作(要顯示內容)
1
1
讀數據操作(可以把顯示存儲區中的數據反讀出來)

(1)讀狀態操作
執行讀狀態字操作如表3-4所示,須滿足RS=0、R/W=1。根據管腳功能,當為有效電平時,狀態命令字可從LCD模塊傳輸到數據總線。同時可以保持一段時間,從而實現讀狀態字的功能。圖2-8所示為讀入狀態字流程圖。
圖3-13 LCD讀入狀態字流程
(2)寫命令操作
由表3-4可知當RS=0,R/W=0時,才可以通過單片機或用戶指令把數據即命令,寫到LCD模塊,此時就對LCD進行調制?刹捎貌樵兎绞剑合茸x入狀態字,再判斷忙標志,最后寫命令字。
1)命令字
表3-5所示為命令字,其主要介紹了指令名稱、控制信號及控制代碼。其指令名稱是指要實現的功能,控制代號是采用的十六進制的數值表示的。
a.清零操作是指輸入某命令字后即能將整個屏幕顯示的內容全部清除;
b.歸home位:將光標送到初始位;其中的*號為任意,高低電平均可;
c.輸入方式:設光標移動方向并指定整體顯示,是否移動。I/D=0:減量方式,S=1:移位,S=0:不移位;
d.顯示狀態:D指設置整體顯示開關;C指設置光標顯示開關;B指設置光標的字符閃耀;
e.光標畫面滾動:R/L指右移或左移;S/C指移動總體或光標;
f.功能設置:DL接口數位,L指顯示行數,F顯示字型;
g.CGRAM地址設制:相當于一個數據庫,可以在其中選擇所需要的符號;
h.DDRAM地址設制:顯示定位;
i.讀BF和AC:B為最高位忙的標志,F為標志位;
j.寫數據:將數據按要求寫入到對應的單元;
k.讀數據:讀相應單元內的數據。


表3-5 命令字
指令名稱
控制信號
控制代碼
RS
RW
D7
D6
D5
D4
D3
D2
D1
D0
清屏
0
0
0
0
0
0
0
0
0
1
歸HOME位
0
0
0
0
0
0
0
0
1
*
輸入方式設制
0
0
0
0
0
0
0
1
I/D
S
顯示狀態設制
0
0
0
0
0
0
1
D
C
B
無標畫面滾動
0
0
0
0
0
1
S/C
RL
*
*
功能設置
0
0
0
0
1
DL
N
F
*
*
CGRAM地址設制
0
0
0
1
A5
A4
A3
A2
A1
A0
DDRAM地址設制
0
0
1
A6
A5
A4
A3
A2
A1
A0
讀BF和AC
0
1
BF
AC6
AC5
AC4
AC3
AC2
AC1
AC0
寫數據
1
0
數 據
讀數據
1
1
數 據


2)寫命令字流程(如圖3-14所示)
圖3-14 LCD1602寫命令字流程圖
3)定義光標位置
把顯示數據要某個位置,就是把顯示數據寫在相應的DDRAM地址中,DDRAM地址占7位。Set DDRAM address命令如表3-6所示。光標定位,寫入一個顯示字符后,DDRAM地址會自動加1或減1,加或減由輸入方式設置。
表3-6 SetDDRAMaddress命令
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
0
1
AC6
AC5
AC4
AC3
AC2
AC1
AC0



              第1行DDRAM地址與第2行DDRAM地址并不連續。如表3-7所示。
表3-7 DDRAM地址
row
1
2
3
4
5
14
15
16
line1
80H
81H
82H
83H
84H
8dH
8eH
8fH
line2
0c0H
0c1H
0c2H
0c3H
0c4H
0cdH
0ceH
0cfH

4)LCD初始化
從通電開始通過延時,先經過判忙后再進行功能設置,過一段時間后可以設制顯示狀態(如設置行、位或陣列)再經過延時后清屏后再可以設置輸入方式,具體如圖3-15所示。
圖3-15 LCD初始化流程
LCD顯示程序的設計一般先要確定LCD的初始化、光標定位、確定顯示字符后,LCD就可以按輸入的字符串顯示。

3.3.3 DS1302時鐘芯片的設計
1)DS1302的控制字
DS1302的控制字節如表3-8所示:
表3-8 命令字節格式
7
6
5
4
3
2
1
0
1
RAM
A4
A3
A2
A1
A0
RD
CK
WR

控制字節的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數據寫入到DS1302中。位6如果為0,則表示存取日歷時鐘數據,為1表示存取RAM數據;位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進行寫操作,為1表示進行讀操作,控制字節總是從最低位開始輸出。
  2)DS1302的數據輸入輸出
在控制指令字輸入后的下一個SCLK時鐘的上升沿時數據被寫入DS1302,數據輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個SCLK脈沖的下降沿讀出DS1302的數據,讀出數據時從低位0位至高位7,數據讀寫時序如圖3-16所示:
圖3-16 數據讀寫時序
3) DS1302的寄存器
DS1302共有12個寄存器,其中有7個寄存器與日歷、時鐘相關,存放的數據位為BCD碼形式。其日歷、時間寄存器及其控制字見表2。
此外,DS1302還有年份寄存器、控制寄存器、充電寄存器、時鐘突發寄存器及與RAM相關的寄存器等。時鐘突發寄存器可一次性順序讀寫除充電寄存器外的所有寄存器的內容。 DS1302與RAM相關的寄存器分為兩類,一類是單個RAM單元,共31個,每個單元組態為一個8位的字節,其命令控制字為C0H--FDH,其中奇數為讀操作,偶數為寫操作;再一類為突發方式下的RAM寄存器,此方式下可一次性讀寫所有的RAM的31個字節,命令控制字為FEH(寫)、FFH(讀)。
表3-9   DS1302的日歷、時鐘寄存器及其控制字
寄存器名
命令字
取值范圍
各位內容
寫操作
讀操作
7
6
5
4
3
2
1
0
秒寄存器
80H
81H
00--59
CH
10SEC
SEC
分寄存器
82H
83H
00--59
0
10MIN
MIN
時寄存器
84H
85H
01-12或00-23
12/24
0
10
HR
HR
日寄存器
86H
87H
01-28,29,30,31
0
0
10DATE
DATE
月寄存器
88H
89H
01--12
0
0
0
10M
MONTH
周寄存器
8AH
8BH
01--07
0
0
0
0
0
DAY
年寄存器
8CH
8DH
00--99
10YEAR
YEAR

1


因為使用了時鐘芯片DS1302,時間程序只需從DS1302各寄存器中讀出時、分、秒等數據,再處理即可。在首次對DS1302進行操作之前,必須對它進行初始化,然后從DS1302中讀出數據,由于在DS1302的硬件設計中配置有備用電源所以除了第一次使用后面即使斷電也不對其進行初始化。將讀出的數據經過處理后,變成分離的個位十位的BCD碼,送給顯示緩沖單元。時間程序流程圖見圖3-17所示。
圖3-17 時間程序流程圖

3.4軟件設計開發
3.4.1 軟件開發環境KeiluVision4簡介
KeiluVision4是美國KeilSoftware公司出品的51系列兼容單片機C語言軟件開發系統,使用接近于傳統c語言的語法來開發,與匯編相比,C語言易學易用,而且大大的提高了工作效率和項目開發周期,他還能嵌入匯編,您可以在關鍵的位置嵌入,使程序達到接近于匯編的工作效率。KEILC51標準C編譯器為8051微控制器的軟件開發提供了C語言環境,同時保留了匯編代碼高效,快速的特點。C51編譯器的功能不斷增強,使你可以更加貼近CPU本身,及其它的衍生產品。C51已被完全集成到uVision4的集成開發環境中,這個集成開發環境包含:編譯器,匯編器,實時操作系統,項目管理器,調試器。uVision4 IDE可為它們提供單一而靈活的開發環境。
3.4.2 KEIL的使用
首先在需要使用keil建立一個新的工程,在菜單欄里的PROJECT→NEW uVision Project,為其命名點擊OK即完成創建工程。在彈出窗口中選擇使用的芯片類型,該系統使用的是52系列,由于KeiluVision4中沒有STC單片機,所以使用AT89C52代替。建立完成后,左邊的工作欄會如圖3-18所示。
圖3-18 keil工作空間                                                                                       圖3-19 添加C文件
接著新建一個文本文件,將其保存在該工程目錄下,后綴名為.C。在其中輸入編寫的C程序源代碼。在左邊的工作空間中的群組圖標上單擊鼠標右鍵,選擇“Add files to group …”找到先前編寫的C程序如圖3-19所示,將其添加入工程。之后對工程編譯,鏈接,生成HEX文件。
3.4.3單片機程序的燒寫
使用STC通用下載器STC_ISP如圖3-20,首先將主板或者開發板的RS232接口鏈接PC,關閉主板電源,在STC下載器中,選擇單片機型號為STC89C52,單擊打開程序文件按鈕,選擇編譯連接生成的HEX文件。下一步選擇COM口,選擇主板鏈接的COM端口,設置好波特率,單擊下載按鈕,等到提示框顯示“請給MCU上電”時打開主板電源,為單片機供電,如果通訊成功,則會顯示正在下載,下載成功等字樣。
圖3-20 STC_ISP下載器界面
第四章 運行調試
先將主控板接好各個模塊,測試在不通訊的情況下,是否可以正常運行達到自動開燈關燈,強制開強制關的實現,離開延時等功能。經調試,最終能正常工作,實現在自動狀態下,檢測光強,判斷開燈條件,檢測紅外,自動開燈以及人走延時的功能。如圖4-1所示。
圖4-1 燈光調試
下一步則是調試射頻通訊,在調試好主控板的條件下,將射頻通訊的程序加載進主程序,嘗試用遙控板上的按鈕遙控控制主控板的各個房間的狀態。經修改上電,最終成功通訊。然后調試LCD1602液晶屏,先將LCD1602的子程序加載,嘗試寫一些固定的字符,成功顯示之后,即可調試DS1302,將DS1302的時間寫入顯示緩存,讓LCD將時間顯示出來。如圖4-2所示。
圖4-2 LCD與DS1302調試
當各個部分都調試成功后,將其組合,把遙控板的射頻通訊返回的房間狀態顯示在顯示屏上,并且可以實時監測。

結束語
本智能燈光照明系統的設計分為硬件電路設計和程序設計兩個部分,硬件電路設計屬于前期的主要工作,通過方案論證與可行性分析,最終確定由89C52單片機完成主電路的控制與設計,并展開外圍電路與控制硬件電路設計,硬件電路的設計主要是電路原理圖的繪制以及參數的確定。
軟件的設計采用模塊化的程序設計方法,在主控板中分為主程序部分、按鍵采集模塊、NRF2401A射頻通訊模塊、按鍵掃描模塊等;在遙控器中分為主程序模塊,DS1302時鐘模塊,LCD1602顯示模塊,NRF2401A射頻通訊模塊。程序的設計既參考了一些資料里的內容,也有相當多的自我設計,比如說DS1302時鐘讀寫程序,就是參考了網友提供的實時讀取的實現的方法,但主程序中主要構架,自動手動狀態切換,反饋房間狀態等等都是自己的、設計,因為這些東西涉及到具體硬件電路,是找不到相關資料的,在數據傳輸中有簡單的單字節算法,也有雙字節的,有的則采用巧妙的算法有效避免出現雙字節,從而使程序設計變得簡單。
對于本設計,如果進行進一步的的研究,我認為應該在以下兩個個方面重點考慮:
(1)在硬件方面,可以嘗試制作雙面板這樣可以大大節省空間,縮小電路板的體積。
(2)在系統設計中嘗試制作與PC的實時通訊,連接入internet,從而可以進行超遠程控制。


致謝
經過幾個月的努力,在指導老師的幫助下,終于完成了智能燈光照明系統的設計和調試。從確定設計題目的那天開始,指導老師就開始不斷地給我提供幫助,從最初的方案確定,到元器件的選擇,電路的修改和調試,程序的編寫和修改,以及論文的制作等等,很多都是涉及到細節的問題;正是由于指導老師無私幫助,我才得以完成設計,指導老師自己也是很忙的,他帶有很多實驗課,每次與指導老師見面幾乎都是在實驗室,可想而知指導老師對我的關心,在做畢業設計的同時也是一個學習和成長的過程,雖然設計中很多東西都是指導老師以前做過的,但是指導老師幾乎每次都對我說:先自己慢慢做,有什么問題再來問我,正是由于指導老師嚴謹的科學態度,才使我從最初接觸這個課題時的迷茫變為現在豁然開朗,期間指導老師不斷提供的幫助和鼓勵是很重要的,特別要提及的是關于充電器的應用問題,要是沒有指導老師提供的指導和建議是根本不可能完成的。在此,對指導老師的幫助表示感謝!

完整的Word格式文檔51黑下載地址:
畢業論文-基于STC89C52單片機的智能燈光設計.doc (3.91 MB, 下載次數: 87)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 奇米四色影视 | 国产亚洲精品美女久久久久久久久久 | 91 在线 | 国产一区二区精品在线观看 | 午夜a区| 国产色99精品9i | 国产精品久久久久久久久免费樱桃 | 日韩欧美三区 | 日韩精品1区2区3区 国产精品国产成人国产三级 | 亚洲国产高清高潮精品美女 | 中文字幕在线视频网站 | 懂色一区二区三区免费观看 | 国产一区二区三区在线看 | 国产精品久久久久久久久久久久久 | 久久久久国产一区二区三区 | 国产一区二区三区久久久久久久久 | 日韩午夜精品 | 国产欧美一区二区三区在线看 | 久久精品国产久精国产 | 亚洲精久久 | 亚洲高清在线 | 免费的av网站 | 亚洲一区网站 | 久久久精品一区 | 日韩电影中文字幕在线观看 | 人人干97| 国产精品一区二区av | 午夜丁香视频在线观看 | 精品视频久久久 | av网址在线播放 | 看av在线| 国产精品高潮呻吟久久av黑人 | 久久久久国产一区二区三区四区 | 精品国产18久久久久久二百 | 欧美专区在线 | 亚洲国产成人精品女人久久久 | 日韩国产一区二区三区 | 在线视频国产一区 | 国产精品久久久爽爽爽麻豆色哟哟 | 精品真实国产乱文在线 | 在线观看免费观看在线91 |