電子時鐘的制作數(shù)據(jù)參考_第1頁
電子時鐘的制作數(shù)據(jù)參考_第2頁
電子時鐘的制作數(shù)據(jù)參考_第3頁
電子時鐘的制作數(shù)據(jù)參考_第4頁
電子時鐘的制作數(shù)據(jù)參考_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、論文摘要近年來隨著計算機在社會各領域的滲透,單片機的應用正在不斷地走向深入,同時帶動傳統(tǒng)時間顯示和時間控制日新月異更新。在實時顯示和自動控制的單片機應用系統(tǒng)中,單片機往往是作為一個核心部件來使用,僅單片機方面的知識是不夠的,還應根據(jù)具體硬件結構,以及針對具體應用對象特點的軟件結合,以作完善。本篇論文討論是倒計時器的設計與制作,以單片機at89s51核心搭建硬件電路,采用8279可編程鍵盤/顯示器接口芯片來進行鍵盤和led顯示的控制,時鐘芯片ds1302提供精準的時序,采用八位led數(shù)碼管動態(tài)顯示時間,同時可通過鍵盤來進行時間的設置?!娟P鍵字】單片機、at89s51、8279、ds1302、倒計

2、時器、led數(shù)碼管顯示器。目錄:摘要 1前言 1 第 1 章 方案論證 21.1 開發(fā)意義 21.2 功能說明 2第 2 章 硬件電路 22.1 單片機概述 22.2 at89s51 芯片概述 32.3 led 數(shù)碼管顯示器概述 32.3.1. led 數(shù)碼顯示器的結構與顯示段碼 32.3.2. led 數(shù)碼顯示器的接口方法與電路 42.4 8279芯片介紹 42.5 ds1302芯片介紹 62.6 電路系統(tǒng)設計8第 3 章 軟件設計3.1 整體設計93.2鍵盤流程103.3 ds1302時鐘顯示程序10結束語 15參考文獻16前 言在日常生活和生產(chǎn)的各領域中,時間具有非常重要的作用,沒有時間

3、我們無法進行正常的生活、生產(chǎn)和學習,因此時間的顯示就成為生活的必需品。傳統(tǒng)的計時是采用老式的機械鐘表,由于機械故障、物理損耗以及其它自然原因,老式鐘表走時不太精準,因此它無法滿足現(xiàn)在的時代要求。隨著數(shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應用,使得數(shù)字鐘的精度,遠遠超過老式鐘表, 鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便,而且大大地擴展了鐘表原先的報時功能,諸如定時自動報警、按時自動打鈴、時間程序自動控制、定時廣播、自動起閉路燈、定時開關烘箱、通斷動力設備、甚至各種定時電氣的自動啟用等,所有這些,都是以時間顯示數(shù)字化為基礎的。由于計算機技術的發(fā)展,單片機為自動控制提供了新的方法,從簡單到復雜

4、,從空中、地面到地下,凡是能想象到的地方幾乎都使用到了單片機。單片機的應用有力于產(chǎn)品的小型化、多功能化和智能化,有助于提高勞動效率,減少勞動強度,提高產(chǎn)品質(zhì)量,改善勞動環(huán)境,減少能源和材料消耗,保證安全等。但是,單片機應用的意義絕不僅限于它的廣闊范圍以及所帶來的經(jīng)濟效益上,更重要的意義還在于:單片機的應用正從根本上改變著傳統(tǒng)的控制系統(tǒng)設計思想和設計方法。從前必須有模擬電路或數(shù)字電路實現(xiàn)的大部分功能,現(xiàn)在已能使用單片機通過軟件(編程序)方法實現(xiàn)了。這種以軟件取代硬件并提高系統(tǒng)性能的控制系統(tǒng)“軟化”技術,稱之為微控制技術。微控制技術是一種全新的概念,是對傳統(tǒng)控制技術的一次革命。隨著單片機應用的推廣

5、普及,微控制技術必將不斷發(fā)展、日益完善和更加充實。 第一章 方案論證 1.1 開發(fā)意義本課題開發(fā)的意義在于它既節(jié)省了硬件成本,又能實現(xiàn)多功能。 既可做倒計時秒表,又可進行定時,還可以通過擴展完成其他功能,而且功能的相互轉(zhuǎn)換也十分簡單。對于廠商,有很大的挖掘潛在價值的空間;對于消費者也有很大的吸引力。 1.2 背景介紹在我們的日常生活和工作中,有許多的領域需要進行時間的倒計,比如,在2008年北京奧運會即將來臨之際,許多公共場合都有倒計時牌,以此來提醒人們距離開幕還有多少天。每天我們的交通都要依靠交通燈來自動控制指揮,紅綠燈采用倒計時的方法來顯示剩余時間,這樣對行人來說既方便又安全。在一些家用電

6、器中都需要有定時的功能,比如洗衣機的定時脫水,電視機的定時開關機,微波爐的定時烘烤食物等,同時工業(yè)生產(chǎn)中的熔爐煅燒等都要進行精確的時間設定,科學實驗時也要有時間定時過程,如果只是進行單純的計時,使用者可能因為某些原因忘記。若是用倒計時的方式進行計時顯示再配以到時報警,這樣有利于提高效率。因此倒計時器的設計與研究具有非常重要的意義。1.3 功能說明:(1)本電路采用八位led數(shù)碼管動態(tài)顯示時間,天數(shù)用二位,時分秒分別用兩位顯示,其中天數(shù)用倒計時的方式顯示,時、分、秒采用正常的記時方式。(2)利用六個按鍵來進行時間的設置,分別有左向移動鍵lm、右向移動鍵rm,數(shù)字加一鍵,數(shù)字減一鍵,開關鍵on/o

7、ff,復位鍵。(3)當?shù)褂嫊r時間到可輸出一個信號用于報警。第二章 硬件電路2.1 單片機的概述簡單的說,一塊單片機芯片就是一臺超小型化的計算機,即將中央處理器cpu(central processing unit)。隨機存儲器ram (random access memory)。只讀存儲器rom (read only memory)。 中斷系統(tǒng)、定時器計數(shù)器以及各種 i/o (input/output)接口電路(如并行i/o,串行i/o,a/d接口)等燒刻在一塊硅片上,構成一臺微縮短完整的計算機。因此叫做單片機。單片機是一個計算機系統(tǒng),自動化和智能性是其最主要的特點,加上它有體積小、重量輕、價

8、格便宜、速度快、使用方便等諸多優(yōu)點,它出現(xiàn)后,在工農(nóng)業(yè)生產(chǎn)上大幅度地提高了生產(chǎn)效率和產(chǎn)品質(zhì)量。另外,在彩電、冰箱、空調(diào)、vcd、遙控器、游戲機等日常家用電器上無處不見單片機的影子,它大大地提高了這些產(chǎn)品的智能性、實用性和可靠性。單片機早已深深地融入到我們每個人的生活中。2.2 at89s51 的芯片概述 at89s51 是一個低功耗,高性能 cmos 8 位單片機,器件采用atmel 公司的高密度、非易失性存儲技術制造,兼容標準mcs-51指令系統(tǒng)及 80c51 引腳結構,芯片內(nèi)集成了通用8 位中央處理器和 isp flash存儲單元,功能強大的微型計算機的at89s51可為許多嵌入式控制應用

9、系統(tǒng)提供高性價比的解決方案at89s51芯片具有以下特性:Ø 指令集和芯片引腳與intel公司的8051兼容;Ø 4kb片內(nèi)在系統(tǒng)可編程flash程序存儲器;Ø 時鐘頻率為033mhz;Ø 128字節(jié)片內(nèi)隨機讀寫存儲器(ram);Ø 32個可編程輸入/輸出引腳;Ø 2個16位定時/計數(shù)器;Ø 6個中斷源,2級優(yōu)先級;Ø 全雙工串行通信接口;Ø 監(jiān)視定時器;Ø 2個數(shù)據(jù)指針。其工作電壓在4.5v。at89s51比其它8位單片機的功能要強大很多,而價格又沒有太大的提高,因此選用at89s51 單片機

10、來作為本系統(tǒng)的核心。2.3 led 數(shù)碼管顯示器概述2.3.1. led 數(shù)碼顯示器的結構與顯示段碼 (1)led 數(shù)碼顯示器的結構 led數(shù)碼顯示器是一種有l(wèi)ed 發(fā)光二極管組合顯示字符的顯示器件。它使用了8個led 發(fā)光二極管,其中7個用于顯示字符,一個用于顯示小數(shù)點,故通常稱之為7 段發(fā)光二極管數(shù)碼器。(2)led 數(shù)碼顯示器有兩種連接方法如下。 共陽極接法。把發(fā)光二極管的陽極連在一起構成公共陽極,使用時公共陽極接+5v,每個發(fā)光二極管的陰極通過電阻與輸入端相連。 共陰極接法。把發(fā)光二極管的陰極連在一起構成公共陰極,使用時公共陰極接地。每個發(fā)光二極管的陽極通過電阻與輸入端相連。 (3)l

11、ed 數(shù)碼顯示器的顯示段碼。 為了顯示字符,要為led 顯示器段碼(或稱字形代碼),組成一個8 字形字符的7 段,再加上 1個小數(shù)點位,共計8 段,因此提供給led 顯示器的顯示段碼為 1個字節(jié)。各段碼位的對應關系如下表所示. 十六進制數(shù)及空白字符與p 的顯示段碼. 段碼位 d7 d6 d5 d4 d3 d2 d1 d0 顯示段 pd g f e d e b a字型 共陽極段 共陰極段 字型 共陽極段 碼 碼 碼 0 c0h 3fh 9 90h 1 f9h 06h a 88h 2 a4h 5bm b 83h 3 b0h 4fh c c6h 4 99h 66h d a1h 5 92h 6dh e

12、 86h 6 82h 7dh f 84h 7 f8h 07h 空白 ffh 8 80h 7fh p 8ch 2.3.2. led 數(shù)碼顯示器的接口方法與電路 led靜態(tài)顯示方式led工作在靜態(tài)方式下,共陰極接地或共陽極接+5v;每一位的段選線(ag、dp)與一個8位并行i/o口相連,顯示器的每一位可獨立顯示,只要在該位的段選線上保持段選碼電平,該位就能保持相應的顯示字符。led動態(tài)顯示方式led動態(tài)顯示是將所有位的段選線并接在一個i/o口上,共陰極端或供陽極端分別由相應的i/o口線控制。由于每一位的段選線都接在一個i/o口上,所以每送一個段選碼,8位就顯示同一個字符,這種顯示器是不能用的。解決

13、此問題的方法是利用人的視覺暫留,從段選線i/o口上按位次分別送顯示字符的段選碼,在位選控制口也按相應的次序分別選通相應的顯示位(共陰極送低電平,共陽極送高電平),選通位就顯示相應字符,并保持幾毫秒的延時,未選通位不顯示字符(保持熄滅)這樣,對各位顯示就是一個循環(huán)過程,這就動態(tài)顯示。由于靜態(tài)顯示占用的口線和顯示器的個數(shù)成正比,而本設計中由8位led顯示器,故采用動態(tài)顯示方式。2.4 8279 芯片介紹  intel8279是一種可編程鍵盤/顯示器接口芯片,它含有鍵盤輸入和顯示器輸出兩種功能。鍵盤輸入時,它提供自動掃描,能與鍵盤或傳感器組成的矩陣相連,接收輸入信息。它能自動消除開關抖動并

14、能對多鍵同時按下提供保護。顯示輸出時,它有一個16×8位顯示ram,其內(nèi)容通過自動掃描,可由8或16位led數(shù)碼管顯示。8279管腳、引線及功能說明8279為40列引腳封裝,如圖7.9.1所示。詳細說明如下: d0d7(數(shù)據(jù)總線):雙向、三態(tài)總線。用于和系統(tǒng)數(shù)據(jù)總線相連,在cpu和8279之間傳遞命令或數(shù)據(jù)。clk(系統(tǒng)時鐘):輸入線。用于8279內(nèi)部定時,以產(chǎn)生其工作所需時序。reset(復位):輸入線,高電平有效。當復位信號reset=1時,8279被復位。 (片選):輸入線,低電平有效。當 =0時,8279被選中,允許cpu對其進行讀、寫操作,否則被禁止。a0(緩沖器地址):輸

15、入線。當a0=1時,若cpu進行寫操作,則寫入字節(jié)是命令字。若進行讀操作,則從8279讀出的字節(jié)是狀態(tài)字。當a0=0時,寫入字節(jié)或讀出字節(jié)均為數(shù)據(jù)。rd、wr(讀、寫信號):輸入線,低電平有效。這兩個來自cpu的控制信號,控制8279的讀寫操作。irq(中斷請求):輸出線,高電平有效。在鍵盤工作方式中,當fifo/傳感器ram中存有數(shù)據(jù)時,irq為高電平,向cpu提出中斷申請。cpu每次從ram中讀出一個字節(jié)數(shù)據(jù)時,irq就變成低電平。如果ram中還有未讀完的數(shù)據(jù),irq將再次變?yōu)楦唠娖?,再次提出中斷申請求。在傳感器工作方式中,每當檢測到傳感器狀態(tài)變化時,irq就出現(xiàn)高電平。sl0sl3(掃描

16、線):輸出線。這四條輸出線用來掃描鍵盤和顯示器。它們可以編程設定為編碼輸出(16中取1)或譯碼輸出(4中取1)。rl0rl7(回復線):輸入線。它們是鍵盤矩陣或傳感器矩陣的列信號輸入線。shift(移位信號):輸入線,高電平有效。該輸入信號是8279鍵盤數(shù)據(jù)的次高位d6,通常用來補充鍵盤開關的功能,可以用作鍵盤上下?lián)豕δ苕I。在傳感器方式和選通方式中,shift無效。cntl/stb(控制/選通):輸入線,高電平有效。    在鍵盤方式時,該輸入信號是鍵盤數(shù)據(jù)的最高位d7,通常用來擴充鍵開關的控制功能,作為控制功能鍵用。在傳感器方式下,cntl信號無效。在

17、選通輸入方式下,該信號的上升沿可將來自rl0rl7的數(shù)據(jù)存放入fifo ram中。outa0outa3 (a組顯示信號):輸出線。outb0outb3 (b組顯示信號):輸出線。這兩組引線均是顯示信息輸出線,它們與多路數(shù)字顯示的掃描線sl0sl3同步。兩組可以獨立使用,也可以合并使用。(消隱顯示):輸出線,低電平有效。該輸出信號在數(shù)字切換顯示或使用顯示消隱命令時,將顯示消隱。8279工作方式1、鍵盤工作方式由兩種雙鍵互鎖和n鍵依次讀出。(1)鍵盤掃描方式,雙鍵互鎖這種方式中由三種可能的情況:一是只有一個鍵按下,則該鍵值連同cntl及shift的狀態(tài)一起送到fifo/傳感器ram中。如果fifo

18、/傳感器ram為空,irq1;如果fifo/傳感器ram滿,便置錯誤標志,鍵值不會經(jīng)入fifo/傳感器ram中。二是由鍵按下,后又有其它鍵按下但先釋放,前者有效,后者無效,并把有效鍵的值送入到fifo/傳感器ram中。三是在防鍵抖動誤動作周期內(nèi),有雙鍵同時按下,后釋放的有效。(2)鍵盤掃描方式,n鍵互鎖在這種方式下,有多鍵同時按下,則按照掃描時遇到閉合鍵的先后次序?qū)㈡I值存入fifo/傳感器ram中,然后依次讀出。2、顯示器的工作方式cpu將顯示數(shù)碼寫入顯示ram中時,有從左端寫入和從右端寫入兩種方式。顯示時,可以分a、b兩組獨立方式,也可以兩組同時顯示。3、內(nèi)部譯碼和外部譯碼方式在鍵盤、顯示器

19、工作方式中,sl0sl3為鍵盤的列掃描和動態(tài)顯示器的位選線。當選擇內(nèi)部譯碼方式時,sl0sl3每一時刻只能有一位為低電平輸出,此方式只能外接4個led顯示器和4*8鍵盤。當選擇外部譯碼方式時,sl0sl3輸出為計數(shù)分頻方式,此方式下可以外界16個led顯示器和8*8鍵盤。8279的編程方法:8279的編程可分為初始化、向顯示ram中寫入數(shù)據(jù)和讀鍵盤數(shù)據(jù)三部分。在實際應用中,通常初始化編程在主程序中完成;顯示部分一般作為子程序;而鍵盤讀入部分作為中斷服務程序來編寫。初始化編程是向8279寫入工作方式命令字,確定其工作方式及相關操作功能。以下介紹本設計中對8279的編程(1)鍵盤/顯示器方式設置命

20、令字d7 d6 d5 d4 d3 d2 d1 d0=00010010 ;8個led顯示器,從右端輸入,編碼掃描鍵盤,雙鍵互鎖(2)時鐘編程命令d7 d6 d5 d4 d3 d2 d1 d0=00110100 ;外部時鐘為2mhz,分頻系數(shù)=2mhz/100khz=20(3)讀fifo/傳感器ram命令d7 d6 d5 d4 d3 d2 d1 d0=01000000;設置fifo/傳感器ram地址讀后地址保持不變(4)讀顯示ram命令d7 d6 d5 d4 d3 d2 d1 d0=0111*;d3 d2 d1 d0為顯示ram的存儲單元地址,每次讀出顯示ram后地址自動加一,指向下一單元。(5)

21、寫顯示ram命令d7 d6 d5 d4 d3 d2 d1 d0=1001*;d3 d2 d1 d0為顯示ram的存儲單元地址,每次向顯示ram寫入數(shù)據(jù)后,地址自動加一,指向下一單元地址。(6)清除命令d7 d6 d5 d4 d3 d2 d1 d0=11011100;清除顯示ram和fifo/傳感器ram(7)中斷結束/出錯方式設置命令d7 d6 d5 d4 d3 d2 d1 d0=11110000;此命令使irq變低電平,而結束中斷,并允許對fifio/傳感器ram的再次寫入。2.5 ds1302芯片的介紹:ds1302是dallas公司推出的涓流充電時鐘芯片,內(nèi)含有一個實時時鐘/日歷和31b

22、靜態(tài)ram,通過簡單的串行接口與單片機進行通信。實時時鐘/日歷電路提供秒、分、時、日、星期、月和年的信息,每月的天數(shù)和閏年的天數(shù)可自動調(diào)整,時鐘操作可通過am/pm指示決定采用24或12格式。ds1302與單片機之間能簡單地采用同步串行的方式進行通信,僅需用到3根口線:rst復位、i/o數(shù)據(jù)線和sclk時鐘線,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或ram數(shù)據(jù)。采用普通32.768khz晶振。工作電壓為2.5v5.5v。 2.5.1 引腳功能及結構 圖1示出ds1302的引腳排列,其中vcc1為后備電源,vcc2為主電源。在主電源關閉的情況下,也能保持時鐘的連續(xù)運行。ds1302由vcc1

23、或vcc2兩者中的較大者供電。當vcc2大于vcc10.2v時,vcc2給ds1302供電。當vcc2小于vcc1時,ds1302由vcc1供電。x1和x2是振蕩源,外接32.768khz晶振。rst是復位/片選線,通過把rst輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。rst輸入有兩種功能:首先,rst接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,rst提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當rst為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對ds1302進行操作。如果在傳送過程中rst置為低電平,則會終止此次數(shù)據(jù)傳送,i/o引腳變?yōu)楦咦钁B(tài)。上電運行時,在vcc2.5v之前,rst必須保持低電

24、平。只有在sclk為低電平時,才能將rst置為高電平。i/o為串行數(shù)據(jù)輸入輸出端(雙向),后面有詳細說明。sclk始終是輸入端。 2.5.2 ds1302的控制字節(jié) ds1302 的控制字如圖2所示??刂谱止?jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入ds1302中,位6如果為0,則表示存取日歷時鐘數(shù)據(jù),為1表示存取ram數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進行寫操作,為1表示進行讀操作,控制字節(jié)總是從最低位開始輸出。 1ram cka4a3a2a1a0ram k2.5.3 數(shù)據(jù)輸入輸出(i/o) 在控制指令字輸入后的下一個sclk時鐘的上升沿時

25、,數(shù)據(jù)被寫入ds1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個sclk脈沖的下降沿讀出ds1302的數(shù)據(jù),讀出數(shù)據(jù)時從低位0位到高位7。 2.5.4 ds1302的寄存器 ds1302有12個寄存器,其中有7個寄存器與日歷、時鐘相關,存放的數(shù)據(jù)位為bcd碼形式,其日歷、時間寄存器及其控制字見表1。此外,ds1302 還有年份寄存器、控制寄存器、充電寄存器、時鐘突發(fā)寄存器及與ram相關的寄存器等。時鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內(nèi)容。 ds1302與ram相關的寄存器分為兩類:一類是單個ram單元,共31個,每個單元組態(tài)為一個8位的字節(jié),其命令

26、控制字為c0hfdh,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的ram寄存器,此方式下可一次性讀寫所有的ram的31個字節(jié),命令控制字為feh(寫)、ffh(讀)。2.6 系統(tǒng)硬件電路設計圖1所示為電路的總體設計思路,圖2為單片機的最小系統(tǒng),圖3為ds1302與單片機的接口電路,圖4是8279與片的接口以及8279與鍵盤顯示器的接口電路。 圖1 系統(tǒng)結構框圖圖2 單片機最小系統(tǒng)圖 3 ds1302 與單片機的連接電路圖4 8279鍵盤顯示器接口電路8279芯片上的端口d0d7與單片機的p0端口相連,用于cpu和8279之間控制,狀態(tài)及數(shù)據(jù)信息的傳輸。8279與89s51的讀寫控制端口

27、wr,rd相連接,使單片機能夠?qū)?279進行讀寫操作。8279的片選端由p2.7控制,中斷請求輸出irq由外部中斷1int1中斷。芯片74ls373是一種帶輸出三態(tài)門的8d鎖存器,單片機的地址鎖存有效信號ale與74ls373的數(shù)據(jù)鎖存數(shù)據(jù)端g相連,g為“1”時,鎖存器輸出端同輸入端;當g由“1”變“0”時,數(shù)據(jù)輸入鎖存器中。74ls373的輸出允許端oe接地,表示輸出三態(tài)門一直打開。8279的a0端接cpu地址總線的a0即74ls373的輸出端r0,用于區(qū)別信息特征:為1時,表示寫入的命令或讀出8279的狀態(tài);為0時,表示傳送的時數(shù)據(jù)。行(或列)掃描輸出線sl0sl2接3線-8線譯碼器74l

28、s138譯出8條顯示器的位掃描線,經(jīng)過74ls240驅(qū)動led顯示器工作,outa0outa3和outb0outb3顯示數(shù)據(jù)的段碼輸出線經(jīng)過74ls240輸出顯示數(shù)據(jù),并在每個輸入端接個1k的電阻以限制輸入電流,防止數(shù)碼管燒壞。rl7rl2六條回復輸入線作為鍵盤的行輸入線,從74ls138的輸出線y1引出鍵盤的列輸入線,這樣就構成了六個按鍵,從上到下依次為:開關鍵on/off,用于顯示器的開關控制;復位鍵r,用于系統(tǒng)出現(xiàn)突發(fā)情況時,恢復系統(tǒng)狀態(tài)到初始狀態(tài);左向移動鍵lm、右向移動鍵rm,當進行時間設置時,可使數(shù)字顯示位從左向右依次設置,也可從右向左依次設置;數(shù)字加一鍵,數(shù)字減一鍵,設置時間時進

29、行加一或減一操作。 第三章 軟件設計3.1 整體設計首先在主程序中對系統(tǒng)環(huán)境,包括設置串口、端口以及芯片ds1302 和8279進行初始化,主程序流程圖如下圖所示:3.2鍵盤中斷程序流,由8279對鍵盤進行編程3.3顯示程序時分秒采用二十四小時制正計時的方式,初始為00:00:00,開始計時,當計時到23:59:59時,觸發(fā)天數(shù)減一,如此循環(huán)進行,直到天數(shù)減為0,倒計時結束。ds1302時鐘顯示子程序t_rst bit p1.3 ;實時時鐘復位線引腳t_clk bit p1.4 ;實時時鐘時鐘線引腳t_io bit p1.5 ;實時時

30、鐘數(shù)據(jù)線引腳second equ 30hminute equ 31hhour equ 32h        org 0000h        ljmp start        org 0060hstart:  ;clr     t_rst 

31、;       ;clr     t_clk        mov sp,#60h                 ;修改堆棧        mov second,#00h

32、0;            ;初始時間設為12:00:00        mov minute,#00h        mov hour,#12h         lcall setds1302   

33、     lcall get1302        lcall displaymain: mov r3,#25        mov tmod,#01h        mov th0,#70h  置定時器初值(定時40ms)    

34、;    mov tl0,#00h        setb tr0   啟動定時器0lp1:    jbc tf0,lp2   查詢計數(shù)溢出        sjmp lp1   未到40 ms繼續(xù)計數(shù)lp2:    mov th0

35、,#0b8h  重新置定時器初值        mov tl0,#00h        lcall display                 ;顯示        djnz 

36、r3,lp1                 ;未到1 s繼續(xù)循環(huán)        lcall get1302                 ;每過1s從ds1302讀取一次時間  

37、;      mov     r3,#25        sjmp lp1;字符顯示碼表dig_code:        db 0c0h,0f9h,0a4h,0b0h,099h,092h,082h,0f8h,080h,090;數(shù)碼顯示子程序display:        mov&

38、#160;    dptr,#dig_code;顯示秒        mov     a,second        anl     a,#0fh        movc    a,a+dptr    

39、0;   mov     p2,a        mov     p1,#11011111b        lcall   dis_delay        mov     a,second   &#

40、160;    swap    a        anl     a,#07h        movc    a,a+dptr        mov     p2,a    

41、60;   mov     p1,#11101111b        lcall   dis_delay;顯示分        mov     a,minute        anl     a,#0fh  &

42、#160;     movc    a,a+dptr        mov     p2,a        mov     p1,#11110111b        lcall   dis_delay 

43、0;      mov     a,minute        swap    a        anl     a,#07h        movc    a,a+dptr  &

44、#160;     mov     p2,a        mov     p1,#11111011b        lcall   dis_delay;顯示小時        mov     a,hour&#

45、160;       anl     a,#0fh        movc    a,a+dptr        mov     p2,a        mov     p1,#1

46、1111101b        lcall   dis_delay        mov     a,hour        swap    a        anl     a,#03h&

47、#160;       movc    a,a+dptr        mov     p2,a        mov     p1,#11111110b        lcall   dis_del

48、ay ret顯示延時5ms子程序dis_delay:        push psw        mov r7,#10d1:     mov r6,#248d2:     djnz r6,$        djnz r7,d1  

49、0;     pop psw        ret;設置ds1302初始時間,并啟動計時setds1302:        clr     t_rst        nop        clr   

50、  t_clk        nop        setb    t_rst        nop        mov     b,#8eh        

51、  ;寫控制命令字        lcall   inputbyte               mov     b,#00h          ;寫保護關閉       

52、; lcall   inputbyte        setb    t_clk        nop        clr     t_rst        mov     r0,#sec

53、ond      ;內(nèi)存中的時間首地址        mov     r1,#80h         ;ds1302中的時間首地址        mov     r7,#7      

54、60;    ;字節(jié)數(shù)setloop:        clr     t_rst        nop        clr     t_clk        nop   

55、0;    setb    t_rst        nop        mov     b,r1            ;寫命令字        lcall 

56、0; inputbyte        mov     a,r0           ;設置時間        mov     b,a        lcall   inputbyte

57、60;              inc     r0        inc     r1        inc     r1        setb

58、    t_clk        nop        clr     t_rst        nop        djnz    r7,setloop     &#

59、160;  clr     t_rst        nop        clr     t_clk        nop        setb    t_rst   

60、;     nop        mov     b,#8eh        lcall   inputbyte        mov     b,#80h        

61、;  ;開寫保護        lcall   inputbyte        setb    t_clk        nop        clr     t_rst    

62、    nop        ret;-;從ds1302讀取時間get1302:        mov     r0,#second             mov     r1,#81h    &#

63、160;   ;ds1302中讀時間的首地址        mov     r7,#7getloop:        clr     t_rst        nop        clr  

64、0;  t_clk        nop        setb    t_rst        nop        mov     b,r1        lcall

65、   inputbyte       ;寫命令字        lcall   outputbyte      ;讀時間        mov     r0,a         &

66、#160; ;將從ds1302中讀取的時間從內(nèi)存中保存        inc     r0              ;修改地址指針        inc     r1       

67、; inc     r1        setb    t_clk        nop        clr     t_rst        nop        djnz    r7,getloop        ret;-;向ds1302寫一個字節(jié)inputbyte:    

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論