2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩40頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  信息與通信工程學(xué)院</b></p><p>  單片機(jī)系統(tǒng)課程設(shè)計(jì)報(bào)告</p><p>  完成日期:2011年5月2日</p><p> 系:電子信息工程系</p><p> 專(zhuān) 業(yè):通信工程</p><p> 班 級(jí):</p><p

2、> 設(shè)計(jì)題目:智能家居中控系統(tǒng)</p><p> 學(xué)生姓名:</p><p> 指導(dǎo)教師:</p><p><b>  目錄</b></p><p><b>  一、項(xiàng)目概述1</b></p><p>  二、設(shè)計(jì)任務(wù)和性能指標(biāo)2</p><p&

3、gt;  2.1 設(shè)計(jì)任務(wù)2</p><p>  2.2 性能指標(biāo)2</p><p><b>  三、原理概述3</b></p><p><b>  四、設(shè)計(jì)方案4</b></p><p>  4.1 框圖設(shè)計(jì)5</p><p>  4.2 硬件設(shè)計(jì)6&

4、lt;/p><p>  4.2.1 STC89C52單片機(jī)7</p><p>  4.2.2 射頻nRF905發(fā)送模塊8</p><p>  4.2.3 TC35iGSM模塊10</p><p>  4.2.4 紅外線(xiàn)發(fā)送模塊11</p><p>  4.2.5 顯示電路12</p>

5、<p>  4.3 軟件設(shè)計(jì)13</p><p>  4.3.1 主程序14</p><p>  4.3.2 子程序16</p><p>  五、調(diào)試及性能分析20</p><p>  5.1 調(diào)試步驟21</p><p>  5.2 性能分析21</p><p>&

6、lt;b>  六、心得體會(huì)22</b></p><p><b>  參考文獻(xiàn)23</b></p><p>  附錄一 系統(tǒng)硬件電路圖24</p><p>  附錄二 程序清單26</p><p><b>  項(xiàng)目概述</b></p><p>  

7、隨著現(xiàn)代科學(xué)技術(shù)的發(fā)展,生活水平的提高,人們的生活方式和生活質(zhì)量的要求也同以前有了追求?;氐郊依锵硎馨察o舒適方便快捷的休息方式已經(jīng)是時(shí)代發(fā)展的要求和人們生活所必需。為了讓人們快速?gòu)漠?dāng)前繁瑣的家庭勞動(dòng)中解放出來(lái),為了迎合時(shí)代科技發(fā)展的要求,我們?cè)O(shè)計(jì)了智能家居中控系統(tǒng)。將家居的環(huán)境參數(shù)諸如:濕度、溫度等信息,還有水煤電等線(xiàn)管數(shù)據(jù)的報(bào)警等信息通過(guò)短信,電話(huà)等多種途徑,將信息快速準(zhǔn)確的及時(shí)的發(fā)送到主人手中,讓你無(wú)論何時(shí)何地隨時(shí)掌握家里的數(shù)據(jù)信息

8、,還有解決了家里電器設(shè)備的操控的繁瑣,只要通過(guò)中控臺(tái)全部控制家里的應(yīng)用電器。 </p><p>  二、設(shè)計(jì)任務(wù)和性能指標(biāo)</p><p><b>  2.1 設(shè)計(jì)任務(wù)</b></p><p>  利用單片機(jī)及外圍接口電路和相關(guān)的功能模塊設(shè)計(jì)制作一個(gè)智能家居中控設(shè)備,并且用LCD12864液晶顯示器把相關(guān)的功能模塊采集到的數(shù)據(jù)顯示出來(lái),顯示當(dāng)

9、前操作的意義等相關(guān)的數(shù)據(jù)信息。</p><p>  要求用AD6 設(shè)計(jì)出相關(guān)的電路圖并且畫(huà)出系統(tǒng)的電路原理圖,印刷電路板,繪出程序流程圖,并給出程序清單。</p><p><b>  2.2 性能指標(biāo)</b></p><p>  數(shù)據(jù)顯示: LCD12864顯示每次中控臺(tái)發(fā)出或是接受到數(shù)據(jù)信息的意義以及相關(guān)的參數(shù)顯示出來(lái)。</p>

10、<p>  控制模塊: 控制模塊主要是由nRF905采集外圍的具有nRF905發(fā)射終端設(shè)備。例如采集溫度,濕度數(shù)據(jù),接受遙控設(shè)備的射頻遙控等命令。短信提醒功能,通過(guò)nRF905采集的數(shù)據(jù)經(jīng)過(guò)MCU控制后,經(jīng)過(guò)TC35i模塊經(jīng)過(guò)手機(jī)的短信平臺(tái)把相關(guān)的數(shù)據(jù)信息發(fā)送給使用者。</p><p>  系統(tǒng)精度:該中控系統(tǒng)是整個(gè)家居體系的核心處理部分,能夠把數(shù)據(jù)進(jìn)行綜合匯總,將所有的有關(guān)的數(shù)據(jù)實(shí)時(shí)準(zhǔn)確的進(jìn)行綜合匯

11、總控制。實(shí)現(xiàn)對(duì)家居設(shè)備的監(jiān)控和管理的掌控能力。經(jīng)過(guò)這幾大模塊功能的組合應(yīng)用,使家居的主人可以在任何時(shí)間,任何地點(diǎn),隨時(shí)掌控家里的所有信息和控制管理。</p><p><b>  三、原理概述</b></p><p>  該系統(tǒng)主要是基于四大控制模塊建立構(gòu)成的控制管理體系。首先是射頻模塊:射頻模塊將家居的具有射頻控制模塊的采集子終端以及遙控終端。主要是進(jìn)行接收控制命令和

12、采集家居的相關(guān)的數(shù)據(jù),在這里具體表現(xiàn)為,采集家居的溫度,濕度,煤氣報(bào)警,水電的報(bào)警數(shù)據(jù)以及射頻遙控器的遙控指令。再者是紅外線(xiàn)發(fā)送模塊:該模塊的主要功能是控制具有紅外線(xiàn)接收能力的家電設(shè)備例如:TV、DVD和電視機(jī)頂盒等相關(guān)的家用電器。該模塊主要是通過(guò)射頻模塊接收到的控制命令控制家用電器設(shè)備。還有就是LCD液晶顯示模塊:該模塊主要功能是用于顯示每次采集到的數(shù)據(jù)或是接受到的命令進(jìn)行顯示,說(shuō)明每次操作的具體意義。最后是GSM模塊:該模塊是基于手

13、機(jī)服務(wù)商的短信平臺(tái)進(jìn)行工作的,該模塊的功能是當(dāng)家里的水電煤氣等管理模塊發(fā)出報(bào)警信息的時(shí)候,家里沒(méi)有人在指定的時(shí)間內(nèi)進(jìn)行先關(guān)的處理控制的時(shí)候,這時(shí)中控系統(tǒng)將采集到的報(bào)警命令通過(guò)GSM模塊以短信的方式發(fā)送給家里的主人,這樣保證了家里的主人無(wú)論在何時(shí)何地,隨時(shí)掌握家里的所以信息。</p><p><b>  四、設(shè)計(jì)方案</b></p><p>  4.1 框圖設(shè)計(jì)&l

14、t;/p><p>  整個(gè)控制系統(tǒng)的基本模塊組成及與MCU之間的聯(lián)系的設(shè)計(jì)如圖所示分別包括了每個(gè)模塊的具體信息其系統(tǒng)框圖如圖4.1 所示。</p><p><b>  圖4.1</b></p><p>  4.2 硬件設(shè)計(jì)</p><p>  TC35i新版西門(mén)子工業(yè)GSM模塊是一個(gè)支持中文短信息的工業(yè)級(jí)GSM模塊,工

15、作在EGSM900和GSM1800雙頻段,電源范圍為直流3.3~4.8V ,電流消耗——休眠狀態(tài)為3.5mA,空閑狀態(tài)為25mA,發(fā)射狀態(tài)為300mA(平均),2.5A峰值;可傳輸語(yǔ)音和數(shù)據(jù)信號(hào), 功耗在EGSM900(4類(lèi))和GSM1800(1類(lèi))分別為2W和1W ,通過(guò)接口連接器和天線(xiàn)連接器分別連接SIM卡讀卡器和天線(xiàn)。SIM電壓為3V/1.8V,TC35i的數(shù)據(jù)接口(CMOS電平)通過(guò)AT命令可雙向傳輸指令和數(shù)據(jù),可選波特率為30

16、0b/s~115kb/s , 自動(dòng)波特率為1.2kb/s~115kb/s。它支持Text和PDU格式的SMS(Short Message Service,短消息),可通過(guò)AT命令或關(guān)斷信號(hào)實(shí)現(xiàn)重啟和故障恢復(fù),中文資料如下:TC35i由供電模塊(ASIC)、閃存、ZIF連接器、天線(xiàn)接口等6部分組成。作為T(mén)C35i的核心基帶處理器主要處理GSM終端內(nèi)的語(yǔ)音和數(shù)據(jù)信號(hào),并涵蓋了蜂窩射頻設(shè)備中的所有模擬和數(shù)字功能。4.2.1 STC89C5

17、2單片機(jī)</p><p>  STC89C52具體介紹如下:</p><p> ?、?主電源引腳(2根)</p><p>  VCC(Pin40):電源輸入,接+5V電源</p><p>  GND(Pin20):接地線(xiàn)</p><p> ?、谕饨泳д褚_(2根)</p><p>  XTAL1

18、(Pin19):片內(nèi)振蕩電路的輸入端</p><p>  XTAL2(Pin20):片內(nèi)振蕩電路的輸出端</p><p><b> ?、劭刂埔_(4根)</b></p><p>  RST/VPP(Pin9):復(fù)位引腳,引腳上出現(xiàn)2個(gè)機(jī)器周期的高電平將使單片機(jī)復(fù)位。</p><p>  ALE/PROG(Pin30):地

19、址鎖存允許信號(hào)</p><p>  PSEN(Pin29):外部存儲(chǔ)器讀選通信號(hào)</p><p>  EA/VPP(Pin31):程序存儲(chǔ)器的內(nèi)外部選通,接低電平從外部程序存儲(chǔ)器讀指令,如果接高電平則從內(nèi)部程序存儲(chǔ)器讀指令。</p><p> ?、芸删幊梯斎?輸出引腳(32根)</p><p>  STC89C52單片機(jī)有4組8位的可編程I/

20、O口,分別位P0、P1、P2、P3口,每個(gè)口有8位(8根引腳),共32根。</p><p>  PO口(Pin39~Pin32):8位雙向I/O口線(xiàn),名稱(chēng)為P0.0~P0.7</p><p>  P1口(Pin1~Pin8):8位準(zhǔn)雙向I/O口線(xiàn),名稱(chēng)為P1.0~P1.7 </p><p>  P2口(Pin21~Pin28):8位準(zhǔn)雙向I/O口線(xiàn),名稱(chēng)為P2.0~

21、P2.7 </p><p>  P3口(Pin10~Pin17):8位準(zhǔn)雙向I/O口線(xiàn),名稱(chēng)為P3.0~P3.7</p><p>  STC89C52主要功能</p><p>  nRF905可自動(dòng)完成處理字頭和循環(huán)冗余碼校驗(yàn)的工作,可由片內(nèi)硬件自動(dòng)完成曼徹斯特編碼/解碼, SPI接口與微控制器通信的使用,配置非常方便,其功耗也非常低,輸出功率為-10dBm發(fā)射時(shí)電

22、流只有11mA,在接收模式時(shí)電流為12.5mA。 nRF905單片無(wú)線(xiàn)收發(fā)模塊工作由一個(gè)完全集成的頻率調(diào)制器,一個(gè)帶解調(diào)器的接收器,一個(gè)功率放大器,一個(gè)晶體震蕩器和一個(gè)調(diào)節(jié)器組成。自動(dòng)產(chǎn)生前導(dǎo)碼和CRC是ShockBurst工作模式的特點(diǎn),可以很容易通過(guò)SPI接口進(jìn)行編程配置[8]。</p><p>  為實(shí)現(xiàn)無(wú)線(xiàn)傳輸?shù)墓δ?,本系統(tǒng)采用杭州飛拓電子有限公司生產(chǎn)的NewMsg_RF905SE無(wú)線(xiàn)通信模塊。NewMs

23、g_RF905SE的特點(diǎn)如下:</p><p>  433Mhz開(kāi)放ISM頻段免許可證使用</p><p>  最高工作速率50kbps,高效GFSK調(diào),抗干擾能力強(qiáng),特別適合工業(yè)控制場(chǎng)合</p><p>  125頻道,滿(mǎn)足多點(diǎn)通信和跳頻通信需要</p><p>  內(nèi)置硬件CRC檢錯(cuò)和點(diǎn)對(duì)多點(diǎn)通信地址控制</p><p

24、>  低功耗1 .9—3.6V工作,待機(jī)模式下?tīng)顟B(tài)僅為2.5 Ua</p><p>  收發(fā)模式切換時(shí)間<650us</p><p>  4.2.2 超聲波測(cè)距單片機(jī)系統(tǒng)</p><p>  單片機(jī)系統(tǒng)主要由:STC89C52單片機(jī)、晶振、復(fù)位電路、電源濾波部份構(gòu)成。STC89C52單片機(jī)是超聲波測(cè)距的核心部分,主要任務(wù):</p><

25、;p>  控制GSM模塊的指令發(fā)送。</p><p>  控制射頻模塊的工作。</p><p>  控制LCD顯示電路的工作。</p><p><b>  接受按鍵掃描。</b></p><p>  4.2.3 射頻電路</p><p>  NewMsg_RF905SE管腳圖如3.5所示

26、。</p><p>  圖3.5 NewMsg_RF905SE管腳圖</p><p><b>  說(shuō)明:</b></p><p>  VCC腳電壓范圍為3V—3.6V之間,不能在這個(gè)區(qū)間之外,超過(guò)3.6V將會(huì)燒毀模塊。推薦3.3V左右。</p><p>  除電源VCC和接地端,其余腳都可以直接和普通的5V單片機(jī)I/O口

27、直接相連,無(wú)需電平轉(zhuǎn)換。當(dāng)然對(duì)3V左右的單片機(jī)更加適用了。</p><p>  表3.1 NewMsg_RF905SE管腳圖</p><p>  3.2.3 工作方式</p><p>  nRF905工作模式由TRX_CE、TX_EN、PWR_UP的設(shè)置來(lái)設(shè)定。工作模式由表3.1 </p><p><b>  所示[9]。</

28、b></p><p>  表3.2 nRF905工作模式</p><p>  電路原理圖如圖4.2.3所示。</p><p><b>  圖4.2.3</b></p><p>  4.2.4 GSM模塊TC35i</p><p>  TC35i硬件設(shè)計(jì):TC35i模塊有40個(gè)引腳,通過(guò)一個(gè)

29、ZIF(Zero Insertion Force,零阻力插座)連接器引出。這40個(gè)引腳可以劃分為5類(lèi),即電源、數(shù)據(jù)輸入/輸出、SIM卡、音頻接口和控制。TC35i的第1~5引腳是正電源輸入腳通常推薦值4.2V,第6~10引腳是電源地。11、12為充電引腳,可以外接鋰電池,13為對(duì)外輸出電壓(共外電路使用),14為ACCU-TEMP接負(fù)溫度系數(shù)的熱敏電阻,用于鋰電池充電保護(hù)控制。15腳是啟動(dòng)腳IGT,系統(tǒng)加電后為使TC35i進(jìn)入工作狀態(tài),

30、必須給IGT加一個(gè)大于100ms的低脈沖,電平下降持續(xù)時(shí)間不可超過(guò)1ms。16~23為數(shù)據(jù)輸入/輸出,分別為DSR0、RING0、RxD0、TxD0、CTS0、RTS0、DTR0 和DCD0。tc35i模塊的數(shù)據(jù)輸入/輸出接口實(shí)際上是一個(gè)串行異步收發(fā)器,符合ITU-T RS232接口標(biāo)準(zhǔn)。它有固定的參數(shù):8位數(shù)據(jù)位和1位停止位,無(wú)校驗(yàn)位,波特率在300bps~115kbps之間可選,默認(rèn)9600。硬件握手信號(hào)用RTS0/CTS0,軟件流

31、量控制用XON/XOFF,CMOS電平,支持標(biāo)準(zhǔn)的AT命令集。其</p><p><b>  圖4.2.4</b></p><p>  4.2.5 顯示電路</p><p>  該系統(tǒng)采用112864液晶屏顯示模塊</p><p>  2864A-1漢字圖形點(diǎn)陣液晶顯示模塊,可顯示漢字及圖形,內(nèi)置8192個(gè)中文漢字(

32、16X16點(diǎn)陣)、128個(gè)字符(8X16點(diǎn)陣)及64X256點(diǎn)陣顯示RAM(GDRAM)。</p><p>  主要技術(shù)參數(shù)和顯示特性:</p><p>  電源:VDD 3.3V~+5V(內(nèi)置升壓電路,無(wú)需負(fù)壓);</p><p>  顯示內(nèi)容:128列× 64行</p><p><b>  顯示顏色:黃綠</b&

33、gt;</p><p>  顯示角度:6:00鐘直視</p><p><b>  LCD類(lèi)型:STN</b></p><p>  與MCU接口:8位或4位并行/3位串行</p><p><b>  配置LED背光</b></p><p>  多種軟件功能:光標(biāo)顯示、畫(huà)面移位、

34、自定義字符、睡眠模式等</p><p>  邏輯工作電壓(VDD):4.5~5.5V</p><p>  電源地(GND):0V</p><p>  工作溫度(Ta):0~60℃(常溫) / -20~75℃(寬溫)</p><p>  串行數(shù)據(jù)傳送共分三個(gè)字節(jié)完成:</p><p>  第一字節(jié):串口控制—格式 111

35、11ABC</p><p>  A為數(shù)據(jù)傳送方向控制:H表示數(shù)據(jù)從LCD到MCU,L表示數(shù)據(jù)從MCU到LCD</p><p>  B為數(shù)據(jù)類(lèi)型選擇:H表示數(shù)據(jù)是顯示數(shù)據(jù),L表示數(shù)據(jù)是控制指令</p><p><b>  C固定為0</b></p><p>  第二字節(jié):(并行)8位數(shù)據(jù)的高4位—格式 DDDD0000&l

36、t;/p><p>  第三字節(jié):(并行)8位數(shù)據(jù)的低4位—格式 0000DDDD</p><p>  串行接口時(shí)序參數(shù):(測(cè)試條件:T=25℃ VDD=4.5V)</p><p><b>  圖4.2.5</b></p><p><b>  4.3 軟件設(shè)計(jì)</b></p><p&g

37、t;  4.3.1 主程序</p><p>  本系統(tǒng)的智能化核心是STC89C52,其收發(fā)程序和應(yīng)用軟件全部固化在EPROM內(nèi)。它的工作過(guò)程是:當(dāng)系統(tǒng)上電后,單片機(jī)進(jìn)入監(jiān)控狀態(tài),同時(shí)完成對(duì)各端口的初始化工作,當(dāng)外部的采集數(shù)據(jù)模塊的終端設(shè)備有報(bào)警信息時(shí)候,直接發(fā)送傳達(dá)的指令在沒(méi)有采取的到相應(yīng)的指令的情況下,短信發(fā)送模塊激活,向固定的電話(huà)發(fā)送短信報(bào)告之相應(yīng)的數(shù)據(jù)信息。LCD顯示模塊同時(shí)顯示收到數(shù)據(jù)的意義。當(dāng)中控臺(tái)

38、收到射頻遙控器的指令時(shí),通過(guò)MCU的綜合處理,將射頻協(xié)議和紅外線(xiàn)協(xié)議轉(zhuǎn)換,發(fā)射出與之對(duì)應(yīng)的紅外線(xiàn)命令從而實(shí)現(xiàn)對(duì)家用電器的控制和管理的操作。此時(shí)遙控器接收模塊接收相應(yīng)數(shù)據(jù)并將數(shù)據(jù)在LCD顯示屏上顯示。</p><p>  圖4.3為主程序流程圖。</p><p>  圖4.3主程序流程圖</p><p>  4.3.2 系統(tǒng)的子程序。</p><

39、p>  RF905無(wú)線(xiàn)數(shù)傳程序包括無(wú)線(xiàn)發(fā)送程序和無(wú)線(xiàn)接收程序。</p><p>  ShockBurst TX發(fā)送流程分一下幾步:</p><p>  當(dāng)微控制器有效數(shù)據(jù)要發(fā)送時(shí),通過(guò)SPI接口,按時(shí)序跋接收機(jī)的地址和藥發(fā)送的數(shù)據(jù)傳送給RF905,SPI接口的速率在通信協(xié)議和器件配置時(shí)確定;</p><p>  微控制器置高TRX_CE和TX_EN,激發(fā)RF9

40、05的ShockBurstTM發(fā)送模式;</p><p>  RF905的ShockBurstTM發(fā)送:</p><p>  射頻寄存器自動(dòng)開(kāi)啟;</p><p>  數(shù)據(jù)打包(加頭字和CRC校驗(yàn)碼);</p><p><b>  發(fā)送數(shù)據(jù)包;</b></p><p>  當(dāng)數(shù)據(jù)發(fā)送完成,數(shù)據(jù)準(zhǔn)備

41、好引腳被置高;</p><p>  AUTO_RETRAN被置高,RF905不斷重發(fā),自動(dòng)進(jìn)入空閑。注意:ShockBurstTM工作模式保證,一旦發(fā)送數(shù)據(jù)的過(guò)程開(kāi)始,無(wú)論TRX-NE和TX_EN引腳是高或低,發(fā)送過(guò)程都會(huì)被處理完。只有在前一個(gè)數(shù)據(jù)包被發(fā)送完畢,RF905才能接受下一個(gè)發(fā)送數(shù)據(jù)包。</p><p>  ShockBurst TX發(fā)送流程圖如圖4.4所示五、調(diào)試及性能分析&l

42、t;/p><p><b>  圖 4.4</b></p><p>  ShockBurst RX接收流程分一下幾步:</p><p>  當(dāng)TRX_CE高、TX_EN為低時(shí),RF905J進(jìn)入ShockBurst TM接收模式;</p><p>  650us后,RF905不斷監(jiān)測(cè),等待接收數(shù)據(jù);</p><

43、;p>  當(dāng)RF905檢測(cè)到同一頻段的載波時(shí),載波檢測(cè)引腳被置高;</p><p>  當(dāng)接收到一個(gè)匹配的地址,AM引腳;</p><p>  當(dāng)一個(gè)正確的數(shù)據(jù)包接收完畢,RF905自動(dòng)移去字頭、地址和CRC校驗(yàn)位,然后把DR引腳置高;</p><p>  微控制器把TRX_CE置低,RF905進(jìn)入空閑模式;</p><p>  微控制

44、器通過(guò)SPI口,以一定的速率把數(shù)據(jù)移到微控制器內(nèi);</p><p>  當(dāng)所有的數(shù)據(jù)接收完畢,RF905把DR引腳和AM引腳置低;</p><p>  RF905此時(shí)可以進(jìn)入ShockBurst TM接收模式、ShockBurst TM發(fā)送模式或關(guān)機(jī)。</p><p>  當(dāng)正在接收一個(gè)數(shù)據(jù)包時(shí),TRX-CE或TX_EN引腳的狀態(tài)發(fā)生改變,RF905立即把其工作模式

45、改變,數(shù)據(jù)包丟失。當(dāng)微處理器接到AM引腳的信號(hào)之后,其就知道RF905正在接收數(shù)據(jù)包,其可以決定是讓RF905繼續(xù)接收該數(shù)據(jù)包還是進(jìn)入另一個(gè)工作模式。</p><p>  ShockBurst RX接收流程圖如圖4.5所示。</p><p><b>  圖 4.5</b></p><p>  顯示模塊LCD12864程序編寫(xiě):</p>

46、;<p>  本系統(tǒng)采用的是串行通信方式,這樣可以有效的減少單片機(jī)的I/O的占用,為將來(lái)的功能的擴(kuò)展提供了接口控制。主要的指令如下:</p><p><b>  寫(xiě)指令:</b></p><p>  void write_cmd(uchar cmd)</p><p>  { <

47、;/p><p>  lcdrs = 0;//低電平表命令</p><p>  lcdrw = 0;// 低電平表寫(xiě)</p><p>  P0 = cmd;//把命令送給P0</p><p>  lcden = 0;//產(chǎn)生一個(gè)高脈沖</p><p>  delay_ms(5);</p><p>  

48、lcden = 1;</p><p>  delay_ms(5);//不用的時(shí)候把en拉低,12864不使能</p><p>  lcden = 0; </p><p><b>  }</b></p><p><b>  (2)寫(xiě)數(shù)據(jù):</b></p><p>  void

49、 write_dat(uchar dat)</p><p>  { </p><p>  lcdrs = 1;//高電平表示數(shù)據(jù)</p><p>  lcdrw = 0;//低電平表示寫(xiě)</p><p>  P0 = dat;//把數(shù)據(jù)送到端口</p><p>  lc

50、den = 0;//產(chǎn)生一個(gè)高脈沖</p><p>  delay_ms(5);</p><p>  lcden = 1;</p><p>  delay_ms(5);</p><p>  lcden = 0; //不用時(shí)不使能</p><p><b>  }</b></p>&l

51、t;p>  TC35i的發(fā)送短信程序:</p><p><b>  5.1 調(diào)試步驟</b></p><p>  焊接好各個(gè)模塊后,進(jìn)行模塊的單獨(dú)測(cè)試。紅外線(xiàn)發(fā)送調(diào)試部分比較要求細(xì)致一些,在這里的時(shí)序控制問(wèn)題和頻率精度的設(shè)計(jì)要求較高,在計(jì)算初值和調(diào)試載波的占空比的時(shí)候都要利用示波器精確測(cè)量。GSM模塊根據(jù)相應(yīng)用到的指令進(jìn)行分部的調(diào)試,最后在進(jìn)行整個(gè)模塊的功能調(diào)

52、試。顯示模塊調(diào)試比較簡(jiǎn)單了,只要保證對(duì)應(yīng)的引腳電路的正確,時(shí)能時(shí)鐘應(yīng)用正確,液晶屏就會(huì)按照程序設(shè)計(jì)的方式進(jìn)行顯示。無(wú)線(xiàn)射頻模塊的調(diào)試要進(jìn)行收發(fā)兩種模式的相互配合,在調(diào)試的時(shí)候可以利用DR引腳和CD引腳在工作模式下的特殊性進(jìn)行調(diào)試。在所有的模塊都調(diào)試成功后才可以進(jìn)行系統(tǒng)的軟件的綜合控制管理MAIN函數(shù)測(cè)試和調(diào)試工作。</p><p><b>  六、心得體會(huì)</b></p>&l

53、t;p>  兩個(gè)月的單片機(jī)課程設(shè)計(jì)結(jié)束了,在這次的課程設(shè)計(jì)中不僅檢驗(yàn)了我所學(xué)習(xí)的知識(shí),也培養(yǎng)了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在設(shè)計(jì)過(guò)程中,與同學(xué)分工設(shè)計(jì),和同學(xué)們相互探討,相互學(xué)習(xí),相互監(jiān)督。學(xué)會(huì)了合作,學(xué)會(huì)了運(yùn)籌帷幄,學(xué)會(huì)了寬容,學(xué)會(huì)了理解,也學(xué)會(huì)了做人與處世。課程設(shè)計(jì)是我們專(zhuān)業(yè)課程知識(shí)綜合應(yīng)用的實(shí)踐訓(xùn)練,著是我們邁向社會(huì),從事職業(yè)工作前一個(gè)必不少的過(guò)程.”千里之行始于足下”,通過(guò)這次課程設(shè)計(jì),我深

54、深體會(huì)到這句千古名言的真正含義.我今天認(rèn)真的進(jìn)行課程設(shè)計(jì),學(xué)會(huì)腳踏實(shí)地邁開(kāi)這一步,就是為明天能穩(wěn)健地在社會(huì)大潮中奔跑打下堅(jiān)實(shí)的基礎(chǔ).通過(guò)這次智能家居中控設(shè)計(jì),本人在多方面都有所提高。通過(guò)這次智能家居中控設(shè)計(jì),綜合運(yùn)用本專(zhuān)業(yè)所學(xué)課程的理論和生產(chǎn)實(shí)際知識(shí)進(jìn)行一次智能家居中控設(shè)計(jì)工作的實(shí)際訓(xùn)練從而培養(yǎng)和提高學(xué)生獨(dú)立工作能力,鞏固與擴(kuò)充了智能家居中控設(shè)計(jì)等課程所學(xué)的內(nèi)容,掌握智能家居中控設(shè)計(jì)的方法和步驟,同時(shí)各科相關(guān)的課程都有了全面的復(fù)習(xí),獨(dú)立

55、思考的能力也有了提高。在這次設(shè)計(jì)過(guò)程中,體現(xiàn)出我們?cè)O(shè)計(jì)智能家居中控的能力以及綜合運(yùn)用知識(shí)的能力,體會(huì)了學(xué)以致用、突出自己勞動(dòng)成果的喜悅心情</p><p><b>  七,參考文獻(xiàn)</b></p><p>  [1] 樓然苗,李光飛.51系列單片機(jī)設(shè)計(jì)實(shí)例.北京航空航天大學(xué)出版社 ,2003</p><p>  [2] 何希才.常用集成電路應(yīng)用

56、實(shí)例.電子工業(yè)出版社,2007</p><p>  [3] 楊國(guó)田,白 焰,董 玲.51單片機(jī)實(shí)用C語(yǔ)言程序設(shè)計(jì).中國(guó)電力出版社,2009</p><p>  [4] 楊居義.單片機(jī)課程設(shè)計(jì)指導(dǎo).清華大學(xué)出版社,2009</p><p>  附錄一 系統(tǒng)硬件電路圖</p><p><b>  附錄三 程序清單</b>

57、</p><p>  超聲波測(cè)距器單片機(jī)程序 (文件1保存為ceju.c)</p><p>  #include<reg51.h></p><p>  #defineuchar unsigned char</p><p>  #define unit unsigned int</p><p>  #d

58、efine ulong unsigned long</p><p>  #include"intrins.h"</p><p>  #include"string.h"</p><p>  sbit ir=P3^4;//紅外發(fā)射管控制腳 </p><p>  uint count, set_count;

59、//中斷計(jì)數(shù),設(shè)定中斷次數(shù) </p><p>  bit keyflag,flag;//紅外發(fā)送標(biāo)志,按鍵標(biāo)志位 </p><p>  uchar irsys[4]={0x1a,0xa1,0xdc,0x03};//26位系統(tǒng)碼,最后一個(gè)字節(jié)只用2位 </p><p>  uchar ircode,irdata,num; </p><p>  

60、unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};</p><p>  #define buf_max 72//緩存長(zhǎng)度72</p><p>  uchar a,i;</p><p>  uchar rec_buf[buf_max];//接收緩存</p&

61、gt;<p>  #include"stdio.h"</p><p>  #include"math.h"</p><p>  #define uchar unsigned char </p><p>  #define uint unsigned int</p><p>  #defi

62、ne WC0x00// Write configuration register command </p><p>  #define RC0x10 // Read configuration register command</p><p>  #define WTP0x20 // Write TX Payload command</p>

63、;<p>  #define RTP0x21// Read TX Payload command</p><p>  #define WTA0x22// Write TX Address command</p><p>  #define RTA0x23// Read TX Address command</p><

64、p>  #define RRP0x24// Read RX Payload command</p><p>  typedef struct RFConfig</p><p><b>  {</b></p><p><b>  uchar n;</b></p><p>  uch

65、ar buf[10];</p><p>  }RFConfig;</p><p>  code RFConfig RxTxConf = </p><p><b>  {</b></p><p><b>  10,</b></p><p>  0x4c, 0

66、x0c, 0x44, 0x20, 0x20, 0xcc, 0xcc, 0xcc,0xcc, 0x58</p><p><b>  };</b></p><p>  // 905配置初始化數(shù)據(jù)//字節(jié)1以10dBm功率輸出//RX、TX地址寬度為4字節(jié)。</p><p>  //0x20, 0x20:收發(fā)32字節(jié)//允許CRC8位校驗(yàn)外接(模塊

67、自身帶有的)16MHz晶振。</p><p>  //0x4c:頻率430mhz s</p><p>  // 0x20, 0x20:收發(fā)32字節(jié)</p><p>  // 0xcc, 0xcc, 0xcc,0xcc:spi寫(xiě)入的地址</p><p>  uchar data TxBuf[]="12345";</p&

68、gt;<p>  uchar data RxBuf[6];</p><p>  uchar temp;</p><p>  unsigned char code table1[]=</p><p>  {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86

69、,0x8e,0xaa}; </p><p>  uchar bdata DATA_BUF;//片內(nèi)RAM尋址存儲(chǔ)</p><p>  sbitflag=DATA_BUF^7;</p><p>  sbitflag1=DATA_BUF^0;</p><p>  sbitTX_EN =P0^7;</p><

70、p>  sbitTRX_CE =P0^6;</p><p>  sbitPWR_UP =P0^5;</p><p>  sbitMISO =P0^1;</p><p>  sbitMOSI =P0^0;</p><p>  sbitSCK =P2^7;</p><

71、;p>  sbitCSN =P2^3;</p><p>  sbitAM =P0^3;</p><p>  sbitDR =P2^2;</p><p>  sbitCD =P0^4;</p><p>  sbit SDATA_595 = P1^0;</p

72、><p>  sbit SCLK_595 = P1^1;</p><p>  sbit SRCLK_595 = P1^2;</p><p>  sbit wei_y0 = P1^4;</p><p>  sbit LED=P2^0;</p><p>  sbit key1 = P3^0;&

73、lt;/p><p>  sbit key4 = P3^1;</p><p>  sbit key5 = P3^2;</p><p>  sbit dula = P2^6;sbit wela = P2^7;//SCM12864-05端口定義#define LCD_DATA P0 //數(shù)據(jù)口sbit RS = P3^5; //并行的指令/數(shù)據(jù)選擇信號(hào)

74、, H數(shù)據(jù), L命令sbit RW = P3^6; //并行讀寫(xiě)選擇信號(hào), H讀, L寫(xiě)sbit E = P3^4; //并行使能端, H有效, L無(wú)效sbit PSB = P3^7; //并/串接口選擇, H并,L串sbit RET = P3^3; //復(fù)位, L有效</p><p>  uchar code datas1[] = {"歡迎使用家居中控系統(tǒng)"};uchar code

75、 datas2[] = {"工作模式:"};uchar code datas3[] = {"意義:"};uchar code datas4[] = {"指令碼:"};</p><p>  void InitIO(void);// Initialize IO port</p><p>  void Inituart(vo

76、id); // initialize 232 uart</p><p>  void Config905(void);// Config nRF905 module配置NRF905模式</p><p>  void SetTxMode(void);// Set nRF905 in Tx mode</p><p>  void TxPacket

77、(void);// Send data by nRF905</p><p>  void SpiWrite(uchar);// Write data to nRF905</p><p>  void Delay(uchar n);// Delay 100us</p><p>  void display();</p><p>

78、;  void SendData_595 ();</p><p>  void OutputData_595 ();</p><p>  void main()</p><p><b>  {</b></p><p><b>  while(1)</b></p><p>  

79、{//=========RF905初始化 ===========================</p><p>  CSN=1;// Spi disable</p><p>  SCK=0;// Spi clock line init high</p><p>  DR=1;// Init DR for input

80、</p><p>  AM=1;// Init AM for input</p><p>  PWR_UP=1;// nRF905 power on</p><p>  TRX_CE=0;// Set nRF905 in standby mode spi編程模式</p><p>  TX_EN=0;

81、// set radio in Rx mode</p><p>  Config905(); // Config nRF905 module</p><p><b>  key1=0;</b></p><p>  if(key4!=1) //電動(dòng)機(jī)反轉(zhuǎn) 窗簾打開(kāi) </p><p><b> 

82、 {</b></p><p>  TxBuf[0] =1;</p><p><b>  } </b></p><p>  if(key5!=1) //電動(dòng)機(jī)正轉(zhuǎn) 窗簾關(guān)閉</p><p><b>  { </b></p><p>  TxBuf[0] =2;

83、</p><p><b>  }</b></p><p>  if(key6!=1) //電動(dòng)機(jī)停止 </p><p><b>  { </b></p><p>  TxBuf[0] =3;</p><p><b>  }</b></p&

84、gt;<p>  if(key7!=1) //進(jìn)入自動(dòng)模式(光控窗簾) </p><p><b>  { </b></p><p>  TxBuf[0] =4;</p><p><b>  }</b></p><p>  SetTxMode(); // Set Tx

85、Mode*/</p><p>  TxPacket(); // T發(fā)送數(shù)據(jù)包</p><p><b>  } </b></p><p><b>  }</b></p><p>  void Delay(uchar n)</p><p><b>  

86、{</b></p><p><b>  uint i;</b></p><p>  while(n--)</p><p>  for(i=0;i<80;i++);</p><p><b>  }</b></p><p>  void Config905(v

87、oid)</p><p><b>  {</b></p><p>  uchar i;</p><p>  CSN=0;// Spi enable for write a spi command</p><p>  SpiWrite(WC);// Write config command寫(xiě)放配置

88、命令</p><p>  for (i=0;i<RxTxConf.n;i++)// Write configration words 寫(xiě)放配置字</p><p><b>  {</b></p><p>  SpiWrite(RxTxConf.buf[i]);</p><p><b>  }</b

89、></p><p>  CSN=1;// Disable Spi</p><p><b>  }</b></p><p>  void SpiWrite(uchar byte)</p><p><b>  {</b></p><p><b>  u

90、char i;</b></p><p>  DATA_BUF=byte;// Put function's parameter into a bdata variable </p><p>  for (i=0;i<8;i++) // Setup byte circulation bits</p><p><

91、;b>  {</b></p><p>  if (flag) // Put DATA_BUF.7 on data line</p><p><b>  MOSI=1;</b></p><p><b>  else</b></p><p><b>  

92、MOSI=0;</b></p><p>  SCK=1; // Set clock line high</p><p>  DATA_BUF=DATA_BUF<<1; // Shift DATA_BUF</p><p>  SCK=0; // Set clock line low </p>

93、<p><b>  }</b></p><p><b>  SCK=0;</b></p><p><b>  }</b></p><p>  void TxPacket(void)</p><p><b>  {</b></p>

94、<p><b>  uchar i;</b></p><p>  PWR_UP=1;//上電</p><p>  TX_EN=1;//發(fā)送使能</p><p>  TRX_CE=0;// Set TRX_CE low進(jìn)入spi編程模式</p><p>  CSN=0;// Spi

95、enable for write a spi command spi使能</p><p>  SpiWrite(WTA);// Write address command 寫(xiě)入“寫(xiě)地址命令”</p><p>  for (i=0;i<4;i++)// Write 4 bytes address</p><p><b>  {</b

96、></p><p>  SpiWrite(RxTxConf.buf[i+5]);</p><p><b>  }</b></p><p>  CSN=1;// Spi disable</p><p><b>  Delay(1);</b></p><p&

97、gt;  CSN=0;// Spi enable for write a spi command</p><p>  SpiWrite(WTP);// Write payload command寫(xiě)入“寫(xiě)數(shù)據(jù)命令”</p><p>  for (i=0;i<32;i++)//寫(xiě)入“寫(xiě)地址命令”</p><p><b>  {<

98、/b></p><p>  SpiWrite(TxBuf[i]);// Write 32 bytes Tx data </p><p><b>  }</b></p><p>  CSN=1;// Spi disable</p><p>  TRX_CE=1;// 進(jìn)入發(fā)送模式

99、發(fā)送數(shù)據(jù)</p><p><b>  Delay(1);</b></p><p>  /*if (DR)</p><p><b>  { </b></p><p><b>  LED=0;</b></p><p>  Delay(500);</p

100、><p><b>  LED=1;</b></p><p>  Delay(500);</p><p><b>  }*/</b></p><p>  TRX_CE=0;// Set TRX_CE low進(jìn)入spi編程模式</p><p>  display();

101、</p><p><b>  }</b></p><p>  void SetTxMode(void)</p><p><b>  {</b></p><p><b>  TX_EN=1;</b></p><p><b>  TRX_

102、CE=1;</b></p><p>  Delay(1); // delay for mode change(>=650us)</p><p><b>  }</b></p><p>  //延時(shí)約2usvoid delayUs(){nop_();_nop_();}//延時(shí) a * 1msvoid dela

103、yMs(uint a){    uint i, j;    for(i = a; i > 0; i--)        for(j = 100; j > 0; j--);}</p><p>  //檢測(cè)LCD是否處于忙狀態(tài), 若忙返回1, 空閑返回0bit ch

104、eckBusy(){ bit busy;    RS = 0;    RW = 1;    E = 1;    delayUs();    busy = (bit)(LCD_DATA&0x80);    E = 0; &#

105、160;  return busy;}</p><p>  //等待LCD到空閑void wait(){    while(checkBusy());}</p><p>  //寫(xiě)命令void writeCmd(uchar cmd){    wait();    RS =

106、0;    RW = 0;    E = 0;    delayUs();    LCD_DATA = cmd;    delayUs();    E = 1;    delayUs();  &

107、#160; E = 0;}</p><p>  //寫(xiě)數(shù)據(jù)void writeData(uchar dat){    wait();    RS = 1;    RW = 0;    E = 0;    delayUs();  

108、  LCD_DATA = dat;    delayUs();    E = 1;    delayUs();    E = 0;}</p><p>  //初始化LCDvoid init(){    PSB = 1; //并口方式

109、60;   writeCmd(0x30); //基本指令, 擴(kuò)充指令為34H    delayMs(10);    writeCmd(0x0c); //顯示開(kāi), 關(guān)光標(biāo)    delayMs(10);    writeCmd(0x01); //清屏    de

110、layMs(10);}</p><p>  void setPosition(uchar x, uchar y){ uchar p;    switch(x%4)    {        case 0: p = 0x80; break; //第一行開(kāi)始地址 &

111、#160;      case 1: p = 0x90; break; //第二行        case 2: p = 0x88; break; //第三行        case 3: p = 0x98; break; //第四行 

112、;   }    p += y;    writeCmd(p);}</p><p>  void writeString(uchar * str){ uchar i = 0;    while(str[i] != '\0')    {

113、0;       writeData(str[i++]);    }}</p><p>  /**//***************************LCD12864***************************/</p><p>  void display(){//先關(guān)閉數(shù)碼管

114、, 使兩個(gè)鎖存器鎖存, 因開(kāi)了數(shù)碼管, USB電壓驅(qū)動(dòng)不夠, 將 無(wú)法使LCD正常工作    dula = wela = 0;    init();    setPosition(0, 0);    writeString(datas1);    setPosi

115、tion(1, 0);    writeString(datas2);    setPosition(2, 0);    writeString(datas3);    setPosition(3, 0);    writeString(datas4);  

116、  while(1);}</p><p>  //******************************************************************</p><p>  void delay(uint z) //1ms延時(shí)</p><p><b>  {</b></p><

117、p><b>  uint x,y;</b></p><p>  for(x=z;x>0;x--)</p><p>  for(y=110;y>0;y--);</p><p><b>  }</b></p><p>  void SerialInit()//初始化程序(必須使用,否則

118、無(wú)法收發(fā))</p><p><b>  {</b></p><p>  TMOD=0x20;//設(shè)置定時(shí)器工作方式為8位自動(dòng)裝入數(shù)據(jù)</p><p>  TH1=0xfd;//裝入初值,波特率9600</p><p><b>  TL1=0xfd;</b></p><p> 

119、 TR1=1;//打開(kāi)定時(shí)器</p><p>  SM0=0;//設(shè)置串行通訊工作模式,(10為一部發(fā)送,波特率可變,由定時(shí)器1的溢出率控制)</p><p>  SM1=1;//(同上)在此模式下,定時(shí)器溢出一次就發(fā)送一個(gè)位的數(shù)據(jù)</p><p>  REN=1;//串行接收允許位(要先設(shè)置sm0sm1再開(kāi)串行允許)</p><p><

120、;b>  EA=1;</b></p><p><b>  ES=1;</b></p><p><b>  }</b></p><p>  /*//////////////////////////////////////////////////////////////////////////////////

121、//////////////////</p><p>  // 函數(shù)名:void Uart1Sends(char* at)</p><p>  // 作用: 發(fā)送字符串到串口1</p><p>  // 參數(shù): char* at 字符串頭地址</p><p><b>  // 返回:</b></p><

122、;p>  ////////////////////////////////////////////////////////////////////////////////////////////////////*/</p><p>  void Uart1Sends(char* at)</p><p>  { </p><p>

123、;  uchar cnt=0; </p><p>  ES=0;//關(guān)串行口中斷</p><p>  while(*(at+cnt))//判斷一串?dāng)?shù)據(jù)是否結(jié)束</p><p><b>  {</b></p><p>  SBUF=*(at+cnt);//發(fā)送數(shù)據(jù)</p&

124、gt;<p>  while(TI==0);//查詢(xún)發(fā)送是否結(jié)束</p><p>  TI=0;//清除發(fā)送一標(biāo)志位</p><p>  cnt++;//準(zhǔn)備發(fā)送一個(gè)數(shù)據(jù)</p><p><b>  }</b></p><p>  ES=1;//開(kāi)串行口中斷</p><p>

125、;<b>  }</b></p><p>  /*****************判斷緩存中是否含有指定的字符串函數(shù)******************/</p><p>  /*函數(shù)原型:bit hand(unsigned char *a)</p><p>  /*函數(shù)功能:判斷緩存中是否含有指定的字符串</p><p&g

126、t;  /*輸入?yún)?shù):unsigned char *a 指定的字符串</p><p>  /*輸出參數(shù):bit 1---含有 0---不含有</p><p><b>  /*調(diào)用模塊:無(wú)</b></p><p>  /*************************************************************

127、*********/</p><p>  bit hand(uchar *a)</p><p><b>  { </b></p><p>  if(strstr(rec_buf,a)!=NULL) //!=是不等于</p><p><b>  return 1;</b></p>&

128、lt;p><b>  else</b></p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  /**************************清除緩存數(shù)據(jù)函數(shù)****************************/</p

溫馨提示

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

評(píng)論

0/150

提交評(píng)論