版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、摘 要論文的研究工作是以單片機技術(shù)為背景展開的,并且詳細介紹了通過at89c51單片機控制lcm1602液晶的顯示情況,以及單片機與時鐘電路、溫度傳感器之間的通信。以軟件形式對系統(tǒng)進行控制,使得系統(tǒng)控制更具靈活與方便。本文在深入分析單片機技術(shù)的基礎(chǔ)上,解析了lcm顯示的單片機控制技術(shù)和新型溫度傳感器ds18b20單片機控制應(yīng)用,以及l(fā)cd顯示在各種電子顯示中的優(yōu)勢,同時闡述了其在日常顯示系統(tǒng)中的應(yīng)用;并且以proteus與keil uvision4軟件為基礎(chǔ),編寫了at89c51單片機對lcm1602顯示控制的軟件,繪制其原理圖,并使用proteus軟件與keil uvision4軟件建立聯(lián)合
2、仿真。論文主要論述了原理圖各個模塊的作用,控制軟件的各個模塊的編程。在設(shè)計的過程中,以顯示日歷、時間、溫度為主要目的,并能夠?qū)崿F(xiàn)時間調(diào)整功能。經(jīng)過一系列的前提準(zhǔn)備,到最后的仿真成功,將理論聯(lián)系實際,使本設(shè)計可以在實際中應(yīng)用,方便經(jīng)濟實用?!?關(guān)鍵詞 】 溫度傳感器、單片機、萬年歷abstractthesis research work is based on single-chip technology expand the background, and described in detail by the the at89c51 microcontroller control lcm160
3、2 lcd display, as well as single-chip clock circuits, temperature sensor communication. in the form of a software to control the system, making the system more flexible control and convenience.in this paper, based on in-depth analysis of single-chip technology, analytical the lcm display scm control
4、 technology and a new temperature sensor ds18b20 mcu control applications, and the lcd display advantages in a variety of electronic display, at the same time daily display system ; and to proteus and keil uvision4 software-based write a the at89c51 microcontroller lcm1602 display control software,
5、draw its schematic and the establishment of a joint simulation using the proteus software, keil uvision4 software. thesis discusses the role of the various modules of the schematic diagram, the control of the various modules of the software programming.in the design process, the main purpose is to d
6、isplay a calendar, time, temperature, and be able to achieve time adjustment function. the series premise preparation to the final success of the simulation, theory with practice, so that the design can be applied in practice, and to facilitate economical and practical.key words the temperature sens
7、or、single chip microcomputer、perpetual calendar目錄一、引言1(一)課題背景及研究概述1(二)單片機控制系統(tǒng)簡介1(三)課題的建立及論文完成的主要要求1二、開發(fā)工具軟件介紹2(一) keil uvision4軟件簡介2(二) proteus軟件簡介2(三) keil uvision4與proteus軟件聯(lián)合仿真2三、系統(tǒng)硬件設(shè)計實現(xiàn)3(一)電路設(shè)計框圖3(二)單片機控制系統(tǒng)31、 單片機系統(tǒng)功能介紹32、 at89c51引腳說明33、單片機最小系統(tǒng)5(三)主要模塊設(shè)計實現(xiàn)61、lcd顯示模塊62、時鐘芯片ds1302接口設(shè)計模塊73、溫度傳感器ds
8、18b20設(shè)計模塊94、按鍵控制模塊9四、 軟件設(shè)計10(一)萬年歷顯示程序101、流程圖102、源程序代碼11(二)溫度轉(zhuǎn)換程序111、流程圖112、源程序代碼11(三)按鍵掃描程序121、程序結(jié)構(gòu)122、程序功能12(四)主程序121、程序流程圖:122、源程序代碼。13五、仿真13(一)調(diào)試聯(lián)合仿真13(二)仿真結(jié)果13六、總結(jié)13致謝14參考文獻15附錄一:系統(tǒng)電路16附錄二:源程序17附錄三:溫度轉(zhuǎn)換子程序30一、引言(一)課題背景及研究概述隨著電子技術(shù)的發(fā)展,人類不斷研究,不斷創(chuàng)新紀(jì)錄。萬年歷以電腦軟件或者電子產(chǎn)品形式出現(xiàn),目前已經(jīng)不再局限于以書本形式。萬這種年歷被稱為電子萬年歷。
9、與書本形式的萬年歷相比,電子萬年歷應(yīng)用越來越廣泛,時間顯示采用電子時鐘已經(jīng)成為一種時尚。目前市場上各式各樣的電子時鐘數(shù)不勝數(shù),但多數(shù)是只針對時間顯示,功能單一不能滿足人們?nèi)粘I钚枨?。本文提出了一種基于at89c51單片機的萬年歷設(shè)計方案,利采用一個lcd顯示。本方案以at89c51單片機作為主控核心,與時鐘芯片ds1302、溫度芯片ds18b20、按鍵、lcd顯示等模塊組成硬件系統(tǒng)。在硬件系統(tǒng)中設(shè)有4個獨立按鍵和一個lcd顯示器,能顯示豐富的信息,根據(jù)使用者的需要可以隨時對時間進行校準(zhǔn)、選擇時間、溫度顯示等,綜上所述此萬年歷具有讀取方便、顯示直觀、功能多樣、電路簡潔、成本低廉等諸多優(yōu)點,符合
10、電子儀器儀表的發(fā)展趨勢,具有廣闊的市場前景。(二)單片機控制系統(tǒng)簡介at89c51是一個低電壓,高性能的單片機,內(nèi)含可反復(fù)擦寫的flash只讀程序存儲器,在電子行業(yè)中有著廣泛的應(yīng)用。并且,只要在單片機的外圍適當(dāng)加一些必要的擴展電路及通道接口,就可以構(gòu)成各種應(yīng)用系統(tǒng),如工業(yè)控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng)、自動控制系統(tǒng)、自動測試系統(tǒng)、檢測監(jiān)視系統(tǒng)、智能儀表、功能模塊等。因此單片機廣泛應(yīng)用于便攜式智能產(chǎn)品與家電消費品,以及工業(yè)控制,國防裝備等領(lǐng)域??傊?,單片機控制系統(tǒng)具有功能多樣、電路簡潔、成本低廉、體積小巧等諸多優(yōu)點,符合電子技術(shù)的發(fā)展趨勢。(三)課題的建立及論文完成的主要要求本文主要包括以下內(nèi)容:1、單
11、片機最小控制系統(tǒng)、lcm1602液晶顯示模塊、ds18b20溫度傳感器模塊、ds1302時鐘芯片模塊和按鍵模塊的建立。2、編制單片機與各子模塊之間的通信程序。實現(xiàn)對lcm1602液晶顯示當(dāng)前時間及溫度,按鍵調(diào)節(jié)作用,以及按鍵提示音的控制。 3、用proteus繪制整個控制系統(tǒng)原理圖,使用keil編譯調(diào)試程序??商娲鷮嶋H硬件進行仿真。 二、開發(fā)工具軟件介紹(一) keil uvision4軟件簡介keil4系列開發(fā)系統(tǒng)兼容單片機,c語言軟件。和匯編相比,c語言在結(jié)構(gòu)性、功能上、可維護性、可讀性上有明顯的優(yōu)勢,并能產(chǎn)生hex文件,因而易學(xué)易用。使用過匯編語言,再使用c來開發(fā),體會更加深刻。在研究大
12、型軟件時更能體現(xiàn)c語言的優(yōu)勢。keil 軟件提供功能強大的集成開發(fā)調(diào)試工具和豐富的庫函數(shù),語句生成的匯編代碼容易理解。而且,該軟件不但可以進行程序編譯,而且還可以通過其內(nèi)嵌模塊模擬51單片機,實現(xiàn)在不需要連接硬件仿真器的條件下,通過數(shù)據(jù)線連接硬件系統(tǒng)對項目進行實時仿真。另外,可以與proteus單片機仿真軟件聯(lián)合實現(xiàn)虛擬硬件仿真。(二) proteus軟件簡介proteus嵌入式系統(tǒng)仿真與開發(fā)平臺是一款可以實現(xiàn)模擬電路、數(shù)字電路、pcb設(shè)計微控制器系統(tǒng)仿真等功能的eda軟件。所有的工作先在虛擬環(huán)境下進行。提供數(shù)碼管、顯示屏、led、開關(guān)、鍵盤等。避免了傳統(tǒng)電子電路設(shè)計中方案更換帶來的多次購買元
13、器件及制板,在節(jié)省設(shè)計時間和金錢的同時,提高了設(shè)計效率與質(zhì)量。proteus軟件可以仿真at89c51系列單片機,可以直接在電路原理圖上進行硬件的模擬仿真,進行程序的調(diào)試,并提供進行測試與分析的邏輯分析儀,模擬示波器等模擬儀器及仿真圖表。它是目前最好的仿真單片機及外圍器件的工具。(三) keil uvision4與proteus軟件聯(lián)合仿真proteus軟件與keil軟件之間的聯(lián)合虛擬仿真,指keil軟件把proteus軟件打開的單片機電路看成一個模擬的硬件電路,使用keil軟件對程序進行編譯、調(diào)試時連接proteus軟件中的模擬單片機系統(tǒng),模擬單片機的系統(tǒng)狀態(tài)和keil軟件對程序調(diào)試實時變化
14、。這樣,可實現(xiàn)用proteus軟件與keil uvision4軟件聯(lián)合虛擬硬件仿真。proteus軟件與keil uvision軟件的聯(lián)合仿真在實際的單片機系統(tǒng)開發(fā)中被普遍應(yīng)用。用proteus軟件與keil uvision軟件聯(lián)合仿真像實物一樣調(diào)試,同時在屏幕上可以直觀地看到電路輸出狀態(tài),比較容易讀懂并理解所調(diào)試的程序,提高學(xué)習(xí)效率,同時降低了學(xué)習(xí)所需的硬件成本。三、系統(tǒng)硬件設(shè)計實現(xiàn)(一)電路設(shè)計框圖(如圖1)溫度采集電路時鐘電路按鍵調(diào)整電路單片機最小系統(tǒng)at89c51單片機lcd顯示電路圖1 電路設(shè)計框圖(二)單片機控制系統(tǒng)1、 單片機系統(tǒng)功能介紹at89c51是一種帶4k字節(jié)flash存
15、儲器的低電壓、高性能cmos 8位微處理器,俗稱單片機。at89c2051是一種帶2k字節(jié)閃存可編程可擦除只讀存儲器的單片機。單片機的可擦除只讀存儲器可以反復(fù)擦除1000次。該器件采用atmel高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的mcs-51指令集和輸出管腳相兼容。單片機正常工作時,都需要有一個時鐘電路和一個復(fù)位電路。本設(shè)計中選擇了內(nèi)部時鐘方式和按鍵電平復(fù)位電路,來構(gòu)成單片機的最小電路。復(fù)位是單片機的初始化操作,單片機在啟動運行時,都需要先復(fù)位,其作用是使cpu和系統(tǒng)中其他部件都處于一個確定的初始狀態(tài),并從這個狀態(tài)開始工作。因而,復(fù)位是一個很重要的操作方式。但單片機本身是不能自動進行復(fù)
16、位的,必須配合相應(yīng)的外部電路來實現(xiàn)。其主要工作特性是:u 4k字節(jié)可編程flash存儲器u 八個中斷源u 與mcs-51單片機產(chǎn)品兼容u 全靜態(tài)操作:0hz33hzu 三級加密程序存儲器u 32個可編程i/o 口線u 全雙工uart串行通道u 低功耗空閑和掉電模式u 掉電后中斷可喚醒u 看門狗定時器u 雙數(shù)據(jù)指針u 1000次擦寫周期u 掉電標(biāo)識符u 三個16 位定時器/計數(shù)器2、 at89c51引腳說明at89c51有40個引腳,如圖2所示: 圖2 at89c51芯片p0 口:p0口是一個8位漏極開路的雙向i/o口。作為輸出口,每位能驅(qū)動8個ttl邏輯電平。對p0端口寫“1”時,引腳用作高阻
17、抗輸入。當(dāng)訪問外部程序和數(shù)據(jù)存儲器時,p0口也被作為低8位地址/數(shù)據(jù)復(fù)用。在這種模式下,p0具有內(nèi)部上拉電阻。在flash編程時,p0口也用來接收指令字節(jié);在程序校驗時,輸出指令字節(jié)。程序校驗時,需要外部上拉電阻。 p1 口:p1 口是一個具有內(nèi)部上拉電阻的8 位雙向i/o 口,p1 輸出緩沖器能驅(qū)動4 個 ttl 邏輯電平。對p1 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(iil)。 此外,p1.0和p1.2分別作定時器/計數(shù)器2的外部計數(shù)輸入(p1.0/t2)和時器/計數(shù)器2 的觸發(fā)輸入(p1.1/t2e
18、x),具體如下表所示。 在flash編程和校驗時,p1口接收低8位地址字節(jié)。p1口的第二功能如下:p1.0 t2(定時器/計數(shù)器t2的外部計數(shù)輸入),時鐘輸出 p1.1 t2ex(定時器/計數(shù)器t2的捕捉/重載觸發(fā)信號和方向控制) p1.5 mosi(在系統(tǒng)編程用) p1.6 miso(在系統(tǒng)編程用) p1.7 sck(在系統(tǒng)編程用) p2 口:p2 口是一個具有內(nèi)部上拉電阻的8 位雙向i/o 口,p2 輸出緩沖器能驅(qū)動4 個ttl 邏輯電平。對p2 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(iil)。訪問外
19、部程序存儲器或用16位地址讀取外部數(shù)據(jù)存儲器(例如執(zhí)行movx dptr),p2 口送出高八位地址。在這種應(yīng)用中,p2 口使用很強的內(nèi)部上拉發(fā)送1。在使用8位地址(如movx ri)訪問外部數(shù)據(jù)存儲器時,p2口輸出p2鎖存器的內(nèi)容。flash編程和校驗時,p2口也接收高8位地址字節(jié)和一些控制信號。p3 口:p3 口是一個具有內(nèi)部上拉電阻的8 位雙向i/o 口,p2 輸出緩沖器能驅(qū)動4 個ttl 邏輯電平。對p3 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(iil)。p3口亦作為at89s52特殊功能(第二功能)
20、使用,如下表所示。flash編程和校驗時,p3口也接收一些控制信號。p3口的二功能如下:p3.0 rxd(串行輸入口)p3.1 txd(串行輸出口)p3.2 into(外中斷0)p3.3 int1(外中斷1)p3.4 to(定時/計數(shù)器0)p3.5 t1(定時/計數(shù)器1)p3.6 wr(外部數(shù)據(jù)存儲器寫選通)p3.7 rd(外部數(shù)據(jù)存儲器讀選通)此外,p3口還接收一些用于flash閃存編程和程序校驗的控制信號。rst復(fù)位輸入。當(dāng)振蕩器工作時,rst引腳出現(xiàn)兩個機器周期以上高電平將是單片機復(fù)位。ale/prog當(dāng)訪問外部程序存儲器或數(shù)據(jù)存儲器時,ale(地址鎖存允許)輸出脈沖用于鎖存地址的低8位
21、字節(jié)。一般情況下,ale仍以時鐘振蕩頻率的1/6輸出固定的脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲器時將跳過一個ale脈沖。對flash存儲器編程期間,該引腳還用于輸入編程脈沖(prog)。如有必要,通過對特殊功能寄存器(sfr)區(qū)中的8eh單元的d0位置位,可禁止ale操作。該位置位后,只有一條movx和movc指令才能將ale激活。此外,該引腳會被微弱拉高,單片機執(zhí)行外部程序時,應(yīng)設(shè)置ale禁止位無效。psen程序儲存允許(psen)輸出是外部程序存儲器的讀選通信號,當(dāng)at89c51由外部程序存儲器取指令(或數(shù)據(jù))時,每個機器周期兩次psen有效,即輸
22、出兩個脈沖,在此期間,當(dāng)訪問外部數(shù)據(jù)存儲器,將跳過兩次psen信號。ea/vpp外部訪問允許,欲使cpu僅訪問外部程序存儲器(地址為0000h-ffffh),ea端必須保持低電平(接地)。需注意的是:如果加密位lb1被編程,復(fù)位時內(nèi)部會鎖存ea端狀態(tài)。如ea端為高電平(接vcc端),cpu則執(zhí)行內(nèi)部程序存儲器的指令。3、單片機最小系統(tǒng)根據(jù)系統(tǒng)設(shè)計要求,結(jié)合性能分析,通過查閱相關(guān)資料及自己的努力思考,把單片機最小系統(tǒng)設(shè)計為圖3:圖3 單片機最小系統(tǒng)(1) 復(fù)位電路按鍵手動復(fù)位是通過使復(fù)位端經(jīng)電阻與vcc接通而實現(xiàn)的。(2) 時鐘振蕩電路考慮系統(tǒng)運行速度,采用12mhz的石英晶振,并使用兩個小電容
23、作為微調(diào)電容。(三)主要模塊設(shè)計實現(xiàn)1、lcd顯示模塊 (1)方案選擇:方案一:采用動態(tài)顯示方法,動態(tài)顯示模塊的硬件制作簡單,段掃描和位掃描各占用一個端口,總需占用單片機24個端口,采用間斷掃描法功耗小、硬件成本低及整個硬件系統(tǒng)體積相對減小。方案二:采用lcd的方法,具有硬件制作簡單可直接與單片機接口,顯示內(nèi)容多,功耗小,成本低等優(yōu)點,lcm1602可顯示32個字符,采用lcd的缺點是亮度不夠。比較以上兩種方案:方案一硬件簡單、功耗小;方案二硬件簡單,顯示內(nèi)容多,功耗小,成本低等。本系統(tǒng)設(shè)計要求達到功耗小、體積小、成本低,顯示信息多等要求,權(quán)衡兩種方案,選擇方案二。(2)lcm1602的接口信
24、號說明:如表1:表1 lcm1602的接口信號編號引腳符號功能說明編號引腳符號功能說明1vss電源地9d2data i/o2vdd電源正極10d3data i/o3vl液晶顯示偏壓信號11d4data i/o4rs數(shù)據(jù)/命令選擇端12d5data i/o5r/w讀/寫選擇端(h/l)13d6data i/o6e使能信號14d7data i/o7d0data i/o15bla背光正極8d1data i/o16blk背光負(fù)極(3)基本操作時序:讀狀態(tài):rs=l,rw=h,e=h寫指令:rs=l,rw=l,d0d7=指令碼,e=高脈沖讀數(shù)據(jù):rs=h,rw=h,e=h寫數(shù)據(jù):rs=h,rw=l,d0
25、d7=數(shù)據(jù),e=高脈沖(4) lcm1602與at89c51的接口電路:如圖4所示: 圖4 lcm1602與單片機接口電路lcd的d0d7分別接單片機的的p0口,作為數(shù)據(jù)線,因為p0口內(nèi)部沒有上拉電阻,所以外部另外加上10k的上拉電阻;p2.0p2.2分別接lcd的rs、rw、e三個控制管腳;rv1用來調(diào)節(jié)lcd的顯示灰度;blk、bla為背光的陰極和陽極,接上相應(yīng)電平即點亮背光燈(圖中未畫出)。2、時鐘芯片ds1302接口設(shè)計模塊(1)方案選擇:方案一:直接采用單片機定時計數(shù)器提供秒信號,使用程序?qū)崿F(xiàn)年、月、日、星期、時、分、秒計數(shù)。采用此種方案雖然減少芯片的使用,節(jié)約成本,但是液晶顯示不連
26、續(xù),實現(xiàn)的時間誤差較大。方案二:采用ds1302時鐘芯片實現(xiàn)時鐘,ds1302芯片是一種高性能的時鐘芯片,可自動對秒、分、時、日、周、月、年以及閏年補償?shù)哪赀M行計數(shù),而且精度高,位的ram作為數(shù)據(jù)暫存區(qū),工作電壓2.5v5.5v范圍內(nèi),功耗電小。綜合考慮制作難度及精度,故采用方案二。(2)ds1302接口說明:如表2表2 接口說明x1,x232.768khz晶振引腳gnd 地線rst復(fù)位端i/o數(shù)據(jù)輸入/輸出端口sclk 串行時鐘端口vcc1 慢速充電引腳vcc2 電源引腳 (3)ds1302與at89c51的接口電路:如圖5所示 ds1302時鐘芯片內(nèi)主要包括控制邏輯電路、振蕩器、移位寄存器
27、。ds1302與單片機系統(tǒng)的數(shù)據(jù)通信依靠sclk,rst,i/o,三根線即可完成。其工作過程可概括為:首先給系統(tǒng)rst引腳一個高電平 1,然后在sclk時鐘脈沖的作用下,通過i/o引腳向ds1302輸入命令或地址字節(jié),隨后再在sclk時鐘脈沖的配合下,從i/o引腳寫入或讀出相應(yīng)的數(shù)據(jù)字節(jié)。因此,其與單片機之間的數(shù)據(jù)傳送是非常容易實現(xiàn)的。 圖5 ds1302設(shè)計ds1302在每次進行讀、寫程序前都必須初始化,先把sclk端置 “0”,接著把rst端置“1”,最后才給予sclk脈沖;讀/寫時序如圖5所示。ds1302的控制字:控制字的位7必須置1,若為0則不能對ds1302進行讀寫數(shù)據(jù)。對于位6,
28、若對時間進行讀/寫時,ck=0,對程序進行讀/寫時ram=1。位1至位5指操作單元的地址。位0是讀/寫操作位,進行讀操作時,該位為1;進行寫操作時,該位為0??刂谱止?jié)總是從最低位開始輸入/輸出的。ds1302的日歷、時間寄存器內(nèi)容:“ch”是時鐘暫停標(biāo)志位,當(dāng)該位為1時,時鐘振蕩器停止,ds1302處于低功耗狀態(tài);當(dāng)該位為0時,時鐘開始運行。“wp”是寫保護位,在任何的對時鐘和ram的寫操作之前,“wp”必須為0。當(dāng)“wp”為1時,寫保護位防止對任一寄存器的寫操作。3、溫度傳感器ds18b20設(shè)計模塊(1)方案選擇方案一:采用熱敏電阻或ad590,再經(jīng)ad轉(zhuǎn)換得到數(shù)字信號,精度較準(zhǔn),但價格昂貴
29、,電路較復(fù)雜。方案二:采用數(shù)字式溫度傳感器ds18b20,它能通過單片機直接讀出被測溫度,并且可根據(jù)實際要求通過簡單的編程實現(xiàn)9-12位的數(shù)字值讀數(shù)方式,但準(zhǔn)確度不高。綜合考慮,采用方案二,用ds18b20溫度芯片,采用單總線訪問,降低成本、降低制作難度且可節(jié)省單片機寶貴的i/o口資源。(2)ds18b20與at89c51的接口電路:如圖6所示圖6 ds18b20接口電路該系統(tǒng)中采用數(shù)字式溫度傳感器ds18b20,具有測量精度高,電路連接簡單特點,此類傳感器僅需要一條數(shù)據(jù)線進行數(shù)據(jù)傳輸,用p2.3與ds18b20的dq口連接,vcc接電源,gnd接地。4、按鍵控制模塊按鍵及按鍵提醒接口電路如圖
30、7所示圖7 按鍵控制模塊set鍵:按下set鍵進入時間校準(zhǔn)狀態(tài),按一下進入秒調(diào)整,兩下分調(diào)整,依此類推可進行各年月日,時分秒以及星期的校準(zhǔn)up鍵:當(dāng)set鍵按下時,up進行set選定項(如:小時)的加操作;down鍵:當(dāng)set鍵按下時,down進行set選定項(如:小時)的減操作;按鍵蜂鳴器提示(第一次按動設(shè)置鍵長鳴一響;后面按動設(shè)置鍵或上調(diào)鍵、下調(diào)鍵都是短鳴一響)(四)完整系統(tǒng)原理圖見附錄一。四、 軟件設(shè)計整個軟件系統(tǒng)采用c語言編程,主要實現(xiàn)以下功能:1)lcd的驅(qū)動2)時間數(shù)據(jù)的采集3)溫度的采集4)按鍵的識別處理程序從main()函數(shù)開始運行,隨后對lcd、ds18b20、ds1302等
31、器件進行初始化操作并對標(biāo)志位賦初值,隨后進入while(1)循環(huán)中運行按鍵掃描程序。等待中斷產(chǎn)生。開始初始化讀日期、時間寫日期、時間顯示子程序時間修改子程序日期修改子程序顯示結(jié)果返回開關(guān)控制子程序圖8 萬年歷顯示控制(一)萬年歷顯示程序1、流程圖 如圖82、源程序代碼參考附錄二。(二)溫度轉(zhuǎn)換程序為方便程序編寫,本程序把溫度轉(zhuǎn)換子程序編在ds18b20_3.h文件中。頭文件ds18b20_3.h,來源于網(wǎng)網(wǎng)絡(luò),十進制溫度最后返回到函數(shù)readtemperature()中,使用時主函數(shù)用flag=readtemperature()就可將18b2頭文件運行返回的函數(shù)結(jié)果送到變量flag中,用于顯示
32、。根據(jù)單總線操作協(xié)議,首先要對ds18b20進行初始化,而初始化有嚴(yán)格的時序控制,如圖9所示,即總線控制器(tx)發(fā)出一個復(fù)位脈沖(至少480us的低電平),然后釋放總線進入接收狀態(tài),總線由5.1k上拉電阻上拉為高電平,探測到i/o引腳上的上升沿后,ds18b20等待15us60us后,然后發(fā)出一個存在脈沖(60us240us的低電平信號)。1、流程圖開始發(fā)跳過讀系列號命令啟動溫度轉(zhuǎn)換初始化ds18b20初始化ds18b20發(fā)跳過讀系列號命令讀取溫度寄存器讀取溫度值結(jié)束圖9 溫度轉(zhuǎn)換流程圖如圖9.2、源程序代碼見附錄三(三)按鍵掃描程序1、程序結(jié)構(gòu)按鍵識別程序結(jié)構(gòu)采用:if(*)delay(1
33、0);/調(diào)延時,消抖動if(*)switch(key1n)case 1:*;case 2:*;*;2、程序功能能準(zhǔn)確清晰地分析全部的按鍵情況,具有按鍵消除抖動功能。和按鍵蜂鳴器提示(第一次按動設(shè)置鍵長鳴一響;后面按動設(shè)置鍵或上調(diào)鍵、下調(diào)鍵都是短鳴一響)開始液晶屏、時鐘芯片、溫度傳感器初始化按鍵掃描。等待中斷產(chǎn)生yn溫度讀取轉(zhuǎn)換顯示溫度、時間日期圖10 主程序流程圖按下set鍵進入時間調(diào)整選項,按一下調(diào)整秒,按兩下調(diào)整分,在日期時間星期之間轉(zhuǎn)換。按下up鍵調(diào)整的數(shù)據(jù)加一。按下down鍵,調(diào)整的數(shù)據(jù)減一。再按下set鍵確認(rèn)并跳到下一個選項。(四)主程序1、程序流程圖:如圖102、源程序代碼。見附錄
34、二。五、仿真(一)調(diào)試聯(lián)合仿真 模擬系統(tǒng)硬件電路調(diào)試比較簡單,首先檢查電路接線是否正確,然后用檢查軟件i/o口的定義是否與硬件電路的i/o口連線是否對應(yīng)。系統(tǒng)軟件調(diào)試可以先調(diào)試液晶顯示程序,再編寫定時器中斷函數(shù),在液晶上顯示出正確的時間,隨后調(diào)試時間調(diào)整函數(shù)。接下來分別進行ds18b20溫度顯示程序的調(diào)試,調(diào)試到液晶能顯示溫度值,在環(huán)境溫度有變化時,顯示溫度能改變就說明已能正確讀取溫度數(shù)據(jù)。最后調(diào)試報警溫度函數(shù),直到實現(xiàn)設(shè)計任務(wù)的要求為止。(二)仿真結(jié)果 使用keil uvision4軟件調(diào)試編譯源程序,生成目標(biāo)代碼hex文件,然后在proteus軟件中的虛擬單片機系統(tǒng)。模擬仿真觀看設(shè)計結(jié)果:
35、液晶顯示結(jié)果如圖11。通過此項設(shè)計設(shè)計,本系統(tǒng)能完成以下功能:1、顯示公歷日期功能(年、月、日、時、分、秒)2、通過按鍵可隨時調(diào)校年、月、日或時、分、星期3、可動態(tài)完整顯示年份4、上電蜂鳴器提示(長鳴)、按鍵時蜂鳴器短鳴。圖11 液晶顯示結(jié)果六、總結(jié) 論文首先對本設(shè)計作了簡要描述,對軟件、硬件進行簡單的描述。隨后提出了不同的設(shè)計方案,經(jīng)過論證最后確定該設(shè)計采用時鐘模塊、顯示模塊、鍵盤接口模塊、溫度測量模塊等模塊組成,接著分別從硬件系統(tǒng)和軟件系統(tǒng)兩方面對基于單片機的電子萬年歷設(shè)計作了詳細論述,另外還簡要介紹了一下系統(tǒng)的調(diào)試。在整個設(shè)計過程中,硬件方面主要設(shè)計了at89c51單片機的最小系統(tǒng)、ds
36、1302接口電路、ds18b20接口電路、lcm1602顯示;軟件方面借助各個渠道的資料,主要設(shè)計了日期數(shù)據(jù)讀取程序、溫度采集程序、按鍵掃描程序以及l(fā)cd顯示程序;系統(tǒng)的調(diào)試主要是通過proteus,再借助于keil以及少許自己搭建的外圍電路實現(xiàn)的;再此過程中,分步調(diào)試時顯示出了日期及時間,還有實時溫度,集中調(diào)試達到預(yù)期效果。但在此過程中培養(yǎng)了自己的動手能力。此萬年歷具有讀顯示直觀、功能多樣、電路簡潔、成本低廉等諸多優(yōu)點,符合電子儀器儀表的發(fā)展趨勢,具有廣闊的市場前景。 經(jīng)過本次畢業(yè)設(shè)計,使我對大學(xué)所學(xué)專業(yè)知識的進行了系統(tǒng)的總結(jié)。綜合運用所學(xué)知識發(fā)現(xiàn)、提出、分析和解決實際問題致謝首先感謝學(xué)校在
37、畢業(yè)之際給我們一個可能讓我們把所有的知識總結(jié)起來的機會,通過這次畢業(yè)設(shè)計,使我對以前所學(xué)的知識有了一個整體上的概括,也讓我們具體了解到了每個元件在電路中的具體作用,了解到了它的功能、結(jié)構(gòu)。其次我要衷心的感謝授課老師對我專業(yè)知識的教導(dǎo)和指導(dǎo)老師的幫助。為我提供了大量而又詳實的資料給我,使我從困惑迷茫的初期走向論文的順利完成,在完成論文的同時也深受啟發(fā)和教育,使我受益終生。最后接受我最誠摯的謝意!參考文獻【1】劉訓(xùn)非,陳希.單片機技術(shù)及應(yīng)用.北京:清華大學(xué)出版社 2010【2】楊寧,胡學(xué)軍.單片機與控制技術(shù).北京:北京航空航天大學(xué)出版社.2005年【3】余西存,曹國華.單片機原理及接口技術(shù).西安:
38、西安電子科技大學(xué)出版,2000年【4】沈衛(wèi)紅,編著.基于單片機的智能系統(tǒng)設(shè)計與實現(xiàn).北京: 電子工業(yè)出版社2005年【5】王越明,編著.電子萬年歷的設(shè)計.黑龍江:黑龍江科技信息出版社2004年附錄一:系統(tǒng)電路附錄二:源程序#include#includeds18b20_3.h/溫度傳感器#define uint unsigned int#define uchar unsigned charuchar a,miao,shi,fen,ri,yue,nian,week,flag,key1n,temp;/flag用于讀取頭文件中的溫度值,和顯示溫度值#define yh 0x80 /lcd第一行的初始
39、位置,因為lcd1602字符地址首位d7恒定為1(100000000=80)#define er 0x80+0x40 /lcd第二行初始位置(因為第二行第一個字符位置地址是0x40)sbit rs=p20;sbit en=p22;sbit rw=p21; sbit led=p26; /lcd的背光開關(guān)/ds1302時鐘芯片與c51之間的引腳連接定義sbit io=p11;sbit sclk=p10;sbit rst=p12;sbit acc0=acc0;sbit acc7=acc7;/校時按鍵與c51的引腳連接定義sbit key1=p15; /設(shè)置鍵sbit key2=p16; /加鍵sbi
40、t key3=p17; /減鍵sbit buzzer=p13;/蜂鳴器,通過三極管9012驅(qū)動,端口低電平響uchar code tab1=20 - - ; /年顯示的固定字符uchar code tab2= : : ;/時間顯示的固定字符/延時函數(shù),后面經(jīng)常調(diào)用void delay(uint xms)/延時函數(shù),有參函數(shù)uint x,y;for(x=xms;x0;x-) for(y=110;y0;y-);/*液晶寫入指令函數(shù)與寫入數(shù)據(jù)函數(shù)*/write_1602com(uchar com)/*液晶寫入指令函數(shù)*rs=0;/數(shù)據(jù)/指令選擇置為指令rw=0; /讀寫選擇置為寫p0=com;/送入
41、數(shù)據(jù)delay(1);en=1;/拉高使能端,為制造有效的下降沿做準(zhǔn)備delay(1);en=0;/en由高變低,產(chǎn)生下降沿,液晶執(zhí)行命令write_1602dat(uchar dat)/*液晶寫入數(shù)據(jù)函數(shù)*rs=1;/數(shù)據(jù)/指令選擇置為數(shù)據(jù)rw=0; /讀寫選擇置為寫p0=dat;/送入數(shù)據(jù)delay(1);en=1; /en置高電平,為制造下降沿做準(zhǔn)備delay(1);en=0; /en由高變低,產(chǎn)生下降沿,液晶執(zhí)行命令lcd_init()/*液晶初始化函數(shù)*write_1602com(0x38);/設(shè)置液晶工作模式16*2行顯示,5*7點陣,8位數(shù)據(jù)write_1602com(0x0c)
42、;/開顯示不顯示光標(biāo)write_1602com(0x06);/整屏不移動,光標(biāo)自動右移write_1602com(0x01);/清顯示write_1602com(yh+1);/日歷顯示固定符號從第一行第1個位置之后開始顯示for(a=0;a14;a+)write_1602dat(tab1a);/向液晶屏寫日歷顯示的固定符號部分/delay(3);write_1602com(er+2);/時間顯示固定符號寫入位置,從第2個位置后開始顯示for(a=0;a0;a-)io=acc0;sclk=0;sclk=1;acc=acc1;uchar read_byte()/讀一個字節(jié)rst=1;for(a=8
43、;a0;a-)acc7=io;sclk=1;sclk=0;acc=acc1;return (acc);void write_1302(uchar add,uchar dat)/向1302芯片寫函數(shù),指定寫入地址,數(shù)據(jù)rst=0;sclk=0;rst=1;write_byte(add);write_byte(dat);sclk=1;rst=0;uchar read_1302(uchar add)/從1302讀數(shù)據(jù)函數(shù),指定讀取數(shù)據(jù)來源地址uchar temp;rst=0;sclk=0;rst=1;write_byte(add);temp=read_byte();sclk=1;rst=0;retu
44、rn(temp);uchar bcd_decimal(uchar bcd)/bcd碼轉(zhuǎn)十進制函數(shù),輸入bcd,返回十進制 uchar decimal; decimal=bcd4; return(decimal=decimal*10+(bcd&=0x0f);void ds1302_init() /1302芯片初始化子函數(shù)(2012-10-07,12:00:00,week4)rst=0;sclk=0;write_1302(0x8e,0x00); /允許寫,禁止寫保護 write_1302(0x80,0x00); /向ds1302內(nèi)寫秒寄存器80h寫入初始秒數(shù)據(jù)00write_1302(0x82,0
45、x00);/向ds1302內(nèi)寫分寄存器82h寫入初始分?jǐn)?shù)據(jù)00write_1302(0x84,0x12);/向ds1302內(nèi)寫小時寄存器84h寫入初始小時數(shù)據(jù)12write_1302(0x8a,0x04);/向ds1302內(nèi)寫周寄存器8ah寫入初始周數(shù)據(jù)4write_1302(0x86,0x07);/向ds1302內(nèi)寫日期寄存器86h寫入初始日期數(shù)據(jù)07write_1302(0x88,0x10);/向ds1302內(nèi)寫月份寄存器88h寫入初始月份數(shù)據(jù)10write_1302(0x8c,0x12);/向ds1302內(nèi)寫年份寄存器8ch寫入初始年份數(shù)據(jù)12write_1302(0x8e,0x80);
46、 /打開寫保護/*溫度顯示子函數(shù)*/void write_temp(uchar add,uchar dat)/向lcd寫溫度數(shù)據(jù),并指定顯示位置uchar gw,sw;gw=dat%10;/取得個位數(shù)字sw=dat/10;/取得十位數(shù)字write_1602com(er+add);/er是頭文件規(guī)定的值0x80+0x40write_1602dat(0x30+sw);/數(shù)字+30得到該數(shù)字的lcd1602顯示碼write_1602dat(0x30+gw);/數(shù)字+30得到該數(shù)字的lcd1602顯示碼 write_1602dat(0xdf);/顯示溫度的小圓圈符號,0xdf是液晶屏字符庫的該符號地址
47、碼 write_1602dat(0x43);/顯示c符號,0x43是液晶屏字符庫里大寫c的地址碼/*時分秒顯示子函數(shù)*/void write_sfm(uchar add,uchar dat)/向lcd寫時分秒,有顯示位置加、現(xiàn)示數(shù)據(jù),兩個參數(shù)uchar gw,sw;gw=dat%10;/取得個位數(shù)字sw=dat/10;/取得十位數(shù)字write_1602com(er+add);/er是頭文件規(guī)定的值0x80+0x40write_1602dat(0x30+sw);/數(shù)字+30得到該數(shù)字的lcd1602顯示碼write_1602dat(0x30+gw);/數(shù)字+30得到該數(shù)字的lcd1602顯示碼/
48、*年月日顯示子函數(shù)*/void write_nyr(uchar add,uchar dat)/向lcd寫年月日,有顯示位置加數(shù)、顯示數(shù)據(jù),兩個參數(shù)uchar gw,sw;gw=dat%10;/取得個位數(shù)字sw=dat/10;/取得十位數(shù)字write_1602com(yh+add);/設(shè)定顯示位置為第一個位置+addwrite_1602dat(0x30+sw);/數(shù)字+30得到該數(shù)字的lcd1602顯示碼write_1602dat(0x30+gw);/數(shù)字+30得到該數(shù)字的lcd1602顯示碼void write_week(uchar week)/寫星期函數(shù)write_1602com(yh+0x
49、0c);/星期字符的顯示位置switch(week)case 1:write_1602dat(m);/星期數(shù)為1時,顯示 write_1602dat(o); write_1602dat(n); break;case 2:write_1602dat(t);/星期數(shù)據(jù)為2時顯示 write_1602dat(u); write_1602dat(e); break;case 3:write_1602dat(w);/星期數(shù)據(jù)為3時顯示 write_1602dat(e); write_1602dat(d); break;case 4:write_1602dat(t);/星期數(shù)據(jù)為4是顯示 write_16
50、02dat(h); write_1602dat(u); break;case 5:write_1602dat(f);/星期數(shù)據(jù)為5時顯示 write_1602dat(r); write_1602dat(i); break;case 6:write_1602dat(s);/星期數(shù)據(jù)為6時顯示 write_1602dat(t); write_1602dat(a); break;case 7:write_1602dat(s);/星期數(shù)據(jù)為7時顯示 write_1602dat(u); write_1602dat(n); break;/*鍵盤掃描有關(guān)函數(shù)*void keyscan()/-key1為功能鍵
51、(設(shè)置鍵)-/if(key1=0)delay(9);/延時,用于消抖動if(key1=0)/延時后再次確認(rèn)按鍵按下 buzzer=0;/蜂鳴器短響一次 delay(20); buzzer=1;while(!key1);key1n+;if(key1n=9)key1n=1;/設(shè)置按鍵共有秒、分、時、星期、日、月、年、返回,8個功能循環(huán)switch(key1n)case 1: tr0=0;/關(guān)閉定時器write_1602com(er+0x09);/設(shè)置按鍵按動一次,秒位置顯示光標(biāo) write_1602com(0x0f);/設(shè)置光標(biāo)為閃爍 temp=(miao)/10*16+(miao)%10;/秒數(shù)據(jù)寫入ds1302 write_1302(0x8e,0x00);
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版美發(fā)培訓(xùn)學(xué)校師資聘用標(biāo)準(zhǔn)合同4篇
- 2025年度門面租賃合同電子版(含租金遞增與調(diào)整機制)
- 2025年度簽競業(yè)協(xié)議打工人財產(chǎn)保全及職業(yè)規(guī)劃合同
- 二零二五年度酒店前臺員工權(quán)益保障與勞動合同
- 二零二五年度超市與物流公司貨物扣點運輸合同
- 2025年度復(fù)雜地質(zhì)條件頂管施工安全協(xié)議書
- 2025年度住宅室內(nèi)裝修工程保修協(xié)議
- 2025年度簽競業(yè)協(xié)議打工人財產(chǎn)保全及心理支持合同
- 2025年度跆拳道青少年運動員培養(yǎng)合作協(xié)議
- 二零二五年度退休人員教育輔助教學(xué)勞務(wù)合同
- 2024年國家焊工職業(yè)技能理論考試題庫(含答案)
- 特魯索綜合征
- 《向心力》 教學(xué)課件
- 結(jié)構(gòu)力學(xué)數(shù)值方法:邊界元法(BEM):邊界元法的基本原理與步驟
- 2024年山東省泰安市高考語文一模試卷
- 北師大版物理九年級全一冊課件
- 2024年第三師圖木舒克市市場監(jiān)督管理局招錄2人《行政職業(yè)能力測驗》高頻考點、難點(含詳細答案)
- RFJ 006-2021 RFP型人防過濾吸收器制造與驗收規(guī)范(暫行)
- 盆腔炎教學(xué)查房課件
- 110kv各類型變壓器的計算單
- 新概念英語課件NCE3-lesson15(共34張)
評論
0/150
提交評論