版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
(完整word版)單片機(jī)高考倒計(jì)時(shí)(完整word版)單片機(jī)高考倒計(jì)時(shí)(完整word版)單片機(jī)高考倒計(jì)時(shí)學(xué)號(hào)1407080125單片機(jī)原理及應(yīng)用A課程設(shè)計(jì)課程設(shè)計(jì)說(shuō)明書(shū)數(shù)碼管顯示的高考倒計(jì)時(shí)裝置設(shè)計(jì)起止日期:2017年01月03日至2017年01月06日學(xué)生姓名李騰班級(jí)14信科一班成績(jī)指導(dǎo)教師(簽字)計(jì)算機(jī)與信息工程學(xué)院2017年01月06日天津城建大學(xué)課程設(shè)計(jì)任務(wù)書(shū)2016—2017學(xué)年第1學(xué)期計(jì)算機(jī)與信息工程學(xué)院電子信息科學(xué)與技術(shù)專(zhuān)業(yè)班級(jí)1班學(xué)號(hào)1407080125課程設(shè)計(jì)名稱(chēng):?jiǎn)纹瑱C(jī)原理及應(yīng)用A課程設(shè)計(jì)設(shè)計(jì)題目:數(shù)碼管顯示的高考倒計(jì)時(shí)裝置設(shè)計(jì)完成期限:自2017年01月03日至2017年01月06日共1周設(shè)計(jì)依據(jù)、要求及主要內(nèi)容:一.設(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ì)主要內(nèi)容a)設(shè)計(jì)實(shí)現(xiàn)功能STC12C5A60S2(引腳排序及基本功能同AT89S51)作為主控芯片,設(shè)計(jì)利用LCD1602進(jìn)行時(shí)間和溫度顯示、數(shù)碼管顯示倒計(jì)時(shí)時(shí)間。一是擴(kuò)展DS12C887外圍電路;二是實(shí)時(shí)計(jì)算高考倒計(jì)時(shí)時(shí)間,并用數(shù)碼管實(shí)現(xiàn)顯示;三是設(shè)計(jì)DS18B20傳感器電路實(shí)現(xiàn)溫度信息顯示。b)原理圖設(shè)計(jì)1.原理圖設(shè)計(jì)要符合項(xiàng)目的工作原理,連線(xiàn)要正確。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)的程序清單.指導(dǎo)教師(簽字):教研室主任(簽字):批準(zhǔn)日期:2017年01月03日目錄TOC\o”1—3"\h\u時(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的一些特殊功能口,如表2.2所示:表1.1P3口第二功能表P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2/INT0(外部中斷0)P3.3/INT1(外部中斷1)P3。4T0(記時(shí)器0外部輸入)P3.5T1(記時(shí)器1外部輸入)P3。6/WR(外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通)P3。7/RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。ALE/PROG:當(dāng)訪(fǎ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有效。但在訪(fǎng)問(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í)鐘工作電路的輸入。1。2DS12C887時(shí)鐘芯片1。2。1DS12C887概述DS12C887HYPERLINK”http:///view/1031044.htm”實(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)為HYPERLINK”/view/4092816。htm"控制寄存器,113字節(jié)通用RAM使用戶(hù)使用;此外用戶(hù)還可對(duì)DS12C887進(jìn)行編程以實(shí)現(xiàn)多種方波輸出,并可對(duì)其內(nèi)部的三路中斷通過(guò)軟件進(jìn)行屏蔽。1。2.2DS12C887引腳介紹圖1.2。2DS12887引腳圖管腳說(shuō)明:GND、VCC:直流電源,其中VCC接+5V輸入,GND接地,當(dāng)VCC輸入為+5V時(shí),用戶(hù)可以訪(fǎng)問(wèn)DS12C887內(nèi)RAM中的數(shù)據(jù),并可對(duì)其進(jìn)行讀、寫(xiě)操作;當(dāng)VCC的輸入小于+4.25V時(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大于4.25V時(shí),SQW腳可進(jìn)行方波輸出,此時(shí)用戶(hù)可以通過(guò)對(duì)控制寄存器編程來(lái)得到13種方波信號(hào)的輸出.AD0~AD7:復(fù)用地址數(shù)據(jù)總線(xiàn),該總線(xiàn)采用時(shí)分復(fù)用技術(shù),在總線(xiàn)周期的前半部分,出現(xiàn)在AD0~AD7上的是地址信息,可用以選通DS12C887內(nèi)的RAM,總線(xiàn)周期的后半部分出現(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è)總線(xiàn)周期的后一部分的DS為高電平,被稱(chēng)為數(shù)據(jù)選通。在讀操作中,DS的上升沿使DS12C887將內(nèi)部數(shù)據(jù)送往總線(xiàn)AD0~AD7上,以供外部讀取。在寫(xiě)操作中,DS的下降沿將使總線(xiàn)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)部控制寄存器不受影響。1。2.3DS12C887內(nèi)部地址空間1。3LCD1602液晶以顯示模塊1。3。11602液晶概述工業(yè)字符型液晶,1602是指顯示的內(nèi)容為16*2,即能夠同時(shí)顯示兩行,每行16個(gè)字符.常見(jiàn)的1602字符液晶有兩種,一種顯示的是綠色背光黑色字體,另一種顯示藍(lán)色背光白色字體,目前市面上字符液晶絕大多數(shù)是基于HD44780液晶芯片的,控制原理是完全相同的。本課題所用1602液晶模塊,顯示屏是藍(lán)色背光白色字體。
1.3.21602引腳介紹圖1。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)線(xiàn),高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫(xiě)操作。第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。第7~14腳:DB0~DB7為8位雙向數(shù)據(jù)線(xiàn).1。3.31602字符液晶使用方法(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”。高位低位0000001000110100010101100111101010111100110111101111XXXX0000⑴0@P\p—タミαPXXXX0001⑵!1AQaq□アチム?qXXXX0010⑶“2BRbr┌イツメβθXXXX0011⑷#3CScs┘ゥテモε∞XXXX0100⑸$4DTdt\ェトャμ?XXXX0101⑹%5EUeuロォナュσoXXXX0110⑺&6FVfvテカニョρ∑XXXX0111⑻’7GWgwアキヌラζⅹXXXX1000⑴(8HXhxィクネリfXXXXX1001⑵)9IYiyウケノル-1yXXXX1010⑶*:JZjzエコハレ?千XXXX1011⑷+;K[k{オサヒロ?萬(wàn)XXXX1100⑸,<L¥l|セシフヮ?ΠXXXX1101⑹—-=M]m}ユスヘソ?÷XXXX1110⑺?!礜^n→ヨセホハ?XXXX1111⑻/?O-o←ツソマロ?第二章硬件設(shè)計(jì)2.1系統(tǒng)硬件概述STC12C5A60S2作為主控芯片,時(shí)鐘電路由高精度低功耗的DS12C887提供,本設(shè)計(jì)硬件構(gòu)造主要由三部分構(gòu)成:復(fù)位電路、時(shí)鐘獲取電路和顯示驅(qū)動(dòng)電路.DSDS12C8871602液晶顯示時(shí)鐘芯片時(shí)鐘芯片間取間取時(shí)獲時(shí)獲STC12C5A60S2復(fù)位及震蕩STC12C5A60S2復(fù)位及震蕩數(shù)據(jù)顯示復(fù)位電路數(shù)據(jù)顯示復(fù)位電路單片機(jī)動(dòng)動(dòng)驅(qū)驅(qū)八位共陽(yáng)八位共陽(yáng)數(shù)碼管圖2.1.1硬件構(gòu)造流程圖2。2硬件復(fù)位電路Vcc的+5V電平就會(huì)直接加到RST端,晶振為單片機(jī)提供穩(wěn)定的振蕩頻率。圖3。2單片機(jī)復(fù)位電路圖2。3時(shí)間獲取電路單片機(jī)通過(guò)P0口與DS12C887時(shí)鐘芯片的AD[0..7]管腳相連接,用來(lái)獲取時(shí)間信息。DS12C887芯片的MOT端接地,使其為Intel模式.圖2.3DS12887時(shí)間電路2.418B20測(cè)溫電路圖2.418B20測(cè)溫電路2。5數(shù)碼管顯示電路2.5。1數(shù)碼管管段碼表2.5。2電路設(shè)計(jì)數(shù)碼管數(shù)據(jù)顯示的硬件電路由單片機(jī)、4位共陽(yáng)極數(shù)碼管、位驅(qū)動(dòng)電路、限流電阻等組成。實(shí)驗(yàn)板中將跳線(xiàn)J7與J2(A8-A11腳)相連,即單片機(jī)P1。0—P1。3控制數(shù)碼管4位位選。用跳線(xiàn)將J14與J15相連,P0口送出數(shù)碼管段選碼。2。6LCD液晶數(shù)據(jù)顯示電路圖2。41602顯示電路2。7結(jié)果調(diào)試圖2。5實(shí)物圖第三章總結(jié)通過(guò)本次課程設(shè)計(jì),使我加深了對(duì)單片機(jī)的認(rèn)識(shí),并且熟悉了單片機(jī)系統(tǒng)的設(shè)計(jì)流程,受益匪淺。在功能上基本達(dá)標(biāo):時(shí)鐘的日期顯示,溫度顯示,數(shù)碼管顯示倒計(jì)時(shí)功能.時(shí)鐘顯示功能能精確度完全可以滿(mǎn)足日常生活顯示時(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ò)程中,我也遇到很多問(wèn)題,由于是第一次用硬件來(lái)自行完成一項(xiàng)任務(wù),難免會(huì)遇到過(guò)各種各樣的問(wèn)題,例如數(shù)碼管的位置選擇問(wèn)題,倒計(jì)時(shí)天數(shù)的計(jì)算問(wèn)題等等。同時(shí)在設(shè)計(jì)的過(guò)程中發(fā)現(xiàn)了自己的不足之處,對(duì)以前所學(xué)過(guò)的知識(shí)理解得不夠深刻,掌握得不夠牢固,比如說(shuō)不懂一些元器件的使用方法,對(duì)單片機(jī)C語(yǔ)言掌握得不好。通過(guò)這次課程設(shè)計(jì)之后,一定把以前所學(xué)過(guò)的知識(shí)重新溫故.在老師的指導(dǎo)下也學(xué)會(huì)了讓數(shù)碼管分別顯示高低位的方法,使的能夠成功實(shí)現(xiàn)課程設(shè)計(jì)的任務(wù)要求。從這次的論文設(shè)計(jì)中,我真正的體會(huì)到,知識(shí)的重要性,特別是要理論聯(lián)系實(shí)際,把我們所學(xué)的理論知識(shí)運(yùn)用到實(shí)際生活當(dāng)中,要用知識(shí)改變一切。參考文獻(xiàn)[1]劉愛(ài)娟,王青。51單片機(jī)和MAX7219的接口及編程應(yīng)用[J]。電子制作,2007,6:46—48。[2]張毅剛,彭喜元,單片機(jī)原理及應(yīng)用(第二版)[M]。北京:高等教育出版社,2010:5。[3]張迎輝,貢雪梅.《單片機(jī)實(shí)訓(xùn)教程》[M].北京:北京大學(xué)出版社[4]林國(guó)清,李見(jiàn)為,王崇文。一種新型的時(shí)鐘日歷芯片DS12C887[D].重慶:重慶大學(xué)光電工程學(xué)院,2007:1-3.附錄程序:#include”absacc。h”#include<stdio。h〉typedefunsignedcharBYTE;typedefunsignedintWORD;typedefunsignedcharuchar;typedefunsignedintuint;ucharset_mon=6;//設(shè)定目標(biāo)月ucharset_day=5;//設(shè)定目標(biāo)日uinttianshu=50;/*LED口地址*/#defineled_dataXBYTE[0x6000]//寫(xiě)命令/*液晶1602口地址*/#definewr_comXBYTE[0xC000]//寫(xiě)命令#definewr_dataXBYTE[0xC100]//寫(xiě)數(shù)據(jù)#definerd_comXBYTE[0xC200]//讀命令#definerd_dataXBYTE[0xC300]//讀數(shù)據(jù)/*DS12887口地址*/#defineDS_AXBYTE[0x100A]//寄存器A#defineDS_BXBYTE[0x100B]//寄存器B#defineDS_CXBYTE[0x100C]//寄存器C#defineYearsXBYTE[0x1009]//年#defineMonthXBYTE[0x1008]//月#defineDayXBYTE[0x1007]//日#defineWeekXBYTE[0x1006]//星期#defineHourXBYTE[0x1004]//時(shí)#defineMinuteXBYTE[0x1002]//分#defineSecondXBYTE[0x1000]//秒voidDelay(uintn);voidDelay2(uintn);sbitDS1820_DQ=P1^7;//單總線(xiàn)引腳uintsec;floatwen_val;chartemperature[2];//存放溫度數(shù)據(jù)uchartemp=0xfe;ucharah,al;voidDS18B20_Init();//DS18B20初始化bitDS1820_Reset();//DS1820復(fù)位voidDS1820_WriteData(BYTEwData);//寫(xiě)數(shù)據(jù)到DS1820BYTEDS1820_ReadData();//讀數(shù)據(jù)voidread_wendu();voidDelayXus(WORDn);uchardisplay_data[4];sbitwei1=P3^0; //4個(gè)數(shù)碼管位選sbitwei2=P3^1;sbitwei3=P3^2;sbitwei4=P3^3;ucharcodeledcode[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0:0xc0,1:0xf9,2:0xa4,3:0xb0,4:0x99,5:0x92,6:0x82,7:0xf8,8:0x80,9:0x90BYTEcodedisp_num[10]={'0','1’,'2’,’3',’4',’5',’6',’7',’8',’9',};BYTEah,al;ucharj;voidlcd_init(void);//lcd初始化voidwrite_cmd(BYTEcmd);//lcd寫(xiě)命令//voidwrite_string(unsignedchar*s);//寫(xiě)字符串voidwrite_data(BYTEdat);//寫(xiě)數(shù)據(jù)voidset_display_place(BYTEline,column);voidwrite_string_lcd(BYTEline,column,unsignedchar*string);voidwrite_data_lcd(BYTEline,column,dat);/************************************************************************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);}/***************************************************************液晶模塊初始化**********************************************************************************/voidlcd_init(void) {write_cmd(0x38);//write_cmd(0x38);//write_cmd(0x06);//write_cmd(0x0c);//write_cmd(0x01);//}/***************************************************************DS12887初始化程序****************************************************************************/voidDS_init(){DS_A=0x20; DS_B=0x12;}/***************************************************************顯示時(shí)間*********************************************************************************/voidcrt_time(BYTEline){ BYTEdhi,dli; BYTEtemp; set_display_place(line,1); temp=Month; write_data(temp/16+0x30); write_data(temp%16+0x30); write_data('-'); temp=Day; write_data(temp/16+0x30); write_data(temp%16+0x30); write_data(''); write_data(’'); 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);}voidDelay(WORDn){WORDx; while(n——) { x=500; while(x-—); }}voidDelay2(WORDn){WORDx; while(n—-) { x=5000; while(x——); }}voidwrite_time(){ DS_A=0x2f;//寄存器A DS_B|=0x80; Years=0x13;//年 Month=0x09;//月 Day=0x13;//日 Week=0x05;//星期 Hour=0x17;//時(shí) Minute=0x12;//分 Second=0x00;//秒 DS_B&=0x7f;//寄存器A}/***********************************************************DS1820復(fù)位及存在檢測(cè)(通過(guò)存在脈沖可以判斷DS1820是否損壞)*函數(shù)名稱(chēng):DS1820_Reset()*說(shuō)明:函數(shù)返回一個(gè)位標(biāo)量(0或1)flag=0存在,反之flag=1不存在**********************************************************/bitDS1820_Reset(){ bitflag; DS1820_DQ=0;//拉低總線(xiàn) DelayXus(480);//延時(shí)480微秒,產(chǎn)生復(fù)位脈沖 DS1820_DQ=1;//釋放總線(xiàn) DelayXus(80);//延時(shí)80微秒對(duì)總線(xiàn)采樣 flag=DS1820_DQ;//對(duì)數(shù)據(jù)腳采樣 DelayXus(400);//延時(shí)400微秒等待總線(xiàn)恢復(fù) return(flag);//根據(jù)flag的值可知DS1820是否存在或損壞,可加聲音告警提示DS1820故障}/***********************************************************寫(xiě)數(shù)據(jù)到DS1820*函數(shù)名稱(chēng):DS1820_WriteData()**********************************************************/voidDS1820_WriteData(BYTEwData){ BYTEi; for(i=8;i>0;i-—) { DS1820_DQ=0;//拉低總線(xiàn),產(chǎn)生寫(xiě)信號(hào) DelayXus(4);//延時(shí)4us DS1820_DQ=wData&0x01;//發(fā)送1位 DelayXus(60);//延時(shí)60us,寫(xiě)時(shí)序至少要60us DS1820_DQ=1;//釋放總線(xiàn),等待總線(xiàn)恢復(fù) wData〉>=1;//準(zhǔn)備下一位數(shù)據(jù)的傳送 }}/***********************************************************從DS1820中讀出數(shù)據(jù)*函數(shù)名稱(chēng):DS1820_ReadData()**********************************************************/BYTEDS1820_ReadData(){ BYTEi,TmepData; for(i=8;i>0;i——) { TmepData〉〉=1; DS1820_DQ=0;//拉低總線(xiàn),產(chǎn)生讀信號(hào) DelayXus(4);//延時(shí)4us DS1820_DQ=1;//釋放總線(xiàn),準(zhǔn)備讀數(shù)據(jù) DelayXus(8);//延時(shí)8微秒讀數(shù)據(jù) if(DS1820_DQ==1) {TmepData|=0x80;} DelayXus(60);//延時(shí)60us DS1820_DQ=1;//拉高總線(xiàn),準(zhǔn)備下一位數(shù)據(jù)的讀取。 } 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ù)}/**********************************************************轉(zhuǎn)換溫度程序**********************************************************/voidcrt_wendu(){ read_wendu();
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 七年級(jí)上學(xué)期語(yǔ)文第一次月考試卷-6
- 楚雄彝族自治州八年級(jí)上學(xué)期語(yǔ)文期末試題
- 雇人干活免責(zé)協(xié)議書(shū)(2篇)
- 音樂(lè)課件制作教學(xué)課件
- 統(tǒng)計(jì)分析軟件模擬試題二及答案
- 南京工業(yè)大學(xué)浦江學(xué)院《太極推手》2022-2023學(xué)年第一學(xué)期期末試卷
- XX制藥活動(dòng)中心消防水施工組織設(shè)計(jì)
- 飛向藍(lán)天的恐龍說(shuō)課稿
- 《自相矛盾》說(shuō)課稿
- 《因式分解》說(shuō)課稿
- 消防安全培訓(xùn)內(nèi)容
- 2024-2030年辣椒種植行業(yè)市場(chǎng)深度分析及發(fā)展策略研究報(bào)告
- 變電站綠化維護(hù)施工方案
- 校園展美 課件 2024-2025學(xué)年人美版(2024)初中美術(shù)七年級(jí)上冊(cè)
- 2024版《糖尿病健康宣教》課件
- ktv保安管理制度及崗位職責(zé)(共5篇)
- 腦出血試題完整版本
- 義務(wù)教育信息科技課程標(biāo)準(zhǔn)(2022年版)考試題庫(kù)及答案
- 建筑施工安全生產(chǎn)責(zé)任書(shū)
- 新員工三級(jí)安全教育考試試題參考答案
- 公司年會(huì)策劃及執(zhí)行服務(wù)合同
評(píng)論
0/150
提交評(píng)論