LED燈循環(huán)顯示速的電位器控制設(shè)計_第1頁
LED燈循環(huán)顯示速的電位器控制設(shè)計_第2頁
LED燈循環(huán)顯示速的電位器控制設(shè)計_第3頁
LED燈循環(huán)顯示速的電位器控制設(shè)計_第4頁
LED燈循環(huán)顯示速的電位器控制設(shè)計_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、學(xué) 號天津城建大學(xué) 單片機原理及接口技術(shù) 課程設(shè)計設(shè)計說明書LED燈循環(huán)顯示速度的電位器控制設(shè)計起止日期: 2014 年 12 月 22 日 至 2014 年 12 月 31 日學(xué)生姓名班級12電信二班成績指導(dǎo)教師(簽字)計算機與信息工程學(xué)院2014年12月31日目 錄第一章設(shè)計任務(wù)及要求31.1 設(shè)計目的31.2 設(shè)計基本要求31.3 設(shè)計任務(wù)3第二章 設(shè)計原理42.1 STC12C5A60S2以及最小系統(tǒng)介紹42.2 DS12C887時鐘芯片52.2.1 DS12C887概述52.2.2 DS12C887引腳介紹52.2.3 DS12C887內(nèi)部地址空間72.3 LCD1602液晶以顯示模

2、塊72.3.1 1602液晶概述72.3.2 1602引腳介紹72.3.3 1602字符液晶的讀寫82.4 DS18B20溫度傳感器與A/D轉(zhuǎn)換92.4.1 DS18B20概述92.4.2 DS18B20引腳介紹102.4.3 DS18B20功能使用102.4.4 A/D轉(zhuǎn)換器的結(jié)構(gòu)122.4.5 與A/D轉(zhuǎn)換相關(guān)的寄存器12第三章 硬件設(shè)計143.1 系統(tǒng)硬件概述143.2 硬件復(fù)位電路143.3時間獲取電路143.4 DS18B20測溫及LED電路153.5 LCD液晶顯示電路153.6 AD轉(zhuǎn)換電路及按鍵掃描電路16第四章 軟件設(shè)計174.1程序流程框圖174.2 程序設(shè)計184.2.1

3、 DS18B20讀取溫度程序184.2.2 DS12C887時間設(shè)定程序204.2.3 LCD1602顯示程序(溫度、時間、AD轉(zhuǎn)換結(jié)果)214.3 程序調(diào)試及結(jié)果25第五章 總結(jié)26參考文獻 27附錄 原理圖28附錄 程序清單29附錄 元器件清單43第一章 設(shè)計任務(wù)及要求1.1 設(shè)計目的1.進一步熟悉和掌握單片機系統(tǒng)設(shè)計和編程原理。2.掌握單片機的接口技術(shù)及相關(guān)外圍芯片的外特性、控制方法。3.通過設(shè)計,掌握以單片機核心的電路設(shè)計的基本方法和技術(shù)。4.通過實際程序設(shè)計和調(diào)試,掌握模塊化程序設(shè)計方法和調(diào)試技術(shù)。5.通過完成一個包括電路設(shè)計和程序開發(fā)的完整過程,了解開發(fā)單片機應(yīng)用系統(tǒng)的全過程,為今

4、后從事相應(yīng)開發(fā)打下基礎(chǔ)。1.2 設(shè)計基本要求1.認(rèn)真認(rèn)識設(shè)計的意義,掌握設(shè)計工作程序,學(xué)會使用工具書和技術(shù)參考資料,并培養(yǎng)科學(xué)的設(shè)計思想和良好的設(shè)計作風(fēng)。2.提高模型建立和設(shè)計能力,學(xué)會應(yīng)用相關(guān)設(shè)計資料進行設(shè)計計算的方法。3.提高獨立分析、解決問題的能力,逐步增強實際應(yīng)用訓(xùn)練。4.設(shè)計的說明書要求簡潔、通順,電路圖內(nèi)容完整、清楚、規(guī)范。1.3 設(shè)計任務(wù)a) 設(shè)計實現(xiàn)功能STC12C5A60S2(引腳排序及基本功能同AT89S51)作為主控芯片,設(shè)計利用LCD1602顯示時間、溫度和電位器輸出電壓,并使發(fā)光二級管循環(huán)點亮。一是擴展DS12C887外圍電路,實現(xiàn)時間信息顯示;二是DS18B20溫度

5、信息顯示的設(shè)計;三是利用單片機A/D轉(zhuǎn)換器測量電位器輸出電壓大小,控制發(fā)光二級管循環(huán)點亮的速度與A/D轉(zhuǎn)換結(jié)果成正比。b) 原理圖設(shè)計1.原理圖設(shè)計要符合項目的工作原理,連線要正確。2.圖中所使用的元器件要合理選用,電阻、電容等器件的參數(shù)要正確標(biāo)明。3.原理圖要完整,CPU、外圍器件、外擴接口、輸入/輸出裝置要一應(yīng)俱全。c) 程序調(diào)計1.根據(jù)要求,將總體功能分解成若干個子功能模塊,每個功能模塊完成一個特定的功能。2.根據(jù)總體要求及分解的功能模塊,確定各功能模塊之間的關(guān)系,設(shè)計出完整的程序流程圖。d) 程序調(diào)試1.編寫相關(guān)程序,并進行仿真。2.將程序下載到單片機,進行運行調(diào)試。e) 設(shè)計說明書1

6、.原理圖設(shè)計說明簡要說明設(shè)計目的,原理圖中所使用的元器件功能及在圖中的作用,各器件的工作過程及順序。2.程序設(shè)計說明對程序設(shè)計總體功能及結(jié)構(gòu)進行說明,對各子模塊的功能以及各子模塊之間的關(guān)系作較詳細(xì)的描述。3.畫出工作原理圖,程序流程圖并給出相應(yīng)的程序清單。第二章 設(shè)計原理2.1 STC12C5A60S2以及最小系統(tǒng)介紹STC12C5A60S2是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,

7、與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。圖2.1 STC12C5A60S2引腳圖 及晶振復(fù)位電路 引腳說明:VCC:供電電壓。GND:接地。 P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P0口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的低八位。在FIASH編程時,P0 口作為原碼輸入口,當(dāng)FIASH進行校驗時,P0輸出原碼,此時P0外部必須接上拉電阻。 P1

8、口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為低八位地址接收。 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ù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利

9、用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。 P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。 P3口也可作為AT89C51的一些特殊功能口,如表2.2所示:表2.2 P3口第二功能表P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2/INT0(外部中斷0)P3.3/INT1(外部中斷1)P3.4T0(記時器0

10、外部輸入)P3.5T1(記時器1外部輸入)P3.6/WR(外部數(shù)據(jù)存儲器寫選通)P3.7/RD(外部數(shù)據(jù)存儲器讀選通)RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機器周期的高電平時間。 ALE/PROG:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的低位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOV

11、C指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。 /PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/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)部時鐘工作電路的輸入。 XTA

12、L2:來自反向振蕩器的輸出。2.2 DS12C887時鐘芯片 DS12C887概述DS12C887實時時鐘芯片功能豐富,可以用來直接代替IBM PC上的時鐘日歷芯片DS12887,同時,它的管腳也和MC146818B、DS12887相兼容。由于DS12C887能夠自動產(chǎn)生世紀(jì)、年、月、日、時、分、秒等時間信息,其內(nèi)部又增加了世紀(jì)寄存器,從而利用硬件電路解決子“千年”問題; DS12C887中自帶有鋰電池,外部掉電時,其內(nèi)部時間信息還能夠保持10年之久;對于一天內(nèi)的時間記錄,有12小時制和24小時制兩種模式。在12小時制模式中,用AM和PM區(qū)分上午和下午;時間的表示方法也有兩種,一種用二進制數(shù)表

13、示,一種是用BCD碼表示;DS12C887中帶有128字節(jié) RAM,其中有11字節(jié)RAM用來存儲時間信息,4字節(jié)RAM用來存儲DS12C887的控制信息,稱為控制寄存器,113字節(jié)通用RAM使用戶使用;此外用戶還可對DS12C887進行編程以實現(xiàn)多種方波輸出,并可對其內(nèi)部的三路中斷通過軟件進行屏蔽。2.2.2 DS12C887引腳介紹圖 DS12887引腳圖引腳說明:GND、VCC:直流電源,其中VCC接+5V輸入,GND接地,當(dāng)VCC輸入為+5V時,用 戶可以訪問DS12C887內(nèi)RAM中的數(shù)據(jù),并可對其進行讀、寫操作;當(dāng)VCC的輸入小于+4.25V時,禁止用戶對內(nèi)部RAM進行讀、寫操作,此

14、時用戶不能正確獲取芯片內(nèi)的時間信息;當(dāng)VCC的輸入小于+3V時,DS12C887會自動將電源發(fā)換到內(nèi)部自帶的鋰電池上,以保證內(nèi)部的電路能夠正常工作。(1)MOT:模式選擇腳,DS12C887有兩種工作模式,即Motorola模式和Intel模式,當(dāng)MOT接VCC時,選用的工作模式是Motorola模式,當(dāng)MOT接GND時,選用的是Intel模式。本文主要討論Intel模式。(23)SQW:方波輸出腳,當(dāng)供電電壓VCC大于4.25V時,SQW腳可進行方波輸出,此時用戶可以通過對控制寄存器編程來得到13種方波信號的輸出。AD0AD7:復(fù)用地址數(shù)據(jù)總線,該總線采用時分復(fù)用技術(shù),在總線周期的前半部分,

15、出現(xiàn)在AD0AD7上的是地址信息,可用以選通DS12C887內(nèi)的RAM,總線周期的后半部分出現(xiàn)在AD0AD7上的數(shù)據(jù)信息。(14)AS:地址選通輸入腳,在進行讀寫操作時,AS的上升沿將AD0AD7上出現(xiàn)的地址信息鎖存到DS12C887上,而下一個下降沿清除AD0AD7上的地址信息,不論是否有效,DS12C887都將執(zhí)行該操作。(17)DS/RD:數(shù)據(jù)選擇或讀輸入腳,該引腳有兩種工作模式,當(dāng)MOT接VCC時,選用Motorola工作模式,在這種工作模式中,每個總線周期的后一部分的DS為高電平,被稱為數(shù)據(jù)選通。在讀操作中,DS的上升沿使DS12C887將內(nèi)部數(shù)據(jù)送往總線AD0AD7上,以供外部讀取

16、。在寫操作中,DS的下降沿將使總線AD0AD7上的數(shù)據(jù)鎖存在DS12C887中;當(dāng)MOT接GND時,選用Intel工作模式,在該模式中,該引腳是讀允許輸入腳,即Read Enable。(15)R/W:讀/寫輸入端,該管腳也有2種工作模式,當(dāng)MOT接VCC時,R/W工作在Motorola模式。此時,該引腳的作用是區(qū)分進行的是讀操作還是寫操作,當(dāng)R/W為高電平時為讀操作,R/W為低電平時為寫操作;當(dāng)MOT接GND時,該腳工作在Intel模式,此時該作為寫允許輸入,即Write Enable。(13):片選輸入,低電平有效。(19):中斷請求輸入,低電平有效,該腳有效對DS12C887內(nèi)的時鐘、日歷

17、和RAM中的內(nèi)容沒有任何影響,僅對內(nèi)部的控制寄存器有影響,在典型的應(yīng)用中,RESET可以直接接VCC,這樣可以保證DS12C887在掉電時,其內(nèi)部控制寄存器不受影響。 DS12C887內(nèi)部地址空間2.3 LCD1602液晶以顯示模塊2.3.1 1602液晶概述工業(yè)字符型液晶,1602是指顯示的內(nèi)容為16*2,即能夠同時顯示兩行,每行16個字符。常見的1602字符液晶有兩種,一種顯示的是綠色背光黑色字體,另一種顯示藍(lán)色背光白色字體,目前市面上字符液晶絕大多數(shù)是基于HD44780液晶芯片的,控制原理是完全相同的。本課題所用1602液晶模塊,顯示屏是藍(lán)色背光白色字體。 2.3.2 1602

18、引腳介紹圖 1602引腳圖編號符號引腳說明編號符號引腳說明1VSS電源地2VDD電源正極3VEE液晶顯示對比度調(diào)節(jié)端4RS數(shù)據(jù)/命令選擇端5R/W讀寫選擇6E使能信號7D0數(shù)據(jù)口8D1數(shù)據(jù)口9D2數(shù)據(jù)口10D3數(shù)據(jù)口11D4數(shù)據(jù)口12D5數(shù)據(jù)口13D6數(shù)據(jù)口14D7數(shù)據(jù)口各個引腳具體功能說明:第1腳:VSS為地電源。第2腳:VDD接5V正電源。第3腳:VEE為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高,對比度過高時會產(chǎn)生重影,使用一個1K的電位器調(diào)整對比度。第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器,低電平時選擇指令寄存器。第5腳:R/W為讀寫信號線,高電平時進行

19、讀操作,低電平時進行寫操作。第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。第714腳:DB0DB7為8位雙向數(shù)據(jù)線。2.3.3 1602字符液晶的讀寫(1)基本操作時序操作輸入輸出讀狀態(tài)RSL,RWH,EHD0D7狀態(tài)字寫指令RSL,RWL,D0D7指令碼,E高脈沖無讀數(shù)據(jù)RSH,RWH,EHD0D7數(shù)據(jù)寫數(shù)據(jù)RSH,RWL,D0D7數(shù)據(jù),E高脈沖無(2)RAM1602液晶控制器芯片內(nèi)部帶有80個8位的RAM緩沖區(qū),其地址和屏幕的對應(yīng)關(guān)系如圖示(3)1602字符液晶字庫  1602液晶模塊內(nèi)部的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了160個不同的點陣字符圖形,

20、如下表所示,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看到字母“A” 。2.4 DS18B20溫度傳感器與A/D轉(zhuǎn)換2.4.1 DS18B20概述DS18B20 單線數(shù)字溫度傳感器,即“一線器件”,其具有獨特的優(yōu)點:( 1 )采用單總線的接口方式 與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與 DS18B20 的雙向通訊。單總線具有經(jīng)濟性好,抗干擾能力強,適合于惡劣環(huán)境的現(xiàn)場溫度測量,使用方便等優(yōu)點,使用戶可輕松地組建傳

21、感器網(wǎng)絡(luò),為測量系統(tǒng)的構(gòu)建引入全新概念。( 2 )測量溫度范圍寬,測量精度高 DS18B20 的測量范圍為 -55 + 125 ; 在 -10+ 85°C范圍內(nèi),精度為 ± 0.5°C 。( 3 )在使用中不需要任何外圍元件。( 4 )持多點組網(wǎng)功能 多個 DS18B20 可以并聯(lián)在惟一的單線上,實現(xiàn)多點測溫。( 5 )供電方式靈活 DS18B20 可以通過內(nèi)部寄生電路從數(shù)據(jù)線上獲取電源。因此,當(dāng)數(shù)據(jù)線上的時序滿足一定的要求時,可以不接外部電源,從而使系統(tǒng)結(jié)構(gòu)更趨簡單,可靠性更高。( 6 )測量參數(shù)可配置 DS18B20 的測量分辨率可通過程序設(shè)定 912 位。(

22、 7 ) 負(fù)壓特性電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作。( 8 )掉電保護功能 DS18B20 內(nèi)部含有 EEPROM ,在系統(tǒng)掉電以后,它仍可保存分辨率及報警溫度的設(shè)定值。DS18B20 具有體積更小、適用電壓更寬、更經(jīng)濟、可選更小的封裝方式,更寬的電壓適用范圍,適合于構(gòu)建自己的經(jīng)濟的測溫系統(tǒng),因此也就被設(shè)計者們所青睞。2.4.2 DS18B20引腳介紹 圖 2.4.2 DS18B20 引腳圖引腳說明:1. GND為電源地;2. DQ為數(shù)字信號輸入/輸出端;3. VDD為外接供電電源輸入端(在寄生電源接線方式時接地)2.4.3 DS18B20功能使用一、DS18B20內(nèi)部構(gòu)

23、成 圖 2.4.3 DS18B20內(nèi)部結(jié)構(gòu)圖高速暫存存儲器由9個字節(jié)組成,如圖2.4.4所示。當(dāng)溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所得的溫度值以二字節(jié)補碼形式存放在高速暫存存儲器的第0和第1個字節(jié)。單片機可通過單線接口讀到該數(shù)據(jù),讀取時低位在前,高位在后,對應(yīng)的溫度計算:當(dāng)符號位S=0時,直接將二進制位轉(zhuǎn)換為十進制;當(dāng)S=1時,先將補碼變?yōu)樵a,再計算十進制值。DS18B20中的溫度傳感器完成對溫度的測量,用16位二進制形式提供,形式表達(dá),其中S為符號位。例如:+125的數(shù)字輸出07D0H(正溫度直接把16進制數(shù)轉(zhuǎn)成10進制即得到溫度值 )-55的數(shù)字輸出為 FC90H。(負(fù)溫度把得到的16進制數(shù)取反

24、后加1 再轉(zhuǎn)成10進制數(shù))二、讀操作和寫操作寫操作寫周期最少為60微秒,最長不超過120微秒。寫周期一開始做為主機先把總線拉低1微秒表示寫周期開始。隨后若主機想寫0,則繼續(xù)拉低電平最少60微秒直至寫周期結(jié)束,然后釋放總線為高電平。若主機想寫1,在一開始拉低總線電平1微秒后就釋放總線為高電平,一直到寫周期結(jié)束。而做為從機的DS18B20則在檢測到總線被拉底后等待15微秒然后從15us到45us開始對總線采樣,在采樣期內(nèi)總線為高電平則為1,若采樣期內(nèi)總線為低電平則為0。讀操作對于讀數(shù)據(jù)操作時序也分為讀0時序和讀1時序兩個過程。讀時隙是從主機把單總線拉低之后,在1微秒之后就得釋放單總線為高電平,以讓

25、DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在檢測到總線被拉低1微秒后,便開始送出數(shù)據(jù),若是要送出0就把總線拉為低電平直到讀周期結(jié)束。若要送出1則釋放總線為高電平。主機在一開始拉低總線1微秒后釋放總線,然后在包括前面的拉低總線電平1微秒在內(nèi)的15微秒時間內(nèi)完成對總線進行采樣檢測,采樣期內(nèi)總線為低電平則確認(rèn)為0。采樣期內(nèi)總線為高電平則確認(rèn)為1。完成一個讀時序過程,至少需要60us才能完成。2.4.4 A/D轉(zhuǎn)換器的結(jié)構(gòu)STC12C5A60S2系列單片機ADC由多路選擇開關(guān)、比較器、逐次比較寄存器、10位DAC、轉(zhuǎn)換結(jié)果寄存器(ADC_RES和ADC_RESL)以及ADC_CONTR構(gòu)成。S

26、TC12C5A60S2系列單片機的ADC是逐次比較型ADC。逐次比較型ADC由一個比較器和D/A轉(zhuǎn)換器構(gòu)成,通過逐次比較邏輯,從最高位(MSB)開始,順序地對每一輸入電壓與內(nèi)置D/A轉(zhuǎn)換器輸出進行比較,經(jīng)過多次比較,使轉(zhuǎn)換所得的數(shù)字量逐次逼近輸入模擬量對應(yīng)次。逐次比較型A/D轉(zhuǎn)換器具有速度高,功耗低等優(yōu)點。STC12C5A60AD/S2系列帶A/D轉(zhuǎn)換的單片機的A/D轉(zhuǎn)換口在P1口( (P1.7-P1.0) ,有 8 路 10 位高速A/D轉(zhuǎn)換器 , 速度可達(dá)到250KHz(25萬次 / 秒 ) 。8路電壓輸入型A/D,可做溫度檢測、電池電壓檢測、按鍵掃描、頻譜檢測等。上電復(fù)位后P1口為弱上拉

27、型I/O口,用戶可以通過軟件設(shè)置將8路中的任何一路設(shè)置為A/D轉(zhuǎn)換,不需作為A/D使用的口可繼續(xù)作為I/O口使用。STC12C5A60S2系列單片機ADC(A/D轉(zhuǎn)換器 ) 的結(jié)構(gòu)如下圖所示。 圖 2.5.2 STC12C5A60S2 A/D轉(zhuǎn)換器結(jié)構(gòu)2.4.5 與A/D轉(zhuǎn)換相關(guān)的寄存器與STC12C5A60S2系列單片機A/D轉(zhuǎn)換相關(guān)的寄存器列于下圖2.5.3所示。 圖 2.5.3 A/D轉(zhuǎn)換相關(guān)寄存器第三章 硬件設(shè)計3.1 系統(tǒng)硬件概述STC12C5A60S2作為主控芯片,時鐘電路由高精度低功耗的DS12C887提供,本設(shè)計硬件構(gòu)造主要由四部分構(gòu)成:復(fù)位電路、時鐘獲取電路、溫度獲取、鍵盤掃

28、描和LCD顯示電路。鍵盤掃描時鐘芯片 1602 液晶顯示LED讀時間數(shù)據(jù)顯示STC12C5A60S2讀溫度復(fù)位、晶振 DS18B20 圖 硬件構(gòu)造流程圖3.2 硬件復(fù)位電路Vcc的+5V電平就會直接加到REST端,單片機復(fù)位。晶振為單片機提供穩(wěn)定的振蕩頻率。圖3.2 單片機復(fù)位電路圖3.3時間獲取電路單片機通過P0口與DS12C887時鐘芯片的AD0.7管腳相連接,用來獲取時間信息。DS12C887芯片的MOT端接地,使其為Intel模式。圖3.3 DS12887時間電路3.4 DS18B20測溫及LED電路 DS18B20的第二個引腳接單片機的P17,用來讀取DS18B20溫度轉(zhuǎn)換的數(shù)據(jù)。8

29、 個 LED 顯示由 74HC573 擴展的輸出口控制,硬件電路由單片機、8 個發(fā)光二級管、限流電阻、TTL 輸出口擴展電路等組成。3.5 LCD液晶顯示電路圖3.4 1602顯示電路3.6 AD轉(zhuǎn)換電路及按鍵掃描電路 利用電位器 VR4 的分壓作為單片機 A/D 轉(zhuǎn)換的輸入信號,由 LCD1602 顯示A/D轉(zhuǎn)換結(jié)果。排針P7的第一個腳接VCC,第三個腳接GND,第二個腳接單片機的AD轉(zhuǎn)換模擬通道P1.3腳,用來測量電位器的電壓。4*4 矩陣鍵盤行輸入接單片機 P1.0-P1.3,列輸入接單片機 P1.4-P1.7,通過掃描方式檢測是否有鍵按下,并確定鍵值。 設(shè)置跳線,連接 P1 與 P2,

30、 (P1 口連接鍵盤行列)第四章 軟件設(shè)計4.1程序流程框圖軟件設(shè)計主要分為DS12887時間獲取、溫度獲取及LCD液晶顯示。開始保護現(xiàn)場初始化1602,、DS12C887、DS18B20設(shè)計計數(shù)初值A(chǔ)D初始化、定時器T0初始化cc=5?N設(shè)定初始化時間cc清零 讀取鍵值開中斷,啟動定時器Key=14?Key=13?N讀取時間,溫度,AD轉(zhuǎn)換結(jié)果NYYLED向左循環(huán)LED向右循環(huán)LCD 顯示恢復(fù)現(xiàn)場判斷時間,溫度,AD轉(zhuǎn)換結(jié)果是否更新返回圖時間溫度顯示流程圖 圖 4.1.2 中斷服務(wù)程序流程圖4.2 程序設(shè)計主程序:void main() TMOD=0x01;TH0=(65536-k)/256

31、;TL0=(65536-k)%256;EA=1;ET0=1;TR0=0;t=0xfe;t1=0x7f; SP=0x60; lcd_init(); DS_init(); InitADC(); AUXR1 &=ADRJ1; /write_time(); /DS12C887時間設(shè)置 DS18B20_Init(); while(1) num=keyscan(0x7f,4); key=num;GetADCResult(3);crt_U(); /AD result displayDelay2(1);TR0=0; crt_wendu(2,10); TR0=1; if (DS_C & 0x10

32、) != 0)/顯示時間 crt_time(1);/TR0=0; Delay2(1); DS18B20讀取溫度程序1. /* DS18B20 初始化 */void DS18B20_Init()DS1820_Reset();DS1820_WriteData(0xCC); / 跳過ROM DS1820_WriteData(0x4E); / 寫暫存器 DS1820_WriteData(0x20); / 往暫存器的第三字節(jié)中寫上限值 DS1820_WriteData(0x00); / 往暫存器的第四字節(jié)中寫下限值 DS1820_WriteData(0x7F); / 將配置寄存器配置為12 位精度 DS

33、1820_Reset();2. /* DS1820 復(fù)位及存在檢測 */bit DS1820_Reset()bit flag;DS1820_DQ = 0; /拉低總線 DelayXus(480); /延時480 微秒,產(chǎn)生復(fù)位脈沖 DS1820_DQ = 1; /釋放總線 DelayXus(80); /延時80 微秒對總線采樣 flag = DS1820_DQ; /對數(shù)據(jù)腳采樣 DelayXus(400); /延時400 微秒等待總線恢復(fù) return (flag); /根據(jù)flag 的值可知DS1820 是否存在或損壞 ,可加聲音告警提示DS1820 故障 3. /* 寫數(shù)據(jù)到DS1820

34、*/void DS1820_WriteData(BYTE wData)BYTE i;for (i=8;i>0;i-)DS1820_DQ = 0; /拉低總線,產(chǎn)生寫信號 DelayXus(4); /延時4us DS1820_DQ = wData&0x01; /發(fā)送1 位 DelayXus(60); /延時60us,寫時序至少要60us DS1820_DQ = 1; /釋放總線,等待總線恢復(fù) wData>>=1; /準(zhǔn)備下一位數(shù)據(jù)的傳送 4. /* 從DS1820 中讀出數(shù)據(jù) */BYTE DS1820_ReadData()BYTE i,TmepData;for (i=

35、8;i>0;i-)TmepData>>=1;DS1820_DQ = 0; /拉低總線,產(chǎn)生讀信號 DelayXus(4); /延時4us DS1820_DQ = 1; /釋放總線,準(zhǔn)備讀數(shù)據(jù) DelayXus(8); /延時8 微秒讀數(shù)據(jù) if (DS1820_DQ = 1)TmepData |= 0x80;DelayXus(60); /延時60us DS1820_DQ = 1; /拉高總線,準(zhǔn)備下一位數(shù)據(jù)的讀取. return (TmepData);/返回讀到的數(shù)據(jù) 5./* 讀取溫度程序 */void read_wendu()BYTE i;DS1820_Reset();

36、/復(fù)位DS1820_WriteData(0xcc); /跳過ROM 命令DS1820_WriteData(0x44); /溫度轉(zhuǎn)換命令DS1820_Reset(); /復(fù)位DS1820_WriteData(0xcc); /跳過ROM 命令DS1820_WriteData(0xbe); /讀DS1820 溫度暫存器命令for (i=0;i<2;i+)temperaturei=DS1820_ReadData(); /采集溫度DS1820_Reset(); /復(fù)位,結(jié)束讀數(shù)據(jù) DS12C887時間設(shè)定程序1. /* DS12887口地址 */ #define DS_A XBYTE0x100A

37、/寄存器 #define DS_B XBYTE0x100B /寄存器 #define DS_C XBYTE0x100C /寄存器 #define Years XBYTE0x1009 /年 #define Month XBYTE0x1008 /月 #define Day XBYTE0x1007 /日 #define Week XBYTE0x1006 /星期 #define Hour XBYTE0x1004 /時 #define Minute XBYTE0x1002 /分 #define Second XBYTE0x1000 /秒 2. /* DS12887初始化程序 */void DS_init

38、() DS_A=0x20; DS_B=0x16;3. /* DS12887時間設(shè)定 */void write_time() DS_A=0x2f; /寄存器 DS_B|=0x80; Years=14; /年 Month=7; /月 Day=2; /日 Week=3; /星期 Hour=14; /時 Minute=12; /分 Second=0; /秒 DS_B &=0x7f; /寄存器 LCD1602顯示程序(溫度、時間、AD轉(zhuǎn)換結(jié)果)1. /* 1602液晶模塊初始化 */void lcd_init(void) write_cmd(0x38);/ write_cmd(0x38);/ w

39、rite_cmd(0x06);/ write_cmd(0x0c);/ write_cmd(0x01);/2./*1602溫度顯示*/void crt_wendu(BYTE line,column)read_wendu();ah=temperature1<<4;ah&=0xf0;al=temperature0>>4;al&=0x0f;ah=ah|al;al=temperature0&0x0f;if (ah&0x80)!=0)if (al=0) ah=ah;ah=ah+1;else ah=ah;al=al;al=al+1;al&=0x

40、0f;wen_val=ah*(-1.0)+al*(-0.0625);else wen_val=ah*1.0+al*0.0625;set_display_place(line,column);crt_r(wen_val,1);write_data(0x20);set_display_place(2,14);write_data(0xDF);write_data(0x43);3. /* 顯示時間 */void crt_time(BYTE line) BYTE dhi,dli;set_display_place(line,0);dli=Month;dhi=dli & 0xf0; dhi>

41、;>=4;dhi+=0x30;dli &=0x0f;dli +=0x30;write_data(dhi);write_data(dli);dli=0x2d;write_data(dli);dli=Day;dhi=dli & 0xf0;dhi>>=4;dhi+=0x30;dli &=0x0f;dli +=0x30;write_data(dhi);write_data(dli);dli=0x20;write_data(dli);write_data(dli);write_data(dli);dli=Hour;dhi=dli & 0xf0;dhi&g

42、t;>=4;dhi+=0x30;dli &=0x0f;dli +=0x30;write_data(dhi);write_data(dli);dli=0x3a;write_data(dli);dli=Minute;dhi=dli & 0xf0;dhi>>=4;dhi+=0x30;dli &=0x0f;dli +=0x30;write_data(dhi);write_data(dli);dli=0x3a;write_data(dli);dli=Second;dhi=dli & 0xf0;dhi>>=4;dhi+=0x30;dli &am

43、p;=0x0f;dli +=0x30;write_data(dhi);write_data(dli);4./*AD轉(zhuǎn)換*/* AD 轉(zhuǎn)換寄存器 */sfr P1ASF = 0x9D; /P1 口功能控制寄存器sfr ADC_CONTR = 0xBC; /AD 控制寄存器sfr ADC_RES = 0xBD; /AD 轉(zhuǎn)換結(jié)果高位sfr ADC_RESL = 0xBE; /AD 轉(zhuǎn)換結(jié)果低位sfr AUXR1 = 0xA2; /AD 轉(zhuǎn)換結(jié)果寄存器#define ADC_POWER 0x80 /AD 轉(zhuǎn)換電源開啟#define ADC_FLAG 0x10 /AD 轉(zhuǎn)換標(biāo)志位#define ADC

44、_START 0x08 /AD 轉(zhuǎn)換開始位#define ADRJ1 0x40 /AD 轉(zhuǎn)換結(jié)果:高 2 位+低 8 位#define ADC_SPEEDLL 0x00 /AD 轉(zhuǎn)換速度控制, 540 個時鐘周期#define ADC_SPEEDL 0x20 /AD 轉(zhuǎn)換速度控制,360 個時鐘周期#define ADC_SPEEDH 0x40 /AD 轉(zhuǎn)換速度控制, 180 個時鐘周期#define ADC_SPEEDHH 0x60 /AD 轉(zhuǎn)換速度控制,90 個時鐘周期void InitADC()P1ASF=0x08;/設(shè)置模擬管腳ADC_RES=0x00;ADC_RESL=0x00;AD

45、C_CONTR=ADC_CONTR|ADC_POWER|ADC_SPEEDHH|0x08;Delay(1);void GetADCResult(BYTE ch)AUXR1 &=ADRJ1;ADC_CONTR|=ADC_START|ch;_nop_();_nop_();_nop_();_nop_();while(!(ADC_CONTR & ADC_FLAG);ADC_CONTR &=ADC_FLAG;AD_val_h=ADC_RES;AD_val_l=ADC_RESL;AD_val=AD_val_h*4+AD_val_l;AD_float=AD_val*5.0/1024.

46、0;void crt_U()write_string_lcd(2,0, "U:");set_display_place(2,3);crt_r(AD_float,3); /AD轉(zhuǎn)換結(jié)果處理函數(shù),5/* 鍵盤掃描*/unsigned char keyscan(unsigned char m , unsigned char n)P1=m;temp=P1;while(temp!=m)late(10);P1=m;temp=P1;while(temp!=m)if(temp=m-1)num=1+(n-1)*4;else if(temp=m-2)num=2+(n-1)*4;temp=P1;

47、late(10);temp=P1;return num;/TR0=1;6./* LED 循環(huán)閃爍程序*/void ledplay()k=(1024-AD_val)*20.0;led=t;t=_crol_(t,1);void ledplay1()k=(1024-AD_val)*20.0;led=t;t=_cror_(t,1);4.3 程序調(diào)試及結(jié)果圖 液晶顯示實物圖第五章 總結(jié) 本次課程設(shè)計,使我加深了對單片機的認(rèn)識,并且熟悉了單片機系統(tǒng)的設(shè)計流程,受益匪淺。在功能上基本達(dá)標(biāo):時鐘的日期顯示,溫度顯示。時鐘顯示功能能精確度完全可以滿足日常生活顯示時間的需要,以及實時溫度的讀取。硬件設(shè)施基本合乎要

48、求,軟件設(shè)計可以配合硬件實現(xiàn)其功能。課程設(shè)計是培養(yǎng)學(xué)生綜合運用所學(xué)知識,發(fā)現(xiàn)、提出、分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學(xué)生實際工作能力的具體訓(xùn)練和考察過程.隨著科學(xué)技術(shù)發(fā)展的日新日異,單片機已經(jīng)成為當(dāng)今計算機應(yīng)用中空前活躍的領(lǐng)域,在生活中可以說得是無處不在。對于我們學(xué)習(xí)電子信息的學(xué)生來說,單片機是我們必須掌握的一種技能,也是我們在今后走向社會的一項優(yōu)勢。在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,比如說不懂一些元器件的使用方法,對單片機C語言掌握得不好。通過這次課程設(shè)計之后,一定把以前所學(xué)過的知識重新溫故。從這次的論文設(shè)計中,我真正的體會

49、到,知識的重要性,特別是要理論聯(lián)系實際,把我們所學(xué)的理論知識運用到實際生活當(dāng)中,要用知識改變一切。參考文獻1 張毅剛,彭喜元,單片機原理及應(yīng)用(第二版)M.北京:高等教育出版社,2010:5.2 張毅剛,新編MCS-51單片機應(yīng)用設(shè)計.哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2008.33 高衛(wèi)東.51單片機原理與實踐. 北京航空航天大學(xué)出版社.2008.4劉同法,肖志剛,彭繼衛(wèi),C51單片機C程序模板與應(yīng)用工程實踐.北京:北京航空航天華大學(xué)出版社.2010.85 江志紅.51單片機技術(shù)與應(yīng)用系統(tǒng)開發(fā).清華大學(xué)出版社.2008.6 王守中.51單片機應(yīng)用開發(fā)速查手冊.人民郵電出版社.2009.7 姚永平

50、.STC12C5A60S2系列單片機器件手冊. 宏晶STC單片機科技.2011:1-459.8 林國清,李見為,王崇文.一種新型的時鐘日歷芯片DS12C887D.重慶:重慶大學(xué)光電工程學(xué)院,2007:1-3.附錄 原理圖附錄 程序清單#include "reg51.h"#include"absacc.h" #include"math.h"#include "intrins.h" /* AD 轉(zhuǎn)換寄存器 */sfr P1ASF = 0x9D; /P1 口功能控制寄存器sfr ADC_CONTR = 0xBC; /AD

51、 控制寄存器sfr ADC_RES = 0xBD; /AD 轉(zhuǎn)換結(jié)果高位sfr ADC_RESL = 0xBE; /AD 轉(zhuǎn)換結(jié)果低位sfr AUXR1 = 0xA2; /AD 轉(zhuǎn)換結(jié)果寄存器typedef unsigned char BYTE;typedef unsigned int WORD;#define ADC_POWER 0x80 /AD 轉(zhuǎn)換電源開啟#define ADC_FLAG 0x10 /AD 轉(zhuǎn)換標(biāo)志位#define ADC_START 0x08 /AD 轉(zhuǎn)換開始位#define ADRJ1 0x40 /AD 轉(zhuǎn)換結(jié)果:高 2 位+低 8 位#define ADC_SPEEDLL 0x00 /AD 轉(zhuǎn)換速度控制, 540 個時鐘周期#define ADC_SPEEDL 0x20 /AD 轉(zhuǎn)換速度控制,360 個時鐘周期#define ADC_SPEEDH 0x40 /AD 轉(zhuǎn)換速度控制, 180 個時鐘周期#define ADC_SPEEDHH 0x60 /AD 轉(zhuǎn)換速度控制,90 個時鐘周期/* 液晶 1602 口地址 */#define wr_com XBYTE0xC000 /寫命令#define wr_data XBYTE0xC100 /寫數(shù)據(jù)#define rd_com XBYTE0xC200 /讀命令#define

溫馨提示

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

評論

0/150

提交評論