2017畢業(yè)論文-基于AT89C51單片機萬年歷設計.doc
《2017畢業(yè)論文-基于AT89C51單片機萬年歷設計.doc》由會員分享,可在線閱讀,更多相關《2017畢業(yè)論文-基于AT89C51單片機萬年歷設計.doc(34頁珍藏版)》請在裝配圖網上搜索。
1、本科生畢業(yè)設計基于AT89C51單片機萬年歷設計院 系電氣信息工程學院 專 業(yè)電氣工程及其自動化班 級 07級本科四班 學 號 學 生 姓 名 聯(lián) 系 方 式 指 導 教 師職稱:助理實驗師2011年5月獨 創(chuàng) 性 聲 明本人鄭重聲明:所呈交的畢業(yè)論文是本人在指導老師指導下取得的研究成果。除了文中特別加以注釋和致謝的地方外,論文中不包含其他人已經發(fā)表或撰寫的研究成果。與本研究成果相關的所有人所做出的任何貢獻均已在論文中作了明確的說明并表示了謝意。簽名: 年月日授 權 聲 明本人完全了解許昌學院有關保留、使用本科生畢業(yè)論文的規(guī)定,即:有權保留并向國家有關部門或機構送交畢業(yè)論文的復印件和磁盤,允許
2、畢業(yè)論文被查閱和借閱。本人授權許昌學院可以將畢業(yè)論文的全部或部分內容編入有關數(shù)據(jù)庫進行檢索,可以采用影印、縮印或掃描等復制手段保存、匯編論文。本人論文中有原創(chuàng)性數(shù)據(jù)需要保密的部分為(如沒有,請?zhí)顚憽盁o”): 簽名: 年 月 日指導教師簽名: 年 月 摘 要該電子萬年歷主要采用AT89C51單片機作為主控核心,由DS1302時鐘芯片提供時鐘、LCD液晶顯示屏顯示。AT89C51單片機是由ATMEL公司推出的,功耗小,電壓可選用46V電壓供電;DS1302時鐘芯片是美國DALLAS公司推出的具有涓細電流充電功能的低功耗實時時鐘芯片,它可以對年、月、日、星期、時、分、秒進行計時,而且DS1302的使
3、用壽命長,誤差??;數(shù)字顯示是采用的LCD液晶顯示屏來顯示,可以同時顯示年、月、日、星期、時、分、秒等信息。關鍵詞:時鐘電路;時鐘芯片DS1302;LCD;AT89C51ABSTRACTThe electronic calendar using AT89C51 microcontroller as the master key core clock from the clock chip DS1302, LCD liquid crystal screen display. Atmel AT89C51 microcontroller is introduced, the power consump
4、tion, voltage can be selected 4 6V supply voltage; DS1302 clock chip introduced in the United States with Juan DALLAS small low-power charging current real time clock chip, which can in , Month, day, week, hour,minute, seconds time, and the DS1302s long life, small error; digital LCD display is used
5、 to display the LCD screen can be displayed simultaneously on ,Month, day,week, hours, minutes, seconds and other information. In addition, the electronic calendar is also a time for calibration and other functions.Keywords:clock circuit;clock chip DS1302;LCD;AT89C51目 錄緒 論11 設計要求與方案論證21.1 引言21.2功能要求
6、21.3方案論證21.3.1 技術可行性21.3.2 單片機的選擇31.3.3 顯示模塊的選擇31.3.4 時鐘芯片的選擇方案與論證41.3.5鍵盤模塊的選擇41.3.6總體方案論證與選擇52 系統(tǒng)硬件電路的設計52.1電路設計52.2系統(tǒng)硬件概述62.2.1 主控制器AT89C5162.2.2 時鐘電路DS130272.3主要單元電路的設計72.3.1顯示電路72.3.2鍵盤接口82.3.3時鐘電路113 系統(tǒng)的軟件設計133.1 程序設計133.2 程序流程圖133.3時間控制流程圖144 proteus軟件仿真144.1 Proteus ISIS簡介144.2 Proteus運行流程15
7、4.3 Proteus功能仿真16結束語19參考文獻20附 錄21致 謝28緒 論隨著人們生活水平的提高和生活節(jié)奏的加快,對時間的要求越來越高,精準數(shù)字計時的消費需求也是越來越多。二十一世紀的今天,最具代表性的計時產品就是電子萬年歷,它是近代世界鐘表業(yè)界的新突破。第一次是擺和擺輪游絲的發(fā)明,相對穩(wěn)定的機械振蕩頻率源使鐘表的走時差從分級縮小到秒級,代表性的產品就是帶有擺或擺輪游絲的機械鐘或表。第二次是石英晶體振蕩器的應用,發(fā)明了走時精度更高的石英電子鐘表,使鐘表的走時月差從分級縮小到秒級。第三次就是單片機數(shù)碼計時技術的應用(電子萬年歷),使計時產品的走時日差從分級縮小到1/600萬秒,從原有傳統(tǒng)
8、指針計時的方式發(fā)展為人們日常更為熟悉的夜光數(shù)字顯示方式,直觀明了,并增加了全自動日期、星期、溫度以及其他日常附屬信息的顯示功能,它更符合消費者的生活需求!因此,電子萬年歷的出現(xiàn)帶來了鐘表計時業(yè)界跨躍性的進步。我國生產的電子萬年歷有很多種,總體上來說以研究多功能電子萬年歷為主,使萬年歷除了原有的顯示時間,日期等基本功能外,還具有鬧鈴,報警等功能。商家生產的電子萬年歷更從質量,價格,實用上考慮,不斷的改進電子萬年歷的設計,使其更加的具有市場。本設計為軟件,硬件相結合的一組設計。在軟件設計過程中,應對硬件部分有相關了解,這樣有助于對設計題目的更深了解,有助于軟件設計?;镜囊私庖恍┲饕骷幕竟?/p>
9、能和作用。除了采用集成化的時鐘芯片外,還采用MCU的方案,利用AT89系列單片微機制成萬年歷電路,采用軟件和硬件結合的方法,控制LCD液晶顯示屏輸出,分別用來顯示年、月、日、星期、時、分、秒,其最大特點是:硬件電路簡單,安裝方便易于實現(xiàn),軟件設計獨特,可靠。AT89C51是由ATMEL公司推出的一種小型單片機。95年出現(xiàn)在中國市場。其主要特點為采用FLASH存貯器技術,降低了制造成本,其軟件、硬件與MCS-51完全兼容,所以很快被中國廣大的用戶接受。本文介紹了基于AT89C51單片機設計的電子萬年歷。在緒論中簡單介紹了單片機的發(fā)展與其在中低端領域中的優(yōu)勢以及課題的開發(fā)意義;接著介紹了AT89C
10、51單片機的硬件結構和本畢業(yè)設計所要外擴的LCD顯示及其驅動方法,并在此基礎上實現(xiàn)了萬年歷基本電路的設計;然后使用單片機高級C語言進行萬年歷程序的設計,程序采用模塊化結構,使得邏輯關系簡單明了,維護方便。 1 設計要求與方案論證1.1 引言隨著電子技術的發(fā)展,人類不斷研究,不斷創(chuàng)新紀錄。目前萬年歷已經不再局限于以書本形式出現(xiàn)。以電腦軟件或者電子產品形式出現(xiàn)的萬年歷被稱為電子萬年歷。與傳統(tǒng)書本形式的萬年歷相比,電子萬年歷得到了越來越廣泛的應用,采用電子時鐘作為時間顯示已經成為一種時尚。目前市場上各式各樣的電子時鐘數(shù)不勝數(shù),但多數(shù)是只針對時間顯示,功能單一不能滿足人們日常生活需求。 本文提出了一種
11、基于AT89C51單片機的萬年歷設計方案,本方案以AT89C51單片機作為主控核心,與時鐘芯片DS1302、按鍵、LCD顯示等模塊組成硬件系統(tǒng)。在硬件系統(tǒng)中設有獨立按鍵和LCD顯示器,能顯示豐富的信息,根據(jù)使用者的需要可以隨時對時間進行校準、選擇時間等,綜上所述此萬年歷具有讀取方便、顯示直觀、功能多樣、電路簡潔、成本低廉等諸多優(yōu)點,符合電子儀器儀表的發(fā)展趨勢,具有廣闊的市場前景。1.2功能要求本設計準備實現(xiàn)的功能: (1) 顯示公歷日期功能(年、月、日、時、分、秒以及星期) (2) 可通過按鍵切換年、月、日及時、分、秒的顯示狀態(tài)(3) 可隨時調校年、月、日或時、分、秒(4) 可每次增、減1進行
12、時間調節(jié)(5) 可動態(tài)完整顯示年份,實現(xiàn)真正的萬年歷顯示1.3方案論證1.3.1 技術可行性 隨著國內超大規(guī)模集成電路的出現(xiàn),微處理器及其外圍芯片有了迅速的發(fā)展。集成技術的最新發(fā)展之一是將CPU和外圍芯片,如程序存儲器、數(shù)據(jù)存儲器、并行I/O口、串行I/O口、定時/計數(shù)器、中斷控制器及其他控制部件集成在一個芯片之中,制成單片計算機。而近年來推出的一些高檔單片機還包括有許多特殊功能單元,如A/D、D/A轉換器、調制解調器、通信控制器、鎖相環(huán)、DMA、浮點運算單元、PWM控制輸出單元、PWM輸出時的死區(qū)可編程控制功能等。因此,只要外加一些擴展電路及必要的通道接口就可以構成各種計算機應用系統(tǒng),如工業(yè)
13、流水線控制系統(tǒng)、作為家用電器的主控制器、分布式控制系統(tǒng)的終端節(jié)點或作為其主控制節(jié)點起中繼的作用、數(shù)據(jù)采集系統(tǒng)、自動測試系統(tǒng)等。單片機的出現(xiàn),并在各技術領域中得到如此迅猛的發(fā)展,與單片機構成計算機應用系統(tǒng)所形成的下述特點有關:1、單片機構成的應用系統(tǒng)有較大的可靠性。這些可靠性的獲得除了依靠單片機芯片本身的高可靠性以及應用有最少的聯(lián)接外,還可以方便地采用軟、硬件技術。2、系統(tǒng)配置、系統(tǒng)擴展較典型、規(guī)范,容易構成各種規(guī)模的應用系統(tǒng),應用系統(tǒng)有較高的軟、硬件利用系數(shù)。3、由于構成的應用系統(tǒng)是一個計算機系統(tǒng),相當多的測、控功能由軟件實現(xiàn),故具有柔性特征,不須改變硬件系統(tǒng)就能適當?shù)馗淖兿到y(tǒng)功能。4、具有優(yōu)
14、異的性能、價格比。1.3.2 單片機的選擇方案一:采用傳統(tǒng)的AT89C51作為萬年歷的控制核心。單片機算術運算功能強,軟件編程靈活、自由度比較大,可用軟件編程實現(xiàn)各種算法和邏輯控制,并且由于其體積小、功耗低、技術成熟和成本低等優(yōu)點,使其在各個領域應用廣泛。方案二:采用FTC10F04單片機,還帶有非易失性Flash程序存儲器。它是一種高性能、低功耗的8位CMOS微處理芯片,市場應用最多。其主要特點如下:8KB FLASH ROM,可以擦除1000次以上,數(shù)據(jù)保存10年。由于本系統(tǒng)對CPU運算速度要求很高,需要執(zhí)行很復雜的運算,方案一成本比較低,適合做設計,方案二運算速度高、性能好,所以兩種方案
15、都有可取之處。選用方案一作為主方案,方案二作為備用方案。1.3.3 顯示模塊的選擇 方案一:使用傳統(tǒng)的LED數(shù)碼管顯示。 數(shù)碼管具有:低能耗、低損耗、低壓、壽命長、耐老化、防曬、防潮、防火、防高(低)溫,對外界環(huán)境要求低,易于維護,同時其精度比較高,稱重輕,精確可靠,操作簡單。數(shù)碼管采用BCD編碼顯示數(shù)字,程序編譯容易,資源占用較少。方案二: 使用液晶顯示屏顯示時間數(shù)字。 液晶顯示屏(LCD)具有輕薄短小、低耗電量、無輻射危險,平面直角顯示以及影象穩(wěn)定不閃爍等優(yōu)勢,可視面積大,畫面效果好,分辨率高,抗干擾能力強等特點。但由于液晶是以點陣的模式顯示各種符號,需要利用控制芯片創(chuàng)建字符庫,編程工作量
16、大,控制器的資源占用較多,其成本稍微偏高。在使用時,不能有靜電干擾,否則易燒壞液晶的顯示芯片,不易維護。方案三:采用點陣式數(shù)碼管顯示,點陣式數(shù)碼管是由八行八列的發(fā)光二極管組成,對于顯示文字比較適合,如采用在顯示數(shù)字顯得太浪費,且價格也相對較高,所以也不用此種作為顯示。 根據(jù)以上的論述,采用方案二。在本系統(tǒng)中,我們采用了LM016L液晶顯示,由于顯示位數(shù)較多,故應使用排阻RESPACK-8驅動,排阻一般有九個腳,一個腳接VCC,其他腳接單片機I/O口。1.3.4 時鐘芯片的選擇方案與論證方案一:直接采用單片機定時計數(shù)器提供秒信號,使用程序實現(xiàn)年、月、日、星期、時、分、秒計數(shù)。采用此種方案雖然減少
17、芯片的使用,節(jié)約成本,但是,實現(xiàn)的時間誤差較大,所以不采用此方案。方案二:采用DS1302時鐘芯片實現(xiàn)時鐘,DS1302芯片是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鐘芯片,它可以對年、月、日、周、時、分、秒進行計時,具有閏年補償功能,而且精度高,工作電壓為2.5V5.5V,2.5V時電流小于300nA。采用三線接口與CPU進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數(shù)據(jù)。根據(jù)以上的論述,采用方案二。在本系統(tǒng)中,我采用了DS1302時鐘芯片。1.3.5鍵盤模塊的選擇在對日期和時間進行切換,對日期和時間進行調節(jié)校準過程中,系統(tǒng)需要產生激勵電流,因此需要用
18、按鍵。 方案一:使用獨立式鍵盤。獨立式鍵盤是指直接用I/O口線構成的單個按鍵電路。獨立式按鍵電路配置靈活,軟件結構簡單。 方案二:使用矩陣式鍵盤。矩陣式鍵盤是由行線和列線組成,按鍵位于行、列的交叉點上,行線、列線分別連接到按鍵開關的兩端。其特點是簡單且不增加成本,這種鍵盤適合按鍵數(shù)量較多的場合。 根據(jù)以上的論述,因本系統(tǒng)需要的按鍵不多,日期加1鍵,月數(shù)加1鍵,年數(shù)加1鍵,秒數(shù)加1鍵,分數(shù)加1鍵,時數(shù)加1鍵,時間/日期切換鍵,要求簡單。所以采用方案一獨立式鍵盤。1.3.6總體方案論證與選擇按照系統(tǒng)設計功能的要求,初步確定系統(tǒng)由主控模塊、時控模塊、顯示驅動及顯示模塊和鍵盤接口模塊共4個模塊組成,電
19、路系統(tǒng)構成框圖如圖1-1所示。圖1-1電子萬年歷電路系統(tǒng)構成框圖煮控芯片使用51系列AT89C51單片機,時鐘芯片使用美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鐘DS1302。采用DS1302作為計時芯片,可以做到計時準確。更重要的是,DS1302可以在很小電流的后備電源(2.55.5V電源,在2.5V時耗電小于300nA),而且DS1302可以編程選擇多種充電電流來對后備電源進行慢速充電,可以保證后備電源基本不耗電。顯示驅動采用排阻RESPACK-8驅動和LM016L液晶顯示 、圖條/柱圖顯示或64 點陣顯示接口的小型串行輸入/輸出芯片。片內包括BCD 譯碼器、多路掃描控
20、制器、字和位驅動器和8*8 靜態(tài)RAM。RESPACK-8需九導線連接,每位顯示數(shù)字有一個地址由微處理器寫入。允許使用者選擇每位是BCD 譯碼或不譯碼。使用者還可選擇停機模式、數(shù)字亮度控制、從18 選擇掃描位數(shù)和對所有LCD顯示器的測試模式。顯示模塊采用普通的LCD顯示屏。2 系統(tǒng)硬件電路的設計2.1電路設計如圖2-1示為電子萬年歷電路設計原理圖,系統(tǒng)由主控制器AT89C51、時鐘電路DS1302、顯示驅動RESPACK-8電路,LM016L液晶顯示電路及鍵掃描電路組成。圖2-1 電子萬年歷電路原理圖2.2系統(tǒng)硬件概述2.2.1 主控制器AT89C51ATMEL公司生產的AT89C51單片機采
21、用高性能的靜態(tài)80C51設計,并采用先進工藝制造,還帶有非易失性Flash程序存儲器。它是一種高性能、低功耗的8位CMOS微處理芯片,市場應用最多。其主要特點如下:8KB Flash ROM,可以擦除1000次以上,數(shù)據(jù)保存10年。 256字節(jié)內部RAM; 電源控制模式; 時鐘可停止和恢復; 空閑模式; 掉電模式; 6個中斷源; 4個中斷優(yōu)先級; 4個8位I/O口; 全雙工增強型TUAR; 3個16位定時/計數(shù)器:T0、T1(標準80C51)和增加的T2(捕獲和比較) 全靜態(tài)工作方式:024MHZ2.2.2 時鐘電路DS1302 DS1302的性能特性: 實時時鐘,可對秒、分、時、日、周、月以
22、及帶閏年補償?shù)哪赀M行比較; 用于高速數(shù)據(jù)暫存的31*8位RAM; 最少引腳的串行I/O; 2.55.5V電壓工作范圍; 2.5V時電流小于300nA; 用于時鐘或RAM數(shù)據(jù)讀/寫的單字節(jié)或多字節(jié)(脈沖方式)數(shù)據(jù)傳送方式; 簡單的三線接口; 可選的慢速充電(至VCC1)的能力。DS1302在任何數(shù)據(jù)傳送時必須先初始化,把RST腳置為高電平,然后把8位地址和命令字裝入移位寄存器,數(shù)據(jù)在SCLK的上升沿被訪問到。在開始8個時鐘周期,把命令字節(jié)裝入移位寄存器后,另外的時鐘周期在讀操作時輸出數(shù)據(jù),在寫操作時寫入數(shù)據(jù)。時鐘脈沖的個數(shù)在單字節(jié)方式下為8+8,在多字節(jié)方式下為8+字節(jié)數(shù),最大可達248字節(jié)數(shù)。
23、如果在傳送過程中置RST腳為低電平,則會終止本次數(shù)據(jù)傳送,并且I/O引腳變?yōu)楦咦钁B(tài)。上電運行時,在VCC2.5V之前,RST腳必須保持低電平。只有在SCLK為低電平時,才能將RST置為高電平。2.3主要單元電路的設計2.3.1顯示電路顯示部分采用普通的LM016L液晶顯示,如圖2-2,以減少硬件電路。LM016L液晶模塊采用hd 44780控制器,hd44780具有簡單而功能較強的指令集,可以實現(xiàn)字符移動,閃爍等功能,LM016L與單片機MCU通訊可采用8位或4位并行傳輸兩種方式,hd44780控制器由兩個8位寄存器,指令寄存器(IR)和數(shù)據(jù)寄存器(DR)忙標志(BF),顯示數(shù)RAM(DDRA
24、M),字符發(fā)生器ROM(CGOROM)字符發(fā)生器RAM(CGRAM),地址計數(shù)器RAM(AC)。IR用于寄存指令碼,只能寫入不能讀出,DR用于寄存數(shù)據(jù),數(shù)據(jù)由內部操作自動寫入DDRAM和CGRAM,或者暫存從DDRAM和CGRAM讀出的數(shù)據(jù),BF為1時,液晶模塊處于內部模式,不響應外部操作指令和接受數(shù)據(jù),DDRAM用來存儲顯示的字符,能存儲80個字符碼,CGROM由8位字符碼生成5*7點陣字符160中和5*10點陣字符32種8位字符編碼和字符的對應關系。圖2-2 LCD液晶顯示屏顯示模塊2.3.2鍵盤接口鍵盤在單片機系統(tǒng)中是一個很重要的部件。為了輸入數(shù)據(jù)、查詢和控制系統(tǒng)的工作狀態(tài),都要用到鍵盤
25、,鍵盤是人工干預計算機的主要手段。鍵盤可分為編碼和非編碼鍵盤兩種。編碼鍵盤采用硬件線線路來實現(xiàn)鍵盤編碼,每按下一個鍵,鍵盤能自動生成按鍵代碼,鍵數(shù)較多,而且還具有去抖動功能。這種鍵盤使用方便,但硬件較復雜,PC機所用的鍵盤就屬于這種。非編碼鍵盤僅提供按鍵開關工作狀態(tài),其他工作由軟件完成,這種鍵盤鍵數(shù)較少,硬件簡單,一般在單片機應用系統(tǒng)中廣泛使用。此處主要介紹該類非編碼鍵盤及其與MCS51型單片機的接口。2.3.3.1按鍵開關去抖動問題按鍵開關在電路中的連接如圖2-3 a)所示。按鍵未按下時,A點電位為高電平5V;按鍵按下時,A點電位為低電平。A點電位就用于向CPU傳遞按鍵的開關狀態(tài)。但是由于按
26、鍵的結構為機械彈性開關,在按鍵按下和斷開時,觸點在閉合和斷開瞬間還會接觸不穩(wěn)定,引起A點電平不穩(wěn)定,如圖2-3 b)所示,鍵盤的抖動時間一般為510ms,抖動現(xiàn)象會引起CPU對一次鍵操作進行多次處理,從而可能產生錯誤。因此必須設法消除抖動的不良后果。圖2-3 鍵操作和鍵抖動消除抖動的不良后果的方法有硬件、軟件兩種。為了節(jié)省硬件,通常在單片機系統(tǒng)中,一般不采用硬件方法消除鍵的抖動,而是用軟件消除抖動的方法。根據(jù)抖動特性,在第一次檢測到按鍵按下后,執(zhí)行一段延時510ms讓前延抖動消失后再一次檢測鍵的狀態(tài),如果仍保持閉合狀態(tài)電平,則確認真正有鍵按下。當檢測到按鍵釋放后,也要給510ms的延時,待后延
27、抖動消失后才轉入該鍵處理程序。2.3.2.2查詢式按鍵及其接口按照鍵盤與CPU的連接方式可以分為查詢按鍵和矩陣式鍵盤。查詢式按鍵是各按鍵相互獨立,每個按鍵占用一根I/O口線,每根I/O口線上的按鍵工作狀態(tài)不會影響其他I/O口線上按鍵的工作狀態(tài)。查詢式按鍵電路配置靈活,軟件結構簡單,但每個按鍵必須占用一根I/O口線,在按鍵數(shù)量較多時,I/O口線浪費較大,且電路結構顯得繁雜。故這種形式適用于按鍵數(shù)量較少的場合。2.3.2.3矩陣式鍵盤及其接口矩陣式鍵盤又稱行列式鍵盤,有n個行線和m個列線,經限流電阻接+5V電源上,按鍵跨接在行線和列線上,n*m行列結構可構成mn個按鍵,組成一個鍵盤。與獨立式按鍵相
28、比,mn個按鍵只占用m+n根I/O口線,因此適用于按鍵較多的場合。當無鍵閉合時,相應的I/O之間開路。當有鍵閉合時,與閉合鍵相連接的兩條I/O口線之間短路。判斷有無鍵按下的方法是:第一步,置列線相關I/O口為輸入態(tài),從行線相對應的I/O口輸出低電平,讀入列線數(shù)據(jù),若某一列線為低電平,則該列線上有鍵閉合。第二步,置行線相關I/O口輸出低電平,讀入列線數(shù)據(jù),若某一列線為低電平,則該列線上有鍵閉合。綜合一二兩步的結果,可確定按鍵編號。但是鍵閉合一次只能進行一次鍵功能操作,因此須等待近按鍵釋放后,再進行鍵功能操作,否則按一次鍵,有可能會連續(xù)多次進行同樣的鍵操作。2.3.2.4鍵盤掃描控制方式在單片機應
29、用系統(tǒng)中,對鍵盤的處理工作僅是CPU工作內容的一部分,CPU還要進行數(shù)據(jù)處理、顯示和其他輸入輸出操作,因此鍵盤處理工作既不能占用CPU太多時間,又需要CPU對鍵盤操作及時作出響應。CPU對鍵盤處理控制的工作方式有以下幾種:1 程序控制掃描方式程序控制掃描方式是在CPU工作空余,調用鍵盤掃描子程序,響應鍵輸入信號要求。2 定時控制掃描方式定時控制掃描方式是利用定時/計數(shù)器每隔一段時間生成定時中斷,CPU響應中斷后對鍵盤進行掃描,并在有鍵閉合時轉入該鍵的功能子程序。3 中斷控制掃描方式中斷控制掃描方式是利用外部中斷源,響應輸入信號。當無按鍵按下時,CPU執(zhí)行正常工作程序。當有按鍵按下時,CPU立即
30、產生中斷。在中斷服務子程序中掃描鍵盤,判斷是哪一個鍵被按下,然后執(zhí)行該鍵的功能子程序。這種控制方式克服了前兩種控制方式可能產生的空掃描和不能及時響應鍵輸入的缺點,既能及時處理鍵輸入,又能提高CPU運行效率,但要占用一個寶貴的中斷資源。圖2-4即工作于中斷方式的矩陣式鍵盤接口電路。在初始化時P1.4P1.7置輸出0,P1.0P1.3置為輸入態(tài),P1.0P1.3分別接至與門各輸入端。當有鍵閉合時=0,CPU中斷后,在中斷服務子程序中,再完成鍵識別和鍵功能處理。在有鍵按下后,有一定的延時,防止鍵盤抖動。 圖2-4 工作于中斷方式的矩陣式鍵盤接口電路2.3.3時鐘電路2.3.3.1 DS1302工作方
31、式簡介及數(shù)據(jù)操作原理DS1302可以對年、月、日、星期、時、分、秒進行計時,且具有閏年補償功能,工作電壓寬達2.55.5V。采用三線接口與CPU進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數(shù)據(jù)。DS1302內部有一個33*8的用于臨時性存放數(shù)據(jù)的RAM寄存器。DS1302是的DS1202升級產品,與DS1202兼容,但增加了主電源/后備電源雙電源引腳,同時提供了對后備電源進行涓細電流充電的能力。DS1302時鐘芯片包括實時時鐘/日歷和31字節(jié)的靜態(tài)RAM。它經過一個簡單的串行接口與微處理器通信。實時時鐘/日歷提供秒、分、時、日、周、月和年等信息。對于小于31天的月和月末的日
32、期自動進行調整,還包括閏年校正的功能。時鐘的運行可以采用24小時或帶AM/PM的12小時格式。采用三線接口與CPU進行同步通信,并可采用突發(fā)方式一次傳送多字節(jié)的時鐘信號或RAM數(shù)據(jù)。DS1302有主電源/后備電源雙電源引腳:VCC1在單電源與電池供電的系統(tǒng)中提供低電源,并提供低功率的電磁備份;VCC1在雙電池系統(tǒng)中提供主電源。在這種運行方式中,VCC1里連接到后備電源,以便在沒有主電源的情況下能保存時間信息以及數(shù)據(jù)。DS1302由VCC1或VCC2中較大者供電。當VCC2(VCC1+02V)時,VCC2給DS1302供電;當VCC2VCC1時,DS1302由VCC1供電。如圖2-5為DS130
33、2的引腳圖。圖2-5 DS1302的引腳圖DS1302在任何數(shù)據(jù)傳送時必須先初始化,把RST腳置為高電平,然后把8位地址和命令字裝入移位寄存器,數(shù)據(jù)在SCLK的上升沿被訪問到。在開始8個時鐘周期,把命令字節(jié)裝入移位寄存器后,另外的時鐘周期在讀操作時輸出數(shù)據(jù),在寫操作時寫入數(shù)據(jù)。時鐘脈沖的個數(shù)在單字節(jié)方式下為8+8,在多字節(jié)方式下為8+字節(jié)數(shù),最大可達248字節(jié)數(shù)。如果在傳送過程中置RST腳為低電平,則會終止本次數(shù)據(jù)傳送,并且I/O引腳變?yōu)楦咦钁B(tài)。上電運行時,在VCC25V之前,RST腳必須保持低電平。只有在SCLK為低電平時,才能將RST置為高電平。DS1302的控制字如表2.1所示。控制字節(jié)
34、的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入到DS1302中。位6如果為0,則表示存取日歷時鐘數(shù)據(jù);為1則表示存取RAM數(shù)據(jù)。位51(A4A0)指示操作單元的地址。最低有效位(位0)如果為0,則表示要進行寫操作;位1表示進行讀操作??刂谱止?jié)總是從最低位開始輸入/輸出。表2-1 DS1302控制字寄存器名 命令字取值范圍各位內容寫操作讀操作76543210秒寄存器80H81H0059CH10SECSEC分寄存器82H83H0059010MINMIN時寄存器84H85H0112或002312/24010HRHR日寄存器86H87H0128,29,30,310010DATEDATE
35、月寄存器88H89H011200010MMONTH周寄存器8AH8BH010700000DAY年寄存器8CH8DH009910 YEARYEAR為了提高對32個地址尋址能力(地址/命令位15=邏輯1),可以把時鐘/日歷或RAM寄存器規(guī)定為多字節(jié)(burst)方式。位6規(guī)定時鐘或RAM,而位0規(guī)定讀或寫。在時鐘/日歷寄存器中的地址931或RAM寄存器中的地址31不能存儲數(shù)據(jù)。在多字節(jié)方式下,讀或寫從地址0的位0開始。必須按數(shù)據(jù)傳送的次序寫最先的8個寄存器。但是,當以多字節(jié)方式寫RAM時,為了傳送數(shù)據(jù)不必寫所有的31字節(jié),不管是否寫了全部31字節(jié),所寫的每一字節(jié)都將傳送至RAM。DS1302共有1
36、2個寄存器,其中有7個寄存器與日歷、時鐘相關,存放的數(shù)據(jù)位為BCD碼形式。其日歷、時間寄存器及其控制字如表2.1所示,其中奇數(shù)為讀操作,偶數(shù)為寫操作。時鐘暫停:秒寄存器的位7定義位時鐘暫停位。當它為1時,DS1302停止振蕩,進入低功耗的備份方式,通常在對DS1302進行寫操作時(如進入時鐘調整程序),停止振蕩。當它為0時,時鐘將開始啟動。AM-PM/12-24小時方式:小時寄存器的位7定義為12或24小時方式選擇位。它為高電平時,選擇12小時方式。DS1302的晶振選用32768Hz,電容推薦值為6pF。因為振蕩頻率較低,也可以不接電容,對計時精度影響不大。3 系統(tǒng)的軟件設計3.1 程序設計
37、電子萬年歷的程序主要包括3個方面的內容:一是DS1302從單片機中讀取數(shù)據(jù)進行計數(shù),二是利用按鍵進行時間的調整,三是LM016L顯示時間。AT89C51單片機主要I/O口的分配,P2.0P2.2分別接LM0L16的RS,RW,E三個功能端,P3接查詢式按鍵,P1.0P1.2分別接DS1302的IO,SCLK,RST端。3.2 程序流程圖圖3-1程序流程圖3.3時間控制流程圖圖3-2 DS1302時控流程圖4 proteus軟件仿真4.1 Proteus ISIS簡介Proteus ISIS是英國Labcenter公司開發(fā)的電路分析與實物仿真軟件。它運行于Windows操作系統(tǒng)上,可以仿真、分析
38、(SPICE)各種模擬器件和集成電路。該軟件的特點是:(1)全部滿足我們提出的單片機軟件仿真系統(tǒng)的標準,并在同類產品中具有明顯的優(yōu)勢。(2)具有模擬電路仿真、數(shù)字電路仿真、單片機及其外圍電路組成的系統(tǒng)的仿真、RS232動態(tài)仿真、I2C調試器、SPI調試器、鍵盤和LCD系統(tǒng)仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號發(fā)生器等。(3)目前支持的單片機類型有:ARM7系列、68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各種外圍芯片。(4)支持大量的存儲器和外圍芯片??傊?,該軟件是一款集單片機和SPICE分析于一身的仿真
39、軟件,功能極其強大 ,可仿真ARM、51、AVR、PIC。Proteus啟動畫面如圖4-1:圖4-1 proteus啟動畫面4.2 Proteus運行流程Proteus ISIS的工作界面是一種標準的Windows界面,如圖4-2所示。包括:標題欄、主菜單、標準工具欄、繪圖工具欄、狀態(tài)欄、對象選擇按鈕、預覽對象方位控制按鈕、仿真進程控制按鈕、預覽窗口、對象選擇器窗口、圖形編輯窗口。運行Proteus程序后,進入軟件的主界面。通過左側工具欄中的P(從庫中選擇元件命令)命令,在Pick Devices 左側窗口中選擇所需元件的關鍵字,然后放置元件并調整方向和位置以及參數(shù)設置,最后進行連線。Prot
40、eus ISIS的工作界面如圖4-2:圖4-2 Proteus ISIS的工作界面4.3 Proteus功能仿真Proteus仿真效果:最后載入hex文件后可以進行模擬仿真,可以全速運行也可以單步調試運行(如圖4-3為運行按鍵)。 圖4-3運行按鍵上電后后LCD顯示如圖4-4:圖4-4調節(jié)年份如圖4-5:圖4-5調節(jié)月份如圖4-6:圖4-6調節(jié)日期如圖4-7:圖4-7調節(jié)時鐘如圖4-8:圖4-8調節(jié)分鐘如圖4-9:圖4-9按鍵功能如圖4-10,自上而下依次為:選擇修改項鍵K1、加鍵K2、減鍵K3、確定鍵K4。圖4-10結束語在三月份,我開始了我的畢業(yè)論文工作,時至今日,論文基本完成。從最初的茫
41、然,到慢慢的進入狀態(tài),再到對思路逐漸的清晰,整個寫作過程難以用語言來表達。歷經了一個多月的努力,緊張而又充實的畢業(yè)設計終于落下了帷幕?;叵脒@段日子的經歷和感受,在這次畢業(yè)設計的過程中,我擁有了無數(shù)難忘的回憶和收獲。在設計過程中,充分發(fā)揮人的主觀能動性,自主學習,學到了許多沒學到的知識。較好的完成了設計,達到了預期的目的,完了最初的設想。對電路的設計、布局要先有一個好的構思,才顯得電路板美觀、大方。程序編寫中,由于思路不清晰,開始時遇到了很多的問題,經過靜下心來思考,和同學討論,理清了思路,反而得心應手。在此次設計中,知道了做凡事要有一顆平常的心,不要想著走捷徑,一步一腳印。也練就了我的耐心,做
42、什么事都在有耐心。此次畢業(yè)設計中學到了很多很多東西,這是最重要的??傊?,這次畢業(yè)設計使我的能力得到了全方位的提高,使得我的操作能力和專業(yè)技能都有了很大的提高。這次畢業(yè)設計的制作過程是我的一次再學習,再提高的過程。在論文中我充分地運用了大學期間所學到的知識。參考文獻1 劉建輝,翼常鵬等.單片機智能控制技術M.國防工業(yè)大學出版社,2007.4 2 李朝青單片機&DSP外圍數(shù)字IC技術手冊M北京航空航天大學出版社,2005.103 關德新,馮文全單片機外圍器件實用手冊 電源分冊M北京航空航天大學出版社,1998.6 4 蔡美琴等.MCS-51單片機系統(tǒng)及其應用M.高等教育出版社,1992.35 He
43、llDale Chip Weems Mark Headington M.PROGRAMMING IN CFF 6 陳明熒.8051單片機課程設計實訓教程M清華大學出版社7 郁慧娣.微機系統(tǒng)及其接口技術M.東南大學出版社,1999 8 何立民.單片機高級教程M.北京航空航天大學出版社,2003 9 王毓銀.數(shù)字電路邏輯設計M.高等教育出版社10 陳志旺.51系列單片機系統(tǒng)設計與實踐M.電子工業(yè)出版社,20100111 李廣弟.單片機原理及應用M.北京航空航天大學出版社,2004 12 謝嘉奎.電子線路M.高等教育出版社,199913 譚浩強.C程序設計M.清華大學出版社 2004.614 關德新
44、,馮文全.單片機外圍器件實用手冊 電源分冊M.北京航空航天大學出版社,1998.6 15 顧筠,錢琦,林小寧.單片微型計算機原理與應用M.東南大學出版社,2003.1216 李華.MCS-51系列單片機實用接口技術M北京航空航天大學出版社,1993.317 何立民.MCS-51系列單片機應用系統(tǒng)設計系統(tǒng)配置與接口技術M北京航空航天大學出版社,199018 孫涵芳.MCS-51/96系列單片機原理及應用M.北京航空航天大學出版社,199621附 錄附錄1:電路原理圖附圖1 電子萬年歷原理圖附錄2:電路仿真圖附圖2 電子萬年歷仿真圖附錄3:電子萬年歷程序#include #include #def
45、ine uchar unsigned char#define uint unsigned intsbit SDA=P10; /DS1302數(shù)據(jù)線sbit CLK = P11; /DS1302時鐘線sbit RST = P12; /DS1302復位線sbit RS = P20; /LCD寄存器選擇sbit RW = P21; /LCD讀/寫控制sbit EN = P22; /LCD啟用sbit K1 = P34; /按鍵選擇sbit K2 = P35; /按鍵加sbit K3 = P36; /按鍵減 sbit K4 = P37; /按鍵確定uchar tCount =0;/一年中的每個月的天數(shù),
46、2月的天數(shù)有年份決定uchar MonthsDays = 0,31,0,31,30,31,30,31,31,30,31,30,31;/周日,周一到周六(0,1-6)讀取DS1302時分別是1-7uchar *WEEK = SUN,MON,TUS,WEN,THU,F(xiàn)RI,SAT;/LCD顯示緩沖uchar LCD_DSY_BUFFER1 = DATE 00-00-00 ;uchar LCD_DSY_BUFFER2 = TIME 00-00-00 ;uchar DateTime7; /所讀取的日期時間char Adjust_Index = -1; /當前調節(jié)的時間對象:秒,分,時,日,月,年(0,
47、1,2,3,4,5,6)uchar Change_Flag = -MHDM-Y; /(分,時,日,月,年) void Write_A_Byte_TO_DS1302(uchar x) /向DS1302寫入一字節(jié)uchar i;for ( i = 0; i =1;void Write_DS1302 (uchar addr,uchar dat) /向DS1302某地址寫入數(shù)據(jù) CLK = 0;RST = 1;Write_A_Byte_TO_DS1302(addr);Write_A_Byte_TO_DS1302(dat);CLK = 0;RST =0 ;/設置時間void SET_DS1302 ()
48、uchar i;/寫控制字,取消寫保護Write_DS1302 (0 x8E,0 x00);/分時日月年依次寫入for(i = 1; i 7; i+)/分的起始地址10000010(0 x82),后面依次是時,日,月,周,年,寫入地址每次遞減2Write_DS1302(0 x80 + 2*i,(DateTimei/104) | (DateTimei%10);Write_DS1302(0 x8E,0 x80); /加保護uchar Get_A_Byte_FROM_DS1302() /從DS1302讀取一字節(jié)uchar i,b,t;for (i = 0;i =1;t=SDA;b|=t7;CLK=1
49、;CLK=0;return b/16*10+b%16;unchar Read_Data (uchar addr) /從DS1302指定位置讀數(shù)據(jù)uchar dat;RST = 0;CLK = 0;RST = 1;Write_A_Byte_TO_DS1302(addr);dat = Get_A_Byte_FROM_DS1302();CLK=1;RST=0;return dat;/讀取當前日期時間void GetTime()uchar i;for (i = 0; i 7; i+)DateTimei = Read_Date(0 x81 + 2*i);/在LCD上顯示字符串viod Display_L
50、CD_String(uchar p,uchar *s)uchar i;Set_LCD_POS(p);for (i = 0;i 16;i+)Write_LCD_Data(si); DelayMS(1);/日期與時間值轉換成為數(shù)字字符void Format_DateTime(uchar d, uchar *a)a0 = d/10+0; a1 = d%10 + 0;/判斷是否為閏年uchar isLeapYear(uint y)return (y % 4 = =&y % 100!=0)|(y%400 = = 0);/求自2000.1.1開始的任何一天是星期幾/函數(shù)沒有通過,求出總天數(shù)后再求星期幾/因
51、為求總天數(shù)可能會越出uint的范圍viod RefreshWeekDay()uint i,d,w=5; /1999.12.31是星期五for (i = 2000; i 2000+DateTime6;i+)d = isLeapYear(i) ? 366 :365;w = (w + d) % 7;d = 0;for (i = 1; i DateTime4 ; i+ ) d += MonthsDaysi;d += DateTime3;/保存星期,06表示星期日,星期一,二,六,為了與DS1302的星期格式匹配,返回值需加1DateTime5 = (w + d) % 7 + 1;/年月日時分+/-vo
52、id DateTime_Adjust(char x)switch ( Adjust_Index )case 6: if (x = =1 & DateTime6 0) DateTime6-;/獲取2月天數(shù) MonthsDays2 = isLeapYear(2000 + DateTime6) ? 29 : 28; /如果年份變化后當前月份的天數(shù)大于上限則設為上限 if ( DateTime3 MonthsDaysDateTime4 ) DateTime3 = MonthsDaysDateTime4; RefreshWeekDay(); /刷新星期 break;case 4: if (x = =1
53、& DateTime4 1) DateTime4-; /獲取2月天數(shù) MonthsDays2 = isLeapYear(2000 + DateTime6) ? 29 : 28; /如果年份變化后當前月份的天數(shù)大于上限則設為上限 if ( DateTime3 MonthsDaysDateTime4 ) DateTime3 = MonthsDaysDateTime4; RefreshWeekDay(); /刷新星期 break;case 3: /日00-28/29/30/31;調節(jié)之前首先根據(jù)年份得出該年中2月份的天數(shù) MonthsDays2 = isLeapYear(2000 + DateTim
54、e6) ? 29 : 28; /如果年份變化后當前月份的天數(shù)大于上限則設為上限 if (x = =1 & DateTime3 0) DateTime3-; RefreshWeekDay(); /刷新星期 break;case 2: /時 if (x = =1 & DateTime2 0) DateTime2-; break;case 1: /分 if (x = =1 & DateTime1 0) DateTime1-; break;/定時器0每秒刷新LCD顯示void T0_INT() interrupt 1TH0 = -50000 / 256;TL0 = -50000 % 256;if (+
55、tCount != 2) return;tCount = 0;Format_DateTime(DateTime6,LCD_DSY_BUFFR1 + 5);Format_DateTime(DateTime4,LCD_DSY_BUFFR1 + 8);Format_DateTime(DateTime3,LCD_DSY_BUFFR1 + 11);strcpy(LCD_DSY_BUFFER1 + 13,WEEKDateTime5 - 1 );Format_DateTime(DateTime2,LCD_DSY_BUFFR1 + 5);Format_DateTime(DateTime1,LCD_DSY_BU
56、FFR1 + 8);Format_DateTime(DateTime0,LCD_DSY_BUFFR1 + 11);Display_LCD-String(0 x00, LCD-DSY_BUFFER1);Display_LCD-String(0 x40, LCD-DSY_BUFFER2);/鍵盤中斷(INT0)void EX_INT0 () interrupt 0 if (K1 = =0) /選擇調整對象 while (K1 = = 0); if (Adjust_Index = = -1 | Adjust_Index = =1) Adjust_Index = 7;0 Adjust_Index-; if (Adjust_Index = = 5 ) Adjust_Index = 4; LCD_DSY_BUFFER213 = ; LCD_DSY_BUFFER214 = Change_FlagAdjust_Index; LCD_DSY_BUFFER215 = ; else if (K2 = = 0) /加 while (K2 = =0); DateTim
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。