DS12887日歷時(shí)鐘課程設(shè)計(jì).doc_第1頁(yè)
DS12887日歷時(shí)鐘課程設(shè)計(jì).doc_第2頁(yè)
DS12887日歷時(shí)鐘課程設(shè)計(jì).doc_第3頁(yè)
DS12887日歷時(shí)鐘課程設(shè)計(jì).doc_第4頁(yè)
DS12887日歷時(shí)鐘課程設(shè)計(jì).doc_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

單片機(jī)課程設(shè)計(jì)報(bào)告課程名稱 單片機(jī)課程設(shè)計(jì) 專 業(yè) 電氣工程及其自動(dòng)化 班 級(jí) 姓 名 學(xué) 號(hào) 指導(dǎo)教師 2012年 3 月 9 日DS12887日歷時(shí)鐘課程設(shè)計(jì)目錄一 前言. 4 1.1 設(shè)計(jì)任務(wù)及要求. 4 1.2 設(shè)計(jì)應(yīng)用意義. 4二 方案的論證. 4三 總體設(shè)計(jì). 4 3.1基本工作原理. 4 3.2、硬件總體設(shè)計(jì). 5 3.3、軟件總體設(shè)計(jì). 5四 硬件設(shè)計(jì). 5 4.1 DS12887的功能介紹. 6 4.1.1引腳功能. 6 4.2 LCD1602. 7 4.2.1 LCD1602液晶介紹. 7 4.3 STC89C52. 8 4.3.1 芯片介紹. 8 4.3.2 管腳說(shuō)明. 9五 軟件設(shè)計(jì). 105.1時(shí)鐘設(shè)置. 10六 系統(tǒng)操作說(shuō)明. 11七 結(jié)束語(yǔ). 12八 參考文獻(xiàn). 12附錄: 121、系統(tǒng)原理圖 132、程序:(1)液晶顯示的程序 13(2)總的程序 14 一、 前言 用單片機(jī)控制時(shí)間的讀取并顯示在液晶屏幕上面,并可通過(guò)按鍵實(shí)現(xiàn)對(duì)時(shí)間的修改。文中詳細(xì)論述了電子日歷鐘設(shè)計(jì)原理、使用的各芯片的介紹,闡明了本實(shí)例所使用的設(shè)計(jì)方案、詳細(xì)的電路圖以及電子程序.11 設(shè)計(jì)任務(wù)及要求DS12887芯片具有低功耗、外圍接口簡(jiǎn)單、精度高、工作穩(wěn)定可靠等優(yōu)點(diǎn)。采用DS12887芯片設(shè)計(jì)的時(shí)鐘電路無(wú)需任何外圍電路和器件,并具有良好的微機(jī)接口,廣泛用于各種需要精度較高的實(shí)時(shí)時(shí)鐘系統(tǒng)中。設(shè)計(jì)內(nèi)容包括DS12887芯片的時(shí)鐘電路硬件設(shè)計(jì),軟件設(shè)計(jì),畫(huà)出Protel原理圖、PCB版圖、寫(xiě)出元件清單,驗(yàn)收后方可焊接電路板并調(diào)試。設(shè)計(jì)實(shí)現(xiàn)如下目標(biāo):利用DS12887和STC8952單片機(jī)設(shè)計(jì)一個(gè)時(shí)鐘和日歷,時(shí)間以24小時(shí)為一個(gè)周期;顯示當(dāng)前時(shí)、分、秒;有校時(shí)功能,可以分別對(duì)時(shí)及分進(jìn)行單獨(dú)校時(shí),使其校正到標(biāo)準(zhǔn)時(shí)間;可以實(shí)現(xiàn)基本的調(diào)時(shí)定時(shí)日期的修改。12 本設(shè)計(jì)的應(yīng)用意義此電子日歷鐘小巧便捷利于攜帶,界面清爽,一目了然,方便您知曉當(dāng)前時(shí)間,并可對(duì)時(shí)間做出修改,實(shí)在是居家旅行日常生活之必備用品!2、 方案的論證本系統(tǒng)3、 總體設(shè)計(jì)3.1基本工作原理利用DS12887實(shí)時(shí)時(shí)鐘電路芯片來(lái)讀取系統(tǒng)中的日期以及時(shí)間信息,并利用P0端口將相關(guān)信息傳送至STC89C51主芯片之中,利用P2端口使之顯示于LCD1602液晶顯示屏上,四個(gè)按鍵分別置于P1口的1、2、3、4端口可以對(duì)時(shí)間進(jìn)行控制修改。相關(guān)說(shuō)明:點(diǎn)擊 確定按鍵 可以進(jìn)入LCD屏上方顯示的主菜單,點(diǎn)擊 返回按鍵 可以退出菜單,在時(shí)間修改菜單中點(diǎn)擊 修改“小時(shí)”按鍵 可以修改時(shí)間中的小時(shí)數(shù),點(diǎn)擊 修改“分鐘”按鍵 可以修改時(shí)間中的分鐘數(shù)。3.2硬件總體設(shè)計(jì)STC89C52LCD1602電源按鍵DS128873.3軟件總體設(shè)計(jì) 主程序主要包括:系統(tǒng)初始化、獲取串口數(shù)據(jù)、設(shè)置日歷時(shí)鐘芯片、獲取時(shí)鐘芯片的時(shí)間信息和時(shí)鐘校正、顯示等子程序。初始化子程序主要包括設(shè)置單片機(jī)的串口和定時(shí)器的初始化,日歷時(shí)鐘芯片初始參數(shù)和驅(qū)動(dòng)芯片的初始化等。主程序流程圖如圖6所示。4、 硬件設(shè)計(jì)41 DS12887的功能介紹DS12887是美國(guó)DALLAS半導(dǎo)體公司最新推出的8位串行接口并自帶RAM的實(shí)時(shí)日歷時(shí)鐘芯片,內(nèi)部有14個(gè)時(shí)鐘控制寄存器,包括10個(gè)時(shí)標(biāo)寄存器,4個(gè)狀態(tài)寄存器和114 bit作掉電保護(hù)用的低功耗RAM。CPU通過(guò)讀DS12887的內(nèi)部時(shí)標(biāo)寄存器得到當(dāng)前的時(shí)間和日歷,也可通過(guò)選擇二進(jìn)制或BCD碼初始化芯片的10個(gè)時(shí)標(biāo)寄存器,其4個(gè)狀態(tài)寄存器用來(lái)控制和指出DS12887的當(dāng)前工作狀態(tài),114 bit非易失性靜態(tài)RAM可在掉電時(shí)保存一些重要數(shù)據(jù)。 DS12887功能強(qiáng)大,應(yīng)用廣泛。4.1.1引腳功能:GND:接地端VCC:直流電源+5 V電壓。當(dāng)5 V電壓在正常范圍內(nèi)時(shí),數(shù)據(jù)可讀寫(xiě);當(dāng)VCC低于425 V,讀寫(xiě)禁止,計(jì)時(shí)功能仍繼續(xù);當(dāng)VCC下降到3 V以下時(shí),RAM和計(jì)時(shí)器被切換到內(nèi)部鋰電池。 MOT(模式選擇):MOT引腳接到VCC時(shí),選擇MOTOROLA時(shí)序,當(dāng)接到GFND時(shí),選擇INTEL時(shí)序。 SQW(方波信號(hào)輸出):SQW引腳能從實(shí)時(shí)時(shí)鐘內(nèi)部15級(jí)分頻器的13個(gè)抽頭中選擇一個(gè)作為輸出信號(hào),其輸出頻率可通過(guò)對(duì)寄存器A編程改變。 AD0AD7(雙向地址數(shù)據(jù)復(fù)用線):總線接口,可與MOTOROLA微機(jī)系列和INTEL微機(jī)系列接口。 AS(地址選通輸入):用于實(shí)現(xiàn)信號(hào)分離,在ADALE的下降沿把地址鎖入DS12887。 DS(數(shù)據(jù)選通或讀輸入):DSRD有2種操作模式,取決于MOT引腳的電平,當(dāng)使用MOTOROLA時(shí)序時(shí),DS是一正脈沖,出現(xiàn)在總線周期的后段,稱為數(shù)據(jù)選通;在讀周期,DS指示DS12887驅(qū)動(dòng)雙向總的時(shí)刻;在寫(xiě)周期,DS的后沿使DS12887鎖存寫(xiě)數(shù)據(jù)。選擇INTEL時(shí)序時(shí),DS稱作(RD),RD與典型存儲(chǔ)器的允許信號(hào)(OE)的定義相同。 R/W(讀寫(xiě)輸入):也有兩種操作模式。選MOTOROLA時(shí) 序時(shí),是一電平信號(hào),指示當(dāng)前周期是讀或?qū)懼芷?,DSO為高電平時(shí),高電平指示讀周期,低電平指示寫(xiě)周期;選INTEL時(shí)序,信號(hào)是一低電平信號(hào),稱為WR。在此模式下,RW與通用RAM的寫(xiě)允許信號(hào)(WE)的含義相同。 /CS(片選輸入):在訪問(wèn)DS12887的總線周期內(nèi),片選信號(hào)必須保持為低。 IRQ(中斷申請(qǐng)輸入):低電平有效,可作微處理的中斷輸入。沒(méi)有中斷條件滿足時(shí),IRQ處于高阻態(tài)。IRQ線是漏極開(kāi)路輸入,要求外接上接電阻。 RESET(復(fù)位輸出):當(dāng)保持低電平時(shí)間大于200 ms,保證DS12887有效復(fù)位。 DS12887引腳如下圖所示。DS12887的內(nèi)部地址分配:地址00H和03H單元取值范圍是00H3BH(十進(jìn)制為059);04H05H單元按12小時(shí)制取值范圍是上午(AM)01H0CH(十進(jìn)制為112),下午(PM)51H5CH(十進(jìn)制為8192),按24小時(shí)制取值范圍是00H17H(十進(jìn)制為023);06H單元的取值范圍是01H07H(十進(jìn)制為17);07H單元取值范圍O1H1FH(十進(jìn)制為131);08H單元取值范圍是01H0CH(十進(jìn)制為112);09H單元取值范圍是00H63H(十進(jìn)制為099)。42 LCD 1602421 1602液晶模塊簡(jiǎn)介1602液晶顯示模塊,是點(diǎn)陣字符型液晶顯示模塊,可以用來(lái)顯示字母,符號(hào),數(shù)字以及簡(jiǎn)單的漢字和圖案等信息?!?602”的含義是這類液晶顯示模塊每行能夠顯示16個(gè)字符,一共可以顯示兩行。該液晶顯示模塊,分為帶背光和不帶背光兩類,兩者在應(yīng)用過(guò)程中功能基本類似,只是帶背光的模塊更厚一些,通常的背光顏色以黃綠色和藍(lán)色為主。目前,多數(shù)602液晶顯示模塊的生產(chǎn)廠商使用的控制芯片都是日立公司的HD44780,這得單片機(jī)對(duì)1602液晶顯示模塊的控制更加統(tǒng)一和方便。1602液晶顯示模塊的主要技術(shù)參數(shù)如下:(1) 顯示容量,為16個(gè)字符X兩行,即每行最多顯示32個(gè)字符;(2) 模塊工作電壓,在4.5-5V之間,模塊的最佳工作電壓為5V;(3) 模塊工作電流,再最佳工作電壓5V式,工作電流是2mA;(4) 顯示字符的大小,每個(gè)被顯示的字符大小為2.95mmX4.35mm(字符的寬度乘高度)。 422 1602液晶模塊的管腳介紹第1腳:GND為電源地,接GND。第2腳:VCC接5V正電源。第3腳:VO為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高,對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過(guò)一個(gè)10K的電位器調(diào)整對(duì)比度。第4腳:RS為指令寄存器或數(shù)據(jù)寄存器的選擇。高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。第5腳:RW為讀寫(xiě)信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫(xiě)操作。當(dāng)RS和RW共同為低電平時(shí)可以寫(xiě)入指令或者顯示地址,當(dāng)RS為低電平RW為高電平時(shí)可以讀忙信號(hào),當(dāng)RS為高電平RW為低電平時(shí)可以寫(xiě)入數(shù)據(jù)。第6腳:E端為讀或?qū)懖僮鞯氖鼓芏耍?dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。第714腳:D0D7為8位雙向數(shù)據(jù)線。第15腳:BGVCC背光電源正極(+5V)輸入引腳。第16腳:BGGND背光電源負(fù)極,接GND。43 STC89C52芯片431 芯片介紹 STC89C52單片機(jī)簡(jiǎn)介 STC89C52是一種低功耗、高性能 CMOS 8位微控制器,具有 8K 在系統(tǒng)可編程Flash 存儲(chǔ)器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。 具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,512字節(jié)RAM, 32 位I/O 口線,看門(mén)狗定時(shí)器,內(nèi)置4KB EEPROM,MAX810復(fù)位電路,三個(gè)16 位 定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口。另外 STC89X52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式。空閑模式下,CPU 停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。最高運(yùn)作頻率35Mhz,6T/12T可選。 和Atmel的對(duì)比: STC89C52RC單片機(jī)具有 8K字節(jié)程序存儲(chǔ)空間;512字節(jié)數(shù)據(jù)存儲(chǔ)空間; 內(nèi)帶4K字節(jié)EEPROM存儲(chǔ)空間;可直接使用串口下載的特點(diǎn)而AT89S52單片機(jī)則具有8K字節(jié)程序存儲(chǔ)空間;256字節(jié)數(shù)據(jù)存儲(chǔ)空間;沒(méi)有內(nèi)帶EEPROM存儲(chǔ)空間的特點(diǎn)。STC89C52芯片如下圖所示:432 管腳說(shuō)明:VCC:供電電壓。VSS:接地端。P0口:P0口為一個(gè)8位漏級(jí)開(kāi)路雙向I/O口,每腳可吸收8TTL門(mén)電流。當(dāng)P1口的管腳第一次寫(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口也可作為STC89C52的一些特殊功能口:即 P3.0 RXD(串行輸入口) P3.1 TXD(串行輸出口) P3.2 /INT0(外部中斷0) P3.3 /INT1(外部中斷1) P3.4 T0(記時(shí)器0外部輸入) P3.5 T1(記時(shí)器1外部輸入) P3.6 /WR(外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通) P3.7 /RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)同時(shí),P3口也可為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。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)自反向振蕩器的輸出。5、 軟件設(shè)計(jì)系統(tǒng)軟件設(shè)計(jì)包括單片機(jī)計(jì)算機(jī)兩部分的編程。計(jì)算機(jī)軟件編程主要實(shí)現(xiàn)參數(shù)設(shè)置、串行口數(shù)據(jù)接收、指令發(fā)送以及數(shù)據(jù)的顯示和存儲(chǔ)。單片機(jī)軟件編程主要實(shí)現(xiàn)鍵盤(pán)、液晶顯示、鬧鐘等各模塊的功能,采用C語(yǔ)言編程。該系統(tǒng)通過(guò)串行口與鍵盤(pán)通信,鍵盤(pán)給單片機(jī)發(fā)指令實(shí)現(xiàn)數(shù)據(jù)采集及系統(tǒng)控制,并將數(shù)據(jù)實(shí)時(shí)傳回液晶顯示器顯示結(jié)果。整個(gè)軟件系統(tǒng)采用模塊化的程序設(shè)計(jì)方法,共分為時(shí)間日期的設(shè)定、鬧鈴設(shè)定、LCD顯示模塊和鍵盤(pán)掃描模塊4個(gè)部分。其中主要是鬧點(diǎn)的設(shè)定與提取。軟件系統(tǒng)的主要特點(diǎn)是整個(gè)過(guò)程完全在鍵盤(pán)的控制之下,實(shí)現(xiàn)了友好的人機(jī)交互功能。主程序通過(guò)判斷鍵盤(pán)的輸入情況調(diào)用不同的子程序,子程序的功能實(shí)現(xiàn)也是在鍵盤(pán)的配合之下完成的。主程序流程圖,如圖6所示。首先對(duì)單片機(jī)的串行口及定時(shí)器進(jìn)行初始化,然后進(jìn)行鍵盤(pán)掃描,如果有鍵按下,則根據(jù)掃描到的鍵值跳轉(zhuǎn)到相應(yīng)的入口并執(zhí)行相應(yīng)的程序,并根據(jù)外部的輸入進(jìn)行相應(yīng)的操作。如果沒(méi)有鍵按下,則回到初始化狀態(tài)。在并行運(yùn)行的程序中,本設(shè)計(jì)將調(diào)用編寫(xiě)的日歷時(shí)鐘和及LCD液晶顯示的程序程序,并將其送入液晶顯示器中進(jìn)行顯示。5.1 時(shí)鐘設(shè)置 在使用DS12887時(shí),首先要初始化,主要是打開(kāi)晶振、對(duì)控制寄存器A、B寫(xiě)入控制字以及對(duì)日歷、時(shí)鐘各寄存器寫(xiě)入初始值。除校時(shí)外,上電時(shí)不用再次初始化。第一次初始化時(shí),應(yīng)禁止操作DS12887內(nèi)部更新周期,即先將寄存器B的SET位置“1”,然后初始化時(shí)標(biāo)寄存器(00H09H)和狀態(tài)寄存器A,再通過(guò)讀寄存器C清除中斷標(biāo)志,讀寄存器D將VRT位置“1”,最后將寄存器B的SET位清零,DS12887開(kāi)始計(jì)時(shí)。 設(shè)置日歷時(shí)鐘,必須保證時(shí)鐘芯片DS12887處于設(shè)置狀態(tài),即SET=1,然后向DS12887的專用寄存器寫(xiě)入時(shí)間信息,寫(xiě)入完畢后,DS12887恢復(fù)正常數(shù)據(jù)更新?tīng)顟B(tài),即SET=0。在讀取日歷時(shí)鐘芯片DS12887的時(shí)鐘信息時(shí),必須保證UIP=0,然后讀取存儲(chǔ)其內(nèi)部寄存器的時(shí)鐘信息。 為了能夠方便地顯示時(shí)間和校正時(shí)鐘,可在單片機(jī)中的用戶寄存器中開(kāi)辟特殊的時(shí)間地址單元作為顯示緩沖區(qū),分別放置“年,月,日,時(shí),分,秒”等值。此時(shí)只要將DS12887中的時(shí)間值讀入到用戶開(kāi)辟的時(shí)間地址中,用戶就可以方便控制時(shí)間。六、系統(tǒng)操作說(shuō)明 利用DS12887實(shí)時(shí)時(shí)鐘電路芯片來(lái)讀取系統(tǒng)中的日期以及時(shí)間信息,并利用P0端口將相關(guān)信息傳送至STC89C51主芯片之中,利用P2端口使之顯示于LCD1602液晶顯示屏上,四個(gè)按鍵分別置于P1口的1、2、3、4端口可以對(duì)時(shí)間進(jìn)行控制修改。相關(guān)說(shuō)明:點(diǎn)擊 確定按鍵 可以進(jìn)入LCD屏上方顯示的主菜單,點(diǎn)擊 返回按鍵 可以退出菜單,在時(shí)間修改菜單中點(diǎn)擊 修改“小時(shí)”按鍵 可以修改時(shí)間中的小時(shí)數(shù),點(diǎn)擊 修改“分鐘”按鍵 可以修改時(shí)間中的分鐘數(shù)。七、結(jié)束語(yǔ)做了兩周的課程設(shè)計(jì),讓我感觸很深,有關(guān)與單片機(jī)方面的,但更多的是團(tuán)隊(duì)和合作方面的。我們組共有兩個(gè)人,在得到實(shí)驗(yàn)課題之后,就覺(jué)得壓力好大。因?yàn)槲覀兤綍r(shí)接觸的都是純粹理論性的東西,做實(shí)驗(yàn)也是霧里看花,對(duì)硬件的認(rèn)識(shí)也很缺乏。之后,我們就去圖書(shū)館查閱大量的單片機(jī)和數(shù)字芯片的資料,并帶還來(lái)仔細(xì)研究。在硬件電路的設(shè)計(jì)中,由于要涉及軟件設(shè)計(jì)的具體情況,我們又共同討論研究,最終將原理圖設(shè)計(jì)完成。在焊電路圖的過(guò)程中,由于原理圖比較復(fù)雜,接線及走線也就顯得很困難,在具體的調(diào)試中遇到的困難也比較多,但在指導(dǎo)老師的幫助下改正了幾處問(wèn)題,雖然最終沒(méi)有調(diào)試成功,但在整個(gè)過(guò)程中,我收獲了很多。這次課程設(shè)計(jì)很漫長(zhǎng),特別是編寫(xiě)程序的時(shí)候,但我從中學(xué)到了很多東西,個(gè)人的分析能力對(duì)問(wèn)題的處理能力有了不同程度的提高。對(duì)電路的判斷分析和程序的分析特別是對(duì)52單片機(jī)進(jìn)一步學(xué)習(xí),讓我收獲頗多。很感謝學(xué)校和老師給我們安排了這次的課程設(shè)計(jì),讓我真正感受到了合作的重要性很多時(shí)候都是組員的討論和老師的指導(dǎo)中的一句半句啟發(fā)了我。這次的課程設(shè)計(jì)讓我知道:理論知識(shí)固然重要,但如果不與實(shí)踐聯(lián)系起來(lái),也就如同空白紙一樣,毫無(wú)用處。 八、參考文獻(xiàn)1單片機(jī)基礎(chǔ)(第三版) 2. 單片機(jī)的C語(yǔ)言應(yīng)用程序設(shè)計(jì)(第4版)3. 單片機(jī)系統(tǒng)及應(yīng)用實(shí)驗(yàn)教程 4. 單片機(jī)原理與應(yīng)用系統(tǒng)設(shè)計(jì) 5. 程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言) 6. EDA技術(shù)基礎(chǔ)教程 附錄:原理圖、程序 原理圖程序:1. 液晶顯示的程序#include /單片機(jī)頭文件#define uchar unsigned char /定義無(wú)符號(hào)字符型#define uint unsigned int /定義無(wú)符號(hào)整型sbit rs=P30; /rs的位地址為P3.0sbit lcden=P31; /lcden的位地址為P3.1sbit fengming=P35; /fengming的位地址為P3.5/uchar count,s1num;/char miao,shi,fen;uchar code table= 2007-7-30 MON; /定義第一行顯示的字符uchar code table1= 00:00:00; /定義第二行顯示的字符void delay(uint z) /延時(shí)子程序uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void write_com(uchar com) /向1602 模塊寫(xiě)數(shù)據(jù)rs=0;lcden=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;void write_date(uchar date)rs=1;lcden=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;void init() /1602模塊的初始化 uchar num; fengming=0;lcden=0;write_com(0x38);/八位數(shù)據(jù)傳輸write_com(0x0c);/開(kāi)顯示、關(guān)光標(biāo) write_com(0x06);/光標(biāo)右移、地址加1write_com(0x01);/清屏 write_com(0x80);for(num=0;num15;num+)write_date(tablenum);delay(5);write_com(0x80+0x40);for(num=0;num12;num+)write_date(table1num);delay(5);void main()init();while(1);2. 總程序DS12887: 3. #include4. #include5. #define uchar unsigned char6. #define uint unsigned int7. sbit DQ=P35;8. uchar miao,fen,shi,n,yue,ri,xing,ml,mh,fl,fh,sl,sh,yl,yh,rl,rh,flag,flag1,flaga,flag2,flag3,am,as,af,c,flagz;/定義 均為漢語(yǔ)拼音 fl為分高位 fh為分高位 am定時(shí) 的秒9. uint Count;10. long int temp1;11. sbit wexu=P16;/位選鎖存器控制12. sbit duxu=P15;/段選鎖存器控制13. sbit bee_Speak=P35;/揚(yáng)聲器驅(qū)動(dòng)引腳定義14. sbit key1=P11;/按鍵4個(gè)15. sbit key2=P12;16. sbit key3=P13;17. sbit key4=P14;18. sbit css=P17;/12887片選19. sbit ass=P10;/12887鎖存器20. sbit dss=P37;/12887讀寫(xiě)控制21. sbit rw=P36;/12887讀寫(xiě)控制22. sbit p30=P30;/3.0-3.3后三位數(shù)碼管位選控制23. sbit p31=P31;24. sbit p33=P33;25. sbit p35=P35;/揚(yáng)聲器26. void sj(long int i);27. uchar code duma1=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef;/數(shù)碼管段碼帶小數(shù)28. uchar code duma=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00;/數(shù)碼管段碼29. uchar code wema=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff;/數(shù)碼管位選30. void delay15us() /誤差 0us31. 32. unsigned char a;33. for(a=5;a0;a-);34. 35. void delay5us() /誤差 0us36. 37. _nop_(); /if Keil,require use intrins.h38. 39.40. void delay3us() /誤差 0us41. 42. _nop_(); /if Keil,require use intrins.h43. 44. void delay45us() /誤差 0us45. 46. unsigned char a;47. for(a=20;a0;a-);48. 49. void delay1(uint z)/延時(shí)一個(gè)毫秒50. 51. uint x,y;52. for(x=z;x0;x-)53. for(y=110;y0;y-);54. 55. void delay2(uint z)/延時(shí)一個(gè)毫秒56. 57. uint x;58. for(x=z;x0;x-)59. sj(temp1);60. delay1(2);61. 62. 63. void writebyte(uchar n)64. 65. uchar i;66. for(i=0;i=1;72. delay45us();73. DQ=1;74. 75. DQ=1;76. 77. void fuhao(uchar m,uchar n)78. 79. if(m&0x80)80. 81. n=(n)+1;82. flagz=1;83. 84. else85. 86. n=n;87. flagz=0;88. 89. 90. void sj(long int i)91. 92. uint one,two,three,four,five,six;93. one=i%10;94. two=(i/10)%10;95. three=(i/100)%10;96. four=(i/1000)%10; 97. five=(i/10000)%10;98. six=(i/100000)%10;99. wexu=1;100. P2=wema7;101. wexu=0;102. duxu=1;103. P2=dumaone;104. duxu=0;105. delay1(3);106. duxu=1;107. P2=dumatwo;108. duxu=0;109. wexu=1;110. P2=wema6;111. wexu=0;112. delay1(3);113. duxu=1;114. P2=dumathree;115. duxu=0;116. wexu=1;117. P2=wema5;118. wexu=0;119. delay1(3);120. duxu=1;121. P2=duma1four;122. duxu=0;123. wexu=1;124. P2=wema4;125. wexu=0;126. delay1(3);127. duxu=1;128. if(five=0)129. 130. if(flagz=1)131. P2=duma10;132. else133. P2=duma11;134. 135. else 136. P2=dumafive;137. duxu=0;138. wexu=1;139. P2=wema3;140. wexu=0;141. delay1(3);142. duxu=1;143. if(six=0)144. 145. if(flagz=1&five!=0)146. P2=duma10;147. else 148. P2=duma11;149. 150. else151. P2=dumasix;152. duxu=0;153. wexu=1;154. P2=wema2;155. wexu=0;156. delay1(3);157. if(flagz=1&six!=0)158. 159. duxu=1;160. P2=duma10;161. duxu=0;162. wexu=1;163. P2=wema1;164. wexu=0;165. delay1(3);166. 167. wexu=1;168. P2=wema8;169. wexu=0;170. delay1(1);171. 172. void delay3(uint z)173. 174. while(z-);175. 176. void initi()177. 178. uchar i;179. i=1;180. DQ=1;181. delay3(8);182. DQ=0;183. delay3(90);184. DQ=1;185. delay3(8);186. i=DQ;187. while(i);188. delay3(85);189. DQ=1;190. 191. uchar readbyte()192. 193. uchar i,j;194. j=0;195. for(i=0;i=1;197. DQ=1;198. delay3us();199. DQ=0;200. delay3us();201. DQ=1;202. delay15us();203. if(DQ)204. j|=0x80;205. delay45us();206. delay5us();207.208. 209. return(j);210. 211. void wedu()212. 213.214. uchar dath,datl;215. long int temp;216. temp=0;217. temp1=0;218. dath=0;219. datl=0;220. while(flaga)221. 222. initi();223. delay1(1);224. writebyte(0xcc);225. writebyte(0x44);226. delay2(50);227. initi();228. delay1(1);229. writebyte(0xcc);230. writebyte(0xbe);231. datl=readbyte();232. dath=readbyte();233. temp=dath;234. temp=2)242. flaga=0;243. 244. 245. 246. void delay(uint z)/延時(shí)函數(shù)247. 248. uint x,y;249. for(x=z;x0;x-)250. for(y=110;y0;y-);251. 252. void write_sj(uchar dz, uchar sj)/12887寫(xiě)函數(shù)253. 254. css=0;255. ass=1;256. dss=1;257. rw=1;258. P0=dz;259. ass=0;260. rw=0;261. P0=sj;262. rw=1;263. ass=1;264. css=1;265. 266. uchar read_sj(uchar dz1)/12887讀函數(shù)267. uchar m;268. css=0;269. dss=1;270. rw=1;271. ass=1;272. P0=dz1;273. ass=0;274. dss=0;275. P0=0xff;276. m=P0;277. dss=1;278. ass=1;279. css=1;280. return m;281. 282. void dispay(uint m,uint f,uint s,uint x,uint y,uint r)/顯示函數(shù)283. 284. mh=m/10;285. ml=m%10;286. fh=f/10;287. fl=f%10;288. sh=s/10;289. sl=s%10;290. yh=y/10;291. yl=y%10;292. rh=r/10;293. rl=r%10;294. duxu=1;295. P2=dumafl;296. duxu=0;297. wexu=1;298. P2=wema7;299. wexu=0;300. delay(3);301. duxu=1;302. P2=dumafh;303. duxu=0;304. wexu=1;305. P2=wema6;306. wexu=0;307. delay(3);308. duxu=1;309. P2=dumasl;310. duxu=0;311. wexu=1;312. P2=wema5;313. wexu=0;314. delay(3);315. duxu=1;316. P2=dumash;317. duxu=0;318. wexu=1;319. P2=wema4;320. wexu=0;321. delay(3);322. duxu=1;323. P2=dumarl;324. duxu=0;325. wexu=1;326. P2=wema3;327. wexu=0;328. delay(3);329. duxu=1;330. P2=dumarh;331. duxu=0;332. wexu=1;333. P2=wema2;334. wexu=0;335. delay(3);336. duxu=1;337. P2=dumayl;338. duxu=0;339. wexu=1;340. P2=wema1;341. wexu

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論