版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、湖南人文科技學(xué)院 課程設(shè)計(jì)報(bào)告課程名稱:?jiǎn)纹瑱C(jī)原理及應(yīng)用課程設(shè)計(jì)設(shè)計(jì)題目: 電子時(shí)鐘的設(shè)計(jì) 系 別: 通信與控制工程系專(zhuān) 業(yè): 通信工程 班 級(jí): 09級(jí)通信二班 學(xué)生姓名: 袁 琦 黃文付 學(xué) 號(hào): 起止日期: 2011年12月20日2011年12月30日 指導(dǎo)教師: 王善偉 姚毅 謝四蓮 教研室主任: 劉建閩摘 要時(shí)鐘是人類(lèi)日常生活必不可少的工具,本設(shè)計(jì)從日常生活中常見(jiàn)的事物入手,通過(guò)對(duì)電子時(shí)鐘的設(shè)計(jì),讓我們認(rèn)識(shí)到單片機(jī)已經(jīng)深入到我們生活的每個(gè)領(lǐng)域,該設(shè)計(jì)不僅可以鍛煉我們的動(dòng)手能力,而且可以加深我們對(duì)單片機(jī)的認(rèn)識(shí)和激發(fā)我們對(duì)未知科學(xué)領(lǐng)域的探索。本文利用單片機(jī)實(shí)現(xiàn)數(shù)字時(shí)鐘計(jì)時(shí)功能的主要內(nèi)容。
2、它體積小,成本低、功能強(qiáng)、使用方便、可靠性高等一系列優(yōu)點(diǎn),廣泛應(yīng)用于智能產(chǎn)業(yè)和工業(yè)自動(dòng)化上。本次設(shè)計(jì)采用獨(dú)立式按鍵進(jìn)行時(shí)間調(diào)整,其中STC89C52是核心元件,同時(shí)采用數(shù)碼管LED動(dòng)態(tài)顯示“時(shí)”,“分”,“秒”的現(xiàn)代計(jì)時(shí)裝置。與傳統(tǒng)機(jī)械表相比,它具有走時(shí)精確,顯示直觀等特點(diǎn)。它的計(jì)時(shí)周期為24小時(shí),顯滿刻度為“23時(shí)59分59秒”,另外利用DS1302具有校時(shí)功能,斷電后有記憶功能,恢復(fù)供電時(shí)可實(shí)現(xiàn)計(jì)時(shí)同步等特點(diǎn)。該系統(tǒng)同時(shí)具有硬件設(shè)計(jì)簡(jiǎn)單、工作穩(wěn)定性高、價(jià)格低廉等優(yōu)點(diǎn)。關(guān)鍵詞:STC89C52 ; LED數(shù)碼管;8255芯片;DS1302芯片;目錄設(shè)計(jì)要求 . 11方案論證與對(duì)比 . 11.
3、1方案一 . 11.2方案二 . 21.3方案對(duì)比 . 22系統(tǒng)硬件電路的設(shè)計(jì) . 32.1單片機(jī)的選擇及引腳功能介紹 . 32.2 8255A芯片的結(jié)構(gòu)及引腳功能介紹 . 42.3 DS1302芯片的結(jié)構(gòu)及引腳功能介紹 . 62.4顯示電路設(shè)計(jì) . 72.5電源電路設(shè)計(jì) . 82.6鍵盤(pán)動(dòng)態(tài)掃描電路設(shè)計(jì) . 83控制系統(tǒng)的軟件設(shè)計(jì) . 103.1主程序流程圖 . 103.2顯示子程序 . 113.3鬧鐘時(shí)間設(shè)定功能程序 . 113.4鍵盤(pán)掃描程序 . 124系統(tǒng)功能調(diào)試與整體指標(biāo) . 134.1硬件調(diào)試與分析 . 134.2軟件調(diào)試與分析 . 134.3性能分析 . 135詳細(xì)儀器清單 .
4、146總結(jié)與思考及致謝 . 15參考文獻(xiàn) . 16附錄一:程序(方案一) . 17附錄二:程序(方案二) . 25電子時(shí)鐘的設(shè)計(jì)設(shè)計(jì)要求利用單片機(jī)作為控制核心,完成一個(gè)時(shí)鐘計(jì)時(shí)器。具體要求如下: (1)采用6位LED數(shù)碼顯示時(shí)、分、秒。 (2)時(shí)制式為24小時(shí)制。(3)使用按鍵開(kāi)關(guān)可實(shí)現(xiàn)時(shí)、分調(diào)整。 (4)秒表/時(shí)鐘功能轉(zhuǎn)換。 (5)定時(shí)設(shè)定提醒的功能。 (6)整點(diǎn)提醒(蜂鳴)。(7)DS1302設(shè)時(shí),對(duì)時(shí),掉電記憶時(shí)間的功能。1方案論證與對(duì)比1.1方案一此方案采用單片機(jī)內(nèi)部定時(shí)器T0進(jìn)行計(jì)時(shí),STC89S52實(shí)時(shí)控制。如圖1所示:P0PAPB6位LED數(shù)碼管顯示蜂鳴器STC89C52單片機(jī)定
5、時(shí)器P2圖 1 方案一系統(tǒng)方框圖8255矩陣鍵盤(pán)PC11.2方案二此方案采用專(zhuān)用時(shí)鐘芯片DS1302精確計(jì)時(shí),單片機(jī)STC89C52實(shí)時(shí)讀取時(shí)鐘顯示至6位數(shù)碼管。如圖2所示: DS1302STC89C52單片機(jī)控制器蜂鳴器P0PAPB82556位LED數(shù)碼管顯示P2圖 2 方案二系統(tǒng)方框圖 PC 矩陣鍵盤(pán)1.3方案對(duì)比以上方案中,方案一設(shè)計(jì)簡(jiǎn)潔,編程比較簡(jiǎn)單,計(jì)時(shí)精度不高,準(zhǔn)確性不能完全保證。雖硬件簡(jiǎn)潔、成本更低廉、便于實(shí)現(xiàn),綠色環(huán)保,編程簡(jiǎn)單易寫(xiě),不能達(dá)到提高同學(xué)們編程的能力和對(duì)單片機(jī)及其擴(kuò)展芯片的學(xué)習(xí)和深程度的去了解單片機(jī)及其更廣泛的應(yīng)用,故在此我們選擇挑戰(zhàn),放棄對(duì)其選擇。雖然我們對(duì)其進(jìn)行
6、了放棄,但我們也把此方法的程序?qū)懞靡员氵M(jìn)行對(duì)比。方案二與方案一相比,編程比較復(fù)雜,計(jì)時(shí)精度較高,而且可以靈活運(yùn)用,可擴(kuò)展性好,并能充分的利用單片機(jī)的有效資源。還可讓我們培養(yǎng)我們的自學(xué)能力,自己去發(fā)掘單片機(jī)內(nèi)部結(jié)構(gòu)及其擴(kuò)展功能,自己去學(xué)會(huì)怎樣對(duì)其他芯片控制的學(xué)習(xí)方法,使得課程設(shè)計(jì)具有一定的挑戰(zhàn)性,正因如此,故我們選擇方案二。22系統(tǒng)硬件電路的設(shè)計(jì)2.1單片機(jī)的選擇及引腳功能介紹STC89C52具有如下特點(diǎn):40個(gè)引腳(引腳圖如圖四所示),4k Bytes Flash片內(nèi)程序存儲(chǔ)器,128 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),32個(gè)外部雙向輸入/輸出(I/O)口,5個(gè)中斷優(yōu)先級(jí)2層中斷嵌套中
7、斷,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,看門(mén)狗(WDT)電路,片內(nèi)時(shí)鐘振蕩器。此外,STC89C52RC設(shè)計(jì)和配置了振蕩頻率可為0Hz并可通過(guò)軟件設(shè)置省電模式??臻e模式下,CPU暫停工作,而RAM定時(shí)計(jì)數(shù)器,串行口,外中斷系統(tǒng)可繼續(xù)工作,掉電模式凍結(jié)振蕩器而保存RAM的數(shù)據(jù),停止芯片其它功能直至外中斷激活或硬件復(fù)位。同時(shí)該芯片還具有PDIP、TQFP和PLCC等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。圖4 STC89C52芯片引腳圖引腳功能介紹:VCC(40):5V;GND(20):接地;P0口(3932):P0口為8位漏極開(kāi)路雙向I/O口,每引腳可吸收8個(gè)TTL門(mén)電流;3P1口(1
8、8):P1口是從內(nèi)部提供上拉電阻器的8位雙向I/O口,P1口緩沖器能接收和輸出4個(gè)TTL門(mén)電流;P2口(2128):P2口為內(nèi)部上拉電阻器的8位雙向I/O口,P2口緩沖器可接收和輸出4個(gè)TTL門(mén)電流;P3口(1017):P3口是8個(gè)帶內(nèi)部上拉電阻器的雙向I/O口,可接收和輸出4個(gè)TTL門(mén)電流,P3口也可作為AT89C51的特殊功能口;RST(9):復(fù)位輸入。當(dāng)振蕩器復(fù)位時(shí),要保持RST引腳2個(gè)機(jī)器周期的高電平時(shí)間;ALE/PROG(30):當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的低位字節(jié),在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信
9、號(hào),此頻率為振蕩器頻率的1/6,它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的,要注意的是,每當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)1個(gè)ALE脈沖;PSEN(29):外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期2次PSEN有效,但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這2次有效的PSEN信號(hào)將不出現(xiàn);EA/VPP(31):當(dāng)EA保持低電平時(shí),外部程序存儲(chǔ)器地址為(0000HFFFFH)不管是否有內(nèi)部程序存儲(chǔ)器。FLASH編程期間,此引腳也用于施加12V編程電源(VPP);XTAL1(19):反向振蕩器放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入;XTAL2(18):來(lái)自反向振蕩器的輸出。2.2 8255A芯片
10、的結(jié)構(gòu)及引腳功能介紹8255A芯片是Intel公司生產(chǎn)的通用可編程并行接口電路,廣泛應(yīng)用于單片機(jī)擴(kuò)展并行I/O口。它具有8個(gè)位并行口PA、PB和PC。8255A芯片的內(nèi)部結(jié)構(gòu)及引腳如圖5所示。(1)8255A的內(nèi)部結(jié)構(gòu)8255A的內(nèi)部結(jié)構(gòu)有以下幾部分組成:a.并行I/O端口A、B、C 8255A的內(nèi)部有3個(gè)8位并行I/O口:A口、B口、C4口。3個(gè)I/O口都可以通過(guò)編程選擇為輸入口或輸出口,但在結(jié)構(gòu)和功能上有所不同。A口:含有一個(gè)8位數(shù)據(jù)輸出鎖存/緩沖器和一個(gè)8位輸入鎖存器。B口:含有一個(gè)8位數(shù)據(jù)輸出鎖存/緩沖器和一個(gè)8位輸入鎖存器(不鎖存)。 C口:含有一個(gè)8位數(shù)據(jù)輸出鎖存/緩沖器和一個(gè)8位
11、輸入鎖存器(不鎖存)。 當(dāng)數(shù)據(jù)傳送不需要聯(lián)絡(luò)信號(hào)時(shí),這3個(gè)端口都可以用作輸入口或輸出口。當(dāng)A口B口需要有聯(lián)絡(luò)信號(hào)時(shí),C口可以作為A口和B口的聯(lián)絡(luò)信號(hào)線。b.工作方式控制電路:8255A的三個(gè)端口在使用使可分為A、B兩組。A組包括A口8位和C口高4位:B組包括B口8位和C口低4位。兩組的控制電路中分別有控制寄存器,根據(jù)寫(xiě)入的控制字決定兩組的工作方式,也可對(duì)C口每一位置“1” 或清“0”。c.數(shù)據(jù)總線緩沖器:數(shù)據(jù)總線緩沖器是三態(tài)雙向的8位緩沖器,是8255A與單片機(jī)數(shù)據(jù)總線的接口,8255A的D0D7可以和AT89C51單片機(jī)的P0.0P0.7直接相連。數(shù)據(jù)的輸入輸出、控制字和狀態(tài)信息的傳遞,均可
12、通過(guò)數(shù)據(jù)總線緩沖器進(jìn)行。d.讀/寫(xiě)控制邏輯:8255A讀/寫(xiě)控制邏輯的作用是從CPU的地址和控制總線上接受有關(guān)信號(hào),轉(zhuǎn)變成各種控制命令送到數(shù)據(jù)緩沖器及A組和B組的控制電路,控制A、B、C3個(gè)端口的操作。其引腳圖如圖5所示:圖5 8255引腳圖引腳功能介紹:8255A共有40個(gè)引腳,一般為雙列直插DIP封裝,40個(gè)引腳可分為與CPU連接的數(shù)據(jù)線、地址和控制信號(hào)以及與外圍設(shè)備連接的三個(gè)端口線。5D0D7:雙向三態(tài)數(shù)據(jù)總線。RESET:復(fù)位信號(hào),輸入,高電平有效。復(fù)位后,控制寄存器清0,A口、B口、C口被置為輸入方式。CS:片選信號(hào),輸入,低電平有效。RD.:讀信號(hào),輸入,低電平有效。有效時(shí),允許C
13、PU通過(guò)8255A D0D7讀取數(shù)據(jù)或狀態(tài)信息。WR.:寫(xiě)信號(hào),輸入,低電平有效。有效時(shí),允許A1A0:端口控制信號(hào),輸入。2位可構(gòu)成四種狀態(tài),分別尋址A口、B口、C口和控制寄存器PA0PA7:A口數(shù)據(jù)線,雙向。PB0PB7:B口數(shù)據(jù)線,雙向。PC0PC7:C口數(shù)據(jù)/信號(hào)線,雙向。當(dāng)8255A工作于方式0時(shí),PC0PC7分為兩組(每組4位)并行I/O數(shù)據(jù)線;當(dāng)8255A工作于方式1或方式2時(shí),PC0PC7為A口、B口提供聯(lián)絡(luò)信號(hào)。2.3 DS1302芯片的結(jié)構(gòu)及引腳功能介紹DS1302 是美國(guó)DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路,它可以對(duì)年、月、日、周日、時(shí)、分、秒
14、進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為2.5V5.5V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)31×8的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級(jí)產(chǎn)品,與DS1202兼容,但增加了主電源/后背電源雙電源引腳,同時(shí)提供了對(duì)后背電源進(jìn)行涓細(xì)電流充電的能力。(1)DS1302的引腳功能及結(jié)構(gòu)DS1302的引腳排列,其中Vcc1為后備電源,VCC2為主電源。在主電源關(guān)閉的情況下,也能保持時(shí)鐘的連續(xù)運(yùn)行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當(dāng)Vcc2大于Vcc10.2V時(shí),Vcc2
15、給DS1302供電。當(dāng)Vcc2小于Vcc1時(shí),DS1302由Vcc1供電。X1和X2是振蕩源,外接32.768kHz晶振。RST是復(fù)位/片選線,通過(guò)把RST輸入驅(qū)動(dòng)置高電平來(lái)啟動(dòng)所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST6接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)RST為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)DS1302進(jìn)行操作。如果在傳送過(guò)程中RST置為低電平,則會(huì)終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在Vcc2.5V之前,RST必須保持低電平。只有在SCLK為低電平時(shí),才能將RST置為高電平。I/O為串行數(shù)據(jù)
16、輸入輸出端(雙向),后面有詳細(xì)說(shuō)明。SCLK始終是輸入端。 DS1302的引腳功能以及單片機(jī)的連接圖如圖6圖6 DS1302引腳及其與單片機(jī)連接的原理圖2.4顯示電路設(shè)計(jì)單片機(jī)中通常用七段LED構(gòu)成字型“8”,另外,還有一個(gè)小數(shù)點(diǎn)發(fā)光二極管以顯示小數(shù)位!這種顯示器有共陰和共陽(yáng)兩種!發(fā)光二極管的陽(yáng)極連在一起的(公共端)稱為共陽(yáng)極顯示器,陰極連在一起的稱為共陰極顯示器。一位顯示器由8個(gè)發(fā)光二極管組成,其中,7個(gè)發(fā)光二極管構(gòu)成字型“8”的各個(gè)筆劃(段),a_g,另一個(gè)小數(shù)點(diǎn)為dp發(fā)光二極管。當(dāng)在某段發(fā)光二極管上施加一定的正向電壓時(shí),該段筆畫(huà)即亮;不加電壓則暗。為了保護(hù)各段LED不被損壞,需外加限流電
17、阻。由于共陰極連接需加驅(qū)動(dòng),故在這里我采用的是共陽(yáng)陽(yáng)極連接。7以共陽(yáng)極LED為例,各LED公共陽(yáng)極K0接高電平,若向各控制端a,b, ,g,dp順次送入00011110信號(hào),則該顯示器顯示“”字型。共陰極7段LED顯示數(shù)字0 F、文字、符號(hào)及小數(shù)點(diǎn)的編碼(a段為最地位,dp點(diǎn)為最高位),如圖7。圖7 數(shù)碼管的驅(qū)動(dòng)顯示電路設(shè)計(jì)2.5電源電路設(shè)計(jì)在各種電子設(shè)備中,直流穩(wěn)壓電源是必不可少的組成部分,它是電子設(shè)備唯一能量來(lái)源,它的設(shè)計(jì)思路是根據(jù)我們以前學(xué)過(guò)的模電電子技術(shù),要想得到我們所要的+6V輸出電壓,就需將交流220V的電壓經(jīng)過(guò)變壓器、整流電路、濾波電路和穩(wěn)壓電路四個(gè)部分。2.6鍵盤(pán)動(dòng)態(tài)掃描電路設(shè)
18、計(jì)在單片機(jī)系統(tǒng)中按鍵數(shù)量較多時(shí),為了減少I(mǎi)/O口的占用,常常將按鈕排列成矩陣式鍵盤(pán)中,每條水平線和直線在交叉處不直接連通,而是通過(guò)一個(gè)按鈕加以連接。這樣,一個(gè)端口(如P1口)就能組成4*4=16個(gè)按鈕,比之直接將端口線用于鍵盤(pán)多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比如再多加一條就能組成20鍵的鍵盤(pán),而直接用端口線則只能多出一鍵(9鍵)。由此可見(jiàn),在需要的鍵數(shù)比較多時(shí),采用8矩陣法來(lái)做鍵盤(pán)是最合理的。矩陣式鍵盤(pán)的按鈕識(shí)別辦法確定矩陣式鍵盤(pán)上何鍵被按下簡(jiǎn)紹一種“行掃描法”。行掃描法又稱為逐行(或列)掃描查詢法,是一種最常用的,按鈕識(shí)別辦法,如下圖示鍵盤(pán),介紹過(guò)程如下。判斷鍵盤(pán)中有無(wú)鍵盤(pán)按下將全部行
19、線置低電平,然后檢測(cè)列的電平為低,則表示鍵盤(pán)中有鍵被按下,而且閉合的鍵位位于低電平線與4根行線相交叉的4個(gè)按鈕之中。若所有列線均為高電平,則鍵盤(pán)中無(wú)鍵按下。判斷閉合鍵所在的位置:在確認(rèn)有鍵按下后,即可置某根行線為低電平時(shí),其他線為高電平。在確定某根位置為低電平后,再逐行檢測(cè)各列線的電平狀態(tài)。若某列為低,則該列與置為低電平的行線交叉處的按鈕就是閉合的按鈕。將程序通過(guò)串口下載到單片機(jī)中,在鍵盤(pán)上按任意鍵時(shí),將會(huì)在數(shù)碼管上顯示對(duì)應(yīng)的字符。為了驅(qū)動(dòng)鍵盤(pán),同上以8255_PC第四位作為輸入,8255PC高四位作為列掃描輸出,以此來(lái)實(shí)現(xiàn)動(dòng)態(tài)掃描顯示法。如圖8所示:圖8 鍵盤(pán)動(dòng)態(tài)掃描電路設(shè)計(jì)93控制系統(tǒng)的軟
20、件設(shè)計(jì)3.1主程序流程圖本設(shè)計(jì)中主程序主要實(shí)現(xiàn)顯示的初始化和調(diào)用各子程序工作的功能,讀取時(shí)間的子程序主要實(shí)現(xiàn)初始化,時(shí)間信息的采集和顯示段碼的碼的存取。分別對(duì)各個(gè)器件的功能進(jìn)行編程設(shè)計(jì),根據(jù)主程序流程圖(如下)進(jìn)行全面的分析。設(shè)計(jì)中計(jì)時(shí)主要以定時(shí)器T0中斷完成,定點(diǎn)鬧鈴使用峰鳴器來(lái)完成。當(dāng)端口有開(kāi)關(guān)按下時(shí),轉(zhuǎn)入相應(yīng)的功能程序。其主程序執(zhí)行流程圖如下圖9:圖9 主程序流程圖103.2顯示子程序時(shí)間顯示子程序顯示時(shí)鐘芯片3個(gè)內(nèi)存單元(小時(shí)、分鐘、秒鐘)的BCD碼數(shù)據(jù),8255的PA口送數(shù)碼管的位選編碼。8255的PB口送段選編碼,位選段選編碼存放在ROM表中。顯示時(shí),先取出位選編碼數(shù)據(jù),然后送至P
21、A口輸出,接著取出段選編碼數(shù)據(jù)送至PB口輸出,剩下的數(shù)碼管以同樣地方法送數(shù)據(jù)直到將3個(gè)內(nèi)存單元的數(shù)據(jù)分成6個(gè)位全部送去數(shù)碼管顯示。數(shù)碼管顯示子程序流程圖如圖9所示:圖 10 數(shù)碼管顯示子程序流程圖3.3鬧鐘時(shí)間設(shè)定功能程序在時(shí)鐘狀態(tài)下,觸發(fā)外中斷1時(shí),進(jìn)入鬧鐘時(shí)間設(shè)定模式,且不影響T0計(jì)時(shí)器的功能狀態(tài),在鍵盤(pán)上輸入對(duì)應(yīng)的數(shù)字進(jìn)行時(shí)間設(shè)定。當(dāng)分別按下調(diào)節(jié)時(shí)鐘、分鐘和秒鐘的個(gè)位時(shí),時(shí)間自動(dòng)確定,鬧鐘時(shí)間只精確到分鐘。鬧鐘時(shí)間設(shè)定流程圖如圖11所示:11圖11 鬧鐘時(shí)間設(shè)定流程圖3.4鍵盤(pán)掃描程序本設(shè)計(jì)采用動(dòng)態(tài)掃描法,動(dòng)態(tài)掃描法不僅掃描鍵陣,也可以實(shí)現(xiàn)顯示,是目前應(yīng)用十分廣泛的一種方法。動(dòng)態(tài)掃描法是
22、采用輸出“移動(dòng)”信號(hào),輪流對(duì)各行按鍵進(jìn)行檢測(cè)來(lái)實(shí)現(xiàn)的。設(shè)置行線為輸出,列線為輸入,當(dāng)無(wú)按鍵按下時(shí),列輸入全為“1”.設(shè)計(jì)時(shí),將某一行輸出為“0”,讀取列線值,若其中某一位為“0”,則表明行、列交叉處的按鍵按下,否則,無(wú)按鍵按下;繼續(xù)掃描下一行(將下一行輸出為“0”),直至全掃描完為止。鍵盤(pán)掃描程序流程圖如12圖所示:圖12 鍵盤(pán)掃描程序流程圖124系統(tǒng)功能調(diào)試與整體指標(biāo)4.1硬件調(diào)試與分析(1)時(shí)間準(zhǔn)確性調(diào)試硬件調(diào)試時(shí)可先檢查印制版及焊接的質(zhì)量情況,將電子時(shí)鐘通電后,顯示00:00:00。觸發(fā)INT0中斷開(kāi)始計(jì)時(shí),每過(guò)一秒時(shí)間就顯示變化一次。計(jì)時(shí)準(zhǔn)確,顯示穩(wěn)定。(2)鬧鈴功能調(diào)試將時(shí)鐘調(diào)到11
23、點(diǎn)59分58秒,2秒后,時(shí)鐘開(kāi)始定點(diǎn)鬧鈴,鈴聲為“嘀-嘀-嘀-嘀”聲,持續(xù)1分鐘報(bào)時(shí)聲自動(dòng)停止也可以觸發(fā)功能鍵來(lái)中止鬧鈴。設(shè)計(jì)的電子時(shí)鐘計(jì)時(shí)精確度較高,并可應(yīng)用于日常生活中。 能夠通過(guò)鍵盤(pán)對(duì)電子時(shí)鐘進(jìn)行調(diào)整,且調(diào)整過(guò)程簡(jiǎn)單方便,易于操作,有較強(qiáng)的人性化設(shè)計(jì)。 并且可通過(guò)鍵盤(pán)實(shí)現(xiàn)鬧鈴與時(shí)間模式的切換,使電子時(shí)鐘的功能更加強(qiáng)大。 能夠進(jìn)行定時(shí)鬧鈴,計(jì)時(shí)較準(zhǔn)確,基本能實(shí)現(xiàn)測(cè)試目標(biāo)。4.2軟件調(diào)試與分析軟件調(diào)時(shí)在KEIL C51編譯器下進(jìn)行,源程序編譯及仿真調(diào)試應(yīng)分段或以子程序?yàn)閱挝恢饌€(gè)進(jìn)行,最后可結(jié)合硬件實(shí)時(shí)調(diào)試。4.3性能分析按照設(shè)計(jì)程序分析,LED顯示器動(dòng)態(tài)掃描的頻率為167HZ,實(shí)際使用觀察時(shí)
24、完全沒(méi)有閃爍。由于計(jì)時(shí)中斷程序中加了中斷延時(shí)誤差處理,所以實(shí)際計(jì)時(shí)精度非常高,可滿足多種場(chǎng)合的應(yīng)用需要。135詳細(xì)儀器清單表格 1 儀器清單146總結(jié)與思考及致謝在老師的指導(dǎo)和同學(xué)的幫助之下,我完成了此次單片機(jī)課程設(shè)計(jì)。從開(kāi)始接到課題要求到時(shí)鐘的實(shí)現(xiàn),再到論文的完成,每走一步對(duì)我來(lái)說(shuō)都是新的嘗試與挑戰(zhàn)。在這次的課程設(shè)計(jì)中不僅檢驗(yàn)了我所學(xué)習(xí)的知識(shí),也培養(yǎng)了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在設(shè)計(jì)過(guò)程中,與同學(xué)分工設(shè)計(jì),和同學(xué)們相互探討,相互學(xué)習(xí),相互監(jiān)督。課程設(shè)計(jì)是我們專(zhuān)業(yè)課程知識(shí)綜合應(yīng)用的實(shí)踐訓(xùn)練,著是我們邁向社會(huì),從事職業(yè)工作前一個(gè)必不少的過(guò)程。這次時(shí)鐘計(jì)時(shí)器設(shè)計(jì)的
25、經(jīng)歷也會(huì)使我終身受益,我感受到做設(shè)計(jì)是要用心去做的一件事情,是真正的自己學(xué)習(xí)的過(guò)程和研究的過(guò)程,沒(méi)有學(xué)習(xí)就不可能有研究的能力,沒(méi)有自己的研究,就不會(huì)有所突破。通過(guò)設(shè)計(jì),我在老師的精心指導(dǎo)和嚴(yán)格要求下,獲得了豐富的理論知識(shí),極大地提高了實(shí)踐能力。最后,再一次感謝我的老師.,老師嚴(yán)謹(jǐn)細(xì)致、一絲不茍的作風(fēng)一直是我學(xué)習(xí)的榜樣;老師循循善誘的教導(dǎo)和不拘一格的思路給予我無(wú)盡的啟迪;這次時(shí)鐘計(jì)時(shí)器設(shè)計(jì)的每個(gè)環(huán)節(jié),都離不開(kāi)老師您的細(xì)心指導(dǎo)。我懂得了學(xué)習(xí)的重要性,了解到理論知識(shí)與實(shí)踐相結(jié)合的重要意義,學(xué)會(huì)了堅(jiān)持、耐心和努力,這將為自己今后的學(xué)習(xí)和工作做出了最好的榜樣。15參考文獻(xiàn)1 余錫存.單片機(jī)原理及接口技術(shù)
26、 M.西安:西安電子科技大學(xué)出版社,20002 賈好來(lái).MCS-51單片機(jī)原理及應(yīng)用 M.北京:機(jī)械工業(yè)出版社,20063 樓然苗,李光飛.單片機(jī)課程設(shè)計(jì)指導(dǎo)M.北京:北京航空航天大學(xué)出版社,20074 夏路易,石宗義.電路原理圖與電路板設(shè)計(jì)教程北京希望電子工業(yè)出版20025 朱定華,戴汝平.單片微機(jī)原理與應(yīng)用.(M) 北京:清華大學(xué)出版社,200316附錄一:程序(方案一)#include<reg52.h>#include<absacc.h>#define uint unsigned int#define uchar unsigned char#define PA X
27、BYTE0xD1FF#define PB XBYTE0xD2FF#define PC XBYTE0xD5FF#define PCON XBYTE0xD7FFsbit buzzer=P33;/蜂鳴器端口/數(shù)碼管0-9的段選編碼uchar code tabledu=0xA0,0xBB,0x62,0x2A,0x39,0x2C,0x24,0xBA,0x20,0x28;/數(shù)碼管各位選編碼uchar code tablewe=0xfe,0xfd,0xfb,0xf7,0xef,0xdf;/全局變量定義unsigned long num1,num2;uchar shi0,shi1,fen0,fen1,m0,m
28、1,num,num3,aa,bb,cc,count,temp,count,S,flag,flag1;char hour,min,second,h0,h1,mi0,mi1,s0,s1;void init();/初始化函數(shù)聲明void display(uchar,uchar,uchar,uchar,uchar,uchar );/顯示函數(shù)聲明void delay(uint);/帶參數(shù)延時(shí)函數(shù)聲明 1毫秒void keyscan();/鍵盤(pán)掃描函數(shù)void main()PCON=0x80;init();while(1)/主體循環(huán)keyscan();/時(shí)鐘分離部分m1=aa%10;m0=aa/10;fe
29、n1=bb%10;fen0=bb/10;shi1=cc%10;shi0=cc/10;/clock分離部分17s1=second%10;s0=second/10;mi1=min%10;mi0=min/10;h1=hour%10;h0=hour/10;/時(shí)鐘顯示和clock顯示部分if(num3>=1&&num3<=4|count=0)display(shi0,shi1,fen0,fen1,m0,m1);elsedisplay(h0,h1,mi0,mi1,s0,s1);/*整點(diǎn)報(bào)時(shí)*/if(aa=0&&bb=0) /報(bào)時(shí)10秒TR1=1; /開(kāi)啟定時(shí)器1
30、flag=1; /控制整點(diǎn)報(bào)時(shí)計(jì)數(shù)num1+ /*鬧鐘報(bào)時(shí) */if(aa=second&&bb=min&&cc=hour)/鬧時(shí)一分鐘 TR1=1; /開(kāi)啟定時(shí)器1flag1=1; /控制鬧鐘計(jì)數(shù)num2+ /*初始化函數(shù)*/void init()/*定時(shí)器0,1初始化*/TMOD=0x11;EA=1;ET0=1;ET1=1;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TH1=(65536-1000)/256;TL1=(65536-1000)%256;TR0=1;void time0() interrupt 1 /定
31、時(shí)0時(shí)鐘函數(shù)(控制數(shù)碼時(shí)鐘) TH0=(65536-50000)/256;TL0=(65536-50000)%256;num+;18if(num=20)num=0;aa+;if(aa=60)aa=0;bb+;if(bb=60)bb=0;cc+;if(cc=24)cc=0;void time1() interrupt 3 /定時(shí)1時(shí)鐘函數(shù)(控制整點(diǎn)報(bào)時(shí)時(shí)間) TH1=(65536-1000)/256;TL1=(65536-1000)%256;if(flag=1)num1+;if(flag1=1)num2+;buzzer=buzzer;if(num1=10000|num2=60000)num1=0
32、;num2=0;buzzer=1;TR1=0;flag=0;flag1=0;/*數(shù)碼管顯示函數(shù)*/void display(uchar shi0,uchar shi1,uchar fen0,uchar fen1,uchar m0,uchar m1) PA=tablewe0;PB=tabledushi0;delay(1);PA=0XFF;19PB=0XFF;PA=tablewe1;PB=tabledushi1;delay(1);PA=0XFF;PB=0XFF;PA=tablewe2;PB=tabledufen0;delay(1);PA=0XFF;PB=0XFF;PA=tablewe3;PB=ta
33、bledufen1;delay(1);PA=0XFF;PB=0XFF;PA=tablewe4;PB=tabledum0;delay(1);PA=0XFF;PB=0XFF;PA=tablewe5;PB=tabledum1;delay(1);PA=0XFF;PB=0XFF;/*毫秒函數(shù)*/ void delay(uint z)uint x,y;for(x=z;x>0;x-)for(y=124;y>0;y-);/*鍵盤(pán)函數(shù)函數(shù)*/ void keyscan()PC=0xfe;temp=PC;temp=temp&0xf0;if(temp!=0xf0)delay(5);20temp=
34、PC;temp=temp&0xf0;if(temp!=0xf0)temp=PC;switch(temp)case 0xee:num3=1; /秒鐘加一按鍵 break;case 0xde:num3=2; /分鐘加一按鍵 break;case 0xbe:num3=3; /時(shí)鐘加一按鍵 break;case 0x7e:num3=4; /清零按鍵 break;while(temp!=0xf0) /松手檢測(cè) temp=PC;temp=temp&0xf0;display(shi0,shi1,fen0,fen1,m0,m1); switch(num3)case 1:aa+;if(aa>
35、;59)aa=0;break;case 2:bb+;if(bb>59)bb=0;break;case 3:cc+;if(cc>23)cc=0;break;case 4:aa=0,bb=0,cc=0;break;21PC=0xfd;temp=PC;temp=temp&0xf0;if(temp!=0xf0)delay(5);temp=PC;temp=temp&0xf0;if(temp!=0xfe)temp=PC;switch(temp)case 0xed:num3=5;/定時(shí)器暫停,并進(jìn)入設(shè)置clock狀態(tài)按鍵 break;case 0xdd:num3=6;/設(shè)置clo
36、ck的秒,分,時(shí)加時(shí)按鍵 break;case 0xbd:num3=7;/設(shè)置clock的秒,分,時(shí)減時(shí)按鍵 break;case 0x7d:num3=8;/定時(shí)器暫停,開(kāi)啟按鍵 break;while(temp!=0xf0)temp=PC;temp=temp&0xf0;display(h0,h1,mi0,mi1,s0,s1);switch(num3)case 5:TR0=0;count+;if(count=4)count=0;TR0=1;break;case 6:22if(count=1) second+; if(second=60) second=0; else if(count=
37、2) min+;case 7:case 8: if(min=60) min=0; else if(count=3) hour+; if(hour=24) hour=0; break; if(count=1) second-; if(second=-1) second=59; else if(count=2) min-; if(min=-1) min=59; else if(count=3) hour-; if(hour=-1) hour=23; break;23 S+; if(S%2=1) TR0=0; else TR0=1; if(S=2) S=0; break; 24附錄二:程序(方案二)
38、#include<reg52.h>#include<absacc.h>#define uchar unsigned char#define uint unsigned int#define uchar unsigned char#define PA XBYTE0xD1FF#define PB XBYTE0xD2FF#define PC XBYTE0xD5FF#define PCON XBYTE0xD7FFuchar num,temp,hour,minute,second,hour1,hour2,minute1,minute2,second1,second2; uchar
39、 aa,aa1,aa2,bb,bb1,bb2,cc,cc1,cc2;sbit buzzer=P33;/蜂鳴器sbit D0=P10;/用來(lái)指示鬧鐘開(kāi)啟關(guān)閉的LEDbit flag;/鬧鐘開(kāi)啟關(guān)閉的標(biāo)志位uint a0;uchar code tabledu=0xA0,0xBB,0x62,0x2A,0x39,0x2C,0x24,0xBA,0x20,0x28;/數(shù)碼管0123456789的段選編碼uchar code tablewe=0xfe,0xfd,0xfb,0xf7,0xef,0xdf;/數(shù)碼管的位選編碼sbit SCLK=P32;sbit RST=P26;sbit IO=P35;/*毫秒延時(shí)
40、程序*/void delay(uint z)uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);/*微秒延時(shí)程序*/void delay_us(uchar n)uchar i;for(i=0;i<n;i+);25/*1302做好準(zhǔn)備*/void ready_init1302()RST=0;SCLK=0;RST=1;/*1302單字節(jié)數(shù)據(jù)寫(xiě)入*/void write1302(uchar dat)uchar i;SCLK=0;delay_us(2);for(i=0;i<8;i+)IO=dat&0x01;delay_us(2);SCLK
41、=1;delay_us(2);SCLK=0;dat>>=1;/*1302雙字節(jié)數(shù)據(jù)寫(xiě)入(寄存器地址和數(shù)據(jù))*/ void write_set1302(uchar cmd,uchar dat)ready_init1302();delay_us(2);write1302(cmd);write1302(dat);SCLK=1;RST=0;/*1302單字節(jié)數(shù)據(jù)讀出*/uchar read1302()uchar i,dat;dat=0;delay_us(2);for(i=0;i<8;i+)26dat>>=1;if(1=IO)dat=dat|0x80;SCLK=1;dela
42、y_us(2);SCLK=0;delay_us(2);return dat;/*1302單字節(jié)數(shù)據(jù)讀出(讀指定寄存器值)*/ uchar read_set1302(uchar cmd)uchar dat;ready_init1302();write1302(cmd);dat=read1302();SCLK=1;RST=0;return dat;/*1302初始化(設(shè)置初始時(shí)間)*/void init1302()write_set1302(0x8e,0x00);write_set1302(0x80,(0/10)<<4|(0%10);write_set1302(0x82,(27/10)
43、<<4|(27%10);write_set1302(0x84,(10/10)<<4|(10%10);write_set1302(0x90,0xa5);/以2K電阻方式給備用電源充電 write_set1302(0x8e,0x80);/*1302數(shù)據(jù)讀出(讀已經(jīng)設(shè)置好的時(shí)間)*/void readtime()uchar temp;temp=read_set1302(0x81);second=(temp&0x70)>>4)*10+(temp&0x0F);27temp=read_set1302(0x83);minute=(temp&0x70
44、)>>4)*10+(temp&0x0F);temp=read_set1302(0x85);hour=(temp&0x70)>>4)*10+(temp&0x0F);/*數(shù)碼管顯示函數(shù)(入口參數(shù)為每個(gè)數(shù)碼管的段選序號(hào))*/void dispaly(uchar du0,uchar du1,uchar du2,uchar du3,uchar du4,uchar du5) PA=tablewe0;PB=tabledudu0;delay(2);PA=0xff;PB=0xff;delay(2);PA=tablewe1;PB=tabledudu1;delay(2
45、);PA=0xff;PB=0xff;delay(2);PA=tablewe2;PB=tabledudu2;delay(2);PA=0xff;PB=0xff;delay(2);PA=tablewe3;PB=tabledudu3;delay(2);PA=0xff;PB=0xff;delay(2);PA=tablewe4;PB=tabledudu4;delay(2);PA=0xff;PB=0xff;28delay(2);PA=tablewe5;PB=tabledudu5;delay(2);PA=0xff;PB=0xff;delay(2);/*秒鐘加一調(diào)整(供鍵盤(pán)設(shè)置秒鐘)*/void second_
46、inc()second+;if(second>=60)second=0;write_set1302(0x8e,0x00);write_set1302(0x80,(second)/10)<<4|(second)%10); write_set1302(0x8e,0x80);/*分鐘加一調(diào)整(供鍵盤(pán)設(shè)置分鐘)*/void minute_inc()minute+;if(minute>=60)minute=0;write_set1302(0x8e,0x00);write_set1302(0x82,(minute)/10)<<4|(minute)%10); write_
47、set1302(0x8e,0x80);/*小時(shí)加一調(diào)整(供鍵盤(pán)設(shè)置小時(shí))*/void hour_inc()hour+;if(hour>=24)hour=0;write_set1302(0x8e,0x00);write_set1302(0x84,(hour)/10)<<4|(hour)%10); write_set1302(0x8e,0x80);29/*矩陣鍵盤(pán)檢測(cè)*/void keyboard()PCON=0x80;PA=0xff;PB=0xff;PC=0xfe;/掃描倒數(shù)第一列temp=PC;temp=temp&0xf0;if(temp!=0xf0)delay(10
48、);temp=PC;temp=temp&0xf0;if(temp!=0xf0)switch(temp)case 0xe0:num=0;break;case 0xd0:num=1;break;case 0xb0:num=2;break;case 0x70:num=3;break;while(temp!=0xf0)temp=PC;temp=temp&0xf0;dispaly(hour1,hour2,minute1,minute2,second1,second2); switch(num)case 0:second_inc();/調(diào)節(jié)秒鐘break;case 1:minute_inc();/調(diào)節(jié)分鐘30break; case 2: hour
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑行業(yè)建造師培訓(xùn)心得
- 2024年環(huán)保項(xiàng)目招投標(biāo)與合同執(zhí)行監(jiān)督服務(wù)合同3篇
- 《ZYJ道岔教案》課件
- 2025版科技成果轉(zhuǎn)化合作協(xié)議書(shū)3篇
- 稅務(wù)工作總結(jié)稅務(wù)專(zhuān)業(yè)知識(shí)培訓(xùn)業(yè)務(wù)能力提高
- 2024年紡織品出口銷(xiāo)售協(xié)議3篇
- 教育培訓(xùn)銷(xiāo)售員工工作總結(jié)
- 銀行行業(yè)業(yè)務(wù)員工作總結(jié)
- 消化科護(hù)士照顧入微
- 產(chǎn)后護(hù)理護(hù)士關(guān)注產(chǎn)婦康復(fù)
- 《廣東省智慧高速公路建設(shè)指南(試行)》
- 護(hù)理年終個(gè)人工作總結(jié)
- 《臨床顱內(nèi)壓增高》課件
- 2024老師聘用合同范本
- 國(guó)開(kāi)電大《建筑結(jié)構(gòu)試驗(yàn)》形考任務(wù)1-4參考答案
- 2024電力建設(shè)工程質(zhì)量問(wèn)題通病防止手冊(cè)
- 【初中地理】世界的聚落+課件-2024-2025學(xué)年七年級(jí)地理上學(xué)期(湘教版2024)
- 2023-2024學(xué)年四川省宜賓市八年級(jí)上學(xué)期期末數(shù)學(xué)試卷及參考答案
- (統(tǒng)編版2024)語(yǔ)文七年級(jí)上冊(cè) 第四單元寫(xiě)作《思路要清晰》 課件(新教材)
- 浙江省臺(tái)州市2023-2024學(xué)年高一上學(xué)期期末考試 化學(xué) 含答案
- 一年級(jí)數(shù)學(xué)加減法口算題每日一練(25套打印版)
評(píng)論
0/150
提交評(píng)論