




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、單片機匯編語言程序設(shè)計師畢業(yè)論文目 錄第一章 緒 論21.1 背景介紹21.2 相關(guān)技術(shù)的情況21.3 設(shè)計的意義2第二章 總體設(shè)計方案32.1 結(jié)構(gòu)設(shè)計32.2 本設(shè)計主要功能流程圖3第三章 硬件設(shè)計模塊53.1 單片機主控制模塊53.2 GSM短信收發(fā)模塊63.3 溫度顯示模塊83.4 矩陣鍵盤模塊103.5 步進(jìn)電機仿卷簾機模塊11第四章 軟件設(shè)計134.1 程序設(shè)計總流程圖134.2GSM短信模塊程序設(shè)計144.3 DS18B20程序設(shè)計164.4 1602液晶程序設(shè)計194.5矩陣鍵盤程序設(shè)計224.6步進(jìn)電機程序設(shè)計24第五章調(diào)試與總結(jié)275.1 調(diào)試275.2總結(jié)27致 謝29參
2、考文獻(xiàn)30附 錄31第一章 緒 論1.1 背景介紹2009年12月8日傍晚,福興地某村一位中年婦女到自家大棚上放草簾,由于沒有及時停住卷簾機,導(dǎo)致繩子在鐵桿上反纏,該婦女去拉繩子時,不慎被繩子纏住圍巾,最終被勒住頸部,當(dāng)場死亡。1.2 相關(guān)技術(shù)的情況目前使用的溫室大棚卷簾機是靠人工送電,以達(dá)到控制卷簾機升降的目的,存在著很大的安全隱患。卷簾機本是幫助人們干活的工具,可有時卻成了殺人工具,而且不管溫室中是否有勞動任務(wù),管理人員必須親自到溫室按動按鍵實現(xiàn)卷簾機的升降,浪費了時間。1.3 設(shè)計的意義本設(shè)計以發(fā)送短信的方式來控制卷簾機的升降,通過遠(yuǎn)程控制,就能實現(xiàn)卷簾機的自動升降,一方面可以有效的避免
3、類似上述情況的發(fā)生,另一方面可減輕管理人員的勞動強度,在溫室中沒有勞動任務(wù)的時候不必親自到溫室,僅僅為實現(xiàn)大棚簾子的升降,節(jié)省了時間。同時本設(shè)計外加其他功能,一方面能檢測室內(nèi)溫度,將溫度以短信的形式發(fā)給管理人員,使管理人員能夠及時準(zhǔn)確的了解溫室內(nèi)的溫度情況,及時實現(xiàn)對溫室大棚的通風(fēng),使作物獲得適宜的生長溫度,有利于作物的生長;另一功能就是當(dāng)室內(nèi)溫度過低時,卷簾機能夠自動放簾,以保證室內(nèi)基本恒溫,縮短蔬菜生長周期,使蔬菜提前上市,提高經(jīng)濟(jì)效益。第二章 總體設(shè)計方案溫室大棚卷簾機控制系統(tǒng)總體方案設(shè)計是根據(jù)其功能而設(shè)計的,從全局的角度,以系統(tǒng)的觀點而進(jìn)行整體方面的設(shè)計,主要由GSM短信收發(fā)模塊、溫度
4、顯示模塊、矩陣鍵盤設(shè)置模塊,步進(jìn)電機模擬卷簾機模塊等組成。2.1 結(jié)構(gòu)設(shè)計AT89S52單片機GSM短信收發(fā)模塊1602液晶顯示模塊按鍵設(shè)置模塊卷簾機升降控制溫度檢測模塊 (圖2-1 總體框架結(jié)構(gòu)圖)其中AT89S52單片機作為本系統(tǒng)的主控制模塊。按鍵設(shè)置模塊可設(shè)置最低報警溫度和管理人員手機號碼。GSM模塊中的短信內(nèi)容由單片機進(jìn)行判別,如讀到升起的指令,卷簾機往上卷,若為降指令,則往下卷。同時18B20溫度傳感器將檢測到的溫度傳輸?shù)絃CD顯示,溫度一旦低于設(shè)置的值,單片機發(fā)短信給GSM,提示管理人員降下簾子。2.2 本設(shè)計主要功能流程圖 (圖2-2 功能流程圖)小節(jié):本章對該設(shè)計的總體框架結(jié)構(gòu)
5、體系設(shè)計進(jìn)行了論述,并對該設(shè)計的功能通過流程圖的形式進(jìn)行了介紹,硬件及軟件模塊的設(shè)計分別在第三章、第四章給以介紹。第三章 硬件設(shè)計模塊溫室大棚卷簾機控制系統(tǒng)硬件模塊主要由單片機主控制模塊、GSM短信收發(fā)模塊、溫度顯示模塊、按鍵模塊、步進(jìn)電機仿卷簾機五大模塊組成。下面分別對五大模塊進(jìn)行分析。3.1 單片機主控制模塊 本模塊主要由單片機最小系統(tǒng)搭建而成,主要包括復(fù)位電路與時鐘電路兩大部分,這里單片機主要進(jìn)行計算,判斷,進(jìn)制轉(zhuǎn)換等一系列工作,也是整個系統(tǒng)中最關(guān)鍵的部分,下面具體介紹一下單片機主控制模塊的各個組成。3.1.1 AT89S52功能簡介AT89S52和AT89S51(如圖)基本是一樣的,S
6、52比S51多一個定時器,由于S52的定時器2不常用,故在此我們討論S51,它是一個低功耗,高性能CMOS 8位單片機,片內(nèi)含4k Bytes ISP(In-system programmable)的可反復(fù)擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲單元,功能強大的微型計算機的AT89S51可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價比的解決方案。AT89S51具有如下特點:40個引腳,4k Bytes Flash片內(nèi)程序存儲器,128 bytes
7、的隨機存取數(shù)據(jù)存儲器(RAM),32個外部雙向輸入/輸出(I/O)口,5個中斷優(yōu)先級2層中斷嵌套中斷,2個16位可編程定時計數(shù)器,2個全雙工串行通信口,看門狗(WDT)電路,片內(nèi)時鐘振蕩器。 ( 圖3-1-1 AT89S51引腳圖 ) 3.1.2 復(fù)位電路為確保單片機系統(tǒng)中電路穩(wěn)定可靠工作,復(fù)位電路是必不可少的部分,復(fù)位電路有上電自動復(fù)位和按鍵復(fù)位兩種,這里采用按鍵復(fù)位。其工作電路圖(3.1.2)。3.1.3 時鐘電路時鐘電路是單片機工作的心臟,它控制著單片機的工作節(jié)奏,單片機就是通過復(fù)雜的時序電路完成不同指令功能的。時鐘的工作電路圖如(3.1.3)。 ( 圖3-1-2 復(fù)位電路) ( 圖3-
8、1-3 時鐘電路)3.2 GSM短信收發(fā)模塊GSM短信收發(fā)的主要功能是收發(fā)短信,當(dāng)溫度低于設(shè)定的值時自動給管理人員發(fā)送短信,給以報警提示,同時接受管理人員回復(fù)的短信,通過單片機判斷短信內(nèi)容,控制卷簾機的升降。3.2.1 TC35模塊簡介 TC35是Siemens公司推出的新一代無線通信GSM模塊,可以快速安全可靠地實現(xiàn)系統(tǒng)方案中的數(shù)據(jù)、語音傳輸、短消息服務(wù)(Short Message Service)和傳真。模塊的工作電壓為3.3 5.5V,可以工作在900MHz和1800MHz兩個頻段,所在頻段功耗分別為2W(900M)和1W(1800M)。模塊有AT命令集接口,支持文本和PDU模式的短消息
9、、第三組的二類傳真、以及2.4k,4.8k,9.6k的非透明模式。此外,該模塊還具有電話簿功能、多方通話,漫游檢測功能,常用工作模式有省電模式、IDLE、TALK等模式。通過獨特的40引腳的ZIF連接器,實現(xiàn)電源連接、指令、數(shù)據(jù)、語音信號、及控制信號的雙向傳輸。通過 ZIF連接器及50天線連接器,可分別連接SIM卡支架和天線。3.2.2 TC35引腳極其用法簡介TC35有40個引腳,114引腳為電源部分,其中l(wèi)5引腳為電源電壓輸入端VBATT+610引腳為電源地GND,ll12引腳為充電端,13引腳為對外輸出電壓(供外部電路使用),2429引腳為SIM卡連接端;3340引腳為語音接口用來接電話
10、手柄。15、30、31和32引腳為控制部分,15引腳為啟動線IGT(Ignition)。當(dāng)TC35通電后必須給IGT一個大于100 mV的低電平,模塊才能啟動。30引腳為RTC BACK up;31引腳為掉電控制;32引腳為SYNC,1623引腳為數(shù)據(jù)輸入輸出端。啟動電路由漏極開路三極管控制。在這里,著重介紹下SYNC引腳,因為該引腳可以很好的反映TC35的工作狀態(tài)。SYNC引腳可以用來輸出一個同步信號(synchronization signal),也可以在應(yīng)用時來控制一個LED燈的輸出狀態(tài)。SYNC端通過一個三極管或門電路來控制LED。一個簡單的電路接法是:SYNC端通過一電阻接
11、到NPN三極管(如9013)的基極,射極直接接地,集電極通過一個接限流電阻接到LED的負(fù)端,LED的正端接VCC。LED的工作模式完全類同于同步信號,顯示的是TC35的工作狀態(tài):【1】LED燈滅,表示TC35電源關(guān)閉,處于休眠、報警或單純的充電模式 【2】600 ms 亮 / 600ms 滅,表示未插入SIM卡,或者個人身份未登記/已注銷,或者網(wǎng)絡(luò)正在搜尋中,或者正在進(jìn)行管理人員身份鑒定,或者網(wǎng)絡(luò)注冊正在進(jìn)行中 【3】75ms 亮 / 3s 滅,表示網(wǎng)絡(luò)注冊成功(控制通道和管理人員交換
12、信息完成),無來電 【4】LED燈亮,依據(jù)不同的呼叫類型:聲音呼叫,數(shù)據(jù)呼叫,在建立或者完畢時的狀態(tài)。3.3 溫度顯示模塊本模塊主要通過DS18B20溫度傳感器采集室內(nèi)溫度,將實時溫度顯示在LCD液晶上,并且當(dāng)溫度低于設(shè)定溫度時,將溫度值發(fā)送給管理人員,讓管理人員知道溫室內(nèi)溫度變化。 3.3.1 DS18B20溫度傳感器(1)DS18B20溫度傳感器簡介DS18B20溫度傳感器是美國DALLAS半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據(jù)實際要求通過簡單的編程實現(xiàn)912位的數(shù)字值讀數(shù)方式獨特的單線接口僅需要一個端口引腳
13、進(jìn)行通信;多個DS18B20可以并聯(lián)在惟一的三線上,實現(xiàn)多點組網(wǎng)功能;無須外部器件;可通過數(shù)據(jù)線供電,電壓范圍為3.05.5V;零待機功耗。零待機功耗;溫度以或位數(shù)字;管理人員可定義報警設(shè)置;報警搜索命令識別并標(biāo)志超過程序限定溫度(溫度報警條件)的器件;負(fù)電壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作。 (2) 溫度檢測電路 溫度檢測采用數(shù)字溫度計DS18B20。如圖(3.3.1) (圖 3-3-1)3.3.2 1602字符型LCD液晶屏(1) LCD簡介字符型液晶顯示模塊是一種專門用于顯示字母、數(shù)字、符號等點陣式LCD,目前常用16*1,16*2,20*2和40*2行等的模
14、塊。本次設(shè)計選用的是長沙太陽人電子有限公司的1602字符型液晶顯示器,下面介紹其用法。一般1602字符型液晶顯示器實物如圖3-3-2-1: (圖3-3-2-1)引腳功能說明1602LCD采用標(biāo)準(zhǔn)的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如下:第1腳:VSS為地電源。第2腳:VDD接5V正電源。第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度。第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。第5腳:R/W為讀寫信號線,高電平時進(jìn)行讀操作,低電平時進(jìn)行寫操作。
15、當(dāng)RS和R/W共同為低電平時可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時可以讀忙信號,當(dāng)RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。第714腳:D0D7為8位雙向數(shù)據(jù)線。第15腳:背光源正極。第16腳:背光源負(fù)極。(2) LCD顯示電路本設(shè)計液晶顯示模塊的設(shè)計如下圖(3-3-2-2)所示,該電路實現(xiàn)的功能是:通過AT89S52的P00P07八個口輸出控制信號,控制液晶的8位雙向數(shù)據(jù)線,通過單片機的P2.0、P2.1、P2.2向液晶模塊發(fā)送命令,控制液晶執(zhí)行各種命令,其中P2.2控制液晶的使能端,當(dāng)E端由高電平跳變成
16、低電平時,液晶模塊執(zhí)行命令,P2.1控制液晶模塊的讀寫,高電平時進(jìn)行讀操作,低電平時進(jìn)行寫操作。當(dāng)P2.0和P2.1共同為低電平時可以寫入指令或者顯示地址,當(dāng)P2.0為低電平P2.1為高電平時可以讀忙信號,當(dāng)P2.0為高電平P2.1為低電平時可以寫入數(shù)據(jù),P2.0控制寄存器的選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。 (圖3-3-2-2)3.4 矩陣鍵盤模塊矩陣鍵盤主要用來對最低溫度和管理人員手機號碼的設(shè)置,可以隨時改變數(shù)值,更符合實際生產(chǎn)的要求。3.4.1 4×4矩陣鍵盤的工作原理矩陣鍵盤又稱為行列式鍵盤,它是用4條I/O線作為行線,4條I/O線作為列線組成的鍵盤。在行
17、線和列線的每一個交叉點上,設(shè)置一個按鍵。這樣鍵盤中按鍵的個數(shù)是4×4個。這種行列式鍵盤結(jié)構(gòu)能夠有效地提高單片機系統(tǒng)中I/O口的利用率。3.4.2 鍵盤電路設(shè)計矩陣鍵盤引腳接法及其電路圖3-4-2: (圖3-4-2)3.5 步進(jìn)電機仿卷簾機模塊現(xiàn)實生活中本模塊是卷簾機控制,卷簾機主要由直流電機和減速器組成。本設(shè)計用二相四線步進(jìn)電機模擬卷簾機的升降。3.5.1 步進(jìn)電機的工作原理步進(jìn)電機是一種將電脈沖轉(zhuǎn)化為角位移的執(zhí)行機構(gòu)。當(dāng)步進(jìn)驅(qū)動器接收到一個脈沖信號,它就驅(qū)動步進(jìn)電機按設(shè)定的方向轉(zhuǎn)動一個固定的角度(稱為“步距角”),它的旋轉(zhuǎn)是以固定的角度一步一步運行的??梢酝ㄟ^控制脈沖個數(shù)來控制角位
18、移量,從而達(dá)到準(zhǔn)確定位的目的,同時可以通過控制脈沖頻率來控制電機轉(zhuǎn)動的速度和加速度,從而達(dá)到調(diào)速的目的。步進(jìn)電機可以作為一種控制用的特種電機,利用其沒有積累誤差(精度為100%)的特點,廣泛應(yīng)用于各種開環(huán)控制。 現(xiàn)在比較常用的步進(jìn)電機包括反應(yīng)式步進(jìn)電機(VR)、永磁式步進(jìn)電機(PM)、混合式步進(jìn)電機(HB)和單相式步進(jìn)電機等。3.5.2 步進(jìn)電機模擬卷簾機的設(shè)計本設(shè)計步進(jìn)電機及驅(qū)動器模塊設(shè)計的電路如圖所示,VCC接12V電源,GND接地,A+、A-,B+、B-分別連接步進(jìn)電機的四根接線,CP+、CP-、CW+、CW-分別連接單片機P10P13口。該電路實現(xiàn)的功能是:通過AT89S51的P10、
19、P11、P12、P13四個口輸出四個信號, 其中P10、P12口輸出控制水平方向和垂直方向脈沖的個數(shù),即兩個方向上的位移量;P11、P13口控制步進(jìn)電機的轉(zhuǎn)動方向,即正反轉(zhuǎn)??刂七^程為:單片機接受鍵盤傳來的信號,通過P1的四個口輸出控制信號,通過硬件接線,發(fā)送到步進(jìn)電機的驅(qū)動器,通過驅(qū)動器控制步進(jìn)電機的轉(zhuǎn)向和轉(zhuǎn)角。當(dāng)然,其中還包括單片機的內(nèi)部振蕩電路,驅(qū)動器匹配的電路等的設(shè)計。(圖3-5-2) 步進(jìn)電機及驅(qū)動器模塊設(shè)計電路圖引腳功能說明P10、P12(1、3腳):接步進(jìn)驅(qū)動器,傳遞脈沖個數(shù);P11、P13(2、4腳):控制電機的轉(zhuǎn)動方向;小節(jié):本章節(jié)對單片機主控制模塊、GSM短信收發(fā)模塊、溫度
20、顯示模塊、按鍵模塊、步進(jìn)電機仿卷簾機模塊分別進(jìn)行了介紹,里面對各模塊的重點,難點及注意點進(jìn)行了很仔細(xì)的分析與講解。第四章 軟件設(shè)計溫室大棚卷簾機控制系統(tǒng)軟件設(shè)計主要由GSM短信模塊程序設(shè)計,DS18B20程序設(shè)計,1602液晶程序設(shè)計,矩陣鍵盤程序設(shè)計及步進(jìn)電機程序組成。每一模塊都是先單獨調(diào)試,最后整體調(diào)試的。下面分別介紹一下各模塊的程序設(shè)計過程及注意點。4.1 程序設(shè)計總流程圖 (圖4-1 功能流程圖)4.2 GSM短信模塊程序設(shè)計 GSM模塊與手機之間的通信協(xié)議是一些AT指令集,AT指令是以AT作首,字符結(jié)束的字符串,AT指令的響應(yīng)數(shù)據(jù)包在中。每個指令執(zhí)行成功與否都有相應(yīng)的返回。所以本模塊
21、的程序設(shè)計主要以發(fā)送AT指令為著手點。用AT命令設(shè)置TC35的參數(shù)時,必須先要將命令寫入串口,然后通過讀取串口的應(yīng)答數(shù)據(jù)來判斷是否成功。一般AT命令發(fā)送成功時,會返回數(shù)據(jù)“OK",表示AT命令執(zhí)行成功。在短消息模塊設(shè)計的過程中,對于TC35的相關(guān)參數(shù)要進(jìn)行設(shè)置。具體應(yīng)用到的AT指令如下: (1)設(shè)置發(fā)送模式短消息收發(fā)時,必須要用AT命令設(shè)置TC35的發(fā)送和接收模式。在收發(fā)短消息時,必須按照設(shè)置的模式對發(fā)送和接收的數(shù)據(jù)進(jìn)行相應(yīng)編碼和解碼。其中,設(shè)置PDU模式的命令為“AT+CMGF=1 回車“。(2)設(shè)置服務(wù)中心號碼根據(jù)前面介紹短消息收發(fā)技術(shù)原理,短消息的傳輸總是由處于GSM外部的短消
22、息服務(wù)中心進(jìn)行中繼。每個消息有自己的目的地或起源地,但只與用戶和SMSC有關(guān),因此要根據(jù)SIM卡的營運商設(shè)置相應(yīng)的服務(wù)中心。如設(shè)置徐州聯(lián)通公司服務(wù)中心的命令是, “AT+CSCA=008613010350500 回車“。(3)短消息發(fā)送在短消息發(fā)送時,使用以下命令將短信發(fā)出去:atcmgf1 回車atcsmp17,167,0,0 回車atcscsgsm 回車atcmgs手機號碼 回車輸入短信內(nèi)容text格式 (注:“ ” ASCII值為26,即1AH ) 發(fā)送短信子程序如下:;=;發(fā)送短信程序;=MAIN: MOV SP,#53H ;設(shè)置堆棧指針 MOV 78H,#20H ;設(shè)置要發(fā)送的數(shù)據(jù)塊
23、的首末地址 MOV 77H,#00H MOV 76H,#20H MOV 75H,#40H ACALL TRANS ;調(diào)用發(fā)送子程序 SJMP $TRANS: MOV SBUF ,78H ;發(fā)送地址高8位WAT1: JNB TI,WAT1 CLR TI MOV SBUF ,77H ;發(fā)送地址低8位WAT2: JNB TI,WAT2 CLR TI MOV SBUF ,76H ;發(fā)送地址高8位WAT3: JNB TI,WAT3 CLR TI MOV SBUF ,75H ;發(fā)送地址低8位WAT4: JNB TI,WAT4 CLR TI MOV IE,#90H ;打開中斷允許寄存器,采用中斷方式發(fā)送數(shù)據(jù)
24、 MOV DPH,78H MOV DPL,77H MOVX A,DPTR MOV SBUF,A ;發(fā)送首個數(shù)據(jù)WAIT: JNB F0,WAIT RETCOM_INT: CLR TI ;關(guān)發(fā)送中斷標(biāo)志位TI INC DPTR ;數(shù)據(jù)指針加1,準(zhǔn)備發(fā)送下一個數(shù)據(jù) MOV A,DPH ;判斷當(dāng)前被發(fā)送的數(shù)據(jù)地址是不是末地址 CJNE A,76H,END1 ;不是末地址則跳轉(zhuǎn) MOV A,DPL CJNE A,75H,END1 SETE FO ;數(shù)據(jù)發(fā)送完畢,置1標(biāo)志位 CLR ES ;關(guān)串行口中斷 CLR EA ;關(guān)中斷RETI ;中斷返回END1: MOVX A,DPTR ;將要發(fā)送的數(shù)據(jù)送累加
25、器,準(zhǔn)備發(fā)送 MOV SBUF,A ;發(fā)送數(shù)據(jù) RETI ;中斷返回4.3 DS18B20程序設(shè)計DS18B20溫度傳感器是DALLAS公司生產(chǎn)的單總線器件,在一根線上進(jìn)行全部的信息傳輸,因為硬件簡單,所以軟件設(shè)計相對麻煩,對時序掌控精度要求較高。4.3.1 寫18B20程序設(shè)計主機要生存一個寫時間隙,必須把數(shù)據(jù)線拉低到低電平然后釋放,寫時間間隙開始后的15us內(nèi)允許數(shù)據(jù)線拉倒高電平。主機要生成一個寫0間隙,必須把數(shù)據(jù)線拉低電平并保持60us,如圖4.3.1所示。(圖4-3-1 DS18B20寫時序圖)寫18b20子程序的匯編程序如下:;=;寫DS18B20的子程序(有具體的時序要求);=WR
26、ITE_1820: MOV R2,#8;一共8位數(shù)據(jù) CLR CWR1: CLR DQ MOV R3, #6 DJNZ R3, $ RRC A MOV DQ, C MOV R3,#23 DJNZ R3,$ SETB DQ NOP DJNZ R2,WR1 SETB DQ RET4.3.2 讀18B20程序設(shè)計主機生成讀時間間隙,從ds18b20輸出的數(shù)據(jù)在讀間隙的下降沿出現(xiàn)的15us內(nèi)有效,因此主機停止I/O口的操作,以讀取I/O口的值,如圖4.3.2所示。(圖4-3-2 DS18B20讀時序圖)讀18b20子程序的匯編程序如下:;=; 讀DS18B20的程序;=READ_18200: MOVR
27、4,#2 ;將溫度高位和低位從DS18B20中讀出MOV R1,#TEMPER_L ;低位存入TEMPER_L(TEMPER_L); 高位存入(TEMPER_H)RE00: MOVR2,#8 ;數(shù)據(jù)一共有8位RE01: CLRC SETBDQ NOP NOP CLRDQ NOP NOPNOPSETBDQMOVR3,#9RE10: DJNZ R3,RE10 MOVC,DQ MOVR3,#23RE20: DJNZR3,RE20 RRCA DJNZR2,RE01 MOVR1,A DECR1 DJNZR4,RE00 RET 單線總線的空閑狀態(tài)是高電平。無論任何理由需要暫停某一執(zhí)行過程時,如果還想恢復(fù)執(zhí)
28、行的話,總線必須停留在空閑狀態(tài)。在恢復(fù)期間,如果單線總線處于非活動(高電平)狀態(tài),位與位間的回復(fù)時間可以無限長。如果總線停留在低電平超過480us,總線上所有的器件都將復(fù)位。執(zhí)行序列通過單線總線端口訪問DS18B20的協(xié)議流程圖如下:(圖 4-3-2 協(xié)議流程圖 )4.4 1602液晶程序設(shè)計液晶顯示模塊是一個慢顯示器件,所以在執(zhí)行每條指令之前一定要確認(rèn)模塊的忙標(biāo)志為低電平,表示不忙,否則此指令失效。要顯示字符時要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符,圖4.4是1602的內(nèi)部顯示地址。(圖4-4 1602LCD內(nèi)部顯示地址)例如第二行第一個字符的地址是40H,那么是否直接寫入40H
29、就可以將光標(biāo)定位在第二行第一個字符的位置呢?這樣不行,因為寫入顯示地址時要求最高位D7恒定為高電平1所以實際寫入的數(shù)據(jù)應(yīng)該是01000000B(40H)+10000000B(80H)=11000000B(C0H)。4.4.1 1602 初始化的程序設(shè)計在對液晶模塊的初始化中要先設(shè)置其顯示模式,在液晶模塊顯示字符時光標(biāo)是自動右移的,無需人工干預(yù)。每次輸入指令前都要判斷液晶模塊是否處于忙的狀態(tài)。1602LCD的一般初始化(復(fù)位)過程延時15mS寫指令38H(不檢測忙信號)延時5mS寫指令38H(不檢測忙信號)延時5mS寫指令38H(不檢測忙信號)以后每次寫指令、讀/寫數(shù)據(jù)操作均需要檢測忙信號寫指令
30、38H:顯示模式設(shè)置寫指令08H:顯示關(guān)閉寫指令01H:顯示清屏寫指令06H:顯示光標(biāo)移動設(shè)置寫指令0CH:顯示開及光標(biāo)設(shè)置液晶初始化程序:;=; 初始化;=INIT: MOV A,#38H ;#38H->A LCALL WIR ;調(diào)寫IR子程序 MOV A,#0EH ;#0EH->A (顯示開,光標(biāo)開,光標(biāo)閃爍) LCALL WIR ;調(diào)寫IR子程序 MOV A,#06H ;#06H->A LCALL R ;調(diào)寫IR子程序 RET ;返回4.4.2 1602 寫指令與數(shù)據(jù)的程序設(shè)計因為本設(shè)計是顯示溫度值,所以不要讀數(shù)據(jù),只需寫入指令與數(shù)據(jù)即可。下面著重介紹一下1602寫指令
31、及數(shù)據(jù)的時序特點;如圖 4-4-2 是1602寫操作時序 (圖 4-4-2 時序圖)按照圖4.4.2時序?qū)懼噶罴皵?shù)據(jù)程序如下:;=; 寫指令;=WIR: ACALL CKLCD ;調(diào)查空閑子程序 CLR E ;E 清 0 CLR RS ;RS 清 0 CLR RW ;RW 清 0 SETB E ;E 置 1 MOV P0,A ;A->P0 CLR E ;E 清 0 RET ;返回;=; 寫數(shù)據(jù);=WDR: ACALL CKLCD ;調(diào)查空閑子程序 CLR E ;E 清 0 SETB RS ;RS 置 1 CLR RW ;RW 清 0 SETB E ;E 置 1 MOV P0,A ;A-&
32、gt;P0 CLR E ;E 清 0 RET ;返回4.5 矩陣鍵盤程序設(shè)計矩陣鍵盤又稱為行列式鍵盤,它是用4條I/O線作為行線,4條I/O線作為列線組成的鍵盤。本模塊設(shè)計是先讀取鍵盤的狀態(tài),然后得到按鍵的特征編碼,再而讓液晶顯示。下面介紹一下鍵盤掃描的過程。先從P2口的高四位輸出低電平,低四位輸出高電平,從P2口的低四位讀取鍵盤狀態(tài)。再從P2口的低四位輸出低電平,高四位輸出高電平,從P2口的高四位讀取鍵盤狀態(tài)。將兩次讀取結(jié)果組合起來就可以得到當(dāng)前按鍵的特征編碼。使用上述方法我們得到16個鍵的特征編碼。舉例說明如何得到按鍵的特征編碼:假設(shè)“1”鍵被按下,找其按鍵的特征編碼。從P2口的高四位輸出
33、低電平,即P2.4P2.7為輸出口。低四位輸出高電平,即P2.0P2.3為輸入口。讀P2口的低四位狀態(tài)為“ 1101”,其值為“0DH”。再從P2口的高四位輸出高電平,即P2.4P2.7為輸入口。低四位輸出低電平,即P2.0P2.3為輸出口,讀P2口的高四位狀態(tài)為“1110”,其值為“E0H”。將兩次讀出的P2口狀態(tài)值進(jìn)行邏輯或運算就得到其按鍵的特征編碼為“EDH”。用同樣的方法可以得到其它15個按鍵的特征編碼。;=; 按鍵掃描子程序;=KEY_SCAN: ;識別鍵盤有無鍵按下子程序 MOV P2,#0F0H ;置列線為0,行線為1 MOV A,P2 ;讀P2口 ANL A,#0F0H ;取出
34、高四位 MOV B,A ;暫存到B MOV P2,#0FH ;置列線為1,行線為0 MOV A,P2 ;讀P1口 ANL A,#0FH ;取出低四位 ORL A,B ;高四位與低四位邏輯或運算重新組合 CJNE A,#0FFH,KEY_IN1 ;0FFH為無按鍵按下 RETKEY_IN1: ;識別具體按鍵值子程序 MOV B,A ;將按鍵的特征編碼暫存于B MOV DPTR,#KEYTABLE MOV R3,#0FFH KEY_IN2: INC R3 ;順序碼加1 MOV A,R3 MOVC A,A+DPTR ;查表 CJNE A,B,KEY_IN3 ;比較,若相同則找到按鍵的特征編碼。 MO
35、V A,R3 ;找到特征編碼后,取順序碼 MOV 30H,A ;存入30H單元 RETKEY_IN3: CJNE A,#00H,KEY_IN2 ;末完,繼續(xù)查 RET ;00H為結(jié)束碼KEY_TABLE: DB 0EEH,0EDH,0EBH,0E7H,0DEH ;0,1,2,3,4, 順序碼 DB 0DDH,0DBH,0D7H,0BEH,0BDH ;5,6,7,8,9, 順序碼 DB 0BBH,0B7H,07EH,07DH,07BH, 077H ;A,B,C,D,E,F 順序碼 DB 00H ; 結(jié)束碼4.6 步進(jìn)電機程序設(shè)計步進(jìn)電機是一種將電脈沖轉(zhuǎn)化為角位移的執(zhí)行機構(gòu)。通俗一點講:當(dāng)步進(jìn)驅(qū)動
36、器接收到一個脈沖信號,它就驅(qū)動步進(jìn)電機按設(shè)定的方向轉(zhuǎn)動一個固定的角度(及步進(jìn)角)??梢酝ㄟ^控制脈沖個數(shù)來控制角位移量,從而達(dá)到準(zhǔn)確定位的目的;同時還可以通過控制脈沖頻率來控制電機轉(zhuǎn)動的速度和加速度,從而達(dá)到調(diào)速的目的。所以在軟件編寫時一定要注意步進(jìn)電機時序的變化,時序圖如圖(4-6)(圖 4-6 步進(jìn)電機時序圖);=; 步進(jìn)電機子程序;=MOTO: MOV SP,50HSTOP: MOV P1,#0FFH ;步進(jìn)電機停轉(zhuǎn)LOOP: JNB K1,MZZ2 ;是否K1按下,是則轉(zhuǎn)正轉(zhuǎn)模塊 JNB K2,MFZ2 ;是否K2按下,是則轉(zhuǎn)反轉(zhuǎn)模塊 JNB K3,STOP1 ;是否K3按下,是則轉(zhuǎn)步進(jìn)
37、電機停轉(zhuǎn) JMP LOOP ;循環(huán)STOP1: ACALL DELAY ;按K3鍵,消除抖動 JNB K3,$ ;K3放開否? ACALL DELAY ; 放開消除抖動 JMP STOP ; 步進(jìn)電機停轉(zhuǎn)MZZ2: ACALL DELAY ;按K1鍵,消除抖動 JNB K1,$ ;K1放開否? ACALL DELAY ; 放開消除抖動 JMP MZZ ; 轉(zhuǎn)步進(jìn)電機正轉(zhuǎn)模塊MFZ2: ACALL DELAY ;按K2鍵,消除抖動 JNB K2,$ ;K2放開否? ACALL DELAY ; 放開消除抖動 JMP MFZ ; 轉(zhuǎn)步進(jìn)電機反轉(zhuǎn)模塊MZZ: MOV R0,#00H ;置表初值MZZ1
38、: MOV A,R0 MOV DPTR,#TABLE ;表指針 MOVC A,A+DPTR ;取表代碼 JZ MZZ ;是否取到結(jié)束碼? MOV P1,A ;從P1輸出,正轉(zhuǎn) JNB K3,STOP1 ; 是否K3按下,是則轉(zhuǎn)步進(jìn)電機停轉(zhuǎn) JNB K2,MFZ2 ; 是否K2按下,是則轉(zhuǎn)反轉(zhuǎn)模塊 ACALL DELAY ; 步進(jìn)電機轉(zhuǎn)速 INC R0 ;取下一個碼 JMP MZZ1 RETMFZ: MOV R0,#05 ; 反轉(zhuǎn)到TABLE表初值MFZ1: MOV A,R0 MOV DPTR,#TABLE ;表指針 MOVC A,A+DPTR ;取表代碼 JZ MFZ ;是否取到結(jié)束碼? MO
39、V P1,A ;從P1輸出,反轉(zhuǎn) JNB K3,STOP1 ; 是否K3按下,是則轉(zhuǎn)步進(jìn)電機停轉(zhuǎn) JNB K1,MZZ2 ; 是否K1按下,是則轉(zhuǎn)正轉(zhuǎn)模塊 ACALL DELAY ; 步進(jìn)電機轉(zhuǎn)速 INC R0 ;取下一個碼 JMP MFZ1 RETTABLE: DB 0F1H,0F3H,0F2H,0F6H; ;正轉(zhuǎn) DB 0F4H,0FCH,0F8H,0F9H; DB 00H ; ;正轉(zhuǎn)結(jié)束碼 DB 0F1H,0F9H,0F8H,0FCH; ;反轉(zhuǎn) DB 0F4H,0F6H,0F2H,0F3H; DB 00H; ;反轉(zhuǎn)結(jié)束碼小節(jié):本章節(jié)對各模塊的軟件編程進(jìn)行了介紹,其中很詳細(xì)的分析了各模塊的
40、時序,將時序與程序一一對應(yīng)著分析了模塊的工作過程。第五章 調(diào)試與總結(jié)5.1 調(diào)試單片機系統(tǒng)的軟件調(diào)試與硬件調(diào)試是分不開的,許多硬件錯誤是在軟件調(diào)試中被發(fā)現(xiàn)和糾正的,但是硬件調(diào)試是基礎(chǔ),若硬件調(diào)試不過關(guān),軟件調(diào)試無從談起,所以我是先排除明顯的硬件錯誤,然后再軟硬兼顧,逐步排除錯誤。本設(shè)計主要有GSM短信收發(fā)模塊、溫度顯示模塊、按鍵設(shè)置模塊,步進(jìn)電機模擬卷簾機模塊,我是對上述模塊分別測試,然后再組裝起來的,同樣程序也是如此,這樣便于問題的查找和以后的維護(hù)。下面講述一下我調(diào)試過程中遇到的比較苦惱的問題:(1)GSM模塊設(shè)計時主要遇到的問題是無法啟動,按照TC35的中文說明接線,反復(fù)實驗,還是無法達(dá)到
41、75ms 亮 / 3s 滅的啟動效果,最后還是看英文資料,才知道是電壓的問題,雖然在這一模塊設(shè)計時花了很多時間,走了不少彎路,可是也從中學(xué)到不少東西。(2)溫度顯示模塊最主要的問題是DS18B20和1602的時序(具體時序極其程序已第四章中仔細(xì)講解),一定要嚴(yán)格按照它們的時序來編寫,不然一定會出錯。(3)按鍵設(shè)置模塊是一個穩(wěn)定性的問題,你按下一個按鍵,液晶屏上有時不顯示任何數(shù)字,有時一下子會顯示兩三個數(shù)字,原因在于我沒加消除抖動的指令,經(jīng)修改之后,穩(wěn)定性相對來說大大提高。5.2 總結(jié)此設(shè)計是本人設(shè)計的最復(fù)雜的一個項目,思路源于生活,特別具有實用價值。這也是第一次嘗試將多個獨立的模塊集成在一起,實現(xiàn)一個整體的功能,對我來說是一次極大的挑戰(zhàn),也是一次極佳的鍛煉機會。最后同大家分享一下我編寫程序時的一些經(jīng)驗。首先程序要分割編寫,對于一個大的軟件開發(fā),如果不分割編寫,實現(xiàn)的難度在設(shè)計初期表現(xiàn)并不明
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 合同范本咨詢電話
- 小門店合伙合同范本
- 廠房柱子出售合同范本
- 半掛車購車合同范本
- 合伙健身創(chuàng)業(yè)合同范本
- 辦公供貨合同范本
- 產(chǎn)后修復(fù)項目合同范本
- 凈化車間保養(yǎng)合同范本
- 合同范本 logo位置
- 合同范本編制能力
- 兆歐表的使用課稿
- 自然辯證法概論-第4章(2018新大綱)
- 第四課探索認(rèn)識的奧秘(導(dǎo)學(xué)案)- 高中政治統(tǒng)編版必修四 哲學(xué)與文化
- 讀書分享小巴掌童話PPT
- 正常人體結(jié)構(gòu)題庫(含答案)
- 液氨儲罐安全操作規(guī)程
- 郵輪面試英語PPT完整全套教學(xué)課件
- 保險銷售代理人個人月工作計劃
- 現(xiàn)代文學(xué)-《為奴隸的母親》課件
- 站內(nèi)軌道電路電碼化課件2
- 破碎機械設(shè)備
評論
0/150
提交評論