LED燈循環(huán)顯示速度的電位器控制設(shè)計(jì)_第1頁(yè)
LED燈循環(huán)顯示速度的電位器控制設(shè)計(jì)_第2頁(yè)
LED燈循環(huán)顯示速度的電位器控制設(shè)計(jì)_第3頁(yè)
LED燈循環(huán)顯示速度的電位器控制設(shè)計(jì)_第4頁(yè)
LED燈循環(huán)顯示速度的電位器控制設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩45頁(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)介

學(xué)號(hào)天津城建大學(xué)單片機(jī)原理及接口技術(shù)課程設(shè)計(jì)設(shè)計(jì)說(shuō)明書(shū)LED燈循環(huán)顯示速度的電位器控制設(shè)計(jì)起止日期:2014年12月22日至2014年12月31日學(xué)生姓名班級(jí)12電信二班成績(jī)指導(dǎo)教師(簽字)計(jì)算機(jī)與信息工程學(xué)院20目錄第一章 設(shè)計(jì)任務(wù)及要求 3設(shè)計(jì)目的 3設(shè)計(jì)基本要求 3設(shè)計(jì)任務(wù) 3第二章設(shè)計(jì)原理 4STC12C5A60S2以及最小系統(tǒng)介紹 4DS12C887時(shí)鐘芯片 5DS12C887概述 5DS12C887引腳介紹 5DS12C887內(nèi)部地址空間 7LCD1602液晶以顯示模塊 71602液晶概述 71602引腳介紹 71602字符液晶的讀寫(xiě) 8DS18B20溫度傳感器與A/D轉(zhuǎn)換 9DS18B20概述 9DS18B20引腳介紹 10DS18B20功能使用 10A/D轉(zhuǎn)換器的結(jié)構(gòu) 12與A/D轉(zhuǎn)換相關(guān)的寄存器 12第三章硬件設(shè)計(jì) 14系統(tǒng)硬件概述 14硬件復(fù)位電路 14時(shí)間獲取電路 14DS18B20測(cè)溫及LED電路 15LCD液晶顯示電路 15AD轉(zhuǎn)換電路及按鍵掃描電路 16第四章軟件設(shè)計(jì) 17程序流程框圖 17程序設(shè)計(jì) 18DS18B20讀取溫度程序 18DS12C887時(shí)間設(shè)定程序 20LCD1602顯示程序(溫度、時(shí)間、AD轉(zhuǎn)換結(jié)果) 21程序調(diào)試及結(jié)果 25第五章總結(jié) 26參考文獻(xiàn) 27附錄Ⅰ原理圖 28附錄Ⅱ程序清單 29附錄Ⅲ元器件清單 43設(shè)計(jì)任務(wù)及要求設(shè)計(jì)目的1.進(jìn)一步熟悉和掌握單片機(jī)系統(tǒng)設(shè)計(jì)和編程原理。2.掌握單片機(jī)的接口技術(shù)及相關(guān)外圍芯片的外特性、控制方法。3.通過(guò)設(shè)計(jì),掌握以單片機(jī)核心的電路設(shè)計(jì)的基本方法和技術(shù)。4.通過(guò)實(shí)際程序設(shè)計(jì)和調(diào)試,掌握模塊化程序設(shè)計(jì)方法和調(diào)試技術(shù)。5.通過(guò)完成一個(gè)包括電路設(shè)計(jì)和程序開(kāi)發(fā)的完整過(guò)程,了解開(kāi)發(fā)單片機(jī)應(yīng)用系統(tǒng)的全過(guò)程,為今后從事相應(yīng)開(kāi)發(fā)打下基礎(chǔ)。設(shè)計(jì)基本要求1.認(rèn)真認(rèn)識(shí)設(shè)計(jì)的意義,掌握設(shè)計(jì)工作程序,學(xué)會(huì)使用工具書(shū)和技術(shù)參考資料,并培養(yǎng)科學(xué)的設(shè)計(jì)思想和良好的設(shè)計(jì)作風(fēng)。2.提高模型建立和設(shè)計(jì)能力,學(xué)會(huì)應(yīng)用相關(guān)設(shè)計(jì)資料進(jìn)行設(shè)計(jì)計(jì)算的方法。3.提高獨(dú)立分析、解決問(wèn)題的能力,逐步增強(qiáng)實(shí)際應(yīng)用訓(xùn)練。4.設(shè)計(jì)的說(shuō)明書(shū)要求簡(jiǎn)潔、通順,電路圖內(nèi)容完整、清楚、規(guī)范。設(shè)計(jì)任務(wù)a)設(shè)計(jì)實(shí)現(xiàn)功能STC12C5A60S2(引腳排序及基本功能同AT89S51)作為主控芯片,設(shè)計(jì)利用LCD1602顯示時(shí)間、溫度和電位器輸出電壓,并使發(fā)光二級(jí)管循環(huán)點(diǎn)亮。一是擴(kuò)展DS12C887外圍電路,實(shí)現(xiàn)時(shí)間信息顯示;二是DS18B20b)原理圖設(shè)計(jì)1.原理圖設(shè)計(jì)要符合項(xiàng)目的工作原理,連線要正確。2.圖中所使用的元器件要合理選用,電阻、電容等器件的參數(shù)要正確標(biāo)明。3.原理圖要完整,CPU、外圍器件、外擴(kuò)接口、輸入/輸出裝置要一應(yīng)俱全。c)程序調(diào)計(jì)1.根據(jù)要求,將總體功能分解成若干個(gè)子功能模塊,每個(gè)功能模塊完成一個(gè)特定的功能。2.根據(jù)總體要求及分解的功能模塊,確定各功能模塊之間的關(guān)系,設(shè)計(jì)出完整的程序流程圖。d)程序調(diào)試1.編寫(xiě)相關(guān)程序,并進(jìn)行仿真。2.將程序下載到單片機(jī),進(jìn)行運(yùn)行調(diào)試。e)設(shè)計(jì)說(shuō)明書(shū)1.原理圖設(shè)計(jì)說(shuō)明簡(jiǎn)要說(shuō)明設(shè)計(jì)目的,原理圖中所使用的元器件功能及在圖中的作用,各器件的工作過(guò)程及順序。2.程序設(shè)計(jì)說(shuō)明對(duì)程序設(shè)計(jì)總體功能及結(jié)構(gòu)進(jìn)行說(shuō)明,對(duì)各子模塊的功能以及各子模塊之間的關(guān)系作較詳細(xì)的描述。3.畫(huà)出工作原理圖,程序流程圖并給出相應(yīng)的程序清單。第二章設(shè)計(jì)原理STC12C5A60S2以及最小系統(tǒng)介紹STC12C5A60S2是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低電壓,高性能CMOS8位微處理器,俗稱(chēng)單片機(jī)。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。圖STC12C5A60S2引腳圖及晶振復(fù)位電路引腳說(shuō)明:VCC:供電電壓。GND:接地。 P0口:P0口為一個(gè)8位漏級(jí)開(kāi)路雙向I/O口,每腳可吸收8TTL門(mén)電流。當(dāng)P0口的管腳第一次寫(xiě)1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的低八位。在FIASH編程時(shí),P0口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須接上拉電阻。P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門(mén)電流。P1口管腳寫(xiě)入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為低八位地址接收。P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門(mén)電流,當(dāng)P2口被寫(xiě)“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫(xiě)時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門(mén)電流。當(dāng)P3口寫(xiě)入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如表所示:表P3口第二功能表RXD(串行輸入口)TXD(串行輸出口)/INT0(外部中斷0)/INT1(外部中斷1)T0(記時(shí)器0外部輸入)T1(記時(shí)器1外部輸入)/WR(外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通)/RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。ALE/PROG:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的低位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí),ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無(wú)效。/PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。/EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。XTAL2:來(lái)自反向振蕩器的輸出。DS12C887時(shí)鐘芯片2.2.1DS12C887概述DS12C887實(shí)時(shí)時(shí)鐘芯片功能豐富,可以用來(lái)直接代替IBMPC上的時(shí)鐘日歷芯片DS12887,同時(shí),它的管腳也和MC146818B、DS12887相兼容。由于DS12C887能夠自動(dòng)產(chǎn)生世紀(jì)、年、月、日、時(shí)、分、秒等時(shí)間信息,其內(nèi)部又增加了世紀(jì)寄存器,從而利用硬件電路解決子“千年”問(wèn)題;DS12C887中自帶有鋰電池,外部掉電時(shí),其內(nèi)部時(shí)間信息還能夠保持10年之久;對(duì)于一天內(nèi)的時(shí)間記錄,有12小時(shí)制和24小時(shí)制兩種模式。在12小時(shí)制模式中,用AM和PM區(qū)分上午和下午;時(shí)間的表示方法也有兩種,一種用二進(jìn)制數(shù)表示,一種是用BCD碼表示;DS12C887中帶有128字節(jié)RAM,其中有11字節(jié)RAM用來(lái)存儲(chǔ)時(shí)間信息,4字節(jié)RAM用來(lái)存儲(chǔ)DS12C887的控制信息,稱(chēng)為控制寄存器,113字節(jié)通用RAM使用戶(hù)使用;此外用戶(hù)還可對(duì)DS12C887進(jìn)行編程以實(shí)現(xiàn)多種方波輸出,并可對(duì)其內(nèi)部的三路中斷通過(guò)軟件進(jìn)行屏蔽。DS12C887引腳介紹圖2.2.2DS12887引腳圖引腳說(shuō)明:GND、VCC:直流電源,其中VCC接+5V輸入,GND接地,當(dāng)VCC輸入為+5V時(shí),用戶(hù)可以訪問(wèn)DS12C887內(nèi)RAM中的數(shù)據(jù),并可對(duì)其進(jìn)行讀、寫(xiě)操作;當(dāng)VCC的輸入小于+時(shí),禁止用戶(hù)對(duì)內(nèi)部RAM進(jìn)行讀、寫(xiě)操作,此時(shí)用戶(hù)不能正確獲取芯片內(nèi)的時(shí)間信息;當(dāng)VCC的輸入小于+3V時(shí),DS12C887會(huì)自動(dòng)將電源發(fā)換到內(nèi)部自帶的鋰電池上,以保證內(nèi)部的電路能夠正常工作。(1)MOT:模式選擇腳,DS12C887有兩種工作模式,即Motorola模式和Intel模式,當(dāng)MOT接VCC時(shí),選用的工作模式是Motorola模式,當(dāng)MOT接GND時(shí),選用的是Intel模式。本文主要討論Intel模式。(23)SQW:方波輸出腳,當(dāng)供電電壓VCC大于時(shí),SQW腳可進(jìn)行方波輸出,此時(shí)用戶(hù)可以通過(guò)對(duì)控制寄存器編程來(lái)得到13種方波信號(hào)的輸出。AD0~AD7:復(fù)用地址數(shù)據(jù)總線,該總線采用時(shí)分復(fù)用技術(shù),在總線周期的前半部分,出現(xiàn)在AD0~AD7上的是地址信息,可用以選通DS12C887內(nèi)的RAM,總線周期的后半部分出現(xiàn)在AD0~AD7上的數(shù)據(jù)信息。(14)AS:地址選通輸入腳,在進(jìn)行讀寫(xiě)操作時(shí),AS的上升沿將AD0~AD7上出現(xiàn)的地址信息鎖存到DS12C887上,而下一個(gè)下降沿清除AD0~AD7上的地址信息,不論是否有效,DS12C887都將執(zhí)行該操作。(17)DS/RD:數(shù)據(jù)選擇或讀輸入腳,該引腳有兩種工作模式,當(dāng)MOT接VCC時(shí),選用Motorola工作模式,在這種工作模式中,每個(gè)總線周期的后一部分的DS為高電平,被稱(chēng)為數(shù)據(jù)選通。在讀操作中,DS的上升沿使DS12C887將內(nèi)部數(shù)據(jù)送往總線AD0~AD7上,以供外部讀取。在寫(xiě)操作中,DS的下降沿將使總線AD0~AD7上的數(shù)據(jù)鎖存在DS12C887中;當(dāng)MOT接GND時(shí),選用Intel工作模式,在該模式中,該引腳是讀允許輸入腳,即ReadEnable。(15)R/W:讀/寫(xiě)輸入端,該管腳也有2種工作模式,當(dāng)MOT接VCC時(shí),R/W工作在Motorola模式。此時(shí),該引腳的作用是區(qū)分進(jìn)行的是讀操作還是寫(xiě)操作,當(dāng)R/W為高電平時(shí)為讀操作,R/W為低電平時(shí)為寫(xiě)操作;當(dāng)MOT接GND時(shí),該腳工作在Intel模式,此時(shí)該作為寫(xiě)允許輸入,即WriteEnable。(13):片選輸入,低電平有效。(19):中斷請(qǐng)求輸入,低電平有效,該腳有效對(duì)DS12C887內(nèi)的時(shí)鐘、日歷和RAM中的內(nèi)容沒(méi)有任何影響,僅對(duì)內(nèi)部的控制寄存器有影響,在典型的應(yīng)用中,RESET可以直接接VCC,這樣可以保證DS12C887在掉電時(shí),其內(nèi)部控制寄存器不受影響。2.2.3DS12C887內(nèi)部地址空間LCD1602液晶以顯示模塊1602液晶概述工業(yè)字符型液晶,1602是指顯示的內(nèi)容為16*2,即能夠同時(shí)顯示兩行,每行16個(gè)字符。常見(jiàn)的1602字符液晶有兩種,一種顯示的是綠色背光黑色字體,另一種顯示藍(lán)色背光白色字體,目前市面上字符液晶絕大多數(shù)是基于HD44780液晶芯片的,控制原理是完全相同的。本課題所用1602液晶模塊,顯示屏是藍(lán)色背光白色字體。

1602引腳介紹圖2.3.21602引腳圖編號(hào)符號(hào)引腳說(shuō)明編號(hào)符號(hào)引腳說(shuō)明1VSS電源地2VDD電源正極3VEE液晶顯示對(duì)比度調(diào)節(jié)端4RS數(shù)據(jù)/命令選擇端5R/W讀寫(xiě)選擇6E使能信號(hào)7D0數(shù)據(jù)口8D1數(shù)據(jù)口9D2數(shù)據(jù)口10D3數(shù)據(jù)口11D4數(shù)據(jù)口12D5數(shù)據(jù)口13D6數(shù)據(jù)口14D7數(shù)據(jù)口各個(gè)引腳具體功能說(shuō)明:第1腳:VSS為地電源。第2腳:VDD接5V正電源。第3腳:VEE為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高,對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生重影,使用一個(gè)1K的電位器調(diào)整對(duì)比度。第4腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器,低電平時(shí)選擇指令寄存器。第5腳:R/W為讀寫(xiě)信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫(xiě)操作。第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。第7~14腳:DB0~DB7為8位雙向數(shù)據(jù)線。1602字符液晶的讀寫(xiě)(1)基本操作時(shí)序操作輸入輸出讀狀態(tài)RS=L,RW=H,E=HD0~D7=狀態(tài)字寫(xiě)指令RS=L,RW=L,D0~D7=指令碼,E=高脈沖無(wú)讀數(shù)據(jù)RS=H,RW=H,E=HD0~D7=數(shù)據(jù)寫(xiě)數(shù)據(jù)RS=H,RW=L,D0~D7=數(shù)據(jù),E=高脈沖無(wú)(2)RAM 1602液晶控制器芯片內(nèi)部帶有80個(gè)8位的RAM緩沖區(qū),其地址和屏幕的對(duì)應(yīng)關(guān)系如圖示圖(3)1602字符液晶字庫(kù)

1602液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(CGROM)已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖形,如下表所示,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫(xiě)、常用的符號(hào)、和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼,比如大寫(xiě)的英文字母“A”的代碼是01000001B(41H),顯示時(shí)模塊把地址41H中的點(diǎn)陣字符圖形顯示出來(lái),我們就能看到字母“A”。DS18B20溫度傳感器與A/D轉(zhuǎn)換DS18B20概述DS18B20單線數(shù)字溫度傳感器,即“一線器件”,其具有獨(dú)特的優(yōu)點(diǎn):(1)采用單總線的接口方式與微處理器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處理器與DS18B20的雙向通訊。單總線具有經(jīng)濟(jì)性好,抗干擾能力強(qiáng),適合于惡劣環(huán)境的現(xiàn)場(chǎng)溫度測(cè)量,使用方便等優(yōu)點(diǎn),使用戶(hù)可輕松地組建傳感器網(wǎng)絡(luò),為測(cè)量系統(tǒng)的構(gòu)建引入全新概念。(2)測(cè)量溫度范圍寬,測(cè)量精度高DS18B20的測(cè)量范圍為-55℃~+125℃;在-10~+85°C范圍內(nèi),精度為±°C。(3)在使用中不需要任何外圍元件。(4)持多點(diǎn)組網(wǎng)功能多個(gè)DS18B20可以并聯(lián)在惟一的單線上,實(shí)現(xiàn)多點(diǎn)測(cè)溫。(5)供電方式靈活DS18B20可以通過(guò)內(nèi)部寄生電路從數(shù)據(jù)線上獲取電源。因此,當(dāng)數(shù)據(jù)線上的時(shí)序滿足一定的要求時(shí),可以不接外部電源,從而使系統(tǒng)結(jié)構(gòu)更趨簡(jiǎn)單,可靠性更高。(6)測(cè)量參數(shù)可配置DS18B20的測(cè)量分辨率可通過(guò)程序設(shè)定9~12位。(7)負(fù)壓特性電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作。(8)掉電保護(hù)功能DS18B20內(nèi)部含有EEPROM,在系統(tǒng)掉電以后,它仍可保存分辨率及報(bào)警溫度的設(shè)定值。DS18B20具有體積更小、適用電壓更寬、更經(jīng)濟(jì)、可選更小的封裝方式,更寬的電壓適用范圍,適合于構(gòu)建自己的經(jīng)濟(jì)的測(cè)溫系統(tǒng),因此也就被設(shè)計(jì)者們所青睞。DS18B20引腳介紹圖DS18B20引腳圖引腳說(shuō)明:1.GND為電源地;2.DQ為數(shù)字信號(hào)輸入/輸出端;3.VDD為外接供電電源輸入端(在寄生電源接線方式時(shí)接地)DS18B20功能使用一、DS18B20內(nèi)部構(gòu)成圖DS18B20內(nèi)部結(jié)構(gòu)圖高速暫存存儲(chǔ)器由9個(gè)字節(jié)組成,如圖所示。當(dāng)溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所得的溫度值以二字節(jié)補(bǔ)碼形式存放在高速暫存存儲(chǔ)器的第0和第1個(gè)字節(jié)。單片機(jī)可通過(guò)單線接口讀到該數(shù)據(jù),讀取時(shí)低位在前,高位在后,對(duì)應(yīng)的溫度計(jì)算:當(dāng)符號(hào)位S=0時(shí),直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)S=1時(shí),先將補(bǔ)碼變?yōu)樵a,再計(jì)算十進(jìn)制值。圖中的溫度傳感器完成對(duì)溫度的測(cè)量,用16位二進(jìn)制形式提供,形式表達(dá),其中S為符號(hào)位。例如:+125℃的數(shù)字輸出07D0H(正溫度直接把16進(jìn)制數(shù)轉(zhuǎn)成10進(jìn)制即得到溫度值)-55℃的數(shù)字輸出為FC90H。(負(fù)溫度把得到的16進(jìn)制數(shù)取反后加1再轉(zhuǎn)成10進(jìn)制數(shù))二、讀操作和寫(xiě)操作寫(xiě)操作寫(xiě)周期最少為60微秒,最長(zhǎng)不超過(guò)120微秒。寫(xiě)周期一開(kāi)始做為主機(jī)先把總線拉低1微秒表示寫(xiě)周期開(kāi)始。隨后若主機(jī)想寫(xiě)0,則繼續(xù)拉低電平最少60微秒直至寫(xiě)周期結(jié)束,然后釋放總線為高電平。若主機(jī)想寫(xiě)1,在一開(kāi)始拉低總線電平1微秒后就釋放總線為高電平,一直到寫(xiě)周期結(jié)束。而做為從機(jī)的DS18B20則在檢測(cè)到總線被拉底后等待15微秒然后從15us到45us開(kāi)始對(duì)總線采樣,在采樣期內(nèi)總線為高電平則為1,若采樣期內(nèi)總線為低電平則為0。讀操作對(duì)于讀數(shù)據(jù)操作時(shí)序也分為讀0時(shí)序和讀1時(shí)序兩個(gè)過(guò)程。讀時(shí)隙是從主機(jī)把單總線拉低之后,在1微秒之后就得釋放單總線為高電平,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在檢測(cè)到總線被拉低1微秒后,便開(kāi)始送出數(shù)據(jù),若是要送出0就把總線拉為低電平直到讀周期結(jié)束。若要送出1則釋放總線為高電平。主機(jī)在一開(kāi)始拉低總線1微秒后釋放總線,然后在包括前面的拉低總線電平1微秒在內(nèi)的15微秒時(shí)間內(nèi)完成對(duì)總線進(jìn)行采樣檢測(cè),采樣期內(nèi)總線為低電平則確認(rèn)為0。采樣期內(nèi)總線為高電平則確認(rèn)為1。完成一個(gè)讀時(shí)序過(guò)程,至少需要60us才能完成。A/D轉(zhuǎn)換器的結(jié)構(gòu)STC12C5A60S2系列單片機(jī)ADC由多路選擇開(kāi)關(guān)、比較器、逐次比較寄存器、10位DAC、轉(zhuǎn)換結(jié)果寄存器(ADC_RES和ADC_RESL)以及ADC_CONTR構(gòu)成。STC12C5A60S2系列單片機(jī)的ADC是逐次比較型ADC。逐次比較型ADC由一個(gè)比較器和D/A轉(zhuǎn)換器構(gòu)成,通過(guò)逐次比較邏輯,從最高位(MSB)開(kāi)始,順序地對(duì)每一輸入電壓與內(nèi)置D/A轉(zhuǎn)換器輸出進(jìn)行比較,經(jīng)過(guò)多次比較,使轉(zhuǎn)換所得的數(shù)字量逐次逼近輸入模擬量對(duì)應(yīng)次。逐次比較型A/D轉(zhuǎn)換器具有速度高,功耗低等優(yōu)點(diǎn)。STC12C5A60AD/S2系列帶A/D轉(zhuǎn)換的單片機(jī)的A/D轉(zhuǎn)換口在P1口(,有8路10位高速A/D轉(zhuǎn)換器,速度可達(dá)到250KHz(25萬(wàn)次/秒)。8路電壓輸入型A/D,可做溫度檢測(cè)、電池電壓檢測(cè)、按鍵掃描、頻譜檢測(cè)等。上電復(fù)位后P1口為弱上拉型I/O口,用戶(hù)可以通過(guò)軟件設(shè)置將8路中的任何一路設(shè)置為A/D轉(zhuǎn)換,不需作為A/D使用的口可繼續(xù)作為I/O口使用。STC12C5A60S2系列單片機(jī)ADC(A/D轉(zhuǎn)換器)的結(jié)構(gòu)如下圖所示。圖STC12C5A60S2A/D轉(zhuǎn)換器結(jié)構(gòu)與A/D轉(zhuǎn)換相關(guān)的寄存器與STC12C5A60S2系列單片機(jī)A/D轉(zhuǎn)換相關(guān)的寄存器列于下圖所示。圖A/D轉(zhuǎn)換相關(guān)寄存器第三章硬件設(shè)計(jì)系統(tǒng)硬件概述STC12C5A60S2作為主控芯片,時(shí)鐘電路由高精度低功耗的DS12C887提供,本設(shè)計(jì)硬件構(gòu)造主要由四部分構(gòu)成:復(fù)位電路、時(shí)鐘獲取電路、溫度獲取、鍵盤(pán)掃描和LCD顯示鍵盤(pán)掃描鍵盤(pán)掃描時(shí)鐘芯片1602液晶顯示LED讀時(shí)間LED讀時(shí)間數(shù)據(jù)顯示數(shù)據(jù)顯示STC12CSTC12C5A讀溫度讀溫度復(fù)位、晶振復(fù)位、晶振DS18B20DS18B20圖3.1.1硬件構(gòu)造流程圖硬件復(fù)位電路Vcc的+5V電平就會(huì)直接加到REST端,單片機(jī)復(fù)位。晶振為單片機(jī)提供穩(wěn)定的振蕩頻率。圖單片機(jī)復(fù)位電路圖時(shí)間獲取電路單片機(jī)通過(guò)P0口與DS12C887時(shí)鐘芯片的AD[0..7]管腳相連接,用來(lái)獲取時(shí)間信息。DS12C887芯片的MOT端接地,使其為Intel模式。圖DS12887時(shí)間電路DS18B20測(cè)溫及LED電路DS18B20的第二個(gè)引腳接單片機(jī)的P17,用來(lái)讀取DS18B20溫度轉(zhuǎn)換的數(shù)據(jù)。8個(gè)LED顯示由74HC573擴(kuò)展的輸出口控制,硬件電路由單片機(jī)、8個(gè)發(fā)光二級(jí)管、限流電阻、TTL輸出口擴(kuò)展電路等組成。LCD液晶顯示電路圖1602顯示電路AD轉(zhuǎn)換電路及按鍵掃描電路利用電位器VR4的分壓作為單片機(jī)A/D轉(zhuǎn)換的輸入信號(hào),由LCD1602顯示A/D轉(zhuǎn)換結(jié)果。排針P7的第一個(gè)腳接VCC,第三個(gè)腳接GND,第二個(gè)腳接單片機(jī)的AD轉(zhuǎn)換模擬通道腳,用來(lái)測(cè)量電位器的電壓。4*4矩陣鍵盤(pán)行輸入接單片機(jī),列輸入接單片機(jī),通過(guò)掃描方式檢測(cè)是否有鍵按下,并確定鍵值。設(shè)置跳線,連接P1與P2,(P1口連接鍵盤(pán)行列)第四章軟件設(shè)計(jì)程序流程框圖軟件設(shè)計(jì)主要分為DS12887時(shí)間獲取、溫度獲取及LCD液晶顯示。開(kāi)始開(kāi)始保護(hù)現(xiàn)場(chǎng)保護(hù)現(xiàn)場(chǎng)初始化1602,、DS12C887、DS18B20初始化1602,、DS12C887、DS18B20設(shè)計(jì)計(jì)數(shù)初值設(shè)計(jì)計(jì)數(shù)初值A(chǔ)D初始化、定時(shí)器T0初始化AD初始化、定時(shí)器T0初始化cc=5 cc=5 N設(shè)定初始化時(shí)間 Y設(shè)定初始化時(shí)間ccc清零讀取鍵值開(kāi)中斷,啟動(dòng)定時(shí)器開(kāi)中斷,啟動(dòng)定時(shí)器Key=14Key=14Key=13 N讀取時(shí)間,溫度,AD轉(zhuǎn)換結(jié)果讀取時(shí)間,溫度,AD轉(zhuǎn)換結(jié)果 N Y YLED向左循環(huán)LED向右循環(huán)LCD顯示LED向左循環(huán)LED向右循環(huán)LCD顯示恢復(fù)現(xiàn)場(chǎng)判斷時(shí)間,溫度,AD轉(zhuǎn)換結(jié)果是否更新恢復(fù)現(xiàn)場(chǎng)判斷時(shí)間,溫度,AD轉(zhuǎn)換結(jié)果是否更新返回返回圖4.1.1時(shí)間溫度顯示流程圖圖中斷服務(wù)程序流程圖程序設(shè)計(jì)主程序:voidmain(){ TMOD=0x01; TH0=(65536-k)/256; TL0=(65536-k)%256; EA=1; ET0=1; TR0=0; t=0xfe; t1=0x7f; SP=0x60;lcd_init();DS_init();InitADC();AUXR1&=~ADRJ1;4.2.1/*DS18B20初始化*/voidDS18B20_Init(){DS1820_Reset();DS1820_WriteData(0xCC);7F/*DS1820復(fù)位及存在檢測(cè)*/bitDS1820_Reset(){bitflag;DS1820_DQ=0;/*寫(xiě)數(shù)據(jù)到DS1820*/voidDS1820_WriteData(BYTEwData){BYTEi;for(i=8;i>0;i--){DS1820_DQ=0;/*從DS1820中讀出數(shù)據(jù)*/BYTEDS1820_ReadData(){BYTEi,TmepData;for(i=8;i>0;i--){TmepData>>=1;DS1820_DQ=0;}return(TmepData);*讀取溫度程序*/voidread_wendu(){BYTEi;DS1820_Reset();4.2.212C/*DS12887口地址*/#defineDS_AXBYTE[0x100A]100C/*DS12887初始化程序*/voidDS_init(){DS_A=0x20;DS_B=0x16;}3./*DS12887時(shí)間設(shè)定*/voidwrite_time(){DS_A=0x2f;7f4.2.3/*1602液晶模塊初始化*/voidlcd_init(void) {write_cmd(0x38);0c*1602溫度顯示*/voidcrt_wendu(BYTEline,column){read_wendu();ah=temperature[1]<<4;ah&=0xf0;al=temperature[0]>>4;al&=0x0f;ah=ah|al;al=temperature[0]&0x0f;if((ah&0x80)!=0){if(al==0){ah=~ah;ah=ah+1;}else{ ah=~ah;al=~al;al=al+1;al&=0x0f;}wen_val=ah*+al*;}else{wen_val=ah*+al*;}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./*顯示時(shí)間*/voidcrt_time(BYTEline){ BYTEdhi,dli; set_display_place(line,0); dli=Month; dhi=dli&0xf0;dhi>>=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>>=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&=0x0f;dli+=0x30;write_data(dhi);write_data(dli);}4./*AD轉(zhuǎn)換*//*AD轉(zhuǎn)換寄存器*/sfrP1ASF=0x9D;*LED循環(huán)閃爍程序*/voidledplay(){k=(1024-AD_val)*;led=t;t=_crol_(t,1);}voidledplay1(){k=(1024-AD_val)*;led=t;t=_cror_(t,1);}程序調(diào)試及結(jié)果圖4.3.1液晶顯示實(shí)物圖第五章總結(jié)本次課程設(shè)計(jì),使我加深了對(duì)單片機(jī)的認(rèn)識(shí),并且熟悉了單片機(jī)系統(tǒng)的設(shè)計(jì)流程,受益匪淺。在功能上基本達(dá)標(biāo):時(shí)鐘的日期顯示,溫度顯示。時(shí)鐘顯示功能能精確度完全可以滿足日常生活顯示時(shí)間的需要,以及實(shí)時(shí)溫度的讀取。硬件設(shè)施基本合乎要求,軟件設(shè)計(jì)可以配合硬件實(shí)現(xiàn)其功能。課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí),發(fā)現(xiàn)、提出、分析和解決實(shí)際問(wèn)題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對(duì)學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過(guò)程.隨著科學(xué)技術(shù)發(fā)展的日新日異,單片機(jī)已經(jīng)成為當(dāng)今計(jì)算機(jī)應(yīng)用中空前活躍的領(lǐng)域,在生活中可以說(shuō)得是無(wú)處不在。對(duì)于我們學(xué)習(xí)電子信息的學(xué)生來(lái)說(shuō),單片機(jī)是我們必須掌握的一種技能,也是我們?cè)诮窈笞呦蛏鐣?huì)的一項(xiàng)優(yōu)勢(shì)。在設(shè)計(jì)的過(guò)程中發(fā)現(xiàn)了自己的不足之處,對(duì)以前所學(xué)過(guò)的知識(shí)理解得不夠深刻,掌握得不夠牢固,比如說(shuō)不懂一些元器件的使用方法,對(duì)單片機(jī)C語(yǔ)言掌握得不好。通過(guò)這次課程設(shè)計(jì)之后,一定把以前所學(xué)過(guò)的知識(shí)重新溫故。從這次的論文設(shè)計(jì)中,我真正的體會(huì)到,知識(shí)的重要性,特別是要理論聯(lián)系實(shí)際,把我們所學(xué)的理論知識(shí)運(yùn)用到實(shí)際生活當(dāng)中,要用知識(shí)改變一切。參考文獻(xiàn)[1]張毅剛,彭喜元,單片機(jī)原理及應(yīng)用(第二版)[M].北京:高等教育出版社,2010:5.[2]張毅剛,新編MCS-51單片機(jī)應(yīng)用設(shè)計(jì).哈爾濱:哈爾濱工業(yè)大學(xué)出版社,[3]高衛(wèi)東.《51單片機(jī)原理與實(shí)踐》.北京航空航天大學(xué)出版社.2008.[4]劉同法,肖志剛,彭繼衛(wèi),C51單片機(jī)C程序模板與應(yīng)用工程實(shí)踐.北京:北京航空航天華大學(xué)出版社.[5]江志紅.《51單片機(jī)技術(shù)與應(yīng)用系統(tǒng)開(kāi)發(fā)》.清華大學(xué)出版社.2008.[6]王守中.《51單片機(jī)應(yīng)用開(kāi)發(fā)速查手冊(cè)》.人民郵電出版社.2009.[7]姚永平.《STC12C5A60S2系列單片機(jī)器件手冊(cè)》.宏晶STC[8]林國(guó)清,李見(jiàn)為,王崇文.一種新型的時(shí)鐘日歷芯片DS12C887[D].重慶:重慶大學(xué)光電工程學(xué)院,2007:1-3.附錄Ⅰ原理圖附錄Ⅱ程序清單#include""#include""#include""#include""/*AD轉(zhuǎn)換寄存器*/sfrP1ASF=0x9D; } return(TmepData);//返回讀到的數(shù)據(jù)}/**********************************************************延時(shí)n微秒程序**********************************************************/voidDelayXus(WORDn){while(--n);}/**********************************************************讀取溫度程序**********************************************************/voidread_wendu(){BYTEi; DS1820_Reset();//復(fù)位 DS1820_WriteData(0xcc);//跳過(guò)ROM命令 DS1820_WriteData(0x44);//溫度轉(zhuǎn)換命令 DS1820_Reset();//復(fù)位 DS1820_WriteData(0xcc);//跳過(guò)ROM命令 DS1820_WriteData(0xbe);//讀DS1820溫度暫存器命令 for(i=0;i<2;i++) { temperature[i]=DS1820_ReadData();//采集溫度 } DS1820_Reset();//復(fù)位,結(jié)束讀數(shù)據(jù)}/**********************************************************顯示溫度程序**********************************************************/voidcrt_wendu(BYTEline,column){read_wendu();ah=temperature[1]<<4;ah&=0xf0;al=temperature[0]>>4;al&=0x0f;ah=ah|al;al=temperature[0]&0x0f;if((ah&0x80)!=0){ if(al==0) { ah=~ah;ah=ah+1; } else { ah=~ah;al=~al;al=al+1;al&=0x0f; } wen_val=ah*+al*;}else{wen_val=ah*+al*;}set_display_place(line,column);crt_r(wen_val,1);write_data(0x20);set_display_place(2,14);write_data(0xDF);write_data(0x43);}/************************************************************************Functionname:write_cmdDescriptions:向lcd輸入指令************************************************************************/voidwrite_cmd(BYTEcmd){ BYTEdl; do{ dl=rd_com; }while((dl&0x80)!=0); //判忙wr_com=cmd;Delay(1);}/**********************************************************************Functionname:write_dataDescriptions:寫(xiě)入數(shù)據(jù)**********************************************************************/voidwrite_data(BYTEdat) { BYTEdl; do{ dl=rd_com; }while((dl&0x80)!=0); //判忙wr_data=dat;Delay(1);}/***********************************************************************Functionname:write_stringDescriptions:寫(xiě)入字符串***********************************************************************/voidwrite_string(BYTE*s) {while(*s!='\0')//'\0'為字符串結(jié)束標(biāo)志{write_data(*s);s++;}}/**********************************************************************Functionname:set_display_placeDescriptions:設(shè)置字符的顯示位置**********************************************************************/voidset_display_place(BYTEline,column){BYTEaddress;if(line==1){address=0x80+column;}elseif(line==2){address=0xc0+column;}write_cmd(address);}/*******************************************************************Functionname:將字符串寫(xiě)到指定的位置Descriptions:將字符串顯示在lcd的特定位置*******************************************************************/voidwrite_string_lcd(BYTEline,column,unsignedchar*string){set_display_place(line,column);write_string(string);Delay(1);}/******************************************************************Functionname:將字符寫(xiě)到指定的位置Descriptions:將字符串顯示在lcd的特定位置*******************************************************************/voidwrite_data_lcd(BYTEline,column,dat){set_display_place(line,column);write_data(dat);Delay(1);}/**************鍵盤(pán)掃描***************************/unsignedcharkeyscan(unsignedcharm,unsignedcharn){ 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;} elseif(temp==m-2){num=2+(n-1)*4;} temp=P1; } late(10); temp=P1; } returnnum;}/************液晶模塊初始化******************/voidlcd_init(void) {write_cmd(0x38);//write_cmd(0x38);//write_cmd(0x06);//write_cmd(0x0c);//write_cmd(0x01);//}voidInitADC(){P1ASF=0x08; //設(shè)置模擬管腳ADC_RES=0x00;ADC_RESL=0x00;ADC_CONTR=ADC_CONTR|ADC_POWER|ADC_SPEEDHH|0x08;Delay(1);}voidcrt_U(){write_string_lcd(2,0,"U:");set_display_place(2,3);crt_r(AD_float,3);//AD轉(zhuǎn)換結(jié)果處理函數(shù),}/*******AD轉(zhuǎn)換*******************/voidGetADCResult(BYTEch){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*; }/****************顯示長(zhǎng)整型數(shù)據(jù)********************/voidcrti(unsignedlongdat){ unsignedlongdatah; unsignedlongdatal; BYTEdhi,dli,ddi,dei; datah=dat; dhi=0; if(datah>=10) { do { datah/=10; dhi++; }while(datah>=10); datah=dat; ddi=dhi; for(dli=0;dli<dhi;dli++) { datal=1; for(dei=0;dei<ddi;dei++) { datal*=10; } datah=dat/datal; dat=dat%datal; datah+=0x30; write_data(datah); ddi--; } dat+=0x30; write_data(dat); } else { dat=dat+0x30; write_data(dat); }}/****************浮點(diǎn)數(shù)顯示******************/voidcrt_r(floatx,unsignedcharN){ BYTEdli;unsignedintdath; unsignedintdatl; unsignedintdat; if(x< { dat=0x2d; write_data(dat); Delay(1); x=fabs(x); }dath=(int)x; crti(dath);if(N>0){ dat=0x2e;write_data(dat); Delay(1); dat=1;for(dli=0;dli<N;dli++) { dat*=10; } dath=(int)(x*dat)-dath*dat; for(dli=1;dli<N;dli++) { dat/=10; datl=dath/dat; datl+=0x30; write_data(datl); dath%=dat; } crti(dath);} }/************DS12887初始化程序*****************/voidDS_init(){DS_A=0x20; DS_B=0x12;}/*************顯示時(shí)間********************/voidcrt_time(BYTEline){ BYTEdhi,dli; set_display_place(line,0); dli=Month; dhi=dli&0xf0;dhi>>=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); w

溫馨提示

  • 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ù)網(wǎng)僅提供信息存儲(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)論