數字電子時鐘畢業設計說明_第1頁
數字電子時鐘畢業設計說明_第2頁
數字電子時鐘畢業設計說明_第3頁
數字電子時鐘畢業設計說明_第4頁
數字電子時鐘畢業設計說明_第5頁
已閱讀5頁,還剩31頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、 .PAGE31 / NUMPAGES36目錄TOC o 1-3 t h z u HYPERLINK l _Toc26551 畢業設計任務書 PAGEREF _Toc26551 I HYPERLINK l _Toc25652 摘 要 PAGEREF _Toc25652 II HYPERLINK l _Toc24110 一、概 述 PAGEREF _Toc24110 1 HYPERLINK l _Toc21729 1.1數字電子時鐘研究的背景和意義 PAGEREF _Toc21729 1 HYPERLINK l _Toc27160 1.2數字電子時鐘系統實用功能分析 PAGEREF _Toc27

2、160 2 HYPERLINK l _Toc2291 1.3文章結構分析 PAGEREF _Toc2291 2 HYPERLINK l _Toc29071 二、系統總體分析 PAGEREF _Toc29071 2 HYPERLINK l _Toc1567 2.2顯示屏模塊的選擇 PAGEREF _Toc1567 3 HYPERLINK l _Toc17267 2.3數碼管顯示方案 PAGEREF _Toc17267 3 HYPERLINK l _Toc10203 2.4驅動電路的選擇 PAGEREF _Toc10203 4 HYPERLINK l _Toc15661 2.5數字電子時鐘工作原理

3、 PAGEREF _Toc15661 4 HYPERLINK l _Toc11914 2.6電路圖 PAGEREF _Toc11914 5 HYPERLINK l _Toc7081 三、硬件設計 PAGEREF _Toc7081 6 HYPERLINK l _Toc20763 3.1 AT89C51芯片的簡單論述 PAGEREF _Toc20763 6 HYPERLINK l _Toc14597 3.1.1管腳說明 PAGEREF _Toc14597 8 HYPERLINK l _Toc11383 3.2時鐘電路設計 PAGEREF _Toc11383 9 HYPERLINK l _Toc17

4、601 3.2.1引腳定義 PAGEREF _Toc17601 10 HYPERLINK l _Toc1901 3.3顯示電路設計 PAGEREF _Toc1901 11 HYPERLINK l _Toc12926 3.3.1LCD顯示基本原理 PAGEREF _Toc12926 11 HYPERLINK l _Toc22274 3.3.2引腳功能說明 PAGEREF _Toc22274 12 HYPERLINK l _Toc15233 3.4復位電路設計 PAGEREF _Toc15233 12 HYPERLINK l _Toc3667 3.5鬧鈴、背光電路設計 PAGEREF _Toc36

5、67 13 HYPERLINK l _Toc29086 四、軟件程序設計 PAGEREF _Toc29086 14 HYPERLINK l _Toc24167 4.1程序流程圖 PAGEREF _Toc24167 14 HYPERLINK l _Toc5691 4.2主程序設計 PAGEREF _Toc5691 16 HYPERLINK l _Toc28064 4.3子程序設計 PAGEREF _Toc28064 16 HYPERLINK l _Toc15998 4.3.1實時時鐘日歷子程序設計 PAGEREF _Toc15998 16 HYPERLINK l _Toc2992 4.3.2顯示

6、子程序設計 PAGEREF _Toc2992 16 HYPERLINK l _Toc21994 4.3.3鍵盤掃描子程序 PAGEREF _Toc21994 16 HYPERLINK l _Toc20027 4.3.4鬧鈴子程序設計 PAGEREF _Toc20027 17 HYPERLINK l _Toc23291 4.4系統程序設計 PAGEREF _Toc23291 17 HYPERLINK l _Toc9105 4.5調試仿真 PAGEREF _Toc9105 27 HYPERLINK l _Toc19838 五、設計總結 PAGEREF _Toc19838 28 HYPERLINK

7、l _Toc5152 致 PAGEREF _Toc5152 29 HYPERLINK l _Toc17583 參考文獻 PAGEREF _Toc17583 30工業職業技術學院畢 業 設 計 課題名稱 數字電子時鐘設計 姓 名 學 號 班 級 專 業 機電一體化 所 在 系 機電工程系 指導教師 完成日期 2013/11/26 畢業設計任務書TOC o 1-3 h u 設計題目: 數字電子時鐘設計設計要求:本設計主要為實現一款可正常顯示時鐘/日歷、定時鬧鈴、LCD背光調節,一鍵恢復的多功能電子時鐘。采用AT89C51芯片作為核心,LCD液晶顯示器,完成時鐘/日歷的基本功能。設計任務:1設計硬件

8、電路,畫出電路原理圖;2. 設計軟件,編制程序,畫出程序流程圖;3調試程序,寫出源程序代碼;4寫出詳細畢業設計說明書(10000字以上),要求字跡工整,原理敘述正確,會計算主要元器件的一些參數,并選擇元器件。設計進度要求:第一周:查閱資料并確定論文題目第二周:針對自己定的題目寫出初步的設計方案第三五周:根據自己的設計方案設計方案設計硬件和軟件第六七周:修改、完善設計,仿真,調試電路,整理論文第八周:畢業答辯指導教師(簽名):摘 要單片機自20世紀70年代問世以來,以其極高的性能價格比,受到人們的重視和關注, 應用很廣、發展很快。單片機體積小、重量輕、抗干擾能力強、環境要求不高、價格低廉、可靠性

9、高、靈活性好、開發較為容易。由于具有上述優點,在我國,單片機已廣泛地應用在工業自動化控制、自動檢測、智能儀器儀表、家用電器、電力電子、機電一體化設備等各個方面,而51單片機是各單片機中最為典型和最有代表性的一種。這次畢業設計通過對它的學習、應用,以AT89S51芯片為核心,輔以必要的電路,設計了一個簡易的電子時鐘,它由4.5V直流電源供電,通過數碼管能夠準確顯示時間,調整時間,從而到達學習、設計、開發軟、硬件的能力。電子時鐘主要是利用現代電子技術將時鐘電子化、數字化,擁有時鐘精確、體小、界面友好、可擴展能力強等優點,被廣泛應用于生活和工作當中。另外,在生活和工農業生產中也常常需要定時報警,這就

10、需要電子時鐘具有多功能性。本人對當前電子時鐘 開發手段進行了比較和分析,最終決定了采用單片機技術實現多功能電子時鐘。設計采用AT89C51芯片作為核心,1602 LCD液晶顯示器,使用DS1302實時時鐘日歷芯片完成時鐘/日歷的基本功能。這種實現方法的優點是電路簡單,新能可靠,實時性好,時間精度高,操作簡單編程容易。該電子時鐘可應用于一般的生活和工作中,也可通過改裝提高性能,增加新功能,從而給人們的生活和工作帶來更多的方便。關鍵詞 電子時鐘;AT89C51單片機;DS1302 時鐘日歷芯片;LCD液晶顯示器一、概 述1.1數字電子時鐘研究的背景和意義時間是人類生活必不可少的重要元素,入過沒有時

11、間的概念,社會將不會有所法杖和進步。從古代的水漏、十二天干地支,到后來的機械鐘表以與當今的石英鐘,都充分顯現出了時間的重要性,同時也代表著科技的進步。致力于計時器的研究和充分發揮時鐘的作用,竟有著重要的意義。20實際末,電子技術獲得了飛速的發展。再起推動下現代電子產品幾乎滲透到了社會的哥哥領域,有力的推動和提高的社會生產力的發展與信息化程度,同時也是現代電子產品性能進一步提升,產品的更新換代節奏譜也越來越快。時間對人們來說是那么的寶貴,工作的忙碌性和繁雜容易使人們忘記當前的時間。然而遇到重大事情的時候,一旦忘記時間,就會給自己或者是他人造成很大的麻煩。平時我們要求上班準時,約會或者召開會議必然

12、要提與時間、火車要準點到達,航班要準時起飛,工業生產中,很多環節都需要時間來確定工序替換時刻。所以說能隨時準確的指導時間并利用時間,是我們生活中必不可少的。想知道時間,手表當然是很好的選擇,但是在忙碌當中,我們還需要一個“助理”時不時的給我們體形式將,所以,計時器最好能夠用有一個定時系統,隨時提醒容易忘記時間的人。最早能夠定時、寶石的時鐘屬于機械式鐘表,但這種時鐘受到機械結構、動力合體技的限制,在功能性能以與在造價上都沒有辦法與電子時鐘相比。電子時鐘是采用電子電路實現對時、分、秒進行數字顯示的即使裝置,廣泛應用月個人家庭、車站、碼頭辦公室等公共場所,成為人們日常生活活動中不可少的必須品。由于數

13、字集成電路的發展和石英晶體振蕩器的廣泛使用,是的數字時鐘的精度遠遠查過老師鐘表,鐘表的數字化跟人們生產生活帶來了極大的方便,而且大大的擴展了鐘表原先的時鐘功能。諸如整點提示、定時報警、定時廣播、自動啟閉路燈,定時開關烘箱、同多動力設備、甚至各種定時電氣的自動啟動等,所有這些,都是以鐘表數字化為基礎的。因此研究數字鐘與擴大其應用,有著非常現實的意義。1.2數字電子時鐘系統實用功能分析電子時鐘主要是利用電子技術講時鐘電子化、數字化,擁有時間精確、體積小、界面友好、可擴展性強等優點,被廣泛應用于生活和工作當中。當今市場上的電子時鐘品類繁多,外形小巧別致。也有體型較大的,諸如公共場所的大型電子寶石器等

14、。電子時鐘首相是數字化了的時間顯示或報時,在此基礎上,人們可根據不同場合的要求,在詩中上加置其他功能,比如定時鬧鈴,萬年歷等功能。本設計電子時鐘主要功能為:具有顯示和手動校對功能,24小時制,年、月、日顯示和手動校正功能;具有鬧鈴功能;具有背光調節功能和一鍵恢復功能;1.3文章結構分析本設計在緒論里主要介紹數字時鐘研究的背景和意義、系統實用功能的分析、本設計的章節結構安排與使用的技術。 把系統總體設計作為第二部分,在這部分里介紹了各種元器件以與芯片的選擇;第三部分是硬件電路的設計;主要對AT89C51芯片的具體介紹,時鐘電路,復位電路,時間顯示電路、按鍵電路、供電電路、鬧鈴指示電路等幾部分,這

15、一部分是本設計的重點。第四部分是系統軟件設計,主要是用匯編語言對圖形漢字編程設計;第五部分是對全文的總結。第六部分是致,第七部分是參考文獻。二、系統總體分析2.1數字時鐘方案數字時鐘是本設計的最主要的部分。根據需要,可利用兩種方案實現。方案一:本方案采用Dallas公司的專用時鐘芯片DS12887A。該芯片部采用石英晶體振蕩器,其芯片精度不大于10ms/年,且具有完備的時鐘鬧鐘功能,因此,可直接對其以用于顯示或設置,使得軟件編程相對簡單。為保證時鐘在電網電壓不足或突然掉電等突發情況下仍能正常工作,芯片部包含鋰電池。當電網電壓不足或突然掉電時,系統自動轉換到部鋰電池供電系統。而且即使系統不上電,

16、程序不執行時,鋰電池也能保證芯片的正常運行,以備隨時提供正確的時間。方案二:本方案完全用軟件實現數字時鐘。原理為:在單片機部存儲器設三個字節分別存放時鐘的時、分、秒信息。利用定時器與軟件結合實現1秒定時中斷,每產生一次中斷,存儲器相應的秒值加1;若秒值達到60,則將其清零,并將相應的分字節值加1;若分值達到60,則清零分字節,并將時字節值加1;若時值達到24,則將十字節清零。該方案具有硬件電路簡單的特點。但由于每次執行程序時,定時器都要重新賦初值,所以該時鐘精度不高。而且,由于是軟件實現,當單片機不上電,程序不執行時,時鐘將不工作。基于硬件電路的考慮,本設計采用方案二完成數字時鐘的功能。2.2

17、顯示屏模塊方案LED顯示屏幕 能實時顯示高清晰度、色彩豐富的動態圖像;顯示與播放可與控制計算機顯示器上的容點點對應,LED顯示屏上的圖像色彩、縮放比例和顯示尺寸,還可通過計算機任意調整LED電子顯示屏是集微電子技術、計算機技術、信息處理于一體的大型顯示屏系統。它以其色彩鮮艷,動態圍廣,亮度高,壽命長,工作穩定可靠等優點,但未處理器和LED發光二極管之間還需要處理芯片。LCD顯示屏幕是利用光的偏振現象來顯示的,一般分為數字LCD和點陣LCD.前者用于顯示簡單的字符,后者能顯示復雜的圖像和自定義字符。具有輕薄短小、低耗電量、無輻射危險,平面直角顯示以與影象穩定不閃爍等優勢,可視面積大,畫面效果好,

18、分辨率高,抗干擾能力強等特點LCD顯示屏本身不發光可以靠反射投射光源發光的優點。非常適合嵌入式系統,移動設備使用。應用非常廣泛。基于設計需求選用LCD顯示屏。2.3數碼管顯示方案方案一:靜態顯示。所謂靜態顯示,就是當顯示器顯示某一字符時,相應的發光二極管恒定的導通或截止。該方式每一位都需要一個8 位輸出口控制。靜態顯示時較小的電流能獲得較高的亮度,且字符不閃爍。但當所顯示的位數較多時,靜態顯示所需的I/O口太多,造成了資源的浪費。方案二:動態顯示。所謂動態顯示就是一位一位的輪流點亮各個位,對于顯示器的每一位來說,每隔一段時間點亮一次。利用人的視覺暫留功能可以看到整個顯示,但必須保證掃描速度足夠

19、快,字符才不閃爍。顯示器的亮度既與導通電流有關,也于點亮時間與間隔時間的比例有關。調整參數可以實現較高穩定度的顯示。基于本設計選取的是動態顯示。2.4驅動電路的選擇驅動電路的選擇采取并口輸入,占用大量I/O口資源。選取串口輸入,I/O口資源使用較少。所以我選用串口輸入。電路中行方向由AT89C51的p0口和p2口完成掃描,由于p0口沒有上拉電阻,因此接一個4.7k*8的排阻上拉。為提供負載能力,接16個2N5551的NPN三極管驅動。列方向則由416譯碼器74LS154完成掃描,它由89C51的P1.0P1.3控制。同樣,驅動部分則是16個2N5401的三極管完成的。2.5數字電子時鐘工作原理

20、數字電子鐘是一個將“ 時”,“分”,“秒”顯示于人的視覺器官的計時裝置。它的計時周期為24小時,顯示滿刻度為23時59分59秒,另外應有校時功能和 報時功能。因此,一個基本的數字鐘電路主要由譯碼顯示器、“時”,“分”,“秒”計數器、校時電路、報時電路和振蕩器組成。主電路系統由秒信號發生器、“時、分、秒”計數器、譯碼器與顯示器、校時電路、整點報時電路組成。秒信號產生器是整個系統的時基信號,它直接決定計時系統的精度,一般用石英晶體振蕩器加分頻器來實現。將標準秒信號送入“秒計數器”,“秒計數器”采用60進制計數器,每累計60秒發出一個“分脈沖”信號,該信號將作為“分計數器”的時鐘脈沖。“分計數器”也

21、采用60進制計數器,每累計60分鐘,發出一個“時脈沖”信號,該信號將被送到“時計數器”。“時計數器”采用24進制計時器,可實現對一天24小時的累計。譯碼顯示電路將“時”、“分”、“秒”計數器的輸出狀態用七段顯示譯碼器譯碼,通過七段顯示器顯示出來。整點報時電路時根據計時系統的輸出狀態產生一脈沖信號,然后去觸發一音頻發生器實現報時。校時電路時用來對“時”、“分”、“秒”顯示數字進行校對調整。2.6電路圖經以上分析,電路圖匯總如下:圖2-1整體電路圖三、硬件設計本設計采用以AT89C51單片機為核心芯片的電路來實現,主要由AT89C51芯片信號發生器、時間顯示電路、按鍵電路、供電電路、鬧鈴指示電路等

22、幾部分。參考以下框圖: 圖3-13.1 AT89C51芯片的簡單論述單片機是微型機的一個主要分支,他在結構上的最大特點是吧CPU、存儲器、定時器和多種輸入、輸出接口電路集成在一塊超大規模集成電路上芯片上。就其組成的功能而言,一塊單片機就是一臺計算機。單片機具有如下優點:1.集成度高、體積小、有很高的可靠性;2.控制功能強;3.低功耗、低電壓、便于生產便攜式產品;4.外部總線增加了I2C、SPI等串行總線方式,進一步縮小了體積,簡化了結構;5.單片機的系統擴展、系統配置較典型、規,容易構成各種規模的應用系統。AT89C51單片機是一款低功耗,低電壓,高性能CMOS8位單片機,片含4KB(可經過1

23、000次擦寫周期)的Flash可編程可反復擦寫的只讀存儲器(EPROM),器件采用CMOS工藝和ATMEI公司的高密度、非易失性存儲器(NURAM)技術制造,其輸出應繳和指令系統都與MCS-51兼容。片的FLASH存儲器允許在系統可改編程序活用常規的非易失性存儲器來編程。英雌,AT89C51是一種功能強大,靈活性高且價格合理的單片機,可放比偶按在應用在各個控制領域。AT89C51具有以下主要性能:1. 4KB可編程序FLASH存儲器;2. 全靜態工作:024Hz;3. 128X8字節部RAM;4. 32個外部雙向輸入/輸出(I/O)口;5. 6個中斷優先級;2個16為可編程定時計數器;6. 可

24、編程床行通信;7. 片時鐘振蕩器。圖3-2 AT89C51 引腳圖此外,AT89C51是采用靜態邏輯來設計的,其工作頻率可下降到0Hz,并提供兩種可用軟件來選擇的省電方式空閑方式(Idle Mode)和掉電方式(Power Down Mode)。在空閑方式中,CPU停止工作,而RAM、定時器/計數器、串行口和中斷系統都繼續工作。在掉電方式中,片振蕩器停止工作,由于始終被“凍結”,使一切功能都暫停,只保存片RAM中的容,直到下次硬件復位為止。 3.1.1管腳說明P0口:P0口為一個8位漏級開路雙向I/O口,也即地址/數據總線復用口。作為輸出口用時,能驅動8個TTL邏輯門電路。對端口寫“1”時,被

25、定義為高阻輸入。在訪問外部數據存儲器或程序存儲器時,這組口線分時轉換地址(低8位)和數據總線復用,在訪問期間激活部上拉電阻。在Flash編程時,P0口接收指令字節,而在程序校驗時,輸出指令字節,校驗時,要求外接上拉電阻。P1口:P1口是一個帶部上拉電阻的8位雙向I/O口,P1口的輸出緩沖級可驅動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1”,通過部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因為部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(IIL)。在Flash編程和程序校驗期間,P1接收低8位地址。部分端口還有第二功能,如表1所示: 端口引腳第二功能P1.5

26、 MOSI(用于ISP編程)P1.6 MISO(用于ISP編程)P1.7 SCK(用于ISP編程表1P2口:P2口是一個帶有部上拉電阻的8位雙向I/O口,P2口的輸出緩沖級可驅動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1”,通過部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因為部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(IIL)。在訪問外部程序存儲器或16位地址的外部數據存儲器(例如執行MOVXDPTR指令)時,P2口送出高8位地址數據。在訪問8位地址的外部數據寄存器(例如執行MOVXRi指令)時,P2口線上的容(也即特殊功能寄存器(SFR)區中P2寄存器

27、的容),在整個訪問期間不改變。在Flash編程或校驗時,P2亦接收高位地址和其它控制信號。P3口:P3口是一個帶有部上拉電阻的雙向8位I/O口,P3口的輸出緩沖級可驅動(吸收或輸出電流)4個TTL邏輯門電路。對P3口寫“1”時,它們被部的上拉電阻拉高并可作為輸入端口。作輸入口使用時,被外部信號拉低的P3口將用上拉電阻輸出電流(IIL)。P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能,如下表所示:P3口還接收一些用Flash閃速存儲器編程和程序校驗的控制信號。端口引腳第二功能P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.20INT(外中斷0)P3.3INT1(外中斷

28、1)P3.4T0(定時/計數器0)P3.5T1(定時/計數器1)P3.6WR(外部數據存儲器寫選通)P3.7RD(外部數據存儲器讀選通)表23.2時鐘電路設計系統時鐘應用了實時時鐘日歷芯片DS1302,其連接如圖,該硬件電路設計簡單,抗干擾能力強。 如圖下圖AT89C51單片機P1.7直接DS1302的RST端,上電后,AT89C51的P1.7腳自動輸出高電平,P1.6作為串行時鐘接口,P1.5作為始終數據的I/O。DS1302的晶振選用32768Hz,電容推薦值為6pF。因為振蕩頻率較低,也可以不接電容,對計時精度影響不大。圖2-3 時鐘電路DS1302時鐘芯片包括實時時鐘/日歷和31字節的

29、靜態RAM。它經過一個簡單的串行接口與微處理器通信。實時時鐘/日歷提供秒、分、時、日、周、月和年等信息。對于小于31天的月和月末的日期自動進行調整,還包括閏年校正的功能。時鐘的運行可以采用24時或帶AM/PM的12小時格式。工作電壓寬達2.55.5V。采用三線接口與CPU進行同步通信,并可采用突發方式一次傳送多個字節的時鐘信號或RAM數據。DS1302部有一個33x8的用于臨時性存放數據的RAM寄存器。DS1302共有12個寄存器,其中有7個寄存器與日歷、時鐘相關,存放的數據位為BCD碼形式。3.2.1引腳定義X1、X2:晶振接入管腳。晶振頻率32.768kHz。RST:復位引腳。高電平啟動輸

30、入/輸出,低電平結束輸入/輸出。I/O:數據輸入/輸出引腳。SCLK:串行時鐘輸入引腳。GND:接地引腳Vcc1:在單電源與電池供電的系統中提供低電源,并提供低功率的電磁備份.Vcc1在雙電池系統中提供主電源。在這種運行方式中,Vcc1里連接到后備電源,以便在沒有主電源的情況下能保存時間信息以與數據。DS1302由Vcc1或Vcc2中較打大者供電。當Vcc2(Vcc1+0.2V)時,Vcc2給DS1302供電;當Vcc2Vcc1時,DS1302由Vcc1供電。3.3顯示電路設計就時鐘而言,通常了采用LCD 顯示或者LED顯示。對于一般的短時LCD,需要專門的驅動電路,但是電路設計簡單,連接方便

31、,數字感應信號強,軟件編程簡單,節省I/O接口,如下圖:圖2-4 顯示電路3.3.1LCD顯示基本原理LCD顯示屏有點陣圖形式液晶由MN個顯示單元組成顯示屏有64行,每行有128列,每8列對應1字節的8位,即每行由16字節,共168=128個點組成,屏上6416個顯示單元與顯示RAM區1024字節相對應,每一字節的容和顯示屏上相應位置的亮暗對應。屏的第一行的亮暗由RAM區的000H00FH的16字節的容決定,當(000H)=FFH時,則屏幕的左上角顯示一條短亮線,長度為8個點;當(3FFH)=FFH時,則屏幕的右下角顯示一條短亮線;當(000H)=FFH,(001H)=00H,(002H)=0

32、0H,(00EH)=00H,(00FH)=00H時,則在屏幕的頂部顯示一條由8段亮線和8條暗線組成的虛線。這就是LCD顯示的基本原理。1602LCD分為帶背光和不帶背光兩種,基控制器大部分為HD44780,帶背光的比不帶背光的厚,是否帶背光在應用中并無差別1602LCD主要技術參數:顯示容量:162個字符芯片工作電壓:4.55.5V工作電流:2.0mA(5.0V)模塊最佳工作電壓:5.0V字符尺寸:2.954.35(WH)mm3.3.2引腳功能說明1602LCD采用標準的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如表所示:編號符號引腳說明編號符號引腳說明 1VSS電源地9D2數據2

33、VDD電源正極 10D3數據 3VL液晶顯示偏壓11 D4數據 4RS數據/命令選擇12D5數據5R/W讀/寫選擇13 D6數據6E使能信號 14D7數據 7D0數據 15BLA背光源正極8D1數據 16BLK背光源負極3.4復位電路設計根據功能需要,本時鐘需要設置一下功能鍵:校對選擇鍵(主鍵),加1操作鍵(+1),減1操作鍵(-1)。按照鍵盤與CPU的連接方式可分為獨立式鍵盤和矩陣式鍵盤,獨立式鍵盤是各個按鍵相互獨立,每個按鍵占用一個I/O口線,每根I/O口線上的按鍵不會影響其他I/O口上的按鍵工作狀態。獨立式鍵盤電路配置靈活,軟件結構簡單,但每個按鍵必須占用一根I/O口,在按鍵數量較多時,

34、I/O口浪費較大,且電路結構復雜。矩陣式鍵盤社和按鍵較多的時候使用。由于本設計的電子時鐘最多需要3分按鍵,若采用矩陣式鍵盤會有按鍵浪費,故采用多歷史鍵盤。鍵盤電路如下圖:對于置上拉電阻的I/O引腳來說,外界上拉電阻式沒有意義的。鍵盤是為了完成時鐘/日歷校正的顯示功能。由此電子時鐘要求具有鬧鈴功能,所以設計有鬧鈴電路,進行聲音鬧鈴。圖2-5 復位電路校對選擇鍵(主鍵)按下后進入校對狀態,+1鍵對時間日期進行加1和右移功能,-1鍵對時間日期進行減1和左移功能。3.5鬧鈴、背光電路設計鬧鈴可直接采用蜂鳴器鬧鈴,如當前時刻與鬧鈴時間一樣,單片機向蜂鳴器送出信號,蜂鳴器哦發生。采用蜂鳴器結構簡單,控制方

35、便,只是鈴聲單一。背光電路采用綠色的LED背光,即使在暗處不開燈也可以看清時間。電路參考下圖2-6鬧鈴、背光電路圖四、軟件程序設計4.1程序流程圖主程序開始設定定時器常數,開中斷顯示時間到1秒?T0中斷現場保護重裝定時器初值滿20次否?滿24小時否?滿60秒否?滿60分否?恢復現場時值加1時緩沖單元清零秒值加1分緩沖單元清零秒緩沖單元清零分值加1結束時鐘調整程序關閉顯示,省電狀態分鐘閃爍,調時狀態分值加1按鍵S2時間t1時值=24?按鍵S2時間t0.5按鍵S2時間t0.5時鐘閃爍,調時狀態分值=60?分值清零時值加1時值清零返回顯示S2是否按下4.2主程序設計第一次上電,系統向進行初始化,16

36、02 LCD液晶顯示為當前時間、年、月、日和星期。單片機開始調用鍵盤掃描程序、DS1302程序、1062程序、鬧鈴程序和背光程序并循環。 4.3子程序設計4.3.1實時時鐘日歷子程序設計該程序主要實現對DS1302寫保護,對年、月、日、時、分、秒等的寄器的讀寫操作。在在讀寫程序中都執行了關中斷指令,因為在串行通信時對時序的要求比較高,而且在此是用1602液晶顯示器,所以在通信過程中最好保證傳輸的連續性,不要允許中斷。 4.3.2顯示子程序設計單片機直接驅動1602液晶芯片,編程也簡單。單片機的串行輸入數據,由讀入讀出信號控制。 4.3.3鍵盤掃描子程序本設計要求簡單,按鍵采用獨立式按鍵接入。程

37、序對鍵盤的掃描方式有:隨機掃描、定時掃描和終端掃描。在隨機掃描方式中,CPU完成某種特定任務后,即執行鍵盤掃描程序,以確定鍵盤有無按鍵接入,然后根據按鍵功能轉去之星相應的操作。在之星鍵盤按鍵規定的功能中不理睬鍵盤的輸入。定時掃描方式與隨機掃描方式基本一樣,只是利用CPU的定時中斷,每個一定時間掃描有無按鍵信號輸入,鍵盤反應速度較快,在處理鍵盤功能過程中,可以通過鍵盤命令進行干預,如取消、暫停等操作。由于本設計中AT89C51單片機在系統的主要任務是接受DS1302和1602的數據并送出顯示,完成時鐘/日歷校對和日期/星期的控制。該單片機完全有能力完成以上工作,所以采用隨機掃描鍵盤方式,系統也能

38、正常運行。單片機掃描完鍵盤,得到鍵值,并根據鍵值轉入執行相應任務,以實現按鍵功能。入過沒有按鍵按下,擇程序將鍵盤值清零,返回主程序。4.3.4鬧鈴子程序設計鬧鈴子程序任務是不斷的用時鐘分和時通設定的鬧鈴分與鬧鈴時比較,只要滿足時鐘分和時等于鬧鈴分與時,響鈴就會啟動一分鐘。 4.4系統程序設計數字電子時鐘51單片機系統設計程序表5-1 P1口對應段碼與數值:顯示數字P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.016進制代碼dpgfedcba0001111113FH10000011006H2010110115BH3010011114FH40110011066H5011011016

39、DH6011111017DH70000011107H8011111117FH9011011116FH; ; 中斷入口程序; ;ORG 0000H;程序執行開始地址LJMP START;跳到標號START執行ORG 0003H;外中斷0中斷程序入口RETI;外中斷0中斷返回ORG 000BH;定時器T0中斷程序入口LJMP INTT0;跳至INTTO執行ORG 0013H;外中斷1中斷程序入口RETI ;外中斷1中斷返回ORG 001BH;定時器T1中斷程序入口LJMP INTT1;跳至INTT1執行ORG 0023H;串行中斷程序入口地址RETI;串行中斷程序返回; 主 程 序 ; START

40、: MOV R0,#70H ;清70H-7AH共11個存單元 MOV R7,#0BH ;clr P3.7; CLEARDISP: MOV R0,#00H ; INC R0 ; DJNZ R7,CLEARDISP ; MOV 20H,#00H ;清20H(標志用) MOV 7AH,#0AH ;放入熄滅符數據 MOV TMOD,#11H ;設T0、T1為16位定時器 MOV TL0,#0B0H ;50MS定時初值(T0計時用) MOV TH0,#3CH ;50MS定時初值 MOV TL1,#0B0H ;50MS定時初值(T1閃爍定時用) MOV TH1,#3CH ;50MS定時初值 SETB EA

41、 ;總中斷開放 SETB ET0 ;允許T0中斷 SETB TR0 ;開啟T0定時器 MOV R4,#14H ;1秒定時用初值(50MS20) START1: LCALL DISPLAY ;調用顯示子程序 JNB P3.7,SETMM1 ;P3.7口為0時轉時間調整程序 SJMP START1 ;P3.7口為1時跳回START1 SETMM1: LJMP SETMM ;轉到時間調整程序SETMM; 1秒計時程序;T0中斷服務程序 INTT0: PUSH ACC ;累加器入棧保護 PUSH PSW ;狀態字入棧保護 CLR ET0 ;關T0中斷允許 CLR TR0 ;關閉定時器T0 MOV A,

42、#0B7H ;中斷響應時間同步修正 ADD A,TL0 ;低8位初值修正 MOV TL0,A ;重裝初值(低8位修正值) MOV A,#3CH ;高8位初值修正 ADDC A,TH0 ; MOV TH0,A ;重裝初值(高8位修正值) SETB TR0 ;開啟定時器T0 DJNZ R4, OUTT0 ;20次中斷未到中斷退出 ADDSS: MOV R4,#14H ;20次中斷到(1秒)重賦初值 MOV R0,#71H ;指向秒計時單元(71H-72H) ACALL ADD1 ;調用加1程序(加1秒操作) MOV A,R3 ;秒數據放入A(R3為2位十進制數組合) CLR C ;清進位標志 CJ

43、NE A,#60H,ADDMM ; ADDMM: JC OUTT0 ;小于60秒時中斷退出 ACALL CLR0 ;大于或等于60秒時對秒計時單元清0 MOV R0,#77H ;指向分計時單元(76H-77H) ACALL ADD1 ;分計時單元加1分鐘 MOV A,R3 ;分數據放入A CLR C ;清進位標志 CJNE A,#60H,ADDHH ; ADDHH: JC OUTT0 ;小于60分時中斷退出 ACALL CLR0 ;大于或等于60分時分計時單元清0 MOV R0,#79H ;指向小時計時單(78H-79H) ACALL ADD1 ;小時計時單元加1小時 MOV A,R3 ;時數

44、據放入A CLR C ;清進位標志 CJNE A,#24H,HOUR ; HOUR: JC OUTT0 ;小于24小時中斷退出 ACALL CLR0 ;大于或等于24小時小時計時單元清0 OUTT0: MOV 72H,76H ;中斷退出時將分、時計時單元數據移 MOV 73H,77H ;入對應顯示單元 MOV 74H,78H ; MOV 75H,79H ; POP PSW ;恢復狀態字(出棧) POP ACC ;恢復累加器 SETB ET0 ;開放T0中斷 RETI ;中斷返回; 閃動調時 程 序 ;T1中斷服務程序,用作時間調整時調整單元閃爍指示INTT1: PUSH ACC ;中斷現場保護

45、 PUSH PSW ; MOV TL1, #0B0H ;裝定時器T1定時初值 MOV TH1, #3CH ; DJNZ R2,INTT1OUT ;0.3秒未到退出中斷(50MS中斷6次) MOV R2,#06H ;重裝0.3秒定時用初值 CPL 02H ;0.3秒定時到對閃爍標志取反 02H,FLASH1 ;02H位為1時顯示單元熄滅 MOV 72H,76H ;02H位為0時正常顯示 MOV 73H,77H ; MOV 74H,78H ; MOV 75H,79H ;INTT1OUT: POP PSW ;恢復現場 POP ACC ; RETI ;中斷退出FLASH1: 01H,FLASH2 ;0

46、1H位為1時,轉小時熄滅控制 MOV 72H,7AH ;01H位為0時,熄滅符數據放入分 MOV 73H,7AH ;顯示單元(72H-73H),將不顯示分數據 MOV 74H,78H ; MOV 75H,79H ; AJMP INTT1OUT ;轉中斷退出FLASH2: MOV 72H,76H ;01H位為1時,熄滅符數據放入小時 MOV 73H,77H ;顯示單元(74H-75H),小時數據將不顯示 MOV 74H,7AH ; MOV 75H,7AH ; AJMP INTT1OUT ;轉中斷退出; 加1子 程 序 ; ADD1: MOV A,R0 ;取當前計時單元數據到A DEC R0 ;指

47、向前一地址 SWAP A ;A中數據高四位與低四位交換 ORL A,R0 ;前一地址中數據放入A中低四位 ADD A,#01H ;A加1操作 DA A ;十進制調整 MOV R3,A ;移入R3寄存器 ANL A,#0FH ;高四位變0 MOV R0,A ;放回前一地址單元 MOV A,R3 ;取回R3中暫存數據 INC R0 ;指向當前地址單元 SWAP A ;A中數據高四位與低四位交換 ANL A,#0FH ;高四位變0 MOV R0,A ;數據放入當削地址單元中 RET ;子程序返回 ; 清零程序 ;對計時單元復零用 CLR0: CLR A ;清累加器 MOV R0,A ;清當前地址單元

48、 DEC R0 ;指向前一地址 MOV R0,A ;前一地址單元清0 RET ;子程序返回; 時鐘調整程序;當調時按鍵按下時進入此程序 SETMM: cLR ET0 ;關定時器T0中斷 CLR TR0 ;關閉定時器T0 LCALL DL1S ;調用1秒延時程序 P3.7,CLOSEDIS ;鍵按下時間小于1秒,關閉顯示(省電) MOV R2,#06H ;進入調時狀態,賦閃爍定時初值 SETB ET1 ;允許T1中斷 SETB TR1 ;開啟定時器T1 SET2: JNB P3.7,SET1 ;P3.7口為0(鍵未釋放),等待 SETB 00H ;鍵釋放,分調整閃爍標志置1 SET4: P3.7

49、,SET3 ;等待鍵按下 LCALL DL05S ;有鍵按下,延時0.5秒 JNB P3.7,SETHH ;按下時間大于0.5秒轉調小時狀態 MOV R0,#77H ;按下時間小于0.5秒加1分鐘操作 LCALL ADD1 ;調用加1子程序 MOV A,R3 ;取調整單元數據 CLR C ;清進位標志 CJNE A,#60H,HHH ;調整單元數據與60比較 HHH: JC SET4 ;調整單元數據小于60轉SET4循環 LCALL CLR0 ;調整單元數據大于或等于60時清0 CLR C ;清進位標志 AJMP SET4 ;跳轉到SET4循環 CLOSEDIS: SETB ET0 ;省電(L

50、ED不顯示)狀態。開T0中斷 SETB TR0 ;開啟T0定時器(開時鐘) CLOSE: P3.7,CLOSE ;無按鍵按下,等待。 LCALL DISPLAY ;有鍵按下,調顯示子程序延時削抖 P3.7,CLOSE ;是干擾返回CLOSE等待 WAITH: JNB P3.7,WAITH ;等待鍵釋放 LJMP START1 ;返回主程序(LED數據顯示亮) SETHH: CLR 00H ;分閃爍標志清除(進入調小時狀態) SETHH1: JNB P3.7,SET5 ;等待鍵釋放 SETB 01H ;小時調整標志置1 SET6: P3.7,SET7 ;等待按鍵按下 LCALL DL05S ;有

51、鍵按下延時0.5秒 JNB P3.7,SETOUT ;按下時間大于0.5秒退出時間調整 MOV R0,#79H ;按下時間小于0.5秒加1小時操作 LCALL ADD1 ;調加1子程序 MOV A,R3 ; CLR C ; CJNE A,#24H,HOUU ;計時單元數據與24比較 HOUU: JC SET6 ;小于24轉SET6循環 LCALL CLR0 ;大于或等于24時清0操作 AJMP SET6 ;跳轉到SET6循環 SETOUT: JNB P3.7,SETOUT1 ;調時退出程序。等待鍵釋放 LCALL DISPLAY ;延時削抖 JNB P3.7,SETOUT ;是抖動,返回SET

52、OUT再等待 CLR 01H ;清調小時標志 CLR 00H ;清調分標志 CLR 02H ;清閃爍標志 CLR TR1 ;關閉定時器T1 CLR ET1 ;關定時器T1中斷 SETB TR0 ;開啟定時器T0 SETB ET0 ;開定時器T0中斷(計時開始) LJMP START1 ;跳回主程序 SET1: LCALL DISPLAY ;鍵釋放等待時調用顯示程序(調分) AJMP SET2 ;防止鍵按下時無時鐘顯示 SET3: LCALL DISPLAY ;等待調分按鍵時時鐘顯示用 AJMP SET4 SET5: LCALL DISPLAY ;鍵釋放等待時調用顯示程序(調小時) AJMP S

53、ETHH1 ;防止鍵按下時無時鐘顯示 SET7: LCALL DISPLAY ;等待調小時按鍵時時鐘顯示用 AJMP SET6 SETOUT1: LCALL DISPLAY ;退出時鐘調整時鍵釋放等待 AJMP SETOUT ;防止鍵按下時無時鐘顯示; 顯示程序 ; 顯示數據在70H-75H單元,用六位LED共陽數碼管顯示,P0口輸出段碼數據,P3口作; 掃描控制,每個LED數碼管亮1MS時間再逐位循環。 DISPLAY: MOV R1,#70H ;指向顯示數據首址 MOV R5,#0FEH ;掃描控制字初值 PLAY: MOV A,R5 ;掃描字放入A MOV P2,A ;從P2口輸出 MO

54、V A,R1 ;取顯示數據到A MOV DPTR,#TAB ;取段碼表地址 MOVC A,A+DPTR ;查顯示數據對應段碼 MOV P1,A ;段碼放入P0口 LCALL DL1MS ;顯示1MS INC R1 ;指向下一地址 MOV A,R5 ;掃描控制字放入A JNB ACC.5,ENDOUT ;ACC.5=0時一次顯示結束 RL A ;A中數據循環左移 MOV R5,A ;放回R5 AJMP PLAY ;跳回PLAY循環 ENDOUT: SETB P2.5 ;一次顯示結束,P2口復位 MOV P1,#0FFH ;P0口復位 RET ;子程序返回 TAB: DB 3FH,06H,5BH,

55、4FH,66H,6DH,7DH,07H,7FH,6FH;1MS延時程序,LED顯示程序用 DL1MS: MOV R6,#14H DL1: MOV R7,#19H DL2: DJNZ R7,DL2 DJNZ R6,DL1 RET;20MS延時程序,采用調用顯示子程序以改善LED的顯示閃爍現象 DS20MS: ACALL DISPLAY ACALL DISPLAY ACALL DISPLAY RET;延時程序,用作按鍵時間的長短判斷 DL1S: LCALL DL05S LCALL DL05S RET DL05S: MOV R3,#20H ;8毫秒*32=0.196秒 DL05S1: LCALL DISPLAY DJNZ R3,DL05S1 RET END ;程序結束4.5調試仿真調試工作氛圍軟件調試和硬件調試連部分,流程如下:首先硬件調試主要是想搭建硬件平臺,然后利用萬用表等工具對電路檢查,最后應用程序進行功能調試。然后,可以直接應用編程軟件Keil和仿真軟件Prote

溫馨提示

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

評論

0/150

提交評論