999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于STM32的電子萬年歷系統設計

2015-04-29 00:00:00劉磊
科技資訊 2015年1期

摘 要:電子萬年歷是集時間、日期、星期和溫度功能于一身,讀取直觀方便,市場發展前景廣闊的一個實用系統。本系統利用STM32內部RTC實時時鐘模塊,通過相應的軟件配置和算法設計,實現電子萬年歷的功能,可以在LCD12864顯示屏上實時顯示當前的年、月、日、時、分、秒、星期等信息,具有閏年補償功能,硬件實現簡單,界面友好,系統可靠程度高。本系統就是利用這個模塊,配合LCD12864顯示屏幕,來實時顯示當前時間。下面從理論分析、硬件電路、軟件設計等幾個方面分別說明。

關鍵詞:時鐘電路 萬年歷 STM32 LCD12864

中圖分類號:TN873 文獻標識碼:A 文章編號:1672-3791(2015)01(a)-0000-00

作者簡介:劉磊(1993-),男,漢族,河北蔚縣人,學歷:本科,研究方向:電氣工程及其自動化。

1 理論分析

RTC主要由兩部分組成。第一部分一是與APB1總線相連的APB1接口,它由APB1總線時鐘驅動,主要用于用戶通過APB1總線對其進行讀寫操作。第二部分是一組可編程計數器,它又由RTC預分頻模塊和RTC可編程計數模塊組成,前者用于產生1秒時間基準,后者主要用于初始化當前時鐘時間和進行時鐘計數。RTC內核完全獨立于APB1接口,軟件可以通過APB1接口來訪問預分頻值和時鐘計數器值。

要實現萬年歷功能,必須對RTC的寄存器進行相應的配置。RTC的控制寄存器有兩個,分別為RTC_CRH和RTC_CRL。對RTC_CRH的最低位置1可以允許秒中斷,這也是我們系統所需要的。在RTC_CRL中,位5到位0是有效位,分別是關于RTC關閉、配置標志、寄存器同步標志、溢出標志、鬧鐘標志和秒標志的設置。這其中也有些是需要我們注意的,比如位5為RTC操作位,該位只能由硬件操作,軟件只讀,在進行完一次RTC操作后,必須判斷該位來確定操作是否完成,若未完成,進行等待。RTC的預分頻裝載寄存器也是十分重要的寄存器之一,由RTC_PRLH和RTC_PRLL組成,主要用來配置RTC的分頻數。RTC最重要的寄存器是計數寄存器RTC_CNT,由兩個16位寄存器組成用來進行秒鐘的計數,最大計數值折合成年大概為136年。在修改RTC_CNT時需要進入配置模式。

2 硬件電路

STM32最小系統需要搭建好兩個晶振模塊,分別為32768HZ的低速晶振和8MMZ的高速晶振。然后接入復位電路,用于實現系統的復位功能。最后接入JTAG電路,就可以進行程序的下載和硬件仿真了。

LCD12864液晶顯示屏可以顯示較多的漢字和字符,程序簡單,支持串行和并行通信。在本設計中由于IO口的使用并不是很緊張,故選擇八位并行通信方式。在硬件連接方面需要注意,將顯示屏的DB0-DB7與單片機定義的八位數據口相連,并將RS、RW、EN與單片機定義的相應控制端口相連,最后根據液晶的說明書正確連接電源和背光引腳。

3 軟件設計

軟件方面首先要對STM32的RTC進行相關配置。第一步,使能電源時鐘和備份區域的時鐘,這樣這些區域才能開始正常工作。第二步,要取消備份區域的寫保護,方便對備份區域的數據進行讀寫。同時要標記時鐘已經經過配置,避免每次復位之后需要重新配置時鐘。第三步,使能外部低速振蕩器并為RTC選擇時鐘源,為萬年歷的運行提供基本的時鐘信號。第四步,使能RTC并進行相關的配置,主要包括分頻、RTC的允許配置位、更新配置和設置中斷等。這些配置為RTC按我們的需求工作提供了基礎。第五步也是十分重要的一步,編寫中斷服務函數,在中斷中需要讀出當前的時間值實現時間的實時刷新。

在程序設計方面有幾個重要的函數。首先是time_set函數,這個函數主要功能是以軟件的方式設定一個時間的起始值,也相當于現實生活中的時鐘校準。time_set函數有六個參數分別為year、month、day、hour、min、sec,用來表示用戶欲設定的年、月、日、時、分、秒,返回值為0表示設置失敗,1表示設置成功。程序算法是:若設置年份大于1970年,則將該年份減去1970再乘以一年時間對應的秒數存入某一變量,若設置月份大于1月,則將該月份減去1月乘以一月對應的秒數存入另一變量,依次類推,最后將每一個參數對應的變量相加即得到當前時間相對于1970年1月1日0時0分0秒所走過的秒數。最后將這個秒數寫入到RTC的RTC_CNT寄存器中,作為計數初值。當然在程序中也要對閏年和閏年的2月做特殊處理,不再贅述。

還有一個重要的函數是time_get函數,這個函數的主要功能是將計數器中的值讀出來并轉化為當前的時間,類似于time_set函數的逆過程。首先要將RTC_CNT寄存器中的值存入變量,用這個變量進行關于時間換算的計算。并且我們要定義一個結構體calendar來存放轉換完成后的各個變量的值。換算的方法也是簡單的數學問題,用取商和取余運算就可以得到秒數對應的年、月、日等變量的值。

對于中斷服務函數的處理也很簡單,只需要判斷標志位來確定產生的中斷是不是我們需要的秒中斷,若是則調用time_get函數刷新當前時間。

在主函數中首先要注意的是各個模塊的初始化,包括STM32系統、RTC模塊和LCD12864顯示模塊等。由于沒有外擴鍵盤,所以在下載程序時候需要進行一次時間的校準,即手動更改time_set函數的參數值。然后程序便可以進入while(1)死循環,在循環中不斷執行LCD顯示程序,因為時間是在中斷中刷新,故LCD12864也可以實時顯示當前時間,達到萬年歷的效果。

4 結論

本系統硬件電路簡單,成本低,性價比高,以軟件的方式充分利用STM32片上資源實現了萬年歷的功能,能精確顯示當前時間,系統可靠性高。

參考文獻

[1] 滕振芳,張昆.基于單片機的電子萬年歷的設計.價值工程.2010(6)056.

[2] 何乃味.基于LED點陣顯示的電子萬年歷的設計與實現.安徽電子信息職業技術學院學報.2014(1)19

主站蜘蛛池模板: 亚亚洲乱码一二三四区| 久久精品欧美一区二区| 日本免费精品| 午夜无码一区二区三区在线app| 欧美一区精品| 国产又粗又爽视频| 亚洲中文无码h在线观看 | 午夜精品影院| 一本大道AV人久久综合| 久久成人免费| 成人福利在线免费观看| 国产精品福利导航| 伊人久久大香线蕉aⅴ色| 欧美色视频网站| 国产18在线播放| 无码中文字幕乱码免费2| 国产69囗曝护士吞精在线视频| 日韩东京热无码人妻| 亚洲成a人片7777| 麻豆精品在线| 污视频日本| 国产综合色在线视频播放线视| 欧美不卡二区| 亚洲码一区二区三区| 热re99久久精品国99热| 人妻少妇乱子伦精品无码专区毛片| 国产欧美日韩va| 国产欧美日韩资源在线观看| 亚洲福利视频网址| 国产91色在线| 国产精品所毛片视频| 日日摸夜夜爽无码| 亚洲国产中文欧美在线人成大黄瓜 | 精品一区二区三区自慰喷水| 国产在线拍偷自揄观看视频网站| av大片在线无码免费| 色一情一乱一伦一区二区三区小说| 亚洲看片网| 乱人伦中文视频在线观看免费| 国产69精品久久久久孕妇大杂乱| 国产欧美日韩另类| 国产91丝袜在线播放动漫 | 成人国产精品2021| 免费99精品国产自在现线| 毛片免费视频| 亚洲三级影院| 国产一区成人| 亚洲AⅤ无码日韩AV无码网站| 国产午夜福利片在线观看| 国产激情无码一区二区APP| 欧美翘臀一区二区三区| 成色7777精品在线| 亚洲Aⅴ无码专区在线观看q| 国产jizz| 91无码视频在线观看| 九九热这里只有国产精品| 99久久无色码中文字幕| 26uuu国产精品视频| 亚洲国产成人久久精品软件| 日韩欧美91| 午夜久久影院| 国产电话自拍伊人| 日本精品αv中文字幕| 国产无码在线调教| 国产美女91视频| 野花国产精品入口| 国产在线拍偷自揄观看视频网站| 精品国产美女福到在线直播| 久久久久夜色精品波多野结衣| 欧美丝袜高跟鞋一区二区| 国产精品2| 国产精品va免费视频| 欧美成人A视频| 中文字幕丝袜一区二区| 亚洲午夜福利精品无码| 精品视频在线一区| 日韩毛片基地| 激情無極限的亚洲一区免费| 久久国产成人精品国产成人亚洲| 狠狠色噜噜狠狠狠狠色综合久 | 亚洲午夜福利在线| 一区二区理伦视频|