基于單片機的帶語音報時的萬年歷_第1頁
基于單片機的帶語音報時的萬年歷_第2頁
基于單片機的帶語音報時的萬年歷_第3頁
基于單片機的帶語音報時的萬年歷_第4頁
基于單片機的帶語音報時的萬年歷_第5頁
已閱讀5頁,還剩55頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

1、目 錄1 引言21.1 目的和意義21.2研究概況及發展趨勢綜述31.3 本系統主要功能42. 總體方案論證與設計52.1主控模塊的選型和論證52.2顯示模塊的選型和論證52.3時鐘芯片的選型和論證52.4溫度檢測模塊的選型和論證62.5語音播報模塊的選型和論證62.6系統整體設計概述6圖2-1系統結構框圖3.系統硬件電路設計63.1主控模塊73.1.1 STC89C52單片機主要特性73.1.2 STC89C52單片機的中斷系統103.1.3 單片機最小系統設計103.2 LCD液晶顯示器簡介103.2.1 液晶原理介紹103.2.2液晶模塊簡介113.2.3液晶顯示部分與STC89C52的

2、接口123.3鍵盤模塊設計123.4蜂鳴器模塊設計133.5時鐘模塊的設計133.5.1 DS1302概述133.5.2 DS1302時鐘和日歷173.5.3 DS1302時鐘電路設計183.6溫度檢測模塊設計193.6.1溫度傳感器工作原理193.6.2 DS18B20使用中的注意事項203.6.3 DS18B20硬件電路設計213.7語音模塊設計214.系統軟件設計214.1系統軟件總體設計224.2程序設計原理265.系統調試285.1硬件調試285.2軟件調試286.結論29附錄31系統整體原理圖31元件清單31系統源程序3230 基于單片機的語音報時萬年歷摘要:本文涉及了一個基于單片

3、機的語音報時萬年歷,它具有顯示年、月、日、時、分秒、星期顯示功能,還具有閏年補償等多種功能,時鐘芯片采用的是DS1302。DS1302能存儲時間信息,并且時間可以掉電保存。單片機通過讀取DS1302的信息后通過LCD1602顯示在液晶屏幕上面。當DS1302上面的時間跟單片機所設定的鬧鐘時間一致后,單片機可以驅動蜂鳴器進行鬧鈴提醒。除此之外,系統還附帶整點報時,以及任何時候通過按鍵語音報時功能。關鍵詞:單片機; LCD1602;蜂鳴器;DS1302;鬧鐘;語音報時;1 引言1.1 目的和意義隨著微電子技術的高速發展,單片機在國民經濟的個人領域得到了廣泛的運用。單片機以體積小、功能全、性價比高等

4、諸多優點,在工業控制、家用電器、通信設備、信息處理、尖端武器等各種測控領域的應用中獨占鰲頭,單片機開發技術已成為電子信息、電氣、通信、自動化、機電一體化等專業技術人員必須掌握的技術。而電子萬年歷作為電子類小設計不僅是市場上的寵兒,也是是單片機實驗中一個很常用的題目。因為它的有很好的開放性和可發揮性,因此對作者的要求比較高,不僅考察了對單片機的掌握能力更加強調了對單片機擴展的應用。而且在操作的設計上要力求簡潔,功能上盡量齊全,顯示界面也要出色。數字顯示的日歷鐘已經越來越流行,特別是適合在家庭居室、辦公室、大廳、會議室、車站和廣場等使用,壁掛式LED數碼管顯示的日歷鐘逐漸受到人們的歡迎。LED數字

5、顯示的日歷鐘顯示清晰直觀、走時準確、可以進行夜視,并且還可以擴展出多種功能。 在信息化高度發達的今天,最具代表性的計時產品就是電子日歷,它是近代世界鐘表業界的第三次革命。第一次是擺和擺輪游絲的發明,相對穩定的機械振蕩頻率源使鐘表的走時差從分級縮小到秒級,代表性的產品就是帶有擺或擺輪游絲的機械鐘或表。第二次革命是石英晶體振蕩器的應用,發明了走時精度更高的石英電子鐘表,使鐘表的走時月差從分級縮小到秒級。第三次革命就是單片機數碼計時技術的應用(電子日歷),使計時產品的走時日差從分級縮小到1/600萬秒,從原有傳統指針計時的方式發展為人們日常更為熟悉的夜光數字顯示方式,直觀明了,并增加了全自動日期、星

6、期信息的顯示功能。由于數字集成電路技術的發展和采用了先進的石英技術,使電子鐘具有走時準確、性能穩定、攜帶方便等優點,它還用于計時、自動報時及自動控制等各個領域。雖然現在市場上已有現成的電子鐘集成電路芯片出售,價格便宜,使用也靈活,如可以隨意設置時、分、秒的輸出,改變顯示數字的大小等,并且由于集成電路技術的發展,特別是MOS集成電路技術的發展,使電子鐘具有體積小、攜帶方便,但是這里介紹的實用電子鐘可以滿足使用者的一些特殊要求,輸出方式靈活、功耗低、計時準確、性能穩定、維護方便等優點。實用電子時鐘是一個時間控制系統,既能作為一般的時間顯示器,同時可以根據需要擴展其功能,擴展為可顯示時間和日歷的電子

7、萬年歷。本文提出了控制單元是以微控制器為核心,基于DS1302的電子萬年歷設計方案,本方案以單片機作為主控核心,與時鐘芯片DS1302、按鍵、LED顯示等模塊組成硬件系統。顯示單元采用LCD液晶顯示,實現時間的顯示。在軟件上,采用keil c51軟件系統,控制單元采用C語言編程;另外,從硬件和軟件上采取了多種措施提高系統的可靠性。本方案可以根據使用者的需要可以隨時對時間進行校準、選擇時間等,綜上所述此萬年歷具有讀取方便、顯示直觀、功能多樣、電路簡潔、成本低廉等諸多優點,符合電子儀器儀表的發展趨勢,具有廣闊的市場前景。1.2 研究概況及發展趨勢綜述從現代電子技術發展歷程來看,大致可以分為三個典型

8、階段:一、20世紀70年代,在集成電路制作方面,MOS工藝得到廣泛的應用。可編程邏輯技術及其器件已經問世,計算機作為一種運算工具已經在科研領域得到廣泛應用。在70年代后期,CAD的概念已現雛形,這一階段人們開始利用計算機輔助進行集成電路版圖編輯、PCB布局布線等工作。二、20世紀80年代,集成電路設計進入了CMOS(互補場效應管)時代,復雜可編程邏輯器件已經進入商業應用,相應的輔助設計軟件也已投入使用,而在80年代末期,出現了FPGA(Field Programmable Gate Array),CAE和CAD技術的應用更為廣泛,它們在PCB設計方面的原理圖輸入、自動布局布線及PCB分析,以及

9、邏輯設計、邏輯仿真、布爾方程綜合和化簡等方面擔任了重要角色。特別是各種硬件描述語言HDL(Hardware Description Language)的出現、應用和標準化方面的重大進步,為EDA(Electronic Design Automation,電子設計自動化)技術必須解決的電路建模、標準文檔及仿真測試奠定了基礎。三、進入20世紀90年代,隨著硬件描述語言的標準化得到進一步的確立,計算機輔助工程、輔助分析和輔助設計在電子技術領域獲得了更加廣泛的應用,與此同時,電子技術在通信、計算機及家電產品生產中的市場需求和技術需求,也極大地推動了全新的電子設計自動化技術的應用和發展。特別是集成電路設

10、計工藝步入了超深亞微米階段,百萬門以上的大規??删幊踢壿嬈骷年懤m面世,以及基于計算機技術的面向用戶的低成本大規模ASIC設計技術的應用,促進了EDA技術的形成。20世紀末期以來,電子設計技術獲得了飛速的發展?,F代電子技術產品幾乎滲透到社會的各個領域,有力地推動了社會生產力的發展和社會信息化程度的提高。多功能數字鐘不管在性能還是在樣式上都發生了質的變化,有電子鬧鐘、數字鬧鐘等等。單片機在多功能數字鐘中的應用已是非常普遍的,人們對數字鐘的功能及工作順序都非常熟悉?;趩纹瑱C的數字鐘的設計,采用靈活的編程,可以輕松的完成對數字鐘的功能擴展。另外是以基于數字電路的多功能數字鐘。數字鐘的時鐘顯示則由最

11、初的單個數碼管顯示,隨著科技的發展,數碼管則逐漸被液晶顯示所替代。在不斷滿足人們日益需求的同時,其功能更是再不斷擴展。數字鐘的發展同樣進入了新的階段,更直觀,更易于操作,功能更多,更實用的電子鐘將不斷的進入人們的生活。市場的強烈需求極大地推動了現代電子技術的發展,產品的集成化程度越來越高,同時產品更新換代的節奏也變得越來越快。1.3 本系統主要功能本系統設計制作一個基于單片機的語音報時萬年歷。能實現以下幾種功能:(1)鍵盤掃描,通過單片機檢測用戶按下的是哪個按鍵并執行相應的功能。(2)通過單片機采集DS1302的數據,并在液晶屏幕上顯示實時的年月日時分秒星期,并可以通過按鍵設置時間,系統不供電

12、的情況時鐘芯片依然可以由后備紐扣供電,使其掉電時間保存。(3)用戶可以設定鬧鐘時間,當時間到了之后,系統自動驅動蜂鳴器發響。(4)系統附帶有整點報時功能,以及任何時候通過按鍵報時功能。(5)系統還帶有測溫功能,單片機可以實時讀取DS18B20的溫度數據并在液晶上顯2. 總體方案論證與設計根據所要實現的功能劃分,系統一共需要以下幾個模塊:主控模塊、顯示模塊、時鐘模塊、溫度檢測模塊,以下就針對這幾個模塊的選型和論證進行討論。2.1主控模塊的選型和論證方案一:采用MSP430系列單片機,該單片機是TI公司1996年開始推向市場的一種16位超低功耗的混合信號處理器。其內部集成了很多模擬電路、數字電路和

13、微處理器,提供強大的功能。不過該芯片昂貴不適合一般的設計開發。方案二采用51系列的單片機,該單片機是一個高可靠性,超低價,無法解密,高性能的8位單片機,32個IO口,且STC系列的單片機可以在線編程、調試,方便地實現程序的下載與整機的調試。因此選用方案二中的51系列單片機作為主控芯片。2.2顯示模塊的選型和論證方案一:采用點陣式數碼管顯示,點陣式數碼管是由八行八列的發光二極管組成,對于顯示文字比較合適,如采用在顯示數字顯得太浪費,且價格也相對較高,所以不用此種作為顯示。方案二:采用LED數碼管動態掃描,LED數碼管價格雖適中,對于顯示數字也最合適,而且采用動態掃描法與單片機連接時,占用單片機口

14、線少。但是由于數碼管動態掃描需要借助74LS164移位寄存器進行移位,該芯片在電路調試時往往有很多障礙,所以不采用LED數碼管作為顯示。方案三:采用LCD液晶顯示屏,液晶顯示屏的顯示功能強大,可顯示大量文字,圖形,顯示多樣,清晰可見,對于本設計而言一個LCD1602的液晶屏即可,價格也還能接受,需要的借口線較多,但會給調試帶來諸多方便。所以本設計中方案三中的LCD1602液顯示屏作為顯示模塊。2.3時鐘芯片的選型和論證方案一:直接采用單片機定時計數器提供秒信號,使用程序實現時間計數。采用此種方案雖然可以減少時鐘芯片的使用,節約成本,但是,實現的時間誤差較大。方案二:采用DS1302時鐘芯片實現

15、時鐘,DS1302是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鐘電路,它可以對年、月、日、周、時、分、秒計時,具有閏年補償功能,工作電壓為2.5V5.5V。采用三線接口與單片機進行通信,并可采用突發一次傳送多個字節的時鐘信號或RAM數據。DS1302內部有一個31*8的用于臨時存放數據的RAM存儲器。DS1302是DS1202的升級產品,與DS1202兼容,但增加了主電源/后備電源雙電源引腳,同時提供了對后備電源進行涓流充電的能力。主要特點是采用串行數據傳輸,可為掉電保護電源提供可編程的充電功能,并且可以關閉充電功能。采用普通32.768KHZ晶振作為標準時鐘。因此本設計中

16、采用方案二中的DS1302作為時鐘模塊。2.4溫度檢測模塊的選型和論證方案一:AD590是美國ANALOG DEVICES公司的單片集成兩端感溫電流源,其輸出電流與絕對溫度成比例。在4 V至30 V電源電壓范圍內,該器件可充當一個高阻抗、恒流調節器,調節系數為1 µA/K。片內薄膜電阻經過激光調整,可用于校準器件,使該器件在298.2K (25°C)時輸出298.2 µA電流。由于該芯片輸出為模擬量還同時需要AD轉換器對其進行采集。因此不適用于本設計方案二:DS18B20數字溫度傳感器接線方便,封裝成后可應用于多種場合,如管道式,螺紋式,磁鐵吸附式,不銹鋼封裝式,

17、型號多種多樣,有LTM8877,LTM8874等等。主要根據應用場合的不同而改變其外觀。封裝后的DS18B20可用于電纜溝測溫,高爐水循環測溫,鍋爐測溫,機房測溫,農業大棚測溫,潔凈室測溫,彈藥庫測溫等各種非極限溫度場合。耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設備數字測溫和控制領域。因此本設計采用方案二中的DS18B20芯片進行溫度采集。2.5語音播報模塊的選型和論證這里選用了集成的語音芯片KY3P035,KY3P035是一款具有PWM輸出的OTP語音標準芯片,該芯片內部集成了09以及一些常用單位的錄音。使用時只要根據錄音存放的位置依次讀出就能播報出當前的重量和價格。2.

18、6系統整體設計概述本系統以單片機為控制核心,對系統進行初始化,主要完成對鍵盤的響應、液晶顯示、時間讀取、測溫、語音播報等功能的控制,起到總控和協調各模塊之間工作的作用。單片機通過驅動蜂鳴器發響聲。圖2-1系統結構框圖3.系統硬件電路設計3.1主控模塊主控模塊模塊在整個系統中起著統籌的作用,需要檢測鍵盤,溫度傳感器等各種參數,同時驅動液晶顯示相關參數,在這里我們選用了51系列單片機中的STC89C52單片機作為系統的主控芯片。51系列單片機最初是由Intel 公司開發設計的,但后來Intel 公司把51 核的設計方案賣給了幾家大的電子設計生產商,譬如 SST、Philip、Atmel 等大公司。

19、因此市面上出現了各式各樣的均以51 為內核的單片機。這些各大電子生產商推出的單片機都兼容51 指令、并在51 的基礎上擴展一些功能而內部結構是與51一致的。STC89C52有40個引腳,4個8位并行I/O口,1個全雙工異步串行口,同時內含5個中斷源,2個優先級,2個16位定時/計數器。STC89C52的存儲器系統由4K的程序存儲器(掩膜ROM),和128B的數據存儲器(RAM)組成。STC89C52單片機的基本組成框圖見圖3-1。圖3-1 STC89C52單片機結構圖 3.1.1 STC89C52單片機主要特性1. 一個8 位的微處理器(CPU)。2. 片內數據存儲器RAM(128B),用以存

20、放可以讀寫的數據,如運算的中間結果、最終結果以及欲顯示的數據等,SST89 系列單片機最多提供1K 的RAM。3. 片內程序存儲器ROM(4KB),用以存放程序、一些原始數據和表格。但也有一些單片機內部不帶ROM/EPROM,如8031,8032,80C31 等。目前單片機的發展趨勢是將RAM 和ROM 都集成在單片機里面,這樣既方便了用戶進行設計又提高了系統的抗干擾性。SST 公司推出的89 系列單片機分別集成了16K、32K、64K Flash 存儲器,可供用戶根據需要選用。4. 四個8 位并行IO 接口P0P3,每個口既可以用作輸入,也可以用作輸出。5. 兩個定時器計數器,每個定時器計數

21、器都可以設置成計數方式,用以對外部事件進行計數,也可以設置成定時方式,并可以根據計數或定時的結果實現計算機控制。為方便設計串行通信,目前的52 系列單片機都會提供3 個16 位定時器/計數器。6. 五個中斷源的中斷控制系統?,F在新推出的單片機都不只5 個中斷源,例如SST89E58RD 就有9 個中斷源。7. 一個全雙工UART(通用異步接收發送器)的串行IO 口,用于實現單片機之間或單機與微機之間的串行通信。8. 片內振蕩器和時鐘產生電路,但石英晶體和微調電容需要外接。最高允許振蕩頻率為12MHz。SST89V58RD 最高允許振蕩頻率達40MHz,因而大大的提高了指令的執行速度。圖3-2

22、STC89C52單片機管腳圖部分引腳說明:1.時鐘電路引腳XTAL1 和XTAL2:XTAL2(18 腳):接外部晶體和微調電容的一端;片內它是振蕩電路反相放大器的輸出端,振蕩電路的頻率就是晶體固有頻率。若需采用外部時鐘電路時,該引腳輸入外部時鐘脈沖。要檢查振蕩電路是否正常工作,可用示波器查看XTAL2 端是否有脈沖信號輸出。XTAL1(19 腳):接外部晶體和微調電容的另一端;在片內它是振蕩電路反相放大器的輸入端。在采用外部時鐘時,該引腳必須接地。2.控制信號引腳RST,ALE,PSEN 和EA:RST/VPD(9 腳):RST 是復位信號輸入端,高電平有效。當此輸入端保持備用電源的輸入端。

23、當主電源Vcc 發生故障,降低到低電平規定值時,將5V 電源自動兩個機器周期(24個時鐘振蕩周期)的高電平時,就可以完成復位操作。RST 引腳的第二功能是VPD,即接入RST 端,為RAM 提供備用電源,以保證存儲在RAM 中的信息不丟失,從而合復位后能繼續正常運行。ALE/PROG(30 腳):地址鎖存允許信號端。當8051 上電正常工作后,ALE 引腳不斷向外輸出正脈沖信號,此頻率為振蕩器頻率fOSC 的1/6。CPU 訪問片外存儲器時,ALE 輸出信號作為鎖存低8 位地址的控制信號。平時不訪問片外存儲器時,ALE 端也以振蕩頻率的1/6 固定輸出正脈沖,因而ALE 信號可以用作對外輸出時

24、鐘或定時信號。如果想確定8051/8031 芯片的好壞,可用示波器查看ALE端是否有脈沖信號輸出。如有脈沖信號輸出,則8051/8031 基本上是好的。ALE 端的負載驅動能力為8 個LS 型TTL(低功耗甚高速TTL)負載。此引腳的第二功能PROG 在對片內帶有4KB EPROM 的8751 編程寫入(固化程序)時,作為編程脈沖輸入端。PSEN(29 腳):程序存儲允許輸出信號端。在訪問片外程序存儲器時,此端定時輸出負脈沖作為讀片外存儲器的選通信號。此引肢接EPROM 的OE 端(見后面幾章任何一個小系統硬件圖)。PSEN 端有效,即允許讀出EPROMROM 中的指令碼。PSEN 端同樣可驅

25、動8 個LS 型TTL 負載。要檢查一個8051/8031 小系統上電后CPU 能否正常到EPROMROM 中讀取指令碼,也可用示波器看PSEN 端有無脈沖輸出。如有則說明基本上工作正常。EA/Vpp(31 腳):外部程序存儲器地址允許輸入端/固化編程電壓輸入端。當EA 引腳接高電平時,CPU只訪問片內EPROM/ROM并執行內部程序存儲器中的指令,但當PC(程序計數器)的值超過0FFFH(對8751/8051 為4K)時,將自動轉去執行片外程序存儲器內的程序。當輸入信號EA 引腳接低電平(接地)時,CPU 只訪問外部EPROM/ROM 并執行外部程序存儲器中的指令,而不管是否有片內程序存儲器

26、。對于無片內ROM 的8031 或8032,需外擴EPROM,此時必須將EA 引腳接地。此引腳的第二功能是Vpp 是對8751 片內EPROM固化編程時,作為施加較高編程電壓(一般12V21V)的輸入端。3.輸入/輸出端口P0/P1/P2/P3:P0口(P0.0P0.7,3932 腳):P0口是一個漏極開路的8 位準雙向I/O口。作為漏極開路的輸出端口,每位能驅動8 個LS 型TTL 負載。當P0 口作為輸入口使用時,應先向口鎖存器(地址80H)寫入全1,此時P0 口的全部引腳浮空,可作為高阻抗輸入。作輸入口使用時要先寫1,這就是準雙向口的含義。在CPU 訪問片外存儲器時,P0口分時提供低8

27、位地址和8 位數據的復用總線。在此期間,P0口內部上拉電阻有效。P1口(P1.0P1.7,18 腳):P1口是一個帶內部上拉電阻的8 位準雙向I/O口。P1口每位能驅動4 個LS 型TTL 負載。在P1口作為輸入口使用時,應先向P1口鎖存地址(90H)寫入全1,此時P1口引腳由內部上拉電阻拉成高電平。P2口(P2.0P2.7,2128 腳):P2口是一個帶內部上拉電阻的8 位準雙向I/O口。P口每位能驅動4個LS 型TTL 負載。在訪問片外EPROM/RAM 時,它輸出高8 位地址。P3口(P3.0P3.7,1017 腳):P3口是一個帶內部上拉電阻的8 位準雙向I/O口。P3口每位能驅動4個

28、LS型TTL負載。P3口與其它I/O 端口有很大的區別,它的每個引腳都有第二功能,如下:P3.0:(RXD)串行數據接收。P3.1:(RXD)串行數據發送。P3.2:(INT0#)外部中斷0輸入。P3.3:(INT1#)外部中斷1輸入。P3.4:(T0)定時/計數器0的外部計數輸入。P3.5:(T1)定時/計數器1的外部計數輸入。P3.6:(WR#)外部數據存儲器寫選通。P3.7:(RD#)外部數據存儲器讀選通。3.1.2 STC89C52單片機的中斷系統STC89C52系列單片機的中斷系統有5個中斷源,2個優先級,可以實現二級中斷服務嵌套。由片內特殊功能寄存器中的中斷允許寄存器IE控制CPU

29、是否響應中斷請求;由中斷優先級寄存器IP安排各中斷源的優先級;同一優先級內各中斷同時提出中斷請求時,由內部的查詢邏輯確定其響應次序。在單片機應用系統中,常常會有定時控制需求,如定時輸出、定時檢測、定時掃描等;也經常要對外部事件進行計數。STC89C52單片機內集成有兩個可編程的定時/計數器:T0和T1,它們既可以工作于定時模式,也可以工作于外部事件計數模式,此外,T1還可以作為串行口的波特率發生器。3.1.3 單片機最小系統設計圖3-3 單片機最小系統電路圖 圖3-3為單片機最小系統電路圖,單片機最小系統有單片機、時鐘電路、復位電路組成,時鐘電路選用了12MHZ的晶振提供時鐘,作用為給單片機提

30、供一個時間基準,其中執行一條基本指令需要的時間為一個機器周期,單片機的復位電路,按下復位按鍵之后可以使單片機進入剛上電的起始狀態。圖中10K排阻為P0口的上拉電阻,由于P0口跟其他IO結構不一樣為漏極開路的結構,因此要加上拉電阻才能正常使用。3.2 LCD液晶顯示器簡介由于本設計中要求顯示界面顯示一些參數,因此這里選用了LCD1602作為界面顯示,可以把一些相關的參數進行顯示。 3.2.1 液晶原理介紹液晶顯示器(LCD)英文全稱為Liquid Crystal Display,它一種是采用了液晶控制透光度技術來實現色彩的顯示器。和CRT顯示器相比,LCD的優點是很明顯的。由于通過控制是否透光來

31、控制亮和暗,當色彩不變時,液晶也保持不變,這樣就無須考慮刷新率的問題。顯示接口用來顯示系統的狀態,命令或采集的電壓數據。本系統顯示部分用的是LCD液晶模塊,采用一個16×2的字符型液晶顯示模塊。 點陣圖形式液晶由 M 行×N 列個顯示單元組成,假設 LCD 顯示屏有64行,每行有 128列,每 8列對應 1 個字節的 8 個位,即每行由 16 字節,共 16×8=128個點組成,屏上 64×16 個顯示單元和顯示 RAM 區 1024 個字節相對應,每一字節的內容和屏上相應位置的亮暗對應。一個字符由 6×8 或 8×8點陣組成,即要找

32、到和屏上某幾個位置對應的顯示 RAM區的 8 個字節,并且要使每個字節的不同的位為1,其它的為0,為1的點亮,為0的點暗,這樣一來就組成某個字符。但對于內帶字符發生器的控制器來說,顯示字符就比較簡單了,可讓控制器工作在文本方式,根據在LCD 上開始顯示的行列號及每行的列數找出顯示 RAM對應的地址,設立光標,在此送上該字符對應的代碼即可。3.2.2液晶模塊簡介LCD1602液晶模塊采用HD44780控制器,hd44780具有簡單而功能較強的指令集,可以實現字符移動,閃爍等功能,LM016L與單片機MCU通訊可采用8位或4位并行傳輸兩種方式,hd44780控制器由兩個8位寄存器,指令寄存器(IR

33、)和數據寄存器(DR)忙標志(BF),顯示數RAM(DDRAM),字符發生器ROMA(CGOROM)字符發生器RAM(CGRAM),地址計數器RAM(AC)。IR用于寄存指令碼,只能寫入不能讀出,DR用于寄存數據,數據由內部操作自動寫入DDRAM和CGRAM,或者暫存從DDRAM和CGRAM讀出的數據,BF為1時,液晶模塊處于內部模式,不響應外部操作指令和接受數據,DDTAM用來存儲顯示的字符,能存儲80個字符碼,CGROM由8位字符碼生成5*7點陣字符160中和5*10點陣字符32種.8位字符編碼和字符的對應關系, CGRAM是為用戶編寫特殊字符留用的,它的容量僅64字節,可以自定義8個5*

34、7點陣字符或者4個5*10點陣字符,AC可以存儲DDRAM和CGRAM的地址,如果地址碼隨指令寫入IR,則IR自動把地址碼裝入AC,同時選擇DDRAM或CGRAM,LCD1602液晶模塊的引腳圖如圖3-4所示。圖3-4 LCD1602引腳圖液晶寄存器選擇控制如表3-1。表3-1寄存器選擇控制RSR/W操作說明00寫入指令寄存器(清除屏等)01讀busy flag(DB7),以及讀取位址計數器(DB0DB6)值10寫入數據寄存器(顯示各字型等)11從數據寄存器讀取數據3.2.3液晶顯示部分與STC89C52的接口 如圖3-5所示。用STC89C52的P0口作為數據線,用P1.2、P1.1、P1.

35、0分別作為LCD的EN、R/W、RS。其中EN是下降沿觸發的片選信號,R/W是讀寫信號,RS是寄存器選擇信號本模塊設計要點如下:顯示模塊初始化:首先清屏,再設置接口數據位為8位,顯示行數為1行,字型為5×7點陣,然后設置為整體顯示,取消光標和字體閃爍,最后設置為正向增量方式且不移位。向LCD的顯示緩沖區中送字符,程序中采用2個字符數組,一個顯示字符,另一個顯示電壓數據,要顯示的字符或數據被送到相應的數組中,完成后再統一顯示.首先取一個要顯示的字符或數據送到LCD的顯示緩沖區,程序延時2.5ms,判斷是否夠顯示的個數,不夠則地址加一取下一個要顯示的字符或數據。圖3-5 LCD1602與

36、STC89C52的接口3.3鍵盤模塊設計本按鍵模塊使用的是多位獨立按鍵,按鍵一端接IO口,一端接地,由于單片機的IO口都有內部上拉,因此當按鍵沒有按下的時候,IO檢測到的時候高電平,當按鍵按下的時候,相當于IO短接地,因此這時候單片機檢測到的電平為低電平,通過檢測不同時刻的IO口狀態就可以判斷按下的是那個按鍵。4個按鍵分別代表以下功能,第一為功能按鍵,可以切換不同參數設置界面,第二個為切換按鍵,可以切換時、分、秒等參數進行設置,第三個為增加按鍵,第四個為減少按鍵。其中按鍵還可以設置鬧鐘,重置時間等功能。鍵盤模塊電路圖如圖3-6所示。圖3-6鍵盤模塊電路圖3.4蜂鳴器模塊設計本設計還帶有鬧鐘功能

37、,用戶可以通過按鍵設定好鬧鐘,當當前時間跟鬧鐘時間一致的時候,單片機就可以驅動蜂鳴器發聲。由于蜂鳴器的工作電流一般比較大,以致于單片機的I/O口是無法直接驅動的,所以要利用三極管開關電路來驅動。本處選用的是8550三極管,它是一個PNP型的三極管,當基極給低電平的時候三極管導通,這時候蜂鳴器發聲,當給高電平的時候,三極管關閉,蜂鳴器不發聲。蜂鳴器模塊的電路圖如圖3-7所示。圖3-7蜂鳴器驅動電路圖3.5時鐘模塊的設計本萬年歷系統的主要一部分功能在于時鐘模塊,這里選用串行日歷時鐘芯片DS1302。與采用并行總線與單片機進行數據通信的時鐘芯片相比,DS1302與單片機的連線大為減少,極大的節省了單

38、片機的系統資源,單片機通過讀取DS1302上面的數據可以得到實時時間。3.5.1 DS1302概述DS1302 是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鐘電路,它可以對年、月、日、星期、時、分、秒進行計時,具有閏年補償功能,工作電壓為2.5V5.5V。采用三線接口與CPU進行同步通信,并可采用突發方式一次傳送多個字節的時鐘信號或RAM數據。DS1302內部有一個31×8的用于臨時性存放數據的RAM寄存器。DS1302是DS1202的升級產品,與DS1202兼容,但增加了主電源/后背電源雙電源引腳,同時提供了對后背電源進行涓細電流充電的能力。低功耗時鐘芯片DS1

39、302可以對年、月、日、時、分、秒進行計時,且具有閏年補償等多種功能。DS1302用于數據記錄,特別是對某些具有特殊意義的數據點的記錄上,能實現數據與出現該數據的時間同時記錄。這種記錄對長時間的連續測控系統結果的分析以及對異常數據出現的原因的查找有重要意義。采用DS1302作為記錄測控系統中的數據記錄,其軟硬件設計簡單,時間記錄準確,既避免了連續記錄的大工作量,又避免了定時記錄的盲目性,給連續長時間的測量、控制系統的正常運行及檢查都來了很大的方便,可廣泛應用于長時間連續的測控系統中。在測量控制系統中,特別是長時間無人職守的測控系統中,經常需要記錄某些具有特殊意義的數據及其出現的時間。記錄及分析

40、這些特殊意義的數據,對測控系統的性能分析及正常運行具有重要的意義。傳統的數據記錄方式是隔時采樣或定時采樣,沒有具體的時間記錄,因此只能記錄數據而無法準確記錄其出現的時間;若采用單片機計時,一方面需要采用計數器,占用硬件資源,另一方面需要設置中斷、查詢等,同樣耗費單片機的資源,而且某些測控系統可能不允許。而在系統中采用DS1302則能很好地解決這個問題。DS1302時鐘芯片包括實時時鐘/日歷和31字節的靜態RAM。它經過一個簡單的串行接口與微處理器通信。實時時鐘/日歷提供秒、分、時、日、周、月和年等信息。對于小于31天的月和月末的日期自動進行調整,還包括閏年校正的功能。時鐘的運行可以采用24h或

41、帶AM(上午)/PM(下午)的12h格式。采用三線接口與CPU進行同步通信,并可采用突發方式一次傳送多個字節的時鐘信號或RAM數據。DS1302有主電源/后備電源雙電源引腳:VCC1 在單電源與電池供電的系統中提供低電源,并提供低功率的電池備份;VCC2在雙電源系統中提供主電源,在這種運用方式中,VCC1 連接到備份電源,以便在沒有主電源的情況下能保存時間信息以及數據。DS1302由VCC1或VCC2中較大者供電。當VCC2大于VCC1+0.2V時,VCC2給DS1302供電;當VCC2小于VCC1時,DS1302由VCC1供電。DS1302在任何數據傳送時必須先初始化,把RST腳置為高電平,

42、然后把8位地址和命令字裝入移位寄存器,數據在SCLK的上升沿被輸入。無論是讀周期還是寫周期,開始8位指定40個寄存器中哪個被訪問到。在開始8個時鐘周期,把命令字節裝入移位寄存器之后,另外的時鐘周期在讀操作時輸出數據,在寫操作時寫入數據。時鐘脈沖的個數在單字節方式下為8加8,在多字節方式下為8加字節數,最大可達248字節數。如果在傳送過程中置RST為低電平,則會終止本次數據傳送,并且I/O引腳變為高阻態。上電運行時,在VCC >=2.5V之前,RST腳必須保持低電平。只有在SCLK為低電平時,才能將RST置為高電平。DS1302的內部結構圖如圖3-8所示。圖3-8 DS1302內部結構圖D

43、S1302的引腳排列,其中VCC1為后備電源,VCC2為主電源。在主電源關閉的情況下,也能保持時鐘的連續運行。DS1302由VCC1或VCC2兩者中的較大者供電。當VCC2大于Vcc10.2V時,VCC2 給DS1302供電。當VCC2小于VCC1時,DS1302由VCC1供電。X1和X2是振蕩源,外接32.76kHz晶振。RST是復位/片選線,通過把RST輸入驅動置高電平來啟動所有的數據傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節或多字節數據的傳送手段。當RST為高電平時,所有的數據傳送被初始化,允許對DS1302進行操作

44、。如果在傳送過程中RST置為低電平,則會終止此次數據傳送,I/O引腳變為高阻態。上電運行時,在VCC2.5V之前,RST必須保持低電平。只有在SCLK為低電平時,才能將RST置為高電平。I/O為串行數據輸入輸出端(雙向)。SCLK始終是輸入端。圖3-9為DS1302的引腳示意圖。圖3-9 DS1302 引腳示意圖VCC,GND-直流電源通過這兩個引腳提供給該器件,VCC為+5V 輸入,當提供的5V 電源在正常范圍內器件能充分地被訪問,能對器件讀寫數據。當3V 的電池被連至該器件且VCC 低于1.25×VBAT 時,對器件的讀寫被禁止,而計時功能照常進行,不受低輸入電壓的影響。當Vcc

45、 降到低于VBAT,則RAM 區和計時器將被切換到外部電源VBAT 來供電(名義上VBAT 為3.0V 直流電源)。VBAT-電池輸入引腳??梢允侨我鈽藴实?V 鋰電池或其它電源。為了器件能夠正常工作,電池電壓必須限制在2.03.5V 之間。事實上,寫保護帶電壓被內部電路設置為1.25×VBAT。表3-2 DS1302引腳功能表引腳號引腳名稱功能1VCC2主電源2,3X1,X2振蕩源,外接32768HZ晶振4GND地線5RST復位/片選線6I/O串行數據輸入/輸出端(雙向)7SCLK串行數據輸入端8VCC1后備電源DS1302 的RTC 與RAM 寄存器的地址分配如圖3-10所示。R

46、TC 寄存器地址位于00H 到07h 處。RAM 寄存器地址位于08h3Fh。在多字節存取中,當地址指針到達3Fh,即RAM 空間的最后一個單元,則下一個操作地址將翻卷到00h,即時鐘空間的開頭。圖3-10 DS1302地址分配圖DS1302的控制字如圖3-11所示。控制字節的最高有效位(位7)必須是邏輯1;如果它為邏輯0,則不能把數據寫入到DS1302中。位6如果為0,則表示存取日歷時鐘數據;為1表示存取RAM數據。位51(A4A0)指示操作單元的地址。最低有效位(位0)如為0,表示要進行寫操作;為1表示進行讀操作??刂谱止澘偸菑淖畹臀婚_始輸入/輸出。圖3-11控制字節的含義為了提高對32個

47、地址的尋址能力(地址/命令位15邏輯1),可以把時鐘/日歷或RAM寄存器規定為多字節(burst)方式。位6規定時鐘或RAM,而位0規定讀或寫。在時鐘/日歷寄存器中的地址931或RAM寄存器中的地址31不能存儲數據。在多字節方式中,讀或寫從地址0的位0開始。必須按數據傳送的次序寫最先的8個寄存器。但是,當以多字節方式寫RAM時,為了傳送數據不必寫所有31字節。不管是否寫了全部31字節,所寫的每一字節都將傳送至RAM。數據讀寫程序如圖3-12所示。圖3-12 數據讀寫程序3.5.2 DS1302時鐘和日歷通過讀取正確的寄存器字節能獲得正確的時鐘和日歷信息,實時時鐘寄存器如表3-3 所示。通過寫入

48、正確的寄存器字節能夠設置或者初始化時鐘和日歷。時鐘和日歷寄存器中的內容均采用BCD 碼格式,時鐘寄存器00h的位7 是時鐘停止位,當該位被設置為1 時,晶振失效,當該位被清零時,晶振使能。所以,在初始化程序中,使能晶振(CH 位=0)是很重要的。DS1302 可以運行在12 小時或24 小時模式,小時寄存器的位7 被定義為作為12 小時或24 小時模式選擇位。當該位為高時選擇12 小時模式,采用12 小時模式時,位5 是AM/PM 標志位,該位為1 表示PM。當采用24小時模式時,位5 是第二個10 小時位(2023 小時)。當總線開始工作時,當前的時間信息被傳送給一串二級寄存器,時間信息然后

49、從這些二級寄存器中讀取,而時鐘照常運行。當在讀過程中,主寄存器內容發生變化時,這樣可以避免再次讀寄存器的必要性。DS1302共有12個寄存器,其中有7個寄存器與日歷、時鐘相關,存放的數據位為BCD碼形式,其日歷、時間寄存器及其控制字見表3-2,其中奇數為讀操作,偶數為寫操作。表3-3 DS1302的日歷、時鐘寄存器及其控制字寄存器名命令字取值范圍各位內容寫操作讀操作76543210秒寄存器80H81H00-59CH10SECSEC分鐘寄存器82H83H00-59010MINMIN小時寄存器84H85H01-12或00-232/24010APHRHR日期寄存器86H87H01-28,29,30,

50、31010DATEDATE月份寄存器88H89H01-12000IOMMONTH周日寄存器8AH8BH01-0700000DAY年份寄存器8CH8DH00-9910YEARYEAR時鐘暫停:秒寄存器的位7定義位時鐘暫停位。當它為1時,DS1302停止振蕩,進入低功耗的備份方式。通常在對DS1302進行寫操作時(如進入時鐘調整程序),停止振蕩。當它為0時,時鐘將開始啟動。AM-PM/12-24小時方式:小時寄存器的位7定義為12或24小時方式選擇位。它為高電平時,選擇12小時方式。在此方式下,位5是AM/PM位,此位是高電平時表示PM,低電平表示AM,在24小時方式下,位5為第二個10小時位(2

51、023h)。DS1302 控制寄存器用來控制SQW/OUT 引腳的操作。OUT:輸出控制。當方波輸出失效時,該位控制SQW/OUT 引腳的輸出。如果SQWE=0,若OUT=1 則SQW/OUT 引腳的邏輯電平為1,而OUT=0 則SQW/OUT 引腳的邏輯電平為0。SQWE:方波使能。當該位被設置為邏輯1 時,使能晶振輸出,方波輸出的頻率由RS1 和RS0 位的值來確定。當方波輸出的頻率設為1Hz,則時鐘寄存器內容將在方波的下降沿更新。 表3-4 方波輸出頻率 RS1RS0SQW OUTPUTFREQUENCY 001 Hz014.096 KHz108.192 KHz1132.768 KHzR

52、S:速率選擇。當方波輸出使能時,這些位控制方波輸出的頻率。表3-5列出了方波頻率與RS 位的值的對應關系。3.5.3 DS1302時鐘電路設計實時時鐘芯片DS1302采用串行數據傳輸,可為掉電保護電源提供可編程的充電功能,也可以關閉充電功能,芯片采用32.768Hz晶振。單片機通過時序可以讀出時鐘芯片內部的相關時間信息,DS1302的時鐘電路如圖3-13所示。圖3-13 DS1302時鐘電路圖3.6溫度檢測模塊設計本設計還帶有一個溫度檢測的功能,系統可以通過讀取DS18B20的溫度數據并在LCD1602上顯示,使整個萬年歷的功能更加豐富。3.6.1溫度傳感器工作原理DALLAS 最新單線數字溫

53、度傳感器DS18B20是一種新型的“一線器件”,其體積更小、更適用于多種場合、且適用電壓更寬、更經濟。DALLAS 半導體公司的數字化溫度傳感器DS18B20是世界上第一片支持“一線總線”接口的溫度傳感器。溫度測量范圍為-55+125 攝氏度,可編程為9位12 位轉換精度,測溫分辨率可達0.0625攝氏度,分辨率設定參數以及用戶設定的報警溫度存儲在EEPROM 中,掉電后依然保存。被測溫度用符號擴展的16位數字量方式串行輸出;其工作電源既可以在遠端引入,也可以采用寄生電源方式產生;多個DS18B20可以并聯到3 根或2 根線上,CPU只需一根端口線就能與諸多DS18B20 通信,占用微處理器的

54、端口較少,可節省大量的引線和邏輯電路。因此用它來組成一個測溫系統,具有線路簡單,在一根通信線,可以掛很多這樣的數字溫度計,十分方便。DS18B20引腳如圖3-14所示。圖3-14 DS18B20引腳圖DS18B20的讀寫時序和測溫原理與DS1820相同,只是得到的溫度值的位數因分辨率不同而不同,且溫度轉換時的延時時間由2s 減為750ms。 DS18B20測溫原理:低溫度系數晶振的振蕩頻率受溫度影響很小,用于產生固定頻率的脈沖信號送給計數器1。高溫度系數晶振隨溫度變化其振蕩率明顯改變,所產生的信號作為計數器2的脈沖輸入。計數器1和溫度寄存器被預置在55所對應的一個基數值。計數器1對低溫度系數晶

55、振產生的脈沖信號進行減法計數,當計數器1的預置值減到0時,溫度寄存器的值將加1,計數器1的預置將重新被裝入,計數器1重新開始對低溫度系數晶振產生的脈沖信號進行計數,如此循環直到計數器2計數到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數值即為所測溫度。DS18B20有4個主要的數據部件:a. 光刻ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開始8位(28H)是產品類型標號,接著的48位是該DS18B20自身的序列號,最后8位是前面56位的循環冗余校驗碼(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一個DS18B20

56、都各不相同,這樣就可以實現一根總線上掛接多個DS18B20的目的。b. DS18B20中的溫度傳感器可完成對溫度的測量,以12位轉化為例:用16位符號擴展的二進制補碼讀數形式提供,以 0.0625/LSB形式表達,其中S為符號位。c. DS18B20溫度傳感器的存儲器 DS18B20溫度傳感器的內部存儲器包括一個高速暫存RAM和一個非易失性的可電擦除的EEPRAM,后者存放高溫度和低溫度觸發器 TH、TL和結構寄存器。d. 配置寄存器。DS18B20內部結構及功能:DS18B20的內部結構如圖3-15所示。主要包括:寄生電源,溫度傳感器,64位ROM和單總線接口,存放中間數據的高速暫存器RAM

57、,用于存儲用戶設定溫度上下限值的TH和TL觸發器,存儲與控制邏輯,8位循環冗余校驗碼(CRC)發生器等7部分圖3-15 DS18B20內部結構3.6.2 DS18B20使用中的注意事項DS18B20 雖然具有測溫系統簡單、測溫精度高、連接方便、占用口線少等優點,但在實際應用中也應注意以下幾方面的問題:1)DS18B20 從測溫結束到將溫度值轉換成數字量需要一定的轉換時間,這是必須保證的,不然會出現轉換錯誤的現象,使溫度輸出總是顯示85。2)在實際使用中發現,應使電源電壓保持在5V 左右,若電源電壓過低,會使所測得的溫度精度降低。3)較小的硬件開銷需要相對復雜的軟件進行補償,由于DS1820與微處理器間采用串行數據傳送,因此,在對DS1820進行讀寫編程時,必須嚴格的保證讀寫時序,否則將無法讀取測溫結果。在使用PL/M、C等高級語言進行系統程序設計時,對DS1820操作部分最好采用匯編語言實現。4)在

溫馨提示

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

評論

0/150

提交評論