畢業(yè)論文基于單片機(jī)教室忙閑顯示系統(tǒng)的畢業(yè)設(shè)計畢業(yè)論文_第1頁
畢業(yè)論文基于單片機(jī)教室忙閑顯示系統(tǒng)的畢業(yè)設(shè)計畢業(yè)論文_第2頁
畢業(yè)論文基于單片機(jī)教室忙閑顯示系統(tǒng)的畢業(yè)設(shè)計畢業(yè)論文_第3頁
畢業(yè)論文基于單片機(jī)教室忙閑顯示系統(tǒng)的畢業(yè)設(shè)計畢業(yè)論文_第4頁
畢業(yè)論文基于單片機(jī)教室忙閑顯示系統(tǒng)的畢業(yè)設(shè)計畢業(yè)論文_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、吉 林 農(nóng) 業(yè) 大 學(xué)本 科 畢 業(yè) 設(shè) 計論文題目: 綜合樓教室忙閑顯示系統(tǒng) 學(xué)生姓名: 專業(yè)年級: 電子信息科學(xué)與技術(shù) 指導(dǎo)教師: 職稱 講師 2008年6月3日i 目 錄題目i摘要i1 前言11.1 題目的來源與開發(fā)意義11.2 系統(tǒng)功能概述12 方案的提出及論證13 系統(tǒng)硬件設(shè)計23.1 系統(tǒng)硬件總體設(shè)計概述23.2 系統(tǒng)各個模塊的設(shè)計23.2.1 教室狀態(tài)顯示模塊23.2.2 時間顯示模塊33.2.3 按鍵模塊33.3 芯片介紹43.3.1 at89c51單片機(jī)的簡介43.3.2 ds1302時鐘93.3.3 8位串入/并出移位寄存器74hc164124 系統(tǒng)軟件設(shè)計134.1 系統(tǒng)

2、軟件總體設(shè)計思想134.2 keil開發(fā)軟件的介紹144.2.1 keil 軟件開發(fā)的流程154.2.2 keil軟件的使用154.3 各功能模塊程序設(shè)計174.3.1 數(shù)據(jù)模塊174.3.2 時鐘模塊204.3.3 功能模塊245 系統(tǒng)調(diào)試315.1 硬件電路調(diào)試315.2 各功能模塊軟件調(diào)試316 結(jié)論31參考文獻(xiàn)31致謝32附錄一:系統(tǒng)總體硬件原理圖33附錄二:系統(tǒng)程序流程圖34附錄三:系統(tǒng)程序37吉林農(nóng)業(yè)大學(xué)本科畢業(yè)設(shè)計綜合樓教室忙閑狀態(tài)顯示系統(tǒng) 學(xué) 生:左 晨 專 業(yè):電子信息科學(xué)與技術(shù) 指導(dǎo)教師:宮鶴摘 要:本設(shè)計實現(xiàn)了綜合樓教室忙閑狀態(tài)顯示的功能。綜合樓教室忙閑顯示系統(tǒng)是建立在單

3、片機(jī)的基礎(chǔ)上的電子監(jiān)控系統(tǒng),它主要是用來查詢和顯示綜合樓各個教室在某一時間段的忙閑狀態(tài),顯示當(dāng)前年月日等等。信息存儲調(diào)用系統(tǒng)是綜合樓教室忙閑狀態(tài)顯示系統(tǒng)中非常重要的一部分,而時鐘又是時間系統(tǒng)必不可少的。本設(shè)計就是以信息存儲調(diào)用系統(tǒng)和時鐘系統(tǒng)作為研究對象,主要介紹了信息存儲的基本概念,時鐘設(shè)置和編程的基本步驟等等,信息存儲系統(tǒng)是在c+環(huán)境下進(jìn)行串行通信編程的。我們這次研究的信息存儲系統(tǒng)是為了實現(xiàn)綜合樓各個教室信息的存儲,數(shù)據(jù)的調(diào)用。通過寫入程序來實現(xiàn)存儲和調(diào)出查詢功能,存儲系統(tǒng)和時間系統(tǒng)緊密結(jié)合,把從存儲調(diào)出的數(shù)據(jù)經(jīng)過對比分析,最后顯示出所需要的數(shù)據(jù),可以實現(xiàn)對數(shù)據(jù)庫的更新。另外,數(shù)據(jù)還包括對時

4、間的查詢。通過時間的查詢獲得相應(yīng)時間教室的狀態(tài)信息。存儲系統(tǒng)和時鐘系統(tǒng)的有效結(jié)合,使系統(tǒng)工作更加準(zhǔn)確。關(guān)鍵詞: 存儲系統(tǒng);單片機(jī);c+;時鐘系統(tǒng)comprehensive building blassroom busy idle condition display systemname:zuochenmajor:electronic information science and technologytutor:gongheabstract: this design has realized the synthesis building classroom busy idle conditio

5、n demonstration function. the comprehensive building classroom busy idle display systems are the establishment in scm's foundation electron supervisory system, it is mainly uses for to inquire and demonstration synthesis building each classroom in some time section busy idle condition, demonstra

6、tion current year, month and day and so on. the information storage transfer system synthesizes in the building classroom busy idle condition display system a very important part, but the clock is also the time system is essential. this design is takes the object of study by the information storage

7、transfer system and the clock system, mainly introduced information storage's basic concept, clock establishment and programming basic step and so on, the information storage systems are carry on the serial communication programming under the c+ environment. our research's information storag

8、e system is to realize the synthesis building each classroom information memory, the data transfer. through reads in the procedure to realize saves and assigns out the inquiry function, the memory system and the time system unifies closely, data which assigns out from the memory after contrastive an

9、alysis, finally demonstrated needs the data, may realize to the database renewal. moreover, the data also includes to the time inquiry. obtains the corresponding time classroom the pass time passage period inquiry the status messages. the memory system and clock system's effective union, causes

10、the system work to be more accurate.keywords: memory system;scm;c+;clock system 48 1前言1.1 題目的來源與開發(fā)意義自20世紀(jì)90年代以來,單片機(jī)已進(jìn)入了一個高速發(fā)展的階段,世界上著名的半導(dǎo)體廠商都注重新型單片機(jī)的研制、生產(chǎn)和推廣。單片機(jī)的應(yīng)用已經(jīng)深入到國民經(jīng)濟(jì)的各個領(lǐng)域中,由單片機(jī)控制的微型電腦產(chǎn)品比比皆是。單片機(jī)正朝著面向多層次用戶的多品種多規(guī)格方向發(fā)展。隨著電子技術(shù)的發(fā)展, 現(xiàn)在的忙閑顯示系統(tǒng)功能越來越強(qiáng), 可靠性和準(zhǔn)確性的要求也越來越高。以前的忙閑顯示系統(tǒng)大部分都是基于數(shù)字電路組成的,其功能比較單一,使

11、用起來也不夠理想,制作過程復(fù)雜, 而且準(zhǔn)確性與可靠性不高, 成品面積大, 安裝, 維護(hù)困難。由于近年來單片機(jī)發(fā)展迅速, 逐漸出現(xiàn)用單片機(jī)制作忙閑顯示系統(tǒng), 制作過程簡單, 而且安裝, 維護(hù)簡單。綜合樓教室空閑狀態(tài)顯示系統(tǒng)主要是由存儲系統(tǒng)、時鐘系統(tǒng)和顯示系統(tǒng)三部分組成。本次畢業(yè)設(shè)計,我主要研究的是存儲系統(tǒng)和顯示系統(tǒng)兩部分。它的主要功能是將預(yù)先輸入的信息數(shù)據(jù)通過對應(yīng)時間調(diào)用方式將信息通過二級管亮滅狀態(tài)顯示出來,并能對數(shù)據(jù)庫進(jìn)行及時的更新。教室忙閑顯示系統(tǒng)的開發(fā)工具keil。1.2系統(tǒng)功能概述 本設(shè)計以單片機(jī)at89c51為核心,通過一片at89c51單片機(jī)控制綜合樓各個教室在某一時間忙閑狀態(tài)的顯示

12、及鍵盤和各顯示終端。利用74164使本系統(tǒng)具有了顯示查詢時間和北京時間以及年月日的功能,并且能夠設(shè)置和查詢特定的時間。在實際的學(xué)習(xí)生活中,如果應(yīng)用到此系統(tǒng),必然要考慮到它的實用性,所以本設(shè)計采用并排顯示,它主要功能是顯示和查詢在某一個特定的時間里,從存儲系統(tǒng)中調(diào)出相應(yīng)時間段所對應(yīng)的綜合樓各個教室當(dāng)前空閑或繁忙的狀態(tài),通過發(fā)光二極管的亮、滅狀態(tài)來顯示??梢灾庇^的看到每一層樓各個教室在當(dāng)前時間的忙閑狀態(tài),還有年月日時間的顯示,大大方便了同學(xué)查詢。簡單、實用、廉價是本設(shè)計的創(chuàng)新之處,可以輕松的實現(xiàn)對綜合樓各個教室忙閑狀態(tài)的顯示和查詢的功能。2 方案的提出及論證方案一:系統(tǒng)采用點陣做顯示,顯示年月日時

13、間。用ls273做鎖存器,ds1302時鐘i2c總線模式,24cxx系列做存儲,利用單片機(jī)進(jìn)行連接。經(jīng)過多次試驗嘗試,均不能成功。且系統(tǒng)成本較高,時間反應(yīng)速度緩慢,不能實現(xiàn)預(yù)期的效果。因此放棄了本方案。方案二:系統(tǒng)軟件處理部分采用at89c51芯片,用ds1302建立時鐘電路,利用主控單片機(jī)的兩個i/o口作為新的串行口,利用74164做的靜態(tài)顯示模塊,使本系統(tǒng)具有了顯示回答時間和北京時間的功能,考慮到實際的應(yīng)用,利用2個大數(shù)碼管顯示層數(shù),方便同學(xué)查詢。設(shè)置s1,s2,s3按鍵年月顯示查詢北京時間 p3 p18 0 5 1 p2 p0教室顯示時鐘數(shù)碼管圖2.1方案二原理框圖fig 2.1 pro

14、ject two principle frame diagram3 系統(tǒng)硬件設(shè)計3.1 系統(tǒng)硬件總體設(shè)計概述綜合樓教室忙閑狀態(tài)顯示系統(tǒng)就是用來準(zhǔn)確的實時的顯示出當(dāng)前在綜合樓里面每一個教室的狀態(tài),以及查詢各個時間段教室空閑狀態(tài)。本著這個原則,可以利用單片機(jī)控制其工作,將樓層信息教室狀態(tài)顯示出來為了使系統(tǒng)更人性化,功能更加完善,同學(xué)可以按照自己的需求進(jìn)行查詢某一個教室在某一個時間里是否有課。為了使同學(xué)能夠清楚的看到查詢的信息,利用數(shù)碼管進(jìn)行動態(tài)顯示。本設(shè)計的硬件系統(tǒng)分為七個模塊:處理模塊,時鐘模塊,晶振模塊,按鍵模塊,復(fù)位模塊, 時間顯示模塊,教室狀態(tài)顯示模塊。3.2 系統(tǒng)各個模塊的設(shè)計3.2.1

15、 教室狀態(tài)顯示模塊教室狀態(tài)顯示模塊中有一層教學(xué)樓的40個教室所一一對應(yīng)的發(fā)光二極管,其顯示方式為亮、滅兩種,狀態(tài)亮為教室有課,狀態(tài)滅為教室沒有課。本功能模塊的設(shè)計采用一起顯示單獨查詢的方式,具有顯示當(dāng)前時刻教室狀態(tài)的功能。譯碼器輸出驅(qū)動數(shù)碼管顯示。電源范圍為318伏,本設(shè)計采用5v電源輸出驅(qū)動電流可達(dá)到10ma以上,可直接驅(qū)動led數(shù)碼管,而不需要其他的接口電路。1其電路圖如3.1 所示。圖3.1教室狀態(tài)模塊電路圖fig 3.1 classroom condition module circuit diagram3.2.2 時間顯示模塊 在同學(xué)沒有查詢的時候,系統(tǒng)顯示當(dāng)前年月日時間和樓層數(shù),在

16、同學(xué)進(jìn)行時間查詢的時候顯示查詢時間。此顯示模塊是采用動態(tài)顯示。由 p2.0和p2.1口進(jìn)行串行送數(shù)據(jù),經(jīng)過串并轉(zhuǎn)換器74ls164并行輸出數(shù)據(jù)。2采用串行輸出可以大大節(jié)省單片機(jī)的內(nèi)部資源,串并轉(zhuǎn)換器采用74ls164,低電平時允許通過8ma的電流,無需添加其他的驅(qū)動電路,采用較小的驅(qū)動電流就可以得到較高的顯示亮度,其電路圖如圖3.2所示。圖3.2時間顯示模塊的電路圖fig 3.2 time the circuit module3.2.3 按鍵模塊 按鍵模塊連接到p2口,通過軟件來判斷哪個按鍵執(zhí)行哪個功能,是否按下。通過按鍵可以調(diào)整時間,達(dá)到查詢時間的作用。電路如圖3.3所示。 圖3.3按鍵模塊

17、電路圖fig 3.3 key module circuit diagram3.3 芯片介紹3.3.1 at89c51單片機(jī)的簡介at89c51是一種帶4k字節(jié)閃爍可編程可擦除只讀存儲器(fperomfalsh programmable and erasable read only memory)的低電壓,高性能cmos8位微處理器,俗稱單片機(jī)。at89c51是一種帶4k字節(jié)閃爍可編程可擦除只讀存儲器的單片機(jī)。3單片機(jī)的可擦除只讀存儲器可以反復(fù)擦除100次。該器件采用atmel高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的mcs-51指令集和輸出管腳相兼容。由于將多功能8位cpu和閃爍存儲器組合在

18、單個芯片中,atmel的at89c51是一種高效微控制器,at89c2051是它的一種精簡版本。at89c51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案主要特性:與mcs-51 兼容 4k字節(jié)可編程閃爍存儲器 ,壽命:1000寫/擦循環(huán),數(shù)據(jù)保留時間:10年全靜態(tài)工作:0hz-24hz三級程序存儲器鎖定128*8位內(nèi)部ram32可編程i/o線兩個16位定時器/計數(shù)器5個中斷源 可編程串行通道低功耗的閑置和掉電模式片內(nèi)振蕩器和時鐘電路 管腳說明:vcc:供電電壓。    gnd:接地。    p0口:p

19、0口為一個8位漏極開路雙向i/o口,每腳可吸收8ttl門電流。當(dāng)p1口的管腳第一次寫1時,被定義為高阻輸入。p0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在fiash編程時,p0 口作為原碼輸入口,當(dāng)fiash進(jìn)行校驗時,p0輸出原碼,此時p0外部必須被拉高。5     p1口:p1口是一個內(nèi)部提供上拉電阻的8位雙向i/o口,p1口緩沖器能接收輸出4ttl門電流。p1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,p1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在flash編程和校驗時,p1口作為第八位地址接收6。 

20、60;    p2口:p2口為一個內(nèi)部上拉電阻的8位雙向i/o口,p2口緩沖器可接收,輸出4個ttl門電流,當(dāng)p2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,p2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。p2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進(jìn)行存取時,p2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時,p2口輸出其特殊功能寄存器的內(nèi)容。p2口在flash編程和校驗時接收高八位地址信號和控制信號7。     p3口:p3

21、口管腳是8個帶內(nèi)部上拉電阻的雙向i/o口,可接收輸出4個ttl門電流。當(dāng)p3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,p3口將輸出電流(ill)這是由于上拉的緣故6。 p3口也可作為at89c51的一些特殊功能口,如下表所示:口管腳 備選功能p3.0 rxd (串行輸入口)p3.1 txd (串行輸出口)p3.2 /int0 (外部中斷0)p3.3 /int1(外部中斷1)p3.4 t0 (記時器0外部輸入)p3.5 t1 (記時器1外部輸入)p3.6 /wr (外部數(shù)據(jù)存儲器寫選通)p3.7 /rd (外部數(shù)據(jù)存儲器讀選通)p3口同時為閃爍編程和編程

22、校驗接收一些控制信號。  rst:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持rst腳兩個機(jī)器周期的高電平時間。 ale/prog:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在flash編程期間,此引腳用于輸入編程脈沖。在平時,ale端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ale脈沖。如想禁止ale的輸出可在sfr8eh地址上置0。此時, ale只有在執(zhí)行movx,movc指令是ale才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ale禁

23、止,置位無效。   /psen:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機(jī)器周期兩次/psen有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/psen信號將不出現(xiàn)。     /ea/vpp:當(dāng)/ea保持低電平時,則在此期間外部程序存儲器(0000h-ffffh),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/ea將內(nèi)部鎖定為reset;當(dāng)/ea端保持高電平時,此間內(nèi)部程序存儲器。在flash編程期間,此引腳也用于施加12v編程電源(vpp)。    xtal1:反向振蕩放大器的輸入及內(nèi)部時

24、鐘工作電路的輸入。    xtal2:來自反向振蕩器的輸出。定時器0和1的操作7定時和計數(shù)功能由特殊功能寄存器tmod的控制位c/t進(jìn)行選擇。這兩個定時/計數(shù)器有4種操作模式,通過tmod的m1和m0選擇。兩個定時/計數(shù)器的模式0、1和2都相同,模式3不同。如下所述:模式0將定時器設(shè)置成模式0時類似8048定時器,即8位計數(shù)器帶32分頻的預(yù)分頻器。此模式下,定時器寄存器配置為13位寄存器。當(dāng)計數(shù)從全為“1”翻轉(zhuǎn)為全為“0”時,定時器中斷標(biāo)志位tfn置位。當(dāng)trn=1同時gate=0或intn=1時定時器計數(shù)。置位gate時允許由外部輸入intn控制定時器

25、,這樣可實現(xiàn)脈寬測量。trn為tcon寄存器內(nèi)的控制位。該13位寄存器包含thn全部8個位及tln的低5位。tln的高3位不定,可將其忽略。置位運行標(biāo)志(trn)不能清零此寄存器。模式0的操作對于定時器0及定時器1都是相同的。兩個不同的gate位(tmod.7和tmod.3)分別分配給定時器0及定時器1。模式1模式1除了使用了thn及tln全部16位外,其它與模式0相同。模式2此模式下定時器寄存器作為可自動重裝的8位計數(shù)器(tln)。tln的溢出不僅置位tfn,而且將thn內(nèi)容重新裝入tln,thn內(nèi)容由軟件預(yù)置。重裝時thn內(nèi)容不變。模式2的操作對于定時器0及定時器1是相同的。模式3在模式3

26、中,定時器1停止計數(shù),效果與將tr1設(shè)置為0相同。此模式下定時器0的tl0及th0作為兩個獨立的8位計數(shù)器。tl0占用定時器0的控制位:c/t,gate,tr0,int0及tf0。th0限定為定時器功能(計數(shù)器周期),占用定時器1的tr1及tf1。此時th0控制“定時器1”中斷。模式3可用于需要一個額外的8位定時器的場合。定時器0工作于模式3時,80c51看似有3個定時器/計數(shù)器,當(dāng)定時器0工作于模式3時,定時器1可通過開關(guān)進(jìn)入/退出模式3,它仍可用作串行端口的波特率發(fā)生器,或者應(yīng)用于任何不要求中斷的場合。串行口851單片機(jī)內(nèi)部有一個全雙工的串行通信口,即串行接收和發(fā)送緩沖器(sbuf),這兩

27、個在物理上獨立的接收發(fā)送器,既可以接收數(shù)據(jù)也可以發(fā)送數(shù)據(jù)。但接收緩沖器只能讀出不能寫入,而發(fā)送緩沖器則只能寫入不能讀出,它們的地址為99h。這個通信口既可以用于網(wǎng)絡(luò)通信,亦可實現(xiàn)串行異步通信,還可以構(gòu)成同步移位寄存器使用。如果在傳行口的輸入輸出引腳上加上電平轉(zhuǎn)換器,就可方便地構(gòu)成標(biāo)準(zhǔn)的rs-232接口 串行數(shù)據(jù)通信兩種形式 異步通信     在這種通信方式中,接收器和發(fā)送器有各自的時鐘,它們的工作是非同步的,異步通信用一幀來表示一個字符,其內(nèi)容如下:一個起始位,僅接著是若干個數(shù)據(jù)位。    同步

28、通信格式中,發(fā)送器和接收器由同一個時鐘源控制,為了克服在異步通信中,每傳輸一幀字符都必須加上起始位和停止位,占用了傳輸時間,在要求傳送數(shù)據(jù)量較大的場合,速度就慢得多。同步傳輸方式去掉了這些起始位和停止位,只在傳輸數(shù)據(jù)塊時先送出一個同步頭(字符)標(biāo)志即可。     同步傳輸方式比異步傳輸方式速度快,這是它的優(yōu)勢。但同步傳輸方式也有其缺點,即它必須要用一個時鐘來協(xié)調(diào)收發(fā)器的工作,所以它的設(shè)備也較復(fù)雜。串行數(shù)據(jù)通信的傳輸速率     串行數(shù)據(jù)傳輸速率有兩個概念,即每秒轉(zhuǎn)送的位數(shù)bps(bit per second)和每秒

29、符號數(shù)波特率(band rate),在具有調(diào)制解調(diào)器的通信中,波特率與調(diào)制速率有關(guān)。9串行口和控制寄存器單片機(jī)串行口寄存器結(jié)構(gòu)如圖3.5所示。sbuf為串行口的收發(fā)緩沖器,它是一個可尋址的專用寄存器,其中包含了接收器和發(fā)送器寄存器,可以實現(xiàn)全雙工通信。但這兩個寄存器具有同一地址(99h)。10mcs-51的串行數(shù)據(jù)傳輸很簡單,只要向發(fā)送緩沖器寫入數(shù)據(jù)即可發(fā)送數(shù)據(jù)。而從接收緩沖器讀出數(shù)據(jù)即可接收數(shù)據(jù)。移位時鐘ti發(fā)送中斷txd串行輸出接受sbuf輸入移位寄存器rxd串行輸入ri接受中斷發(fā)送sbuf系統(tǒng)總線   圖3.5 串行口寄存器結(jié)構(gòu)圖fig 3.5 the st

30、ring goes to deposit machine knot composition串行口控制寄存器:scon控制寄存器,它是一個可尋址的專用寄存器,用于串行數(shù)據(jù)的通信控制,單元地址是98h,其結(jié)構(gòu)格式如表3.1所示.表3.1 scon寄存器結(jié)構(gòu)table 3.1 the scon deposits machine structure    scon寄存器結(jié)構(gòu)scond7d6d5d4d3d2d1d0sm0sm1sm2rentb8rb8tiri位地址9fh9eh8dh9ch9bh9ah99h98h sm0、sm1:串行口工作方式控制位。 &

31、#160;sm0,sm1    工作方式            00      方式0            01      方式1     

32、0;      10      方式2            11      方式3 sm2:多機(jī)通信控制位。     多機(jī)通信是工作于方式2和方式3,sm2位主要用于方式2和方式3。接收狀態(tài),當(dāng)串行口工作于方式2或3,以及sm2=1時,只有當(dāng)接收到第9位數(shù)據(jù)

33、(rb8)為1時,才把接收到的前8位數(shù)據(jù)送入sbuf,且置位ri發(fā)出中斷申請,否則會將接受到的數(shù)據(jù)放棄。11當(dāng)sm2=0時,就不管第位數(shù)據(jù)是0還是1,都難得數(shù)據(jù)送入sbuf,并發(fā)出中斷申請。     工作于方式0時,sm2必須為0。 ren:允許接收位。     ren用于控制數(shù)據(jù)接收的允許和禁止,ren=1時,允許接收,ren=0時,禁止接收。  tb8:發(fā)送接收數(shù)據(jù)位8。     在方式2和方式3中,tb8是要發(fā)送的即第9位數(shù)據(jù)位。在多機(jī)通信中同樣亦要傳輸這一位

34、,并且它代表傳輸?shù)牡刂愤€是數(shù)據(jù),tb8=0為數(shù)據(jù),tb8=1時為地址。  rb8:接收數(shù)據(jù)位8。     在方式2和方式3中,rb8存放接收到的第9位數(shù)據(jù),用以識別接收到的數(shù)據(jù)特征。  ti:發(fā)送中斷標(biāo)志位。     可尋址標(biāo)志位。方式0時,發(fā)送完第8位數(shù)據(jù)后,由硬件置位,其它方式下,在發(fā)送或停止位之前由硬件置位,因此,ti=1表示幀發(fā)送結(jié)束,ti可由軟件清“0”。  ri:接收中斷標(biāo)志位。     可尋址標(biāo)志位。接收完第8位數(shù)據(jù)后,該位由硬件置

35、位,在其他工作方式下,該位由硬件置位,ri=1表示幀接收完成。電源管理寄存器pcon     pcon主要是為chmos型單片機(jī)的電源控制而設(shè)置的專用寄存器,單元地址是87h,其結(jié)構(gòu)格式如表3.2所示。表3.2pcon電源管理寄存器結(jié)構(gòu)table 3.2 the pcon power supply management deposits machine structure    pcon電源管理寄存器結(jié)構(gòu)pcond7d6d5d4d3d2d1d0位符號smod-gf1gf0pdidl  在chmos型單片機(jī)

36、中,除smod位外,其他位均為虛設(shè)的,smod是串行口波特率倍增位,當(dāng)smod=1時,串行口波特率加倍。系統(tǒng)復(fù)位默認(rèn)為smod=0。3.3.2 ds1302時鐘 ds1302 是美國dallas公司推出的一種高性能、低功耗、帶ram的實時時鐘電路,它可以對年、月、日、周日、時、分、秒進(jìn)行計時,具有閏年補(bǔ)償功能,工作電壓為2.5v5.5v。采用三線接口與cpu進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或ram數(shù)據(jù)。ds1302內(nèi)部有一個31×8的用于臨時性存放數(shù)據(jù)的ram寄存器。ds1302是ds1202的升級產(chǎn)品,與ds1202兼容,但增加了主電源/后背電源雙電源引腳,

37、同時提供了對后背電源進(jìn)行涓細(xì)電流充電的能力。12ds1302的引腳排列,其中vcc1為后備電源,vcc2為主電源。在主電源關(guān)閉的情況下,也能保持時鐘的連續(xù)運行。ds1302由vcc1或vcc2兩者中的較大者供電。當(dāng)vcc2大于vcc10.2v時,vcc2給ds1302供電。當(dāng)vcc2小于vcc1時,ds1302由vcc1供電。x1和x2是振蕩源,外接32.768khz晶振。rst是復(fù)位/片選線,通過把rst輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。rst輸入有兩種功能:首先,rst接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,rst提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)rst為高電平時,

38、所有的數(shù)據(jù)傳送被初始化,允許對ds1302進(jìn)行操作。如果在傳送過程中rst置為低電平,則會終止此次數(shù)據(jù)傳送,i/o引腳變?yōu)楦咦钁B(tài)。上電運行時,在vcc2.5v之前,rst必須保持低電平。只有在sclk為低電平時,才能將rst置為高電平。i/o為串行數(shù)據(jù)輸入輸出端(雙向),后面有詳細(xì)說明。sclk始終是輸入端。 ds1302 的控制字如圖2所示??刂谱止?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é)總是從

39、最低位開始輸出。 在控制指令字輸入后的下一個sclk時鐘的上升沿時,數(shù)據(jù)被寫入ds1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個sclk脈沖的下降沿讀出ds1302的數(shù)據(jù),讀出數(shù)據(jù)時從低位0位到高位7。ds1302有12個寄存器,其中有7個寄存器與日歷、時鐘相關(guān),存放的數(shù)據(jù)位為bcd碼形式,其日歷、時間寄存器及其控制字。此外,ds1302 還有年份寄存器、控制寄存器、充電寄存器、時鐘突發(fā)寄存器及與ram相關(guān)的寄存器等。時鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內(nèi)容。 ds1302與ram相關(guān)的寄存器分為兩類:一類是單個ram單元,共31個,每個單元組態(tài)

40、為一個8位的字節(jié),其命令控制字為c0hfdh,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的ram寄存器,此方式下可一次性讀寫所有的ram的31個字節(jié),命令控制字為feh(寫)、ffh(讀)。 時鐘是單片機(jī)系統(tǒng)中不可或缺的。時鐘可以通過軟件實現(xiàn),當(dāng)時鐘只是系統(tǒng)的輔助功能時,用大量的軟件來實現(xiàn)時鐘功能,會影響主要功能的實現(xiàn)或使軟件復(fù)雜化。本文介紹串行實時時鐘芯片ds1302,采用該芯片,單片機(jī)只需定時讀出芯片的時鐘,其余時間可作別的工作。ds1302的實時時鐘包括秒、分、小時、日、月、星期、年等信息,與單片機(jī)采用串行通信。時鐘可選24小時制或12小時制,可自動調(diào)整閏年及月份、日期。讀寫命令

41、字節(jié)的格式及讀寫操作方式如圖1。最高位為“1”,允許寫操作,為“0”,禁止寫操作。ram/ck為“0”,表示讀寫時鐘/日歷數(shù)據(jù),為“1”,表示讀寫ram數(shù)據(jù)。a4a0為數(shù)據(jù)讀寫的地址。r/w為“0”,表示可進(jìn)行寫操作,為“1”則進(jìn)行讀操作。單字節(jié)操作需16個時鐘,前8個時鐘寫命令字,后8個時鐘讀寫數(shù)據(jù)。多字節(jié)突發(fā)模式讀寫,其命令字的地址a4a3a2a1a0=11111即可。其命令字的格式及操作方式如圖2。ds1302的時鐘/日歷數(shù)據(jù)格式為bcd碼,秒、分、小時、日、月、星期、年的地址分別為00h、01h、02h、03h、04h、05h、06h。寫保護(hù)寄存器的地址a4a3a2a1a0=00111

42、,格式如圖3。wp為“0”,可對時鐘或ram進(jìn)行寫操作。wp為“1”,禁止寫任何寄存器。led數(shù)碼顯示用mc14499四位七段譯碼驅(qū)動器,輸入為bcd碼,譯碼輸出直接驅(qū)動led的各段。當(dāng)使能信號en為“0”時,在時鐘clk的作用下,串行數(shù)據(jù)輸入端接收20位串行數(shù)據(jù),然后使en為“1”,將移位寄存器中的內(nèi)容裝入鎖存器。其數(shù)據(jù)格式如圖4。前4位數(shù)據(jù)為小數(shù)點,后16位是4位數(shù)碼顯示器顯示的數(shù)據(jù)。mc14499級聯(lián)使用時,小數(shù)點顯示無效,小數(shù)點代碼鎖存器需裝入全“1”。單片機(jī)選用microchip公司的pic16c63a,電路如圖5。本例中只顯示年、月、日、小時、分、秒等,不顯示星期,但對ds1302

43、的讀、寫采用突發(fā)模式。為了保證讀、寫時地址的連續(xù)性,在操作中設(shè)有星期的讀、寫。程序中小數(shù)點位用“1111”填充,先輸入的第一字節(jié)是秒的bcd碼,第二字節(jié)是分的bcd碼,第三字節(jié)的低四位是小數(shù)點填充位“1111”,第三字節(jié)的高四位及第四字節(jié)的低四位是小時的bcd碼,依此類推,顯示年、月、日、小時、分、秒需輸入8字節(jié)數(shù)據(jù),pic16c63a發(fā)送了8×8=64位數(shù)據(jù),三片mc14499實際接收60位,第八字節(jié)的高四位“1111”被移出,實現(xiàn)了mc14499的級聯(lián)。ds1302數(shù)據(jù)的讀取采用中斷方式,0.1秒讀取1次數(shù)據(jù)。時間/日歷的顯示每變化0.05秒顯示1次。實際上,在調(diào)試程序時可以不加

44、電容器,只加一個32.768khz 的晶振即可。只是選擇晶振時,不同的晶振,誤差也較大。另外,還可以在上面的電路中加入ds18b20,同時顯示實時溫度。只要占用cpu一個口線即可。 lcd還可以換成led,還可以使用北京衛(wèi)信杰科技發(fā)展有限公司生產(chǎn)的10位多功能8段液晶顯示模塊lcm101,內(nèi)含看門狗(wdt)/時鐘發(fā)生器及兩種頻率的蜂鳴器驅(qū)動電路,并有內(nèi)置顯示ram,可顯示任意字段筆劃,具有34線串行接口,可與任何單片機(jī)、ic接口。功耗低,顯示狀態(tài)時電流為2a (典型值),省電模式時小于1a,工作電壓為2.4v3.3v,顯示清晰。ds1302 與微處理器進(jìn)行數(shù)據(jù)交換時,首先由微處理器向電路發(fā)送

45、命令字節(jié),命令字節(jié)最高位msb(d7)必須為邏輯1,如果d7=0,則禁止寫ds1302,即寫保護(hù);d6=0,指定時鐘數(shù)據(jù),d6=1,指定ram數(shù)據(jù);d5d1指定輸入或輸出的特定寄存器;最低位lsb(d0)為邏輯0,指定寫操作(輸入), d0=1,指定讀操作(輸出)。     在ds1302的時鐘日歷或ram進(jìn)行數(shù)據(jù)傳送時,ds1302必須首先發(fā)送命令字節(jié)。若進(jìn)行單字節(jié)傳送,8位命令字節(jié)傳送結(jié)束之后,在下2個sclk周期的上升沿輸入數(shù)據(jù)字節(jié),或在下8個sclk周期的下降沿輸出數(shù)據(jù)字節(jié)。     ds1302與ram相關(guān)的寄存器分為兩類:

46、一類是單個ram單元,共31個,每個單元組態(tài)為一個8位的字節(jié),其命令控制字為c0hfdh,其中奇數(shù)為讀操作,偶數(shù)為寫操作;再一類為突發(fā)方式下的ram寄存器,在此方式下可一次性讀、寫所有的ram的31個字節(jié)。     要特別說明的是備用電源b1,可以用電池或者超級電容器(0.1f以上)。雖然ds1302在主電源掉電后的耗電很小,但是,如果要長時間保證時鐘正常,最好選用小型充電電池??梢杂美鲜诫娔X主板上的3.6v充電電池。如果斷電時間較短(幾小時或幾天)時,就可以用漏電較小的普通電解電容器代替。100 f就可以保證1小時的正常走時。ds1302在第一次加電后,必須進(jìn)行

47、初始化操作。初始化后就可以按正常方法調(diào)整時間。 1.每次上電,必須把秒寄存器高位(第7位)設(shè)置為0,時鐘才能走時。2.如果需要寫入數(shù)據(jù)和時鐘日歷信息,必須把“寫保護(hù)”寄存器設(shè)置成為0;內(nèi)存數(shù)據(jù)定義。bitcnt data 30h ; 數(shù)據(jù)位計數(shù)器bytecnt data 31h ; 數(shù)據(jù)字節(jié)計數(shù)器command data 32h ; 命令字節(jié)地址rcvdat data 40h ; 接收數(shù)據(jù)緩沖區(qū)xmtdat data 50h ; 發(fā)送數(shù)據(jù)緩沖區(qū);端口位定義io_data bit p1.1 ; 數(shù)據(jù)傳送總線sclk bit p1.0 ; 時鐘控制總線rst bit p1.2 ; 復(fù)位總線rs e

48、qu p1.3;確定具體硬件的連接方式 rw equ p1.4 ;確定具體硬件的連接方式e equ p1.5 ;確定具體硬件的連接方式org 0000hljmp start ;* ;main program org 0030hstart: clr rst mov sp,#2ah 現(xiàn)在流行的串行時鐘電路很多,如ds1302、 ds1307、pcf8485等。這些電路的接口簡單、價格低廉、使用方便,被廣泛地采用。本文介紹的實時時鐘電路ds1302是dallas公司的一種具有涓細(xì)電流充電能力的電路,主要特點是采用串行數(shù)據(jù)傳輸,可為掉電保護(hù)電源提供可編程的充電功能,并且可以關(guān)閉充電功能。采用普通32.

49、768khz晶振。 圖3.6 ds1302時鐘流程圖fig3.6 ds1302 clock flow chart3.3.3 8位串入/并出移位寄存器74hc16474 hc164 利用先進(jìn)的矽-門的互補(bǔ)型金屬氧化半導(dǎo)體技術(shù)。它有標(biāo)準(zhǔn)互補(bǔ)型金屬氧化半導(dǎo)體集成電路的高噪音免疫和低功耗。8位串入/并出移位寄存器的引腳如圖3.9所示,它的功能表如表3.5所示。圖3.7 8位串入/并出移位寄存器74hc164的引腳圖fig 3.7 74hc164 the pin map表3.3 8位串入/并出移位寄存器74hc164的功能表table 3.3 74hc164 logic menu輸入輸出/mrclock

50、a bq0 q1 。 q7lxx xl l 。 lhlx xq00 q10 。 q70hh hh q0 n 。q7nhl xl q0 n 。q7nhx ll q0n 。q7n特征:典型的操作頻率: 50 兆赫茲典型的增殖延遲: 19 ns(對 q 的時鐘)工作電壓范圍: 2-6v低電平輸入電流: 最大值1ua低電平時允許通過電流:最大值80ua (74hc系列)74ls164可實現(xiàn)串行輸入,并行輸出。其中a、b(第1、2腳)為串行數(shù)據(jù)輸入端,2個引腳按邏輯與運算規(guī)律輸入信號,一個輸入信號時可以并接。clk(第8腳)為時鐘輸入端,可連接到串行口的txd端。每一個時鐘信號的上升沿加到clk端時,移

51、位寄存器移一位,8個時鐘脈沖過后,8位二進(jìn)制數(shù)全部移入74hc164中。/mr(第9腳)為復(fù)位端,當(dāng)/mr=0時,移位寄存器各位歸0,只有當(dāng)/mr=1時,時鐘脈沖才起作用。q0q7(第36和1013腳)并行輸出端分別接led顯示器的ag、dp各端對應(yīng)的引腳上。再來一個脈沖,第一個脈沖就會從最高位移出。4 系統(tǒng)軟件設(shè)計4.1 系統(tǒng)軟件總體設(shè)計思想本系統(tǒng)是以單片機(jī)的基本語言匯編語言來進(jìn)行軟件設(shè)計,指令的執(zhí)行速度快,節(jié)省存儲空間。為了便于擴(kuò)展和更改,軟件的設(shè)計采用模塊化結(jié)構(gòu),使程序設(shè)計的邏輯關(guān)系更加簡潔明了。使硬件在軟件的控制下協(xié)調(diào)運作。單片機(jī)與ds1302通信,并讀取當(dāng)前的時間值,然后在數(shù)碼管顯示

52、出來,分別顯示:年月日時分秒,顯示通過中斷的時間來實現(xiàn),通過164的移位來選通顯示的位,在中斷期間保持顯示狀態(tài),這樣才能讓數(shù)碼管顯示穩(wěn)定,另外5個164是串接在一起的,通過上升沿寫入的方法,把查表查出來的課程表,移位顯示出來,查表的方法是:先把ds1302的日期計算出對應(yīng)的星期,顯示表值=第一層第一周第一節(jié)值的地址+(星期-1)*(4(節(jié)課)*8(8*5=40個班)+(星期-1)*(4節(jié)課*5(8*5=40)+層數(shù)*224(一層一周的課程總值)公式為:disp_kcb(kcb_10+(currenttime.week-1)*32+(cs-1)*224);4.2 keil開發(fā)軟件的介紹 keil

53、 單片機(jī)開發(fā)中除必要的硬件外,同樣離不開軟件,我們寫的匯編語言源程序要變?yōu)閏pu可以執(zhí)行的機(jī)器碼有兩種方法,一種是手工匯編,另一種是機(jī)器匯編,目前已極少使用手工匯編的方法了。機(jī)器匯編是通過匯編軟件將源程序變?yōu)闄C(jī)器碼,用于mcs-51單片機(jī)的匯編軟件有早期的a51,隨著單片機(jī)開發(fā)技術(shù)的不斷發(fā)展,從普遍使用匯編語言到逐漸使用高級語言開發(fā),單片機(jī)的開發(fā)軟件也在不斷發(fā)展,keil軟件是目前最流行開發(fā)mcs-51系列單片機(jī)的軟件,這從近年來各仿真機(jī)廠商紛紛宣布全面支持keil即可看出。keil提供了包括c編譯器、宏匯編、連接器、庫管理和一個功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(

54、uvision)將這些部份組合在一起。運行keil軟件需要pentium或以上的cpu,16mb或更多ram、20m以上空閑的硬盤空間、win98、nt、win2000、winxp等操作系統(tǒng)。掌握這一軟件的使用對于使用51系列單片機(jī)的愛好者來說是十分必要的,如果你使用c語言編程,那么keil幾乎就是你的不二之選(目前在國內(nèi)你只能買到該軟件、而你買的仿真機(jī)也很可能只支持該軟件),即使不使用c語言而僅用匯編語言編程,其方便易用的集成環(huán)境、強(qiáng)大的軟件仿真調(diào)試工具也會令你事半功倍。 我們將通過一些實例來學(xué)習(xí)keil軟件的使用,在這一部份我們將學(xué)習(xí)如何輸入源程序,建立工程、對工程進(jìn)行詳細(xì)的設(shè)置,以及如何

55、將源程序變?yōu)槟繕?biāo)代碼。 (1) 系統(tǒng)概述 keil c51是美國keil software公司出品的51系列兼容單片機(jī)c語言軟件開發(fā)系統(tǒng),與匯編相比,c語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢,因而易學(xué)易用。用過匯編語言后再使用c來開發(fā),體會更加深刻。 keil c51軟件提供豐富的庫函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,全windows界面。另外重要的一點,只要看一下編譯后生成的匯編代碼,就能體會到keil c51生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。 下面詳細(xì)介紹keil c51開發(fā)系統(tǒng)各部分功能和使用。 (2)

56、 keil c51單片機(jī)軟件開發(fā)系統(tǒng)的整體結(jié)構(gòu) c51工具包的整體結(jié)構(gòu),如圖(1)所示,其中uvision與i shell分別是c51 for windows和for dos的集成開發(fā)環(huán)境(ide),可以完成編輯、編譯、連接、調(diào)試、仿真等整個開發(fā)流程。開發(fā)人員可用ide本身或其它編輯器編輯c或匯編源文件。然后分別由c51及a51編譯器編譯生成目標(biāo)文件(.obj)。目標(biāo)文件可由lib51創(chuàng)建生成庫文件,也可以與庫文件一起經(jīng)l51連接定位生成絕對目標(biāo)文件(.abs)。abs文件由oh51轉(zhuǎn)換成標(biāo)準(zhǔn)的hex文件,以供調(diào)試器dscope51或tscope51使用進(jìn)行源代碼級調(diào)試,也可由仿真器使用直接對

57、目標(biāo)板進(jìn)行調(diào)試,也可以直接寫入程序存貯器如eprom中。4.2.1 keil 軟件開發(fā)的流程對于剛剛使用keil的用戶來講,一般是按照下面的流程來完成開發(fā)任務(wù)的。1) 建立工程2) 為工程選擇目標(biāo)器件3) 設(shè)置工程的配置參數(shù)4) 打開/建立程序文件5) 編譯和連接工程6) 糾正程序中的書寫和語法錯誤并重新編譯連接7) 對程序中某些純軟件的部分使用軟件仿真驗證8) 使用 tks 硬件仿真器對應(yīng)用程序進(jìn)行硬件仿真9) 將生成的 hex 文件燒寫到 rom 中運行測試 上面的流程只是一個標(biāo)準(zhǔn)的開發(fā)流程,實際中用戶可能反復(fù)重復(fù)一個或幾個步驟。要點亮發(fā)光二極管,必須使單片機(jī)的i/o口p1.0輸出低電平。于是我們的任務(wù)就是編程序使p1.0輸出地電平。4.2.2 keil軟件的使用隨著單片機(jī)開發(fā)技術(shù)的不斷發(fā)展,目前已有越來越多的人從普遍使用匯編語言到逐漸使用高級語言開發(fā),其中主要是以c語言為主,市場上幾種常見的單片機(jī)均有其c語言開發(fā)環(huán)境。 keil軟件是目最流行開發(fā)80c51系列單片機(jī)的軟件,keil提供了包括c編譯器、宏匯編、連接器、庫管理和一個功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(µvision)將這些部份組合在一起。(1)按鍵識別通過按下一次按鍵,使向左移動一位,直到最后一位,在向右移動。

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論