課程設(shè)計電子萬歷DSC溫度BLCD顯示鬧鐘_第1頁
課程設(shè)計電子萬歷DSC溫度BLCD顯示鬧鐘_第2頁
課程設(shè)計電子萬歷DSC溫度BLCD顯示鬧鐘_第3頁
課程設(shè)計電子萬歷DSC溫度BLCD顯示鬧鐘_第4頁
課程設(shè)計電子萬歷DSC溫度BLCD顯示鬧鐘_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、電子專業(yè)綜合設(shè)計報告設(shè)計名稱: 基于單片機(jī)的多功能電子萬年歷系統(tǒng)設(shè)計姓 名:學(xué) 號: 班 級:指導(dǎo)教師:起止日期:西南科技大學(xué)信息工程學(xué)院制綜 合 設(shè) 計 任 務(wù) 書學(xué)生班級:學(xué)生姓名:學(xué)號:設(shè)計名稱:基于單片機(jī)的多功能電子萬年歷系統(tǒng)設(shè)計起止日期: 指導(dǎo)教師:設(shè)計要求:基本要求:1.查閱有關(guān)資料,掌握單總線的基本通信協(xié)議及C語言的編程方法;STC89C52微控制器控制DS12CR887和DS18B20的工作方式,完成多功能電子萬年歷系統(tǒng)的設(shè)計,顯示部分采用LCD12864。要求日期可顯示農(nóng)歷,并能提示農(nóng)歷節(jié)日和陽歷節(jié)日;要求電子萬年歷具有鬧鐘功能并能實時顯示當(dāng)前環(huán)境溫度;3.對系統(tǒng)的工作的可靠

2、性進(jìn)和穩(wěn)定性行分析,得出結(jié)論;4.撰寫設(shè)計報告。綜 合 設(shè) 計 學(xué) 生 日 志時間設(shè)計內(nèi)容熟悉題目,對研究題目做分析,具體劃分為幾個模塊LCD12864顯示屏的顯示模塊的實現(xiàn)DS18B20溫度傳感器模塊的研究對DS18B20和LCD12864聯(lián)合設(shè)計溫度顯示系統(tǒng)閱讀DS12CR887的數(shù)據(jù)手冊,了解芯片的功能實現(xiàn)根據(jù)DS12CR887數(shù)據(jù)手冊完成基本的驅(qū)動程序在C52單片機(jī)最小系統(tǒng)的的基礎(chǔ)上搭建電子萬年歷硬件系統(tǒng),完成芯片焊接及連線上網(wǎng)查閱陽歷轉(zhuǎn)換陰歷的相關(guān)算法完成陽歷轉(zhuǎn)換陰歷相關(guān)算法在單片機(jī)的程序設(shè)計以及節(jié)日的顯示程序設(shè)計程序?qū)崿F(xiàn)在LCD12864上顯示時間,日期,農(nóng)歷,節(jié)日,溫度等功能完成

3、鬧鐘程序設(shè)計調(diào)試硬件系統(tǒng)和軟件系統(tǒng)解決系統(tǒng)BUG完成課程設(shè)計報告基于單片機(jī)的多功能電子萬年歷系統(tǒng)設(shè)計摘要:電子萬年歷是一種通過STC52C89RC單片機(jī)編程來對不同電子芯片件進(jìn)行控制、執(zhí)行、數(shù)據(jù)讀取、和讀取的數(shù)據(jù)結(jié)果的顯示的電子產(chǎn)品。其主要功能是顯示公歷日期、農(nóng)歷日期、當(dāng)前時間、節(jié)假日顯示、鬧鐘和實時溫度等許多功能,并能夠進(jìn)行時間的調(diào)節(jié)和設(shè)定鬧鐘。電子萬年歷廣泛應(yīng)用于各種公共場所、商業(yè)場合和居民家庭。由于其走時準(zhǔn)確、誤差極小、外觀時尚等特點受到了廣泛的歡迎。我的設(shè)計就是用目前我們掌握的相關(guān)知識,如:單片機(jī)、模擬電路、數(shù)字電路等,進(jìn)行一個簡單電子萬年歷的設(shè)計和開發(fā)調(diào)試。關(guān)鍵詞:單片機(jī);溫度測量;

4、實時時鐘MCU-based design of electronic calendar systemAbstract:Electronic calendar is a kind of by STC52C89RC micro-controller programming for different electronic chip control, execution, read data, and display the data according to the results of electronic products.Its main function is to show the re

5、al-time calendar date, date of the lunar calendar, the current time, holiday, alarm clock and many functions such as real-time temperature, and adjust time and set the alarm clock.Electronic calendar is widely used in various public places, business and households.Walking because of its characterist

6、ics such as accurate, little error, fashion appearance was widely welcomed.My design is using at the moment we grasp the relevant knowledge, such as MCU, analog circuit, digital circuit, etc., for a simple design and development of the electronic calendar debugging.Keywords:Microcontroller,Temperatu

7、re measurement, Real-time clock 目 錄一設(shè)計目的和意義1二控制要求1三方案設(shè)計與論證1時鐘芯片的選定1溫度芯片2液晶顯示屏3主控芯片3四系統(tǒng)設(shè)計3系統(tǒng)框架3系統(tǒng)具體模塊設(shè)計4單片機(jī)核心控制模塊4實時時鐘電路模塊4數(shù)字溫度傳感器模塊10顯示屏模塊13農(nóng)歷模塊15軟件設(shè)計流程16五設(shè)計結(jié)果及分析18電路原理圖18軟件調(diào)試18軟件調(diào)試過程18硬件調(diào)試18結(jié)束語19參考文獻(xiàn)20一、設(shè)計目的和意義隨著電子技術(shù)的不斷發(fā)展,單片機(jī)技術(shù)在設(shè)計中所體現(xiàn)在出來的優(yōu)勢越來越明顯,它不僅是電子信息類專業(yè)的一個重要部分,而且在其它類專業(yè)工程中也是不可缺少的。廣泛地應(yīng)用于家電、工業(yè)過程控制

8、、儀器儀表、智能武器、航空和空間飛行器等領(lǐng)域發(fā)展更是迅速,已成為新一代一些電子設(shè)備不可缺少的核心部件。目前世界上單片機(jī)年產(chǎn)量已達(dá)十多億片,通常是當(dāng)年微處理器產(chǎn)量的4-5倍以上。用最少的芯片就能實現(xiàn)最強(qiáng)大的功能??梢韵胍?,這是將來電子產(chǎn)品的主流方向,它將無可置疑地一步步取代其它同類產(chǎn)品,其數(shù)量之大和應(yīng)用面之廣,是其它任何類型的計算機(jī)所無法比擬的。單片機(jī)是應(yīng)工業(yè)測控需要而誕生的。它把計算機(jī)最基本的功能電路,如CPU、程序存儲器、數(shù)據(jù)存儲器、I/O接口、定時、計數(shù)器、中斷系統(tǒng)等集成到一塊芯片上,形成單片形態(tài)的計算機(jī)。單片機(jī)通常以最小系統(tǒng)運行,在家用電器中和常用的智能儀器儀表中常??梢浴皢纹惫ぷ?,同

9、時單片機(jī)在我們?nèi)粘I钪幸步?jīng)常見到,如電子表、舞廳里的一些燈光的控制、一些招牌燈光的控制、工廠一些自動控制等。將來只要有自動控制方面的都會離不開單片機(jī)的開發(fā)和使用,對于現(xiàn)代的自動化控制起著舉足輕重的作用。為了順應(yīng)形勢發(fā)展的需要,我們學(xué)習(xí)了單片機(jī)課程,此次用液晶顯示萬年歷和時間設(shè)置以及顯示測溫度的數(shù)據(jù)對單片機(jī)的學(xué)習(xí)起到了很好的鞏固作用,尤其是對C語言程序的設(shè)計。2、 控制要求顯示公歷19012099;要求具有鬧鐘功能,在設(shè)定的鬧鐘時間點蜂鳴器響起;時鐘精度小于等于正負(fù)0.2秒天;沒有外接電源的情況下保持時鐘運行十年以上;實現(xiàn)按鍵控制調(diào)時電子萬年歷的年、月、日、時、分、星期、以及24小時制時間顯示

10、、定時鬧鐘。三、設(shè)計方案論證3.1 時鐘芯片的選定DS12CR887的功能簡介:DS12CR887實時時鐘芯片功能豐富,可以用來直接代替IBM-PC上的時鐘日歷芯片DS12887,同時,它的管腳也和MC146818B、DS12887相兼容(芯片引腳圖如圖1所示)。由于DS12CR887能夠自動產(chǎn)生世紀(jì)、年、月、日、時、分、秒等時間信息,其內(nèi)部又增加了世紀(jì)寄存器,從而利用硬件電路解決子“千年”問題;DS12CR887中自帶有鋰電池,外部掉電時,其內(nèi)部時間信息還能夠保持10年之久;對于一天內(nèi)的時間記錄,有12小時制和24 小時制兩種模式。在12小時制模式中,用AM和PM區(qū)分上午和下午;時間的表示方

11、法也有兩種,一種用二進(jìn)制數(shù)表示,一種是用BCD碼表示;DS12CR887中帶有128字節(jié)RAM,其中有11字節(jié)RAM用來存儲時間信息,4字節(jié)RAM用來存儲DS12CR887的控制信息,稱為控制寄存器,113字節(jié)通用RAM使用戶使用;此外用戶還可對DS12CR887進(jìn)行編程以實現(xiàn)多種方波輸出,并可對其內(nèi)部的三路中斷通過軟件進(jìn)行屏蔽?;谝陨蟽?yōu)點我們決定選用DS12CR887芯片來完成我們的設(shè)計。圖1 DS12C887芯片溫度芯片DS18B20是數(shù)字式溫度傳感器,采用單總線通信協(xié)議。DS18B20具有體積小,硬件開銷低,抗干擾能力強(qiáng),精度高附加功能強(qiáng),封裝形式多樣等特點(芯片如圖2所示)。適合各種

12、狹小空間內(nèi)設(shè)備的數(shù)字測溫和控制。同時單線可掛接多個元件,因為每個元件都有唯一的一個64位光刻ROM編碼,家族碼為28H,可以多個也可單個操作。電壓測量范圍是3.0V到5.5V。內(nèi)部含有EEPROM,其報警上、下限溫度值和設(shè)定的分辨率倍數(shù)在芯片掉電的情況不丟失。并且內(nèi)部帶有AD轉(zhuǎn)換電路,技術(shù)較為成熟,所以采用此芯片最為合適。圖2 DS18B20芯片液晶顯示屏在顯示方面,由于這次設(shè)計的萬年歷系統(tǒng)需要顯示中文的農(nóng)歷、節(jié)假日等各種信息,為了便于控制、顯示中文字符,我們選擇了帶有中文字庫的基于Sitronix公司的ST7920芯片的液晶顯示屏LCD12864。主控芯片STC89C52單片機(jī)作為核心控制體

13、,該單片機(jī)具有高可靠,超低價,低功耗,無法解密等優(yōu)點。該單片機(jī)屬于雙列直插式封裝的DIP40口管腳。具有4個輸入輸出端口,分別為PORT0,PROT1,PROT2,PROT3,其中P0口是一組8位漏極開路型雙向IO口,校驗時,要求接上拉電阻。其他三個內(nèi)部有30K的電阻,所以不用再外接電阻。此單片機(jī)具有6個中斷,其中包括三個定時器中斷,二個外部中斷,一個串口中斷,為全雙工通信口。內(nèi)部有靜態(tài)非易失E2PROM和看門狗。片內(nèi)含8Kbytes的可反復(fù)檫寫的只讀程序存儲器(E2PROM)和256bytes的隨機(jī)存取數(shù)據(jù)存儲器(RAM),功能強(qiáng)大,適合許多較為復(fù)雜的控制應(yīng)用場合。相比較其他芯片來說比較適合

14、學(xué)生試驗所用,故采用此單片機(jī)作為核心控制芯片。4、 系統(tǒng)設(shè)計系統(tǒng)框架此設(shè)計即液晶上顯示年、月、日、時、分、秒、星期及溫度,電路包括以下幾個部分:鍵盤、單片機(jī)、溫度傳感器、顯示電路以及蜂鳴器警報電路。圖3 系統(tǒng)框架各部分說明:鍵盤用來校正,調(diào)節(jié)液晶上顯示的時間。單片機(jī)通過輸出各種電脈沖信號來驅(qū)動控制各部分正常工作。溫度傳感器用來采集溫度值。單片機(jī)發(fā)送的信號經(jīng)過顯示電路通過譯碼最終在液晶上顯示出來。時鐘芯片給單片機(jī)提供時間信息單片機(jī)可以對時鐘芯片里面的內(nèi)容進(jìn)行修改警報器能夠?qū)︳[鐘定時時間做出提醒系統(tǒng)具體模塊設(shè)計單片機(jī)核心控制模塊核心控制器件選用STC89C52單片機(jī)。STC89C52單片機(jī)為40管

15、腳雙列直插芯片,它是一種高性能,低功耗的8位CMOS微處理器芯片,市場應(yīng)用最多。而且價格便宜,控制方便,便于應(yīng)用有4個I/O口分別為P1,P2,P3,P4。其中每一個管腳都能做獨立的輸入輸出管腳,它的第9腳位復(fù)位管腳,接上電容和上拉電阻再帶個開關(guān)構(gòu)成復(fù)位電路。18,19管腳接外部晶振和兩個微調(diào)電容構(gòu)成外部晶振電路。單片機(jī),復(fù)位電路,晶振,5V電源構(gòu)成單片機(jī)最小系統(tǒng)。其中與AT89S52單片機(jī)管腳相兼容。實時時鐘電路模塊時鐘模塊選用DS12CR887芯片,DS12CR887芯片能夠自動產(chǎn)生世紀(jì),年,月,日,星期,時,分,秒信息,閏年補償至2100年,具有鬧鐘功能。內(nèi)部自帶鋰電池,在外部掉電時信息

16、不丟失,并且能精確走10年之久。同時DS12CR887能自動檢測電源故障和切換電路,有工業(yè)級溫度范圍。此芯片可以廣泛應(yīng)用于對環(huán)境要求嚴(yán)格的控制系統(tǒng)中。如嵌入式系統(tǒng),電表,安全系統(tǒng),網(wǎng)絡(luò)集線器,網(wǎng)橋,路由器。D12C887電路圖,工作電源采用5V。第一管腳(MOT)是Motorola或Intel總線時序選擇端,利用此引腳選擇兩種總線類型中的一種,連接到VCC時選擇Motorola總線時序,接GND或懸空選擇Intel總線時序。該引腳內(nèi)部有一個下拉電阻。D0到D7為雙向地址/數(shù)據(jù)復(fù)用總線。地址于總線周期的開始發(fā)送到總線上。并由AS信號的下降沿鎖存到DS12CR887中。所寫的數(shù)據(jù)由DS信號的下降沿

17、(Motorola時序)或R/W信號的上升沿(Intel時序)鎖存。讀周期中,DS12CR887于DS信號的后期(Motorola時序中DS和R/W均為高,Intel時序中DS為低、R/W為高)將數(shù)據(jù)發(fā)送到總線上。讀周期結(jié)束后,總線恢復(fù)到高阻狀態(tài),同時DS在Motorola時序中變低,在Intel時序中變高。12腳為GND。13腳叫CS片選信號輸入,片選信號低電平有效,在訪問DS12CR887的總線周期內(nèi)必須保持低電平Intel時序中的DS和R/W信號工作期間,CS必須保持有效,在CS信號無效情況下,總線操作將鎖存地址,不能訪問芯片。當(dāng)VCC低于Vpf電壓時,DS12CR887內(nèi)部通過禁止CS

18、輸入來拒絕訪問,此舉旨在斷電時保護(hù)RTC數(shù)據(jù)和RAM數(shù)據(jù)。所以在訪問期間CS片選信號應(yīng)保持低電平。14管腳AS地址選通輸入。有低變?yōu)楦叩牡刂愤x通脈沖用來分離總線信號。在AS信號的下降沿,地址鎖存到DS12CR887內(nèi),無論CS信號是否有效,AS的下一個上升沿都將清除地址,地址選通信號必須先于每個讀或?qū)懺L問。如果在CS信號無效的情況下執(zhí)行了讀或?qū)懖僮鳎瑒t必須在CS信號有效時且在讀或?qū)懺L問之前,從新發(fā)送一次地址選通信號。15管腳R/W讀/寫輸入。R/W引腳有兩種操作模式,在MOT引腳接VCC的Motorola時序中,R/W電平用來指示當(dāng)前周期是讀還是寫。DS為高時,R/W為高電平表示讀周期,R/W

19、為低電平則表示寫周期,在MOT引腳接GND的Intel時序中,R/W為低電平有效,在此模式下,R/W引腳與普通RAM的寫時能信號(WE)工作方式類似,在信號的上升沿鎖存數(shù)據(jù)。17管腳DS數(shù)據(jù)選通或讀輸入,DS引腳根據(jù)MOT引腳電平有兩種模式,MOT引腳接VCC時,選擇Motorola總線時序,此模式下,總線周期的后期DS為正脈沖,稱作數(shù)據(jù)選通脈沖,在讀周期中,DS表明DS12CR887將要驅(qū)動雙向總線,在寫周期,DS信號的下降沿使使DS12CR887鎖存所寫的數(shù)據(jù),當(dāng)MOT接GND時,選擇Intel總線時序,DS表示讀取DS12CR887數(shù)據(jù)驅(qū)動總線的時間周期,此模式下,DS引腳與普通RAM的

20、輸出使能信號(OE)工作方式類似。18管腳RESET-復(fù)位輸入,低電平有效RESET引腳對時鐘、日歷或RAM不起作用,上電時可將RESET引腳首先保持低電平,以等待電源穩(wěn)定下來,保持低電平時間可根據(jù)應(yīng)用需要而定,但是,如果上電時使用RESET信號,RESET保持低電平時間應(yīng)當(dāng)超過200ms,以保證控制DS12CR887上電時的內(nèi)部定時器結(jié)束,當(dāng)RESET為低電平,而且VCC大于VPF時,將產(chǎn)生以下操作:A周期性中斷使能(PIE)位清0;B鬧鐘中斷使能(AIE)位清0;C更新結(jié)束中斷使能(UIE)位清0;D周期中斷標(biāo)志(PF)位清0;E鬧鐘中斷標(biāo)志(AF)位清0;F更新結(jié)束中斷標(biāo)志(UF)位清0

21、;G中斷請求狀態(tài)標(biāo)志(IRQF)位清0;H IRQ引腳置為高阻狀態(tài);I直到RESET恢復(fù)為高電平才能訪問器件;J方波使能(SQWE)位清0。在典型應(yīng)用中,將RESET與VCC連接。使得DS12CR887在進(jìn)入或退出電源失效狀態(tài)時不影響任何控制寄存器的值。19管腳IRQ中斷請求輸出。DS12CR887的IRQ引腳低電平有效,可用作處理器的中斷請求輸入,只要引起中斷的狀態(tài)位置位,并且相應(yīng)中斷使能位也置位,IRQ將一直保持低電平。處理器程序通常讀取C寄存器來清除IRQ引腳輸出,RESET引腳也會清除未處理的中斷,沒有中斷發(fā)生時IRQ為高阻狀態(tài),可將多個中斷器件接到一條IRQ總線上,只要他們均為漏極開

22、路輸出,IRQ引腳為漏極開路輸出,需要使用一個上拉電阻與VCC相連。23腳SQW方波輸出,因為我們此實驗中不需要方波輸出,故不接。VCC主電源的DC電源引腳。VCC在正常范圍時,可訪問器件的所有功能,并能進(jìn)行數(shù)據(jù)讀寫,如果VCC低于VPF,則禁止讀和寫。DS12CR887采用的是并行通信協(xié)議,8位同時傳遞,對應(yīng)到D0D7八位端口。D0到D7接P0口,作為地址/數(shù)據(jù)選通復(fù)用總線。并行通信控制簡單,傳輸速度快,適合近距離傳輸。圖4 INTEL總線寫時序圖5 INTEL總線讀時序Intel總線如所示,編寫程序如圖時序圖所示。因為其時序延時都為納秒級的,軟件執(zhí)行一句簡單語句為微秒級。所以在編寫程序是可

23、直接跳過,不用做軟件延時。對此相對降低了軟件編寫的難度。DS12CR887的讀寫操作代碼:void ds_write(unsigned char add,unsigned char date)/寫DS12CR887的數(shù)據(jù)DS_CS=0;DS_DS=1;DS_RW=1;DS_AS=1;Ds_Bus=add;/讀入寫數(shù)據(jù)的地址 DS_AS=0;DS_RW=0;Ds_Bus=date;/讀入數(shù)據(jù)DS_RW=1;DS_AS=1;DS_CS=1;unsigned char ds_read(unsigned char add)/讀取DS12CR887的數(shù)據(jù)unsigned char z;DS_CS=0;D

24、S_RW=1;DS_DS=1;DS_AS=1;Ds_Bus=add;/讀入從芯片讀取數(shù)據(jù)的地址DS_AS=0;DS_DS=0;Ds_Bus=0xff;/將數(shù)據(jù)總線全部置高電平z=Ds_Bus;/讀取數(shù)據(jù)DS_DS=1;DS_AS=1;DS_CS=1;return z;DS12CR887有4個控制寄存器,在任何時間都可以進(jìn)行訪問,即使處于更新周期,這里主要使用寄存器A和寄存器B。寄存器A字節(jié)的內(nèi)容表1:表1寄存器A內(nèi)容BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0UIPDV2DV1DV0RS3RS2RS1RS0UIP:更新標(biāo)志位。為只讀位且不受復(fù)位操作的影響,為1時,表示即將發(fā)

25、生的數(shù)據(jù)更新;為0時,表示至少244US不會更新數(shù)據(jù)。當(dāng)UIP為0時,可以獲得所有時鐘、日歷、鬧鐘信息。將寄存器B中的SET位置1可以限制任何數(shù)據(jù)更新操作,并且清除UIP位。DV2、DV1、DV0:此3位為010時將打開晶振,并開始計時。RS3、RS2、RS1、RS0:用于設(shè)置周期性中斷產(chǎn)生的時間周期和輸出方波的頻率。寄存器B字節(jié)的內(nèi)容表2:表2 寄存器B內(nèi)容BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0SETPIEAIEUIESQWEDM24/12DSESET:設(shè)置位,可讀寫,不受復(fù)位操作影響。為0時,不處于設(shè)置狀態(tài),芯片進(jìn)行正常時間數(shù)據(jù)更新;為1時,抑制數(shù)據(jù)更新,可以通過

26、程序設(shè)定時間和日歷信息。PIE:周期性中斷使能位,可讀寫,復(fù)位時清除此位。為1時,允許寄存器C中的周期中斷標(biāo)志位PF,驅(qū)動/IRQ引腳為低產(chǎn)生中斷信號輸出,中斷信號產(chǎn)生的周期由RS3RE0決定。AIE:鬧鐘中斷使能位,可讀寫。為1時,允許寄存器C中的鬧鐘中斷標(biāo)志位AF、鬧鐘發(fā)生時就會通過/IRQ引腳產(chǎn)生中斷輸出。UIE:數(shù)據(jù)更新結(jié)束中斷使能位,可讀寫。復(fù)位或者SET位為1時清除此位。為1時允許寄存器C中的更新結(jié)束標(biāo)志UF,更新結(jié)束時就會通過/IRQ引腳產(chǎn)生中斷輸出。SQWE:方波使能位,可讀寫,復(fù)位時清除此位。為0時,SQW引腳保持低電平;為1時,SQW引腳輸出方波信號,其頻率由RS3RS0決

27、定。DM:數(shù)據(jù)模式位,可讀寫,不受復(fù)位操作影響。為0時,設(shè)置時間、日歷信息為二進(jìn)制數(shù)據(jù);為1時,設(shè)置為BCD碼數(shù)據(jù)。24/12:時間模式設(shè)置為,可讀寫,不受復(fù)位操作影響。為0時,設(shè)置為12小時模式;為1時,設(shè)置為24小時模式。DSE:為1時,會引起兩次特殊的時間更新;4月的第一個星期日凌晨1:59:59會直接更新到3:00:00,10月的最后一個星期日凌晨1:59:59會直接更新到1:00:00;為0時,時間信息正常更新,此位可讀寫,不受復(fù)位操作影響。在使用DS12CR887時鐘芯片前需要對芯片的寄存器進(jìn)行初始化操作,初始化代碼如下:void ds_int()DS_AS=0;DS_DS=0;D

28、S_RW=0;ds_write(0x0a,0x20);/DS12CR887寄存器A,開啟時鐘振蕩器ds_write(0x0b,0x22);/初始化寄存器B,設(shè)置數(shù)據(jù)模式為二進(jìn)制,24小時制,使用鬧鐘/中斷,關(guān)閉夏令時通過軟件編程將讀到的信息顯示到12864液晶中,顯示世紀(jì),年,月,日,星期,小時,分,秒。通過設(shè)置按鍵可以進(jìn)行時間調(diào)節(jié),在調(diào)節(jié)時間時時鐘暫時停止走,再通過功能鍵回到正常工作狀態(tài)中,并且具有鬧鐘設(shè)定功能,但在設(shè)定鬧鐘時期內(nèi)部時間仍然在走。當(dāng)時,分,秒,相符時通過蜂寧器進(jìn)行報警,再設(shè)置按鍵關(guān)閉鬧鐘。實現(xiàn)隨意控制鬧鐘的開啟和關(guān)閉。數(shù)字溫度傳感器模塊數(shù)字溫度傳感器選用DS18B20,采用單

29、總線通信協(xié)議。DS18B20主要特性有:1、 適應(yīng)電壓范圍更寬,電壓范圍:3.05.5V,在寄生電源方式下可由數(shù)據(jù)線供電。2、獨特的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊。3、DS18B20支持多點組網(wǎng)功能,多個DS18B20可以并聯(lián)在唯一的三線上,實現(xiàn)組網(wǎng)多點測溫4、DS18B20在使用中不需要任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)。5、溫范圍55125,在-10+85。,可實現(xiàn)高精度測溫。7、在9位分辨率時最多在93.75ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字,12位分辨率時最多在750ms內(nèi)把溫度值轉(zhuǎn)換為數(shù)字,

30、速度更快。8、測量結(jié)果直接輸出數(shù)字溫度信號,以“一線總線”串行傳送給CPU,同時可傳送CRC校驗碼,具有極強(qiáng)的抗干擾糾錯能力。9、負(fù)壓特性:電源極性接反時,芯片不會因發(fā)熱而燒毀,但不能正常工作。由于采用單總線數(shù)據(jù)傳輸方式,DS18B20的數(shù)據(jù)I/O均由同一條線完成,因此,對讀寫的操作時序要求嚴(yán)格。為了保證DS18B20的嚴(yán)格I/O時序。需要做較精確的延時。其讀操作時序如圖6,寫操作時序如圖7,初始化程序如圖8。圖6 讀操作時序圖7 寫時序圖圖8 初始化時序DS18B20的讀寫操作以及初始化代碼:void Init_DS18B20(void)unsigned char x=0;DQ = 1;/D

31、Q復(fù)位Delay(8);/稍做延時DQ = 0;/單片機(jī)將DQ拉低Delay(80);/精確延時 大于 480usDQ = 1;/拉高總線Delay(14);x=DQ;/稍做延時后 如果x=0則初始化成功 x=1則初始化失敗Delay(20);unsigned char ReadOneChar(void)/讀一個字節(jié)函數(shù)unsigned char i=0;unsigned char dat = 0;for (i=8;i>0;i-)DQ = 0; / 給脈沖信號dat>>=1;/DAT向右移一位,讀取下一位數(shù)據(jù)DQ = 1; / 給脈沖信號if(DQ)dat|=0x80;Del

32、ay(4);return(dat);void WriteOneChar(unsigned char dat)/寫一個字節(jié)函數(shù)unsigned char i=0;for (i=8; i>0; i-)DQ = 0;DQ = dat&0x01;Delay(5);DQ = 1;dat>>=1;/將dat向右移一位,依次寫入每一位數(shù)據(jù)顯示屏模塊LCD12864漢字圖形點陣液晶顯示模塊,可顯示漢字及圖形,內(nèi)置8192個中文漢字(16×16點陣)、128個字符(8×16點陣)及64×256點陣顯示RAM(GDRAM)。主要技術(shù)參數(shù)和顯示特性:電源:VD

33、D: 3.3V+5V(內(nèi)置升壓電路,無需負(fù)壓);顯示內(nèi)容:128列×64行與MCU接口:8位或4位并行/3位串行配置LED背光;多種軟件功能:光標(biāo)顯示、畫面移位、自定義字符、睡眠模式等,本次設(shè)計采用八位并行連接,寫數(shù)據(jù)時序圖如圖9:圖9 12864寫數(shù)據(jù)時序LCD12864寫指令、寫數(shù)據(jù)以及初始化代碼:void write_com(unsigned char cmdcode)/寫指令到LCD(底層)chk_busy();LCM_RS=0;LCM_RW=0;LCM_EN=1;/寫指令將RS,RW拉低,EN拉高Lcd_Bus=cmdcode;/讀取數(shù)據(jù)到總線Delay(5);/做一定延時

34、LCM_EN=0;/利用EN下降沿將總線數(shù)據(jù)寫入到顯示屏中Delay(5);void write_data(unsigned char Dispdata)/寫數(shù)據(jù)到LCD(底層)chk_busy();LCM_RS=1;LCM_RW=0;/寫數(shù)據(jù)將RS拉高,RW為零LCM_EN=1;Lcd_Bus=Dispdata;/將顯示數(shù)據(jù)寫入到總線上Delay(5);LCM_EN=0;/利用EN下降沿將總線數(shù)據(jù)寫入到顯示屏中Delay(5);voidlcm_init()/初始化LCD屏(被調(diào)用層)write_com(0x30); /選擇8bit數(shù)據(jù)流Delay(5);write_com(0x0c); /開

35、顯示(無游標(biāo)、不反白)Delay(5);write_com(0x01); /清除顯示,并且設(shè)定地址指針為00HDelay(5);4.2.5 農(nóng)歷轉(zhuǎn)換本設(shè)計采用查表的方法實現(xiàn)農(nóng)歷與公歷的轉(zhuǎn)換,公歷年對應(yīng)的農(nóng)歷數(shù)據(jù),每年三字節(jié),格式第一字節(jié)BIT7-4位表示閏月月份,值為0為無閏月,BIT3-0對應(yīng)農(nóng)歷第1-4月的大小,第二字節(jié)BIT7-0對應(yīng)農(nóng)歷第5-12月大小,第三字節(jié)BIT7表示農(nóng)歷第13個月,大小月份對應(yīng)的位為1表示本農(nóng)歷月大(30天),為0表示小(29天);第三字節(jié)BIT6-5表示春節(jié)的公歷月份,BIT4-0表示春節(jié)的公歷日期。部分轉(zhuǎn)換代碼如下。0x09,0x2d,0x47,/20080

36、x5C,0x95,0xBA,/20090x0A,0x95,0x4e,/20100x0B,0x4A,0x43,/20110x4B,0x55,0x37,/20120x0A,0xd5,0x4A,/20130x95,0x5A,0xBf,/20140x04,0xBA,0x53,/20150x0A,0x5B,0x48,/20160x65,0x2B,0xBC,/2017軟件設(shè)計流程整體過程分為時鐘芯片模塊、鍵盤模塊、蜂鳴器、顯示屏和主控芯片五個模塊相互協(xié)作運行,主程序完成對所有模塊的初始化和每個模塊的循環(huán)運行流程。其中初始化過程完成各個端口的初始化,和每個芯片的初始化設(shè)置。進(jìn)入主循環(huán)后首先顯示時間溫度等各種

37、數(shù)據(jù),打開鬧鐘。鍵盤掃描程序,在顯示主界面按下A進(jìn)入鬧鐘調(diào)節(jié)界面,按下D進(jìn)入時間設(shè)置界面。在鬧鐘設(shè)置界面中D為退出,B/C為加減,多次按A為選擇。在時間設(shè)置界面中A為退出,B/C為加減,多次按D為選擇。在鬧鐘1或者鬧鐘2時間到后蜂鳴器響起,按B/C解除鬧鐘。如果在鍵盤掃描沒有掃描到按鍵,則所有標(biāo)志位為允許,維持主界面內(nèi)容。軟件設(shè)計流程圖如圖10。圖10 主程序流程五、設(shè)計結(jié)果及分析電路原理圖圖11 完整電路原理圖軟件調(diào)試5.2.1 軟件調(diào)試過程電子萬年歷與數(shù)字式溫度傳感器功能強(qiáng)大,芯片簡化了硬件電路設(shè)計的同時也無形加大了軟件編寫的復(fù)雜程度,為方便程序的調(diào)試和提高效率,故將軟件編寫分模塊進(jìn)行,先

38、將實時時鐘模塊一步步調(diào)試,按照時序圖將讀寫函數(shù)寫好后,依次調(diào)試顯示秒部分,并準(zhǔn)時走,然后編程實現(xiàn)分鐘、小時、年、月、日等信息的讀取與顯示的,按照一定順序完成各個模塊的調(diào)試最開始液晶屏顯示不穩(wěn)定,有一些亂碼。經(jīng)檢查發(fā)現(xiàn)有些發(fā)生地址重疊的沖突,寫按鍵部分程序是發(fā)現(xiàn)調(diào)節(jié)好后在最后刷新屏幕時調(diào)節(jié)好的時間沒有讀取到,還有鬧鐘不能實現(xiàn)鬧鐘報警功能,不斷調(diào)節(jié),不斷燒寫進(jìn)學(xué)習(xí)板,然后看結(jié)果,最終發(fā)現(xiàn)時沒有將調(diào)節(jié)好的時間讀取到寄存器中。調(diào)試過程中還有一個問題就是我想添加一個鬧鐘響起后按下B或者C按鍵是鬧鐘停止,第一次燒寫進(jìn)去發(fā)現(xiàn)按鍵按住鬧鈴不響,松開按鍵后鬧鈴依然繼續(xù)響,所以后面分析程序后加上了鈴聲控制的標(biāo)志位

39、flag,當(dāng)按鍵按下后標(biāo)志位置0,這樣按鍵抬起后鬧鐘不再繼續(xù)響。加上溫度傳感器部分后發(fā)現(xiàn)在調(diào)節(jié)時間時出現(xiàn)亂碼和不穩(wěn)定現(xiàn)象,光標(biāo)亂跳的現(xiàn)象。經(jīng)過不斷檢查軟件,發(fā)現(xiàn)在按鍵調(diào)節(jié)時軟件讀取溫度值的標(biāo)志位是允許的,也就是說它在調(diào)節(jié)時間時又在動態(tài)顯示周圍環(huán)境中的溫度值,這樣會導(dǎo)致光標(biāo)不穩(wěn)定的現(xiàn)象。這個問題得到很好的解決。在軟件編寫的過程中遇到非常多的問題,遠(yuǎn)遠(yuǎn)不止這些,這里只是選取設(shè)計過程中比較典型的幾個問題。5.3 硬件調(diào)試首先單片機(jī)最小系統(tǒng)的設(shè)計幾乎都是統(tǒng)一的,DS12CR887,DS18B20接線靈活,IO口的設(shè)置具有多樣性,萬年歷用液晶顯示。用杜邦線將芯片與單片機(jī)學(xué)習(xí)板按照電路原理圖連接好,經(jīng)過不斷的軟件,硬件的反復(fù)修改,最終實現(xiàn)了軟件編寫的目標(biāo)功能。硬件調(diào)試過程中有出現(xiàn)一個問題,有一個問題就是屏幕顯示時出現(xiàn)有亂碼情況,仔細(xì)檢查電路后發(fā)現(xiàn)是屏幕并口數(shù)據(jù)線有兩條線接錯,調(diào)整后得以糾正。最初在HL-1型開發(fā)板上調(diào)試DS12CR887模塊時,出現(xiàn)芯片數(shù)據(jù)無法寫入和讀取的問題,經(jīng)過查閱DS12CR8

溫馨提示

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

評論

0/150

提交評論