版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
PAGE單片機課程設(shè)計報告題目硬件定時液晶顯示時鐘設(shè)計學院電信學院專業(yè)電氣工程及其自動化學生姓名學號200910316122年級09級指導教師職稱講師2012年6月25日硬件定時液晶顯示時鐘的設(shè)計摘要:本設(shè)計的主要任務是實現(xiàn)液晶定時時鐘的顯示,用到的硬件有微控制器AT89C51,時鐘芯片DS1302,液晶顯示屏LCD1602.DS1302時鐘芯片內(nèi)含有一個實時時鐘/日歷和31個字節(jié)靜態(tài)RAM,實時時鐘/日歷能提供2100年之前的秒、分、時、日、日期、月、年等信息,時鐘操作可通過AM/PM指示決定采用24小時或12小時格式。首先設(shè)定時鐘DS1307的各寄存器地址,然后對LCD初始化,在對時鐘讀寫時間,最后在LCD上顯示。并且通過按鍵來修改和定時日期和時間,我們的顯示結(jié)果在實驗臺上顯示結(jié)果,通過連接實驗臺上的相關(guān)器件,運行仿真之后會在液晶顯示屏上顯示相關(guān)內(nèi)容,其中第一行顯示年月日,第二行顯示時分秒。關(guān)鍵詞:AT89C51單片機DS1302LCD1602目錄第1章引言………………………11.1研究背景…………………11.2課程設(shè)計的目的………………………11.3課程設(shè)計內(nèi)容……………1第2章總體方案設(shè)計……………22.1硬件定時液晶顯示時鐘的設(shè)計方案證…………………22.2方案選擇…………………2第3章硬件系統(tǒng)設(shè)計…………33.1總電路設(shè)計……………33.2器件的介紹……………33.2.1MCS-51系列單片機……………33.3.2鐘芯片DS1302簡介……………3.3.3鍵盤的介紹………………………8第4章軟件系統(tǒng)設(shè)計…………104.1軟件程序思想………………………104.2流程圖…………………104.3匯編語言源程序清單…………………11第5章系統(tǒng)仿真…………185.1KEIL51介紹………………………185.2PROTEUS介紹………………………185.3仿真過程及仿真結(jié)果…………………195.3.1硬件調(diào)式…………………195.3.2軟件調(diào)試…………………195.3.3仿真結(jié)果…………………20第6章結(jié)束語…………………21參考文獻…………………………22PAGE22第1章引言研究背景隨著計算機科學與技術(shù)的飛速發(fā)展,計算機的應用已經(jīng)滲透到國民經(jīng)濟與人們生活的各個角落,正在日益改變著傳統(tǒng)的人類工作方式和生活方式,而單片機技術(shù)又作為計算機技術(shù)中的一個獨立分支,有著性價比高,集成度高,體積小,可靠性高,控制功能強大,低功耗,低電壓,便于生產(chǎn),便于攜帶等特點,所以得到越來越廣泛的應用,特別是在工業(yè)控制和儀表儀器智能化中起極其重要的作用.本文利用單片機強大的控制功能和內(nèi)部定時器重要部件,設(shè)計了一款把時、分、秒用LCD顯示的并且通過用按鍵來修改日期火熱時間的電子鐘。數(shù)字電子鐘系統(tǒng)設(shè)計已經(jīng)成熟,但是目前系統(tǒng)設(shè)計時基本都是采用LED作為顯示電路,造成硬件電路復雜、功耗高、產(chǎn)品體積龐大等特點;液晶顯示模塊由于具有低功耗、壽命長、體積小、顯示內(nèi)容豐富、價格低、接口控制方便等優(yōu)點,因此在各類電子產(chǎn)品中被極廣泛地推廣和應用。字符型液晶顯示模塊是一類專門用于顯示字母、數(shù)字、符號等點陣式液晶顯示模塊。本系統(tǒng)設(shè)計采用字符型液品顯示模塊LCD1602作為顯示器件,這樣不僅簡化了系統(tǒng)的硬件設(shè)計,而且極大地提高了系統(tǒng)的可靠性。1LCD1602簡介字符型液晶顯示模塊LCD1602已經(jīng)是單片機應用設(shè)計中最常用的信息顯示器件。LCD1602可以顯示兩行,每行16個字符,采用+5V電源供電,外圍電路配置簡單,價格便宜,具有很高的性價比。1.2課程設(shè)計的目的單片機課程設(shè)計是單片機課程后續(xù)學習階段的一個重要的實踐學習環(huán)節(jié),它既能增強學生對所學課程內(nèi)容的理解和綜合,也能培養(yǎng)學生的綜合應用及設(shè)計能力,同時,還可以拓寬課程內(nèi)容和培養(yǎng)創(chuàng)新意識。1.3課程設(shè)計內(nèi)容設(shè)計一個單片機硬件定時液晶顯示時鐘。要求:采用應用廣泛的微控制器AT89C51,系統(tǒng)采用12MHz的晶振;時鐘芯片采用DS1302;顯示器采用LCD1602;實時顯示年、月、日和秒、分、時,時間以24小時為一個周期;通過按鍵K1,K2,K3來修改日期和時間,達到定時的目的。第2章總體方案設(shè)計2.1硬件定時液晶顯示時鐘的設(shè)計方案單片機電子時鐘方案選擇主要涉及兩個方面:計時方案和顯示方案。方案一:計時方案單片機電子時鐘計時有兩種方法:第一種是通過單片機內(nèi)部的定時器/計數(shù)器,采用軟件編程來實現(xiàn)時鐘計時,這種實現(xiàn)的時鐘一般稱為軟時鐘,這種方法的硬件線路簡單,系統(tǒng)的功能一般與軟件設(shè)計相關(guān),通常用在對時間精度要求不高的場合;第二種是采用專用的硬件時鐘芯片計時,這種實現(xiàn)的時鐘一般稱為硬時鐘。專用的時鐘芯片功能比較強大,除了自動實現(xiàn)基本計時外,一般還具有日歷和閏年補償?shù)裙δ?,計時準確,軟件編程簡單,但硬件成本相對較高,通常用在對時鐘精度要求較高的場合。方案二:顯示方案對于電子時鐘而言,顯示是另一個重要的環(huán)節(jié)。顯示通常采用兩種方式:LED數(shù)碼管顯示和LCD液晶顯示。其中LED數(shù)碼管顯示亮度高,顯示內(nèi)容清晢,根據(jù)具體的連接方式可分為靜態(tài)顯示和動態(tài)顯示,在多個數(shù)碼管時一般采用動態(tài)顯示,動態(tài)顯示時須要占用CPU的大量時間來執(zhí)行動態(tài)顯示程序,顯示效果往往和顯示程序的執(zhí)行相關(guān)。LCD液晶顯示一般能顯示的信息多,顯示效果好,而且液晶顯示器一般都帶控制器,顯示過程由自帶的控制器控制,不須要CPU參與,但液晶顯示器造價相對較高。軟件計時LED數(shù)碼管顯示的單片機電子時鐘總體設(shè)計框圖,硬件定時LCD液晶顯示的單片機電子時鐘總體設(shè)計框圖如圖2.1、2.2所示。51單片機時鐘電路復位51單片機時鐘電路復位電路LED按鍵51單片機時鐘電路復位電路LCD按鍵時鐘芯片圖2.1軟件計時LED顯示時鐘總體框圖圖2.2硬件定時LCD顯示時鐘總體框圖2.2方案選擇從節(jié)省功耗,體積,I/O口的節(jié)省,本設(shè)計采用硬件定時LCD液晶顯示的單片機電子時鐘總體設(shè)計,如上圖2.2所示。單片機擴展的LCD顯示器用來顯示秒、分、時計數(shù)單元中的值。整個設(shè)計包括兩大部分:硬件部分和軟件部分,以單片機為核心,配以一定的外圍電路和軟件。硬件是整個系統(tǒng)的基礎(chǔ),軟件部分則要合理、充分地支持和使用系統(tǒng)的硬件,從而完成系統(tǒng)所要完成的任務。該時鐘系統(tǒng)主要由時鐘模塊、液晶顯示模塊、鍵盤控制模塊組成。能夠準確顯示時間(顯示格式為時時:分分:秒秒,24小時制),可隨時進行時間調(diào)整。設(shè)計以硬件軟件化為指導思想,充分發(fā)揮單片機功能,大部分功能通過軟件編程來實現(xiàn),電路簡單明了,系統(tǒng)穩(wěn)定性高。第3章硬件系統(tǒng)設(shè)計3.1總電路設(shè)計圖3-1硬件定時LCD顯示時鐘硬件電路圖硬件定時LCD液晶顯示時鐘的具體硬件電路如圖3-1所示,其中單片機采用應用廣泛的AT89C52,系統(tǒng)時鐘采用12MHz的晶振,時鐘芯片采用DS1302,顯示器采用LCD1602,DS1302復位線與89C52單片機的P1.2相連,時鐘線SCLK與P1.3相連,數(shù)據(jù)線I/O與P1.4相連,DS1302的X1和X2接32kHz晶體,VCC2接主電源Vcc,VCC1接備用電源(3V的電池)。LCD1602的數(shù)據(jù)線與89C52的P2口相連,RS與P1.7相連,R/與P1.6相連,E端與P1.5相連。也只設(shè)定3個開關(guān)K0、K1和K2,通過P1口低3位相連。其中K0鍵為模式選擇鍵,K1為加1鍵,K2為減1健。K0沒有按下,則正常走時,K0按第一次,則可調(diào)年,按第二次,則可調(diào)月,按第三次,則可調(diào)日,按第四次,則可調(diào)小時,按第五次,則可調(diào)分,按第六次,則又回到正常走時。3.2器件的介紹3.2.1MCS-51系列單片機AT89C52提供以下標準功能:8k字節(jié)Flash閃速存儲器,256字節(jié)內(nèi)部RAM,32個I/O口線,3個16位定時/計數(shù)器,一個6向量兩級中斷結(jié)構(gòu),一個全雙工串行通信口,片內(nèi)振蕩器及時鐘電路[2]。同時,AT89C52可降至0HZ的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式??臻e方式停止CPU的工作,但允許RAM,定時/計數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個硬件復位。1.MCS-51系列單片機的基本組成雖然MCS-51系列單片機的芯片有多種類型,但它們的基本組成相同。MCS-51單片機的基本結(jié)構(gòu)如圖3-2所示。 圖3-2MCS-51的基本結(jié)構(gòu)2.MCS-51系列單片機的內(nèi)部結(jié)構(gòu)MCS-51單片機的內(nèi)部結(jié)構(gòu)框圖如圖3-3所示。圖3-3MCS-51內(nèi)部結(jié)構(gòu)圖由圖3-3可以看到:它集成了中央處理器(CPU)、存儲器系統(tǒng)(RAM和ROM)、定時/計數(shù)器、并行接口、串行接口、中斷系統(tǒng)及一些特殊功能寄存器(SFR)。它們通過內(nèi)部總線緊密地聯(lián)系在一起。它的總體結(jié)構(gòu)仍是通用CPU加上外圍芯片的總線結(jié)構(gòu)。只是在功能部件的控制上與一般微機的通用寄存器加接口寄存器控制不同,CPU與外設(shè)的控制不再分開,采用了特殊功能寄存器集中控制,使用更方便。內(nèi)部還集成了時鐘電路,只需外接石英晶體就可形成時鐘。另外注意,8031和8032內(nèi)部沒有集成ROM。3.MCS-51系列單片機的中央處理器(CPU)MCS-51單片機的中央處理器包含運算部件和控制部件。運算部件以算術(shù)邏輯運算單元ALU為核心,包含累加器ACC、B寄存器、暫存器、標志寄存器PSW等許多部件,且能實現(xiàn)算術(shù)運算、邏輯運算、位運算、數(shù)據(jù)傳輸?shù)忍幚?。控制部件是單片機的控制中心,它包括定時和控制電路、指令寄存器、指令譯碼器、程序計數(shù)器PC、堆棧指針SP、數(shù)據(jù)指針DPTR以及信息傳送控制部件等。它先以振蕩信號為基準產(chǎn)生CPU的時序,從ROM中取出指令到指令寄存器,然后在指令譯碼器中對指令進行譯碼,產(chǎn)生執(zhí)行指令所需的各種控制信號,送到單片機內(nèi)部的各功能部件中,指揮各功能部件產(chǎn)生相應的操作,完成對應的功能。具體控制過程本書不作描述。4.MCS-51系列單片機的存儲器結(jié)構(gòu)MCS-51單片機的存儲器結(jié)構(gòu)與一般微機的存儲器結(jié)構(gòu)不同,分為程序存儲器ROM和數(shù)據(jù)存儲器RAM。程序存儲器存放程序、固定常數(shù)和數(shù)據(jù)表格,數(shù)據(jù)存儲器用作工作區(qū)及存放數(shù)據(jù),兩者完全分開。程序存儲器和數(shù)據(jù)存儲器都有各自的尋址方式、尋址空間和控制系統(tǒng)。程序存儲器和數(shù)據(jù)存儲器從物理結(jié)構(gòu)上可分為片內(nèi)和片外兩種。它們的尋址空間和訪問方式也不相同。5.MCS-51單片機中斷系統(tǒng)在計算機執(zhí)行程序的過程中,由于計算機內(nèi)部事件或外部事件,軟件事件或硬件事件,使CPU從當前正在執(zhí)行的程序中暫停下來,而轉(zhuǎn)去執(zhí)行預先安排好的、處理該事件所對應的服務程序(中斷服務程序),執(zhí)行完服務程序后,再返回被暫停的位置繼續(xù)執(zhí)行原來的程序,這個過程稱為中斷。圖3-4中斷過程示意圖1)中斷源MCS-51單片機提供5個(52子系列提供6個)硬件中斷源:兩個外部中斷源(P3.2)和(P3.3),兩個定時/計數(shù)器T0和T1的溢出中斷TF0和TF1;1個串行口發(fā)送T1和接收R1中斷。1) 外部中斷和外部中斷源和的中斷請求信號從外部引腳P3.2和P3.3輸入,主要用于自動控制、實時處理、單片機掉電和設(shè)備故障的處理。外部中斷請求和有兩種觸發(fā)方式:電平觸發(fā)及跳變(邊沿)觸發(fā)。這兩種觸發(fā)方式可以通過對特殊功能寄存器TCON編程來選擇。特殊功能寄存器TCON在定時/計數(shù)器中使用過,其中高4位用于定時/計數(shù)器控制,前面已介紹。低4位用于外部中斷控制,形式如圖3-5所示。TCOND7D6D5D4D3D2D1D0(88H)TF1TR1TF0TR0IE1IT1IE0IT0圖3-5定時/計數(shù)器控制寄存器TCON2) 定時/計數(shù)器T0和T1中斷當定時/計數(shù)器T0(或T1)溢出時,由硬件置TF0(或TF1)為“1”,向CPU發(fā)送中斷請求,當CPU響應中斷后,將由硬件自動清除TF0(或TF1)。3) 串行口中斷MCS-51的串行口中斷源對應兩個中斷標志位:串行口發(fā)送中斷標志位TI和串行口接收中斷標志位RI。無論哪個標志位置“1”2)中斷允許控制MCS-51單片機中沒有專門的開中斷和關(guān)中斷指令,對各個中斷源的允許和屏蔽是由內(nèi)部的中斷允許寄存器IE的各位來控制的。中斷允許寄存器IE的字節(jié)地址為A8H,可以進行位尋址,各位的定義如圖3-6所示。IED7D6D5D4D3D2D1D0(A8H)EAET2ESET1EX1ET0EX0圖3-6中斷允許寄存器IE各項說明具體如下。EA:中斷允許總控位。ET2:定時器/計數(shù)器T2的溢出中斷允許位,只用于52子系列,51子系列無此位。ES:串行口中斷允許位。ET1:定時器/計數(shù)器T1的溢出中斷允許位。EX1:外部中斷的中斷允許位。ET0:定時器/計數(shù)器T0的溢出中斷允許位。EX0:外部中斷的中斷允許位。如果置“1”,則開放的相應的中斷;如果清“0”,則禁止相應的中斷。系統(tǒng)復位時,中斷允許寄存器IE的內(nèi)容為00H,如果要開放某個中斷源,則必須使IE中的總控位置位和對應的中斷允許位置“1”。3)優(yōu)先級控制MCS-51單片機有5個中斷源,為了處理方便,每個中斷源有兩級控制:高優(yōu)先級和低優(yōu)先級。通過由內(nèi)部的中斷優(yōu)先級寄存器IP來設(shè)置,中斷優(yōu)先級寄存器IP的字節(jié)地址為B8H,可以進行位尋址,各位定義如圖3-7所示。IPD7D6D5D4D3D2D1D0(B8H)PT2PSPT1PX1PT0PX0圖3-7中斷優(yōu)先級寄存器IP各項說明具體如下。PT2:定時器/計數(shù)器T2的中斷優(yōu)先級控制位,只用于52子系列。PS:串行口的中斷優(yōu)先級控制位。PT1:定時器/計數(shù)器T1的中斷優(yōu)先級控制位。PX1:外部中斷的中斷優(yōu)先級控制位。PT0:定時器/計數(shù)器T0的中斷優(yōu)先級控制位。PX0:外部中斷的中斷優(yōu)先級控制位。如果某位被置“1”,則對應的中斷源被設(shè)為高優(yōu)先級;如果某位被清零,則對應的中斷源被設(shè)為低優(yōu)先級。對于同級中斷源,系統(tǒng)有默認的優(yōu)先權(quán)順序,默認的優(yōu)先權(quán)順序如表3-1所示。表3-1同級中斷源的優(yōu)先級順序中斷源優(yōu)先級順序外部中斷0定時/計數(shù)器T0中斷外部中斷1定時/計數(shù)器T1中斷串行口中斷定時/計數(shù)器T2中斷最高最低通過中斷優(yōu)先級寄存器IP改變中斷源的優(yōu)先級順序可以實現(xiàn)兩個方面的功能:改變系統(tǒng)中斷源的優(yōu)先級順序和實現(xiàn)二級中斷嵌套。通過設(shè)置中斷優(yōu)先級寄存器IP能夠改變系統(tǒng)默認的優(yōu)先級順序。例如,要把外部中斷的中斷優(yōu)先級設(shè)為最高,其他的按系統(tǒng)默認的順序,則把PX1位設(shè)為1,其余位設(shè)為0,五個中斷源的優(yōu)先級順序就為:T0T1ES。3.2.2鐘芯片DS1302簡介DS1302時鐘芯片內(nèi)含有一個實時時鐘/日歷和31個字節(jié)靜態(tài)RAM,實時時鐘/日歷能提供2100年之前的秒、分、時、日、日期、月、年等信息,每月的天數(shù)和閏年的天數(shù)可自動調(diào)整,時鐘操作可通過AM/PM指示決定采用24小時或12小時格式。內(nèi)部含有31個字節(jié)靜態(tài)RAM,可提供用戶訪問。DS1302與單片機之間能簡單地采用同步串行的方式進行通信,使得管腳數(shù)量最少,與單片機通信只需RES(復位線)、I/O(數(shù)據(jù)線)和SCLK(串行時鐘)三根信號線;對時鐘、RAM的讀/寫,可以采用單字節(jié)方式或多達31個字節(jié)的字符組方式;工作電壓范圍寬:2.0~5.5V;與TTL兼容,VCC=5V;溫度范圍寬,可在-40C~+85C正常工作;采用主電源和備份電源雙電源供電,備份電源可由電池或大容量電容實現(xiàn);DS1302工作時功耗很低,保持數(shù)據(jù)和時鐘信息時功率小于1mW。DS1302可采用8腳DIP封裝或SOIC封裝,引腳圖如圖3-8所示。圖3-8DS1302的引腳圖引腳功能如下。X1、X2:32.768kHz晶振接入引腳。GND:地。:復位引腳,低電平有效。I/O:數(shù)據(jù)輸入/輸出引腳,具有三態(tài)功能。SCLK:串行時鐘輸入引腳。VCC1:電源1引腳。VCC2:電源2引腳。在單電源與電池供電的系統(tǒng)中,VCC1提供低電源并提供低功率的備用電源。雙電源系統(tǒng)中,VCC2提供主電源,VCC1提供備用電源,以便在沒有主電源時能保存時間信息以及數(shù)據(jù),DS1302由VCC1和VCC2兩者中較大的供電。3.2.3鍵盤的介紹1.鍵盤的基本原理鍵盤實際上是一組按鍵開關(guān)的集合,平時按鍵開關(guān)總是處于斷開狀態(tài),當按下鍵時它才閉合,按下后可向計算機產(chǎn)生一脈沖波。按鍵開關(guān)的結(jié)構(gòu)和產(chǎn)生的波形如圖3-9示。
(a)鍵盤開關(guān)的結(jié)構(gòu)(b)鍵盤產(chǎn)生的波形圖3-9鍵盤開關(guān)及波形示意圖在圖3-9(a)中,當按鍵開關(guān)未按下時,開關(guān)處于斷開狀態(tài),向P1.1輸入高電平;當按鍵開關(guān)按下時,開關(guān)處于閉合狀態(tài),向P1.1輸入低電平。因此可通過讀入P1.1的高低電平狀態(tài)來判斷按鍵開關(guān)是否按下。2.抖動的消除在單片機應用系統(tǒng)中,通常按鍵開關(guān)為機械式開關(guān),由于機械觸點的彈性作用,一個按鍵開關(guān)在閉合時往往不會馬上穩(wěn)定地接通,斷開時也不會馬上斷開,因而在閉合和斷開的瞬間都會伴隨著一串的抖動,如波形如圖3-10所示。按下鍵位時產(chǎn)生的抖動稱為前沿抖動,松開鍵位時產(chǎn)生的抖動稱為后沿抖動。如果對抖動不作處理,會出現(xiàn)按一次鍵而輸入多次,為確保按一次鍵只確認一次,必須消除按鍵抖動。消除按鍵抖動通常有硬件消抖和軟件消抖兩種方法。圖3-10抖動波形示意圖硬件消抖是通過在按鍵輸出電路上添加一定的硬件線路來消除抖動,一般采用R-S觸發(fā)器或單穩(wěn)態(tài)電路,圖3-11是由兩個與非門組成的R-S觸發(fā)器消抖電路。平時,沒有按鍵時,開關(guān)倒向下方,上面的與非門輸入高電平,下面的與非門輸入低電平,輸出端輸出高電平。當按下按鍵時,開關(guān)倒向上方,上面的與非門輸入低電平,下面的與非門輸入高電平,由于R-S觸發(fā)器的反饋作用,使輸出端迅速的變?yōu)榈碗娖剑粫a(chǎn)生抖動波形,而當按鍵松開時,開頭回到下方時也一樣,輸出端迅速的回到高電平而不會產(chǎn)生抖動波形。經(jīng)過圖中的R-S觸發(fā)器消抖后,輸出端的信號就變?yōu)闃藴实木匦尾āD3-11硬件消抖電路軟件消抖是利用延時程序消除抖動。由于抖動時間都比較短,因此可以這樣處理:當檢測到有鍵按下時,執(zhí)行一段延時程序跳過抖動,再去檢測,通過兩次檢測來識別一次按鍵,這樣就可以消除前沿抖動的影響。對于后沿抖動,由于在接收一個鍵位后,一般都要經(jīng)過一定時間再去檢測有無按鍵,這樣就自然跳過后沿抖動時間而消除后沿抖動了。當然在第二次檢測時有可能發(fā)現(xiàn)又沒有鍵按下,這是怎么回事呢?這種情況一般是線路受到外部電路干擾使輸入端產(chǎn)生干擾脈沖,這時就認為沒有鍵輸入。在單片機應用系統(tǒng)中,一般都采用軟件消抖。第4章軟件系統(tǒng)設(shè)計4.1軟件程序思想根據(jù)系統(tǒng)的功能將軟件程序劃分為以下幾個部分:系統(tǒng)主程序、DS1302驅(qū)動程序、LCD驅(qū)動程序。在主程序中調(diào)用DS1302驅(qū)動程序和LCD驅(qū)動程序,另外在主程序中還包含按鍵處理。4.2流程圖主程序流程圖如圖4-1所示,先是將LCD初始化,其次在LCD顯示日期和時間的提示信息,然后進入死循環(huán),在循環(huán)中先判斷是否有鍵按下,如按下K0鍵,則功能單元加1;如按下K1鍵,則根據(jù)功能單元的內(nèi)容把日期時間相應位加1;如按下K2鍵,則根據(jù)功能單元的內(nèi)容把日期時間相應位減1;并把修改后的日期時間寫入1302(在這個過程中注意日期時間的數(shù)據(jù)格式的轉(zhuǎn)換)。其次讀DS1302日歷時鐘寄存器,讀出的內(nèi)容存入日期、時間緩沖區(qū);最后把日期、時間緩沖區(qū)數(shù)轉(zhuǎn)化為ASCII碼放入LCD顯示緩沖區(qū)并調(diào)用LCD顯示程序顯示。圖4-1主程序流程圖4.3匯編語言源程序清單匯編語言程序:T_RSTBitP1.2 ;DS1302復位線引腳T_CLKBitP1.3 ;DS1302時鐘線引腳T_IOBitP1.4 ;DS1302數(shù)據(jù)線引腳RSBITP1.7 ;LCD1602控制線定義RWBITP1.6EBITP1.5K0BITP3.0 ;定義按鍵 K1BITP3.1K2BITP3.2;40h~46h存放"秒、分、時、日、月、星期、年"的初值;格式按寄存器中的格式;30h~36h存放1302讀出的秒、分、時、日、月、星期、年的大小。;37H單元為功能計數(shù)器。;********************************************* ORG 0000H AJMP MAIN ORG 0030HMAIN:MOVSP,#50H ACALLINIT MOVA,#80H ;寫入顯示緩沖區(qū)起始地址為第1行第1列開始顯示DATE: ACALLWC51R MOVA,#'D' ACALLWC51DDR MOVA,#'A' ACALLWC51DDR MOVA,#'T' ACALLWC51DDR MOVA,#'E' ACALLWC51DDR MOVA,#':' ACALLWC51DDR MOVA,#0C0H ;寫入顯示緩沖區(qū)起始地址為第2行第1列開始顯示TIME: ACALLWC51R MOVA,#'T' ACALLWC51DDR MOVA,#'I' ACALLWC51DDR MOVA,#'M' ACALLWC51DDR MOVA,#'E' ACALLWC51DDR MOVA,#':' ACALLWC51DDRREP:LCALL KEYSCAN ;調(diào)鍵盤程序修改日期時間 LCALL GET1302 ;讀取當前日期時間到40H~46HMOVR0,#40H;40H~46H日期時間格式轉(zhuǎn)換成日期時間數(shù)據(jù)放入30H~36H MOV R1,#30H MOV R2,#07REP1:MOV A,@R0 SWAP A ANL A,#0FH MOV B,#10 MUL AB MOV @R1,A MOV A,@R0 ANL A,#0FH ADD A,@R1 MOV @R1,A INC R0 INC R1 DJNZ R2,REP1MOVA,#86H ;寫入顯示緩沖區(qū)起始地址為第1行第7列開始顯示當前日期 ACALLWC51R MOV A,46H ;年拆分成十位與個位,轉(zhuǎn)換字符顯示 MOV B,#10H DIV AB ADD A,#30H ACALLWC51DDR MOV A,B ADD A,#30H ACALLWC51DDR MOVA,#'-' ACALLWC51DDR MOV A,44H ;月拆分成十位與個位,轉(zhuǎn)換字符顯示 MOV B,#10H DIV AB ADD A,#30H ACALLWC51DDR MOV A,B ADD A,#30H ACALLWC51DDR MOVA,#'-' ACALLWC51DDR MOV A,43H ;日拆分成十位與個位,轉(zhuǎn)換字符顯示 MOV B,#10H DIV AB ADD A,#30H ACALLWC51DDR MOV A,B ADD A,#30H ACALLWC51DDR MOVA,#'' ACALLWC51DDR MOVA,#0c6H ;寫入顯示緩沖區(qū)起始地址為第2行第7列開始顯示當前時間 ACALLWC51R MOV A,42H ;小時拆分成十位與個位,轉(zhuǎn)換字符顯示 MOV B,#10H DIV AB ADD A,#30H ACALLWC51DDR MOV A,B ADD A,#30H ACALLWC51DDR MOVA,#':' ACALLWC51DDR MOV A,41H ;分拆分成十位與個位,轉(zhuǎn)換字符顯示 MOV B,#10H DIV AB ADD A,#30H ACALLWC51DDR MOV A,B ADD A,#30H ACALLWC51DDR MOVA,#':' ACALLWC51DDR MOV A,40H ;秒拆分成十位與個位,轉(zhuǎn)換字符顯示 MOV B,#10H DIV AB ADD A,#30H ACALLWC51DDR MOV A,B ADD A,#30H ACALLWC51DDR LJMPREP;按鍵程序,無鍵按下返回,有鍵按下修改時間并寫入1302KEYSCAN:JNBK0,KEYSCAN0 JNBK1,KEYSCAN1 JNBK2,KEYSCAN2 RETKEYSCAN0:LCALLDL10MS JBK0,KEYOUTWAIT0: JNBK0,WAIT0 INC37H MOVA,37H CJNEA,#06H,KEYOUT MOV37H,#00 SJMPKEYOUTKEYSCAN1:LCALLDL10MS JBK1,KEYOUTWAIT1: JNBK1,WAIT1 MOVA,37H CJNEA,#01H,KSCAN11 INC36H MOVA,36H CJNEA,#100,KEYOUT MOV36H,#00 SJMPKEYOUTKSCAN11:CJNEA,#02H,KSCAN12 INC34H MOVA,34H CJNEA,#13,KEYOUT MOV34H,#01 SJMPKEYOUTKSCAN12:CJNEA,#03H,KSCAN13 INC33H MOVA,33H CJNEA,#32,KEYOUT MOV33H,#01 SJMPKEYOUTKSCAN13:CJNEA,#04H,KSCAN14 INC32H MOVA,32H CJNEA,#24,KEYOUT MOV32H,#00 SJMPKEYOUT KSCAN14:CJNEA,#05H,KEYOUT INC31H MOVA,31H CJNEA,#60,KEYOUT MOV31H,#00 SJMPKEYOUT KEYOUT:LCALLNUMTOTT ;調(diào)轉(zhuǎn)換程序把30H~36H日期時間數(shù)據(jù)轉(zhuǎn)換成期時間格式放入40H~46H LCALL SET1302 ;設(shè)定的日期時間寫入1302 RETKEYSCAN2:LCALLDL10MS JBK2,KEYOUTWAIT2: JNBK2,WAIT2 MOVA,37H CJNEA,#01H,KSCAN21 DEC36H MOVA,36H CJNEA,#0FFH,KEYOUT MOV36H,#99 SJMPKEYOUTKSCAN21:CJNEA,#02H,KSCAN22 DEC34H MOVA,34H CJNEA,#00H,KEYOUT MOV34H,#12 SJMPKEYOUTKSCAN22:CJNEA,#03H,KSCAN23 DEC33H MOVA,33H CJNEA,#00H,KEYOUT MOV33H,#31 SJMPKEYOUTKSCAN23:CJNEA,#04H,KSCAN24 DEC32H MOVA,32H CJNEA,#0FFH,KEYOUT MOV32H,#23 SJMPKEYOUTKSCAN24:CJNEA,#05H,KEYOUT DEC31H MOVA,31H CJNEA,#0FFH,KEYOUT MOV31H,#59 SJMPKEYOUTNUMTOTT:MOV R0,#40H ;30H~36H日期時間數(shù)據(jù)轉(zhuǎn)換成日期時間格式放入40H~46H MOV R1,#30H MOV R2,#07REP2: MOV A,@R1 MOV B,#10 DIV AB SWAP A ORL A,B MOV @R0,A INC R0 INC R1 DJNZ R2,REP2 ;WRITE子程序 ;功能:寫DS1302一字節(jié),寫入的內(nèi)容在B寄存器中 ;*********************************************WRITE:MOV50h,#8 ;一個字節(jié)有8個位,移8次INBIT1: MOVA,B RRCA ;通過A移入CY中 MOVB,A MOVT_IO,C ;移入芯片內(nèi) SETBT_CLK CLRT_CLK DJNZ50h,INBIT1 RET ;********************************************* ;READ子程序 ;功能:讀DS1302一個字節(jié),讀出的內(nèi)容在累加器A中 ;*********************************************READ:MOV50h,#8 ;一個字節(jié)有8個位,移8次OUTBIT1:MOVC,T_IO ;從芯片內(nèi)移到CY中 RRCA ;通過CY移入A中 SETBT_CLK CLRT_CLK DJNZ50h,OUTBIT1 RET ;************************************************************ ;SET1302子程序名 ;功能:設(shè)置DS1302初始時間,并啟動計時 ;調(diào)用:WRITE子程序 ;入口參數(shù):初始時間秒、分、時、日、月、星期、年在40h~46h單元 ;出口參數(shù):無 ;影響資源:ABR0R1R4R7 ;************************************************************SET1302:CLRT_RST CLRT_CLK SETBT_RST MOVB,#8EH ;控制命令字 LCALLWRITE MOVB,#00H ;寫操作前清寫保護位W LCALLWRITE SETBT_CLK CLRT_RSTMOVR0,#40H ;秒、分、時、日、月、星期、年數(shù)據(jù)在40h~46h單元 MOVR7,#7 ;共7個字節(jié) MOVR1,#80H ;寫秒寄存器命令S13021: CLRT_RST CLRT_CLK SETBT_RST MOVB,R1 ;寫入寫秒命令 LCALLWRITE MOVA,@R0 ;寫秒數(shù)據(jù) MOVB,A LCALLWRITE INCR0 ;指向下一個寫入的日歷、時鐘數(shù)據(jù) INCR1 ;指向下一個日歷、時鐘寄存器 INCR1 SETBT_CLK CLRT_RST DJNZR7,S13021 ;未寫完,繼續(xù)寫下一個 CLRT_RST CLRT_CLK SETBT_RST MOVB,#8EH ;控制寄存器 LCALLWRITE MOVB,#80H ;寫完后打開寫保護控制,WP置1 LCALLWRITE SETBT_CLK CLRT_RST ;結(jié)束寫入過程 RET ;************************************************************ ;GET1302子程序名 ;功能:從DS1302讀時間 ;調(diào)用:WRITE寫子程序,READ子程序 ;入口參數(shù):無 ;出口參數(shù):秒、分、時、日、月、星期、年保存在40h~46h單元 ;影響資源:ABR0R1R4R7 ;************************************************************GET1302:MOVR0,#40H MOVR7,#7 MOVR1,#81H ;讀秒寄存器命令G13021: CLRT_RST CLRT_CLK SETBT_RST MOVB,R1 ;寫入讀秒寄存器命令 LCALLWRITE LCALLREAD MOV@R0,A ;存入讀出數(shù)據(jù) INCR0 ;指向下一個存放日歷、時鐘的存儲單元 INCR1 ;指向下一個日歷、時鐘寄存器 INCR1 SETBT_CLK CLRT_RST DJNZR7,G13021 ;未讀完,讀下一個 RET ;LCD初始化子程序INIT: MOVA,#00000001H ;清屏 ACALLWC51R MOVA,#00111000B ;使用8位數(shù)據(jù),顯示兩行,使用5×7的字型 LCALLWC51R MOVA,#00001100B ;顯示器開,光標關(guān),字符不閃爍 LCALLWC51R MOVA,#00000110B;字符不動,光標自動右移一格 LCALLWC51R RET ;檢查忙子程序F_BUSY:PUSHACC ;保護現(xiàn)場 MOVP2,#0FFH CLRRS SETBRWWAIT: CLRE SETBE JBP2.7,WAIT ;忙,等待 POPACC;不忙,恢復現(xiàn)場 RET ;寫入命令子程序WC51R: ACALLF_BUSY CLRE CLRRS CLRRW SETBE MOVP2,ACC CLRE RET ;寫入數(shù)據(jù)子程序WC51DDR:ACALLF_BUSY CLRE SETBRS CLRRW SETBE MOVP2,ACC CLRE RET ;延時10MS子程序DL10MS:MOVR6,#14HDL1:MOVR7,#0FBHDL2: DJNZR7,DL2 DJNZR6,DL1 RET END第5章系統(tǒng)仿真5.1KEIL51介紹KeilμVisionIDE是美國KeilSoftware公司出品的51系列單片機C語言集成開發(fā)系統(tǒng),與匯編語言相比,C語言在功能上,結(jié)構(gòu)性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學易用。用過匯編語言后再使用
C
語言來開發(fā),這種體會將會更加深刻。KeilμVisionIDE開發(fā)系統(tǒng)提供豐富的庫函數(shù)和功能強大的集成開發(fā)調(diào)試工具,全Windows界面。另外重要的一點是,只要看一下編譯后生成的匯編代碼,就能體會到KeilμVisionIDE生成的目標代碼效率非常高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。另外,KeilμVisionIDE也能識別匯編程序。下面將詳細介紹KeilμVisionIDE開發(fā)系統(tǒng)各部分的功能和使用。在KeilμVisionIDE中,管理文件使用的是項目方式而不是以前的單一文件的模式,C51源程序、匯編源程序、頭文件等都放在項目文件里統(tǒng)一管理。使用步驟為:1.項目文件的建立;2.給項目添加程序文件;3.編譯、連接項目,形成目標文件;4.運行調(diào)試觀察結(jié)果;5.仿真環(huán)境的設(shè)置。5.2PROTEUS介紹ProteusISIS是英國Labcenter公司開發(fā)的電路分析與實物仿真軟件。它運行于Windows操作系統(tǒng)上,可以仿真、分析(SPICE)各種模擬器件和集成電路,該軟件的特點是:①實現(xiàn)了單片機仿真和SPICE電路仿真相結(jié)合。具有模擬電路仿真、數(shù)字電路仿真、單片機及其外圍電路組成的系統(tǒng)的仿真、RS232動態(tài)仿真、I2C調(diào)試器、SPI調(diào)試器、鍵盤和LCD系統(tǒng)仿真的功能;有各種虛擬儀器,如
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 詳細供貨方案及質(zhì)量保證措施
- 施工場地治安保衛(wèi)管理計劃
- 2024年中國保冷袋市場調(diào)查研究報告
- 2025至2030年中國脫水白洋蔥片行業(yè)投資前景及策略咨詢研究報告
- 2025至2030年中國管制西林瓶行業(yè)投資前景及策略咨詢研究報告
- 委外加工管理制度流程
- 2025至2030年中國可再噴漆防撞膠光面噴膠槍行業(yè)投資前景及策略咨詢研究報告
- 2025至2030年中國不銹鋼真空保鮮罐行業(yè)投資前景及策略咨詢研究報告
- 2024年中國1-甲胺-4-溴蒽醌市場調(diào)查研究報告
- 房地產(chǎn)行業(yè)見習銷售管理制度
- 現(xiàn)澆鋼筋混凝土整體式肋梁樓蓋結(jié)構(gòu)-課程設(shè)計
- 掛籃施工及安全控制連續(xù)梁施工安全培訓課件
- 學生學習概覽StudentLearningProfile
- 小班數(shù)學《認識1到10的數(shù)字》課件
- 手工花項目策劃書
- 循環(huán)系統(tǒng)病癥的臨床思維
- 煙花爆竹經(jīng)營
- 手消毒液使用率低品管圈課件
- 總裁辦公室度工作總結(jié)
- 2023年中考語文二輪復習:標點符號 真題練習題匯編(含答案解析)
- 偏身舞蹈癥的護理查房
評論
0/150
提交評論