課程設計電子萬歷DSC+溫度B+LCD顯示+鬧鐘(共26頁)_第1頁
課程設計電子萬歷DSC+溫度B+LCD顯示+鬧鐘(共26頁)_第2頁
課程設計電子萬歷DSC+溫度B+LCD顯示+鬧鐘(共26頁)_第3頁
課程設計電子萬歷DSC+溫度B+LCD顯示+鬧鐘(共26頁)_第4頁
課程設計電子萬歷DSC+溫度B+LCD顯示+鬧鐘(共26頁)_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質文檔-傾情為你奉上西南科技大學電子專業(yè)綜合設計報告設計名稱: 基于單片機的多功能電子萬年歷系統(tǒng)設計姓 名: 學 號: 班 級: 指導教師: 起止日期: 西南科技大學信息工程學院制專心-專注-專業(yè)綜 合 設 計 任 務 書學生班級: 學生姓名: 學號: 設計名稱: 基于單片機的多功能電子萬年歷系統(tǒng)設計 起止日期: 指導教師: 設計要求:基本要求:1.查閱有關資料,掌握單總線的基本通信協(xié)議及C語言的編程方法;2.用STC89C52微控制器控制DS12CR887和DS18B20的工作方式,完成多功能電子萬年歷系統(tǒng)的設計,顯示部分采用LCD12864。要求日期可顯示農歷,并能提示農歷節(jié)日和陽歷

2、節(jié)日;要求電子萬年歷具有鬧鐘功能并能實時顯示當前環(huán)境溫度;3.對系統(tǒng)的工作的可靠性進和穩(wěn)定性行分析,得出結論;4.撰寫設計報告。綜 合 設 計 學 生 日 志時間設計內容2013.11.23熟悉題目,對研究題目做分析,具體劃分為幾個模塊2013.11.24LCD12864顯示屏的顯示模塊的實現2013.11.25DS18B20溫度傳感器模塊的研究2013.11.26對DS18B20和LCD12864聯合設計溫度顯示系統(tǒng)2013.11.27閱讀DS12CR887的數據手冊,了解芯片的功能實現2013.11.28根據DS12CR887數據手冊完成基本的驅動程序2013.11.30在C52單片機最小

3、系統(tǒng)的的基礎上搭建電子萬年歷硬件系統(tǒng),完成芯片焊接及連線2013.12.1上網查閱陽歷轉換陰歷的相關算法2013.12.2完成陽歷轉換陰歷相關算法在單片機的程序設計以及節(jié)日的顯示程序2013.12.3設計程序實現在LCD12864上顯示時間,日期,農歷,節(jié)日,溫度等功能2013.12.4完成鬧鐘程序設計2013.12.5調試硬件系統(tǒng)和軟件系統(tǒng)解決系統(tǒng)BUG2013.12.6完成課程設計報告基于單片機的多功能電子萬年歷系統(tǒng)設計摘要:電子萬年歷是一種通過STC52C89RC單片機編程來對不同電子芯片件進行控制、執(zhí)行、數據讀取、和讀取的數據結果的顯示的電子產品。其主要功能是顯示公歷日期、農歷日期、當

4、前時間、節(jié)假日顯示、鬧鐘和實時溫度等許多功能,并能夠進行時間的調節(jié)和設定鬧鐘。電子萬年歷廣泛應用于各種公共場所、商業(yè)場合和居民家庭。由于其走時準確、誤差極小、外觀時尚等特點受到了廣泛的歡迎。我的設計就是用目前我們掌握的相關知識,如:單片機、模擬電路、數字電路等,進行一個簡單電子萬年歷的設計和開發(fā)調試。關鍵詞: 單片機;溫度測量;實時時鐘MCU-based design of electronic calendar systemAbstract: Electronic calendar is a kind of by STC52C89RC micro-controller programming

5、 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 real-time calendar date, date of the lunar calendar, the current time, holiday, alarm clock and many functions such as real-time tempera

6、ture, and adjust time and set the alarm clock. Electronic calendar is widely used in various public places, business and households.Walking because of its characteristics such as accurate, little error, fashion appearance was widely welcomed.My design is using at the moment we grasp the relevant kno

7、wledge, such as MCU, analog circuit, digital circuit, etc., for a simple design and development of the electronic calendar debugging.Keywords: Micro controller, Temperature measurement, Real-time clock 目 錄一 設計目的和意義1二 控制要求1三 方案設計與論證1 3.1 時鐘芯片的選定1 3.2 溫度芯片2 3.3 液晶顯示屏3 3.3 主控芯片3四 系統(tǒng)設計3 4.1 系統(tǒng)框架3 4.2 系統(tǒng)

8、具體模塊設計4 4.2.1 單片機核心控制模塊4 4.2.2 實時時鐘電路模塊4 4.2.3 數字溫度傳感器模塊10 4.2.4 顯示屏模塊13 4.2.5 農歷模塊15 4.3 軟件設計流程16五 設計結果及分析18 5.1 電路原理圖18 5.2 軟件調試18 5.2.1 軟件調試過程18 5.3 硬件調試18結束語19參考文獻20一、設計目的和意義隨著電子技術的不斷發(fā)展,單片機技術在設計中所體現在出來的優(yōu)勢越來越明顯,它不僅是電子信息類專業(yè)的一個重要部分,而且在其它類專業(yè)工程中也是不可缺少的。廣泛地應用于家電、工業(yè)過程控制、儀器儀表、智能武器、航空和空間飛行器等領域發(fā)展更是迅速,已成為新

9、一代一些電子設備不可缺少的核心部件。目前世界上單片機年產量已達十多億片,通常是當年微處理器產量的4-5倍以上。用最少的芯片就能實現最強大的功能??梢韵胍姡@是將來電子產品的主流方向,它將無可置疑地一步步取代其它同類產品,其數量之大和應用面之廣,是其它任何類型的計算機所無法比擬的。單片機是應工業(yè)測控需要而誕生的。它把計算機最基本的功能電路,如CPU、程序存儲器、數據存儲器、I/O接口、定時、計數器、中斷系統(tǒng)等集成到一塊芯片上,形成單片形態(tài)的計算機。單片機通常以最小系統(tǒng)運行,在家用電器中和常用的智能儀器儀表中常??梢浴皢纹惫ぷ?,同時單片機在我們日常生活中也經常見到,如電子表、舞廳里的一些燈光的控

10、制、一些招牌燈光的控制、工廠一些自動控制等。將來只要有自動控制方面的都會離不開單片機的開發(fā)和使用,對于現代的自動化控制起著舉足輕重的作用。為了順應形勢發(fā)展的需要,我們學習了單片機課程,此次用液晶顯示萬年歷和時間設置以及顯示測溫度的數據對單片機的學習起到了很好的鞏固作用,尤其是對C語言程序的設計。2、 控制要求顯示公歷19012099年日歷;能夠顯示公歷日期對應的農歷日期以及節(jié)假日顯示;星期自動對應,閏年、大、小月份自動調整;采用24小時制;自動顯示溫度,溫度顯示精確到0.1;要求具有鬧鐘功能,在設定的鬧鐘時間點蜂鳴器響起;時鐘精度小于等于正負0.2秒天;沒有外接電源的情況下保持時鐘運行十年以上

11、;實現按鍵控制調時電子萬年歷的年、月、日、時、分、星期、以及24小時制時間顯示、定時鬧鐘。三、設計方案論證3.1 時鐘芯片的選定DS12CR887的功能簡介:DS12CR887實時時鐘芯片功能豐富,可以用來直接代替IBM-PC上的時鐘日歷芯片DS12887,同時,它的管腳也和MCB、DS12887相兼容(芯片引腳圖如圖1所示)。由于DS12CR887能夠自動產生世紀、年、月、日、時、分、秒等時間信息,其內部又增加了世紀寄存器,從而利用硬件電路解決子“千年”問題;DS12CR887中自帶有鋰電池,外部掉電時,其內部時間信息還能夠保持10年之久;對于一天內的時間記錄,有12小時制和24 小時制兩種

12、模式。在12小時制模式中,用AM和PM區(qū)分上午和下午;時間的表示方法也有兩種,一種用二進制數表示,一種是用BCD碼表示;DS12CR887中帶有128字節(jié)RAM,其中有11字節(jié)RAM用來存儲時間信息,4字節(jié)RAM用來存儲DS12CR887的控制信息,稱為控制寄存器,113字節(jié)通用RAM使用戶使用;此外用戶還可對DS12CR887進行編程以實現多種方波輸出,并可對其內部的三路中斷通過軟件進行屏蔽。基于以上優(yōu)點我們決定選用DS12CR887芯片來完成我們的設計。圖1 DS12C887芯片3.2 溫度芯片DS18B20是數字式溫度傳感器,采用單總線通信協(xié)議。DS18B20具有體積小,硬件開銷低,抗干

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

14、20芯片的液晶顯示屏LCD12864。3.4 主控芯片STC89C52單片機作為核心控制體,該單片機具有高可靠,超低價,低功耗,無法解密等優(yōu)點。該單片機屬于雙列直插式封裝的DIP40口管腳。具有4個輸入輸出端口,分別為PORT0,PROT1,PROT2,PROT3,其中P0口是一組8位漏極開路型雙向IO口,校驗時,要求接上拉電阻。其他三個內部有30K的電阻,所以不用再外接電阻。此單片機具有6個中斷,其中包括三個定時器中斷,二個外部中斷,一個串口中斷,為全雙工通信口。內部有靜態(tài)非易失E2PROM和看門狗。片內含8Kbytes的可反復檫寫的只讀程序存儲器(E2PROM)和256bytes的隨機存取

15、數據存儲器(RAM),功能強大,適合許多較為復雜的控制應用場合。相比較其他芯片來說比較適合學生試驗所用,故采用此單片機作為核心控制芯片。4、 系統(tǒng)設計4.1 系統(tǒng)框架此設計即液晶上顯示年、月、日、時、分、秒、星期及溫度,電路包括以下幾個部分:鍵盤、單片機、溫度傳感器、顯示電路以及蜂鳴器警報電路。圖3 系統(tǒng)框架各部分說明:鍵盤用來校正,調節(jié)液晶上顯示的時間。單片機通過輸出各種電脈沖信號來驅動控制各部分正常工作。溫度傳感器用來采集溫度值。單片機發(fā)送的信號經過顯示電路通過譯碼最終在液晶上顯示出來。時鐘芯片給單片機提供時間信息單片機可以對時鐘芯片里面的內容進行修改警報器能夠對鬧鐘定時時間做出提醒4.2

16、 系統(tǒng)具體模塊設計4.2.1 單片機核心控制模塊核心控制器件選用STC89C52單片機。STC89C52單片機為40管腳雙列直插芯片,它是一種高性能,低功耗的8位CMOS微處理器芯片,市場應用最多。而且價格便宜,控制方便,便于應用有4個I/O口分別為P1,P2,P3,P4。其中每一個管腳都能做獨立的輸入輸出管腳,它的第9腳位復位管腳,接上電容和上拉電阻再帶個開關構成復位電路。18,19管腳接外部晶振和兩個微調電容構成外部晶振電路。單片機,復位電路,晶振,5V電源構成單片機最小系統(tǒng)。其中與AT89S52單片機管腳相兼容。4.2.2 實時時鐘電路模塊時鐘模塊選用DS12CR887芯片,DS12CR

17、887芯片能夠自動產生世紀,年,月,日,星期,時,分,秒信息,閏年補償至2100年,具有鬧鐘功能。內部自帶鋰電池,在外部掉電時信息不丟失,并且能精確走10年之久。同時DS12CR887能自動檢測電源故障和切換電路,有工業(yè)級溫度范圍。此芯片可以廣泛應用于對環(huán)境要求嚴格的控制系統(tǒng)中。如嵌入式系統(tǒng),電表,安全系統(tǒng),網絡集線器,網橋,路由器。D12C887電路圖,工作電源采用5V。第一管腳(MOT)是Motorola或Intel總線時序選擇端,利用此引腳選擇兩種總線類型中的一種,連接到VCC時選擇Motorola總線時序,接GND或懸空選擇Intel總線時序。該引腳內部有一個下拉電阻。D0到D7為雙向

18、地址/數據復用總線。地址于總線周期的開始發(fā)送到總線上。并由AS信號的下降沿鎖存到DS12CR887中。所寫的數據由DS信號的下降沿(Motorola時序)或R/W信號的上升沿(Intel時序)鎖存。讀周期中,DS12CR887于DS信號的后期(Motorola時序中DS和R/W均為高,Intel時序中DS為低、R/W為高)將數據發(fā)送到總線上。讀周期結束后,總線恢復到高阻狀態(tài),同時DS在Motorola時序中變低,在Intel時序中變高。12腳為GND。13腳叫CS片選信號輸入,片選信號低電平有效,在訪問DS12CR887的總線周期內必須保持低電平Intel時序中的DS和R/W信號工作期間,CS

19、必須保持有效,在CS信號無效情況下,總線操作將鎖存地址,不能訪問芯片。當VCC低于Vpf電壓時,DS12CR887內部通過禁止CS輸入來拒絕訪問,此舉旨在斷電時保護RTC數據和RAM數據。所以在訪問期間CS片選信號應保持低電平。14管腳AS地址選通輸入。有低變?yōu)楦叩牡刂愤x通脈沖用來分離總線信號。在AS信號的下降沿,地址鎖存到DS12CR887內,無論CS信號是否有效,AS的下一個上升沿都將清除地址,地址選通信號必須先于每個讀或寫訪問。如果在CS信號無效的情況下執(zhí)行了讀或寫操作,則必須在CS信號有效時且在讀或寫訪問之前,從新發(fā)送一次地址選通信號。15管腳R/W讀/寫輸入。R/W引腳有兩種操作模式

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

21、當MOT接GND時,選擇Intel總線時序,DS表示讀取DS12CR887數據驅動總線的時間周期,此模式下,DS引腳與普通RAM的輸出使能信號(OE)工作方式類似。18管腳RESET-復位輸入,低電平有效RESET引腳對時鐘、日歷或RAM不起作用,上電時可將RESET引腳首先保持低電平,以等待電源穩(wěn)定下來,保持低電平時間可根據應用需要而定,但是,如果上電時使用RESET信號,RESET保持低電平時間應當超過200ms,以保證控制DS12CR887上電時的內部定時器結束,當RESET為低電平,而且VCC大于VPF時,將產生以下操作:A周期性中斷使能(PIE)位清0;B鬧鐘中斷使能(AIE)位清0

22、;C更新結束中斷使能(UIE)位清0;D周期中斷標志(PF)位清0;E鬧鐘中斷標志(AF)位清0;F更新結束中斷標志(UF)位清0;G中斷請求狀態(tài)標志(IRQF)位清0;H IRQ引腳置為高阻狀態(tài);I直到RESET恢復為高電平才能訪問器件;J方波使能(SQWE)位清0。在典型應用中,將RESET與VCC連接。使得DS12CR887在進入或退出電源失效狀態(tài)時不影響任何控制寄存器的值。19管腳IRQ中斷請求輸出。DS12CR887的IRQ引腳低電平有效,可用作處理器的中斷請求輸入,只要引起中斷的狀態(tài)位置位,并且相應中斷使能位也置位,IRQ將一直保持低電平。處理器程序通常讀取C寄存器來清除IRQ引腳

23、輸出,RESET引腳也會清除未處理的中斷,沒有中斷發(fā)生時IRQ為高阻狀態(tài),可將多個中斷器件接到一條IRQ總線上,只要他們均為漏極開路輸出,IRQ引腳為漏極開路輸出,需要使用一個上拉電阻與VCC相連。23腳SQW方波輸出,因為我們此實驗中不需要方波輸出,故不接。VCC主電源的DC電源引腳。VCC在正常范圍時,可訪問器件的所有功能,并能進行數據讀寫,如果VCC低于VPF,則禁止讀和寫。DS12CR887采用的是并行通信協(xié)議,8位同時傳遞,對應到D0D7八位端口。D0到D7接P0口,作為地址/數據選通復用總線。并行通信控制簡單,傳輸速度快,適合近距離傳輸。圖4 INTEL總線寫時序圖5 INTEL總

24、線讀時序Intel總線如所示,編寫程序如圖時序圖所示。因為其時序延時都為納秒級的,軟件執(zhí)行一句簡單語句為微秒級。所以在編寫程序是可直接跳過,不用做軟件延時。對此相對降低了軟件編寫的難度。DS12CR887的讀寫操作代碼:void ds_write(unsigned char add,unsigned char date)/寫DS12CR887的數據DS_CS=0;DS_DS=1;DS_RW=1;DS_AS=1;Ds_Bus=add;/讀入寫數據的地址 DS_AS=0;DS_RW=0;Ds_Bus=date;/讀入數據DS_RW=1;DS_AS=1;DS_CS=1;unsigned char d

25、s_read(unsigned char add)/讀取DS12CR887的數據unsigned char z;DS_CS=0;DS_RW=1;DS_DS=1;DS_AS=1;Ds_Bus=add;/讀入從芯片讀取數據的地址DS_AS=0;DS_DS=0;Ds_Bus=0xff;/將數據總線全部置高電平z=Ds_Bus;/讀取數據DS_DS=1;DS_AS=1;DS_CS=1;return z;DS12CR887有4個控制寄存器,在任何時間都可以進行訪問,即使處于更新周期,這里主要使用寄存器A和寄存器B。寄存器A字節(jié)的內容表1:表1 寄存器A內容BIT7BIT6BIT5BIT4BIT3BIT2

26、BIT1BIT0UIPDV2DV1DV0RS3RS2RS1RS0UIP:更新標志位。為只讀位且不受復位操作的影響,為1時,表示即將發(fā)生的數據更新;為0時,表示至少244US不會更新數據。當UIP為0時,可以獲得所有時鐘、日歷、鬧鐘信息。將寄存器B中的SET位置1可以限制任何數據更新操作,并且清除UIP位。DV2、DV1、DV0:此3位為010時將打開晶振,并開始計時。RS3、RS2、RS1、RS0:用于設置周期性中斷產生的時間周期和輸出方波的頻率。寄存器B字節(jié)的內容表2:表2 寄存器B內容BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0SETPIEAIEUIESQWEDM24/

27、12DSESET:設置位,可讀寫,不受復位操作影響。為0時,不處于設置狀態(tài),芯片進行正常時間數據更新;為1時,抑制數據更新,可以通過程序設定時間和日歷信息。PIE:周期性中斷使能位,可讀寫,復位時清除此位。為1時,允許寄存器C中的周期中斷標志位PF,驅動/IRQ引腳為低產生中斷信號輸出,中斷信號產生的周期由RS3RE0決定。AIE:鬧鐘中斷使能位,可讀寫。為1時,允許寄存器C中的鬧鐘中斷標志位AF、鬧鐘發(fā)生時就會通過/IRQ引腳產生中斷輸出。UIE:數據更新結束中斷使能位,可讀寫。復位或者SET位為1時清除此位。為1時允許寄存器C中的更新結束標志UF,更新結束時就會通過/IRQ引腳產生中斷輸出

28、。SQWE:方波使能位,可讀寫,復位時清除此位。為0時,SQW引腳保持低電平;為1時,SQW引腳輸出方波信號,其頻率由RS3RS0決定。DM:數據模式位,可讀寫,不受復位操作影響。為0時,設置時間、日歷信息為二進制數據;為1時,設置為BCD碼數據。24/12:時間模式設置為,可讀寫,不受復位操作影響。為0時,設置為12小時模式;為1時,設置為24小時模式。DSE:為1時,會引起兩次特殊的時間更新;4月的第一個星期日凌晨1:59:59會直接更新到3:00:00,10月的最后一個星期日凌晨1:59:59會直接更新到1:00:00;為0時,時間信息正常更新,此位可讀寫,不受復位操作影響。在使用DS1

29、2CR887時鐘芯片前需要對芯片的寄存器進行初始化操作,初始化代碼如下:void ds_int()DS_AS=0;DS_DS=0;DS_RW=0;ds_write(0x0a,0x20);/DS12CR887寄存器A,開啟時鐘振蕩器ds_write(0x0b,0x22);/初始化寄存器B,設置數據模式為二進制,24小時制,使用鬧鐘/中斷,關閉夏令時通過軟件編程將讀到的信息顯示到12864液晶中,顯示世紀,年,月,日,星期,小時,分,秒。通過設置按鍵可以進行時間調節(jié),在調節(jié)時間時時鐘暫時停止走,再通過功能鍵回到正常工作狀態(tài)中,并且具有鬧鐘設定功能,但在設定鬧鐘時期內部時間仍然在走。當時,分,秒,相

30、符時通過蜂寧器進行報警,再設置按鍵關閉鬧鐘。實現隨意控制鬧鐘的開啟和關閉。4.2.3 數字溫度傳感器模塊數字溫度傳感器選用DS18B20,采用單總線通信協(xié)議。DS18B20主要特性有:1、 適應電壓范圍更寬,電壓范圍:3.05.5V,在寄生電源方式下可由數據線供電。2、獨特的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現微處理器與DS18B20的雙向通訊。3、DS18B20支持多點組網功能,多個DS18B20可以并聯在唯一的三線上,實現組網多點測溫4、DS18B20在使用中不需要任何外圍元件,全部傳感元件及轉換電路集成在形如一只三極管的集成電路內。5、溫范圍55125,在

31、-10+85時精度為0.5。6、可編程的分辨率為912位,對應的可分辨溫度分別為0.5、0.25、0.125和0.0625,可實現高精度測溫。7、在9位分辨率時最多在93.75ms內把溫度轉換為數字,12位分辨率時最多在750ms內把溫度值轉換為數字,速度更快。8、測量結果直接輸出數字溫度信號,以“一線總線”串行傳送給CPU,同時可傳送CRC校驗碼,具有極強的抗干擾糾錯能力。9、負壓特性:電源極性接反時,芯片不會因發(fā)熱而燒毀,但不能正常工作。由于采用單總線數據傳輸方式,DS18B20的數據I/O均由同一條線完成,因此,對讀寫的操作時序要求嚴格。為了保證DS18B20的嚴格I/O時序。需要做較精

32、確的延時。其讀操作時序如圖6,寫操作時序如圖7,初始化程序如圖8。圖6 讀操作時序圖7 寫時序圖圖8 初始化時序DS18B20的讀寫操作以及初始化代碼:void Init_DS18B20(void)unsigned char x=0;DQ = 1;/DQ復位Delay(8);/稍做延時DQ = 0;/單片機將DQ拉低Delay(80);/精確延時 大于 480usDQ = 1;/拉高總線Delay(14);x=DQ;/稍做延時后 如果x=0則初始化成功 x=1則初始化失敗Delay(20);unsigned char ReadOneChar(void)/讀一個字節(jié)函數unsigned char

33、 i=0;unsigned char dat = 0;for (i=8;i>0;i-)DQ = 0; / 給脈沖信號dat>>=1;/DAT向右移一位,讀取下一位數據DQ = 1; / 給脈沖信號if(DQ)dat|=0x80;Delay(4);return(dat);void WriteOneChar(unsigned char dat)/寫一個字節(jié)函數unsigned char i=0;for (i=8; i>0; i-)DQ = 0;DQ = dat&0x01;Delay(5);DQ = 1;dat>>=1;/將dat向右移一位,依次寫入每一位

34、數據4.2.4 顯示屏模塊LCD12864漢字圖形點陣液晶顯示模塊,可顯示漢字及圖形,內置8192個中文漢字(16×16點陣)、128個字符(8×16點陣)及64×256點陣顯示RAM(GDRAM)。主要技術參數和顯示特性:電源:VDD: 3.3V+5V(內置升壓電路,無需負壓);顯示內容:128列×64行與MCU接口:8位或4位并行/3位串行配置LED背光;多種軟件功能:光標顯示、畫面移位、自定義字符、睡眠模式等,本次設計采用八位并行連接,寫數據時序圖如圖9:圖9 12864寫數據時序LCD12864寫指令、寫數據以及初始化代碼:void write_

35、com(unsigned char cmdcode)/寫指令到LCD(底層)chk_busy();LCM_RS=0;LCM_RW=0;LCM_EN=1;/寫指令將RS,RW拉低,EN拉高Lcd_Bus=cmdcode;/讀取數據到總線Delay(5);/做一定延時LCM_EN=0;/利用EN下降沿將總線數據寫入到顯示屏中Delay(5);void write_data(unsigned char Dispdata)/寫數據到LCD(底層)chk_busy();LCM_RS=1;LCM_RW=0;/寫數據將RS拉高,RW為零LCM_EN=1;Lcd_Bus=Dispdata;/將顯示數據寫入到總

36、線上Delay(5);LCM_EN=0;/利用EN下降沿將總線數據寫入到顯示屏中Delay(5);void lcm_init()/初始化LCD屏(被調用層)write_com(0x30); /選擇8bit數據流Delay(5);write_com(0x0c); /開顯示(無游標、不反白)Delay(5);write_com(0x01); /清除顯示,并且設定地址指針為00HDelay(5);4.2.5 農歷轉換本設計采用查表的方法實現農歷與公歷的轉換,公歷年對應的農歷數據,每年三字節(jié),格式第一字節(jié)BIT7-4位表示閏月月份,值為0為無閏月,BIT3-0對應農歷第1-4月的大小,第二字節(jié)BIT7

37、-0對應農歷第5-12月大小,第三字節(jié)BIT7表示農歷第13個月,大小月份對應的位為1表示本農歷月大(30天),為0表示小(29天);第三字節(jié)BIT6-5表示春節(jié)的公歷月份,BIT4-0表示春節(jié)的公歷日期。部分轉換代碼如下。0x09,0x2d,0x47,/20080x5C,0x95,0xBA,/20090x0A,0x95,0x4e,/20100x0B,0x4A,0x43,/20110x4B,0x55,0x37,/20120x0A,0xd5,0x4A,/20130x95,0x5A,0xBf,/20140x04,0xBA,0x53,/20150x0A,0x5B,0x48,/20160x65,0x2

38、B,0xBC,/20174.3 軟件設計流程整體過程分為時鐘芯片模塊、鍵盤模塊、蜂鳴器、顯示屏和主控芯片五個模塊相互協(xié)作運行,主程序完成對所有模塊的初始化和每個模塊的循環(huán)運行流程。其中初始化過程完成各個端口的初始化,和每個芯片的初始化設置。進入主循環(huán)后首先顯示時間溫度等各種數據,打開鬧鐘。鍵盤掃描程序,在顯示主界面按下A進入鬧鐘調節(jié)界面,按下D進入時間設置界面。在鬧鐘設置界面中D為退出,B/C為加減,多次按A為選擇。在時間設置界面中A為退出,B/C為加減,多次按D為選擇。在鬧鐘1或者鬧鐘2時間到后蜂鳴器響起,按B/C解除鬧鐘。如果在鍵盤掃描沒有掃描到按鍵,則所有標志位為允許,維持主界面內容。軟

39、件設計流程圖如圖10。圖10 主程序流程五、設計結果及分析5.1 電路原理圖圖11 完整電路原理圖5.2 軟件調試5.2.1 軟件調試過程電子萬年歷與數字式溫度傳感器功能強大,芯片簡化了硬件電路設計的同時也無形加大了軟件編寫的復雜程度,為方便程序的調試和提高效率,故將軟件編寫分模塊進行,先將實時時鐘模塊一步步調試,按照時序圖將讀寫函數寫好后,依次調試顯示秒部分,并準時走,然后編程實現分鐘、小時、年、月、日等信息的讀取與顯示的,按照一定順序完成各個模塊的調試最開始液晶屏顯示不穩(wěn)定,有一些亂碼。經檢查發(fā)現有些發(fā)生地址重疊的沖突,寫按鍵部分程序是發(fā)現調節(jié)好后在最后刷新屏幕時調節(jié)好的時間沒有讀取到,還

40、有鬧鐘不能實現鬧鐘報警功能,不斷調節(jié),不斷燒寫進學習板,然后看結果,最終發(fā)現時沒有將調節(jié)好的時間讀取到寄存器中。調試過程中還有一個問題就是我想添加一個鬧鐘響起后按下B或者C按鍵是鬧鐘停止,第一次燒寫進去發(fā)現按鍵按住鬧鈴不響,松開按鍵后鬧鈴依然繼續(xù)響,所以后面分析程序后加上了鈴聲控制的標志位flag,當按鍵按下后標志位置0,這樣按鍵抬起后鬧鐘不再繼續(xù)響。加上溫度傳感器部分后發(fā)現在調節(jié)時間時出現亂碼和不穩(wěn)定現象,光標亂跳的現象。經過不斷檢查軟件,發(fā)現在按鍵調節(jié)時軟件讀取溫度值的標志位是允許的,也就是說它在調節(jié)時間時又在動態(tài)顯示周圍環(huán)境中的溫度值,這樣會導致光標不穩(wěn)定的現象。這個問題得到很好的解決。在軟件編寫的過程中遇到非常多的問題,遠遠不止這些,這里只是選取設計過程中比較典型的幾個問題。5.3 硬件調試首先單片機最小系統(tǒng)的設計幾乎都是統(tǒng)一的,DS12CR887,DS18B20接線靈活,IO口的設置具有多樣性,萬年歷用液晶顯示。用杜邦線將芯片與單片機學習板按照電路原理圖連接好,經過不斷的軟件,硬件的反復修改,最終實現了軟

溫馨提示

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

評論

0/150

提交評論