久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 22849|回復: 2
打印 上一主題 下一主題
收起左側

基于51單片機的電子萬年歷的設計資料

[復制鏈接]
跳轉到指定樓層
樓主
ID:353326 發表于 2018-11-23 21:30 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
目錄

摘  要

ABSTRACT

1 引言

2 功能要求

3 方案論證與設計

3.1 控制部分的方案選擇

3.2 測溫部分的方案選擇

3.3 顯示部分的方案選擇

4 系統硬件電路設計

4.1 主控器 AT89C52

4.2 時鐘電路 DS1302

4.2.1. DS1302的性能特性

4.2.2 DS1302數據操作原理

4.3 測溫電路的設計

4.3.1 溫度傳感器工作原理

4.3.2 DS18B20與單片機的接口電路

4.4 顯示電路的設計

4.5  鍵盤接口的設計

5 系統程序的設計

5.1 陽歷程序設計

5.2 時間調整程序設計

5.3 溫度程序設計

5.3.1 主程序

5.3.2 讀出溫度子程序

5.3.3 溫度轉換命令子程序

5.3.4 計算溫度子程序

5.3.5顯示數據刷新子程序

6 調試及性能分析

6.1 調試步驟

6.2 性能分析

7 總結

參考文獻

致  謝


基于51單片機的電子萬年歷的設計

摘  要

電子萬年歷是單片機系統的一個應用,由硬件和軟件相配合使用。硬件由主控器、時鐘電路、溫度檢測電路、顯示電路、鍵盤接口5個模塊組成。主控模塊用AT89C52、時鐘電路用時鐘芯片DS1302、顯示模塊用LED數碼管、溫度檢測采用DS18B20溫度傳感器、鍵盤接口電路用普通按鍵接上拉電阻完成;軟件利用C語言編程實現單片機程序控制。單片機通過時鐘芯片DS1302獲取時間數據,DS18B20采集溫度信號送該給單片機處理,單片機再把時間數據和溫度數據送給74LS154譯碼,然后通過三極管C9015放大驅動LED數碼管顯示陽歷年、月、日、時、秒、鬧鐘、星期、溫度。


1 引言

隨著微電子技術和超大規模集成電路技術的不斷發展,家用電子產品不但種類日益豐富,而且變得更加經濟實用,單片微型計算機體積小、性價比高、功能強、可靠性高等獨有的特點,在各個領域得到了廣泛的應用。電子萬年歷是一種應用非常廣泛的日常計時工具,數字顯示的日歷鐘已經越來越流行,特別是適合在家庭居室、辦公室、大廳、會議室、車站和廣場等使用。LED數字顯示的日歷鐘顯示清晰直觀、走時準確、可以進行夜視,并且還可以擴展出多種功能。功能也越來越齊全,除了公歷年月日、時分秒、星期顯示及鬧鈴。但通過我們對各種電子鐘表、歷的不斷觀察總結發現目前市場的鐘、歷都存在一些不足之處,比如:時鐘不精確、產品成本太高、無環境溫度顯示等,這都給人們的使用帶來了某些不便。為此設計了一種功能全面、計時準確、成本低廉的基于51單片機的萬年歷。

2 功能要求

1. 萬年歷能用數碼管顯示陽歷年、月、日、星期、[小]時、分、秒并設置指定時間的鬧鈴。

2. 數字式溫度計要求測溫范圍-50~100°C, LED數碼管直讀顯示。

3 方案論證與設計3.1 控制部分的方案選擇

1. 用可編程邏輯器件設計。可采用ALTERA公司的FLEX10K系列PLD器件。設計起來結構清晰,各個模塊,從硬件上設計起來相對簡單,控制與顯示的模塊間的連接也會比較方便。但是考慮到本設計的特點,EDA在功能擴展上比較受局限,而且EDA占用的資源也相對多一些。從成本上來講,用可編程邏輯器件來設計也沒有什么優勢。

    2. 用凌陽16位單片機設計。凌陽16位單片機有豐富的中斷源和時基,方便本實驗的設計。它的準確度相當高,并且C語言和匯編兼容的編程環境也很方便來實現一些遞歸調用。I/O口功能也比較強大,方便使用。用凌陽16位單片機做控制器最有特色的就是它的可編程音頻處理,可完成語音的錄制播放和識別。這些都方便對設計進行擴展,使設計更加完善。成本也相對低一些。但是,在控制與顯示的結合上有些復雜,顯示模組資源相對有限,而且單片機的穩定性不是很高。

3. 主控芯片使用51系列AT89C52單片機,時鐘芯片用美國DALLAS公司推出的一種高性能、低功耗、帶RAM的時鐘DS1302。采用DS1302作為主要計時芯片,可以做到計時準確。更重要的是,DS1302可以在很小電流的后備電源(2.5~5V電源,在2.5V時耗電小于300nA)下繼續計時,停電后時鐘無需重新調整,并可編程選擇多種充電電流來對后備電源進行慢速充電,可以保證后備電源基本不耗電,還可自設鬧鈴,陽歷、星期與年月日自動對應。本系統采用了此方案。

3.2 測溫部分的方案選擇

1.在日常生活及工農業生產中經常要乃至溫度的檢測及控制,傳統的測溫元件有熱電偶和熱電阻。而熱電偶和熱電阻測一般都是電壓,再轉換成對應的溫度,需要比較多的外部硬件支持,硬件電路復雜,軟件調試復雜,制作成本高。

2.與前面相比,采用美國DALLAS半導體公司繼DS1820之后推出的一種改進型智能溫度傳感器DS18B20作為檢測元件,測溫范圍為-55~125°C,最大分辨率可達0.0625°C。DS18B20可以直接讀出被測溫度值,而且采用3線制與單片機相連,減少了外部的硬件電路,具有低成本和易使用的特點。

3.3 顯示部分的方案選擇

1. 液晶顯示方式。液晶顯示效果出眾,可以運用菜單項來方便操作,但是在顯示時,特別是使用秒表功能時掃描速度跟不上,屏幕會有明顯的閃爍。而且由于61板的存儲空間有限,液晶顯示就不能與語音播抱程序同時實現。這些大大影響了電子萬年歷的性能。

2. 相比液晶顯示,8段數碼管雖然操作比液晶顯示略顯繁瑣,但可視范圍十分寬,而且經濟實惠,也不需要復雜的驅動程序。所以最后選擇LED數碼管顯示方案。

綜上所述,按照系統設計功能的要求,確定硬件系統由主控制器、時鐘模塊、測溫電路、顯示模塊、鍵盤接口共5個模塊組成,總體系統構成框圖如圖3.1所示。





圖3.1  電子萬年歷系統構成框圖

4 系統硬件電路設計

電子萬年歷電路原理圖見附件一,系統由主控制器AT89C52、時鐘芯片DS1302、溫度傳感器DS18B20傳感器、顯示電路及鍵盤掃描電路組成。

4.1 主控器 AT89C52

ATMEL公司生產的AT89C52單片機采用高性能的靜態80C51設計,由先進工藝制造,并帶有非易失性Flsah程序存儲器。它是一種高性能、低功耗的8位CMOS微處理芯片,市場應用最多。主要性能特點有:

     8KB Flash ROM,可以檫寫1000次以上,數據保存10年。

     256字節內部RAM。

     電源控制模式

      ——時鐘可停止和恢復;

      ——空閑模式;

      ——掉電模式。

     6個中斷源。

4個中斷優先級。

     4個8位I/O口。

     全雙工增強型UART。

     3個16位定時/計數器,T0、T1(標準80C51)和增加的T2(捕獲和比較)。

     全靜態工作方式:0~24MHz。

4.2 時鐘電路 DS13024.2.1. DS1302的性能特性

實時時鐘,可對秒、分、時、日、周、月以及帶閏年補償的年進行計數;

用于高速數據暫存的31×8位RAM;

最少引腳的串行I/O;

2.5~5.5V電壓工作范圍;

2.5V時耗電小于300nA;

用于時鐘或RAM數據讀/寫的單字節或多字節(脈沖方式)數據傳送方式;

簡單的3線接口;

可選的慢速充電(至Vcc1)的能力。

DS1302時鐘芯片包括實時時鐘/日歷和31字節的靜態RAM。它經過一個簡單的串行接口與微處理器通信。實時時鐘/日歷提供秒、分、時、日、周、月和年等信息。對于小于31天的月和月末的日期自動調整,還包括閏年校正的功能。時鐘的運行可以采用24h或帶AM(上午)/PM(下午)的12h格式。采用三線接口與CPU進行同步通信,并可采用突發方式一次傳送多個字節的時鐘信號或RAM數據。DS1302有主電源/后備電源雙電源引腳:Vcc1在單電源與電池供電的系統中提供低電源,并提供低功率的電池備份;Vcc2在雙電源系統中提供主電源,在這種運用方式中,Vcc1連接到備份電,以便在沒有主電源的情況下能保存時間信息以及數據。DS1302由Vcc1或Vcc2中較大者供電。當Vcc2大于Vcc1+0.2V時,Vcc2給DS1302供電;當Vcc2小于Vcc時, DS13026由Vcc1供電。

4.2.2 DS1302數據操作原理

DS1302在任何數據傳送時必須先初始化,把RST腳置為高電平,然后把8位地址和命令字裝入移位寄存器,數據在SCLK的上升沿被輸入。無論是讀周期還是寫周期,開始8位指定40個寄存器中哪個將被訪問到。在開始8個時鐘周期,把命令字節裝入移位寄存器之后,另外的時鐘周期在讀操作時輸出數據,在寫操作是寫入時寫入數據。時鐘脈沖的個數在單字節方式下為8加8,在多字節方式下為8加字節數,最大可達248字節數。

如果在傳送過程中置RST腳為低電平,則會終止本次數據傳送,并且I/O引腳變為高阻態。上電運行時,在Vcc大于等于2.5V之前,RST腳必須保持低電平。只有在SCLK為低電平時,才能將RST置為高電平。DS1302的引腳及內部結構圖如圖4.1所示,表4.1為各引腳的功能。

DS1302的控制字如圖4.2所示。控制字節的最高位(位7)必須是邏輯1;如果它為0,則不能把數據寫入到DS1302中。位6如果為0,則表示存取日歷時鐘數據;為1表示存取RAM數據。位5~1(A4~A0)指示操作單元的地址。最低有效位(位0)如為0,表示要進行寫操作;為1表示進行讀操作。控制字節總是從最低位開始輸入/輸出。

為了提高對32個地址的尋址能力(地址/命令位1~5=邏輯1),可以把時鐘/日歷或RAM寄存器規定為多字節(burst)方式。位6規定時鐘或RAM,而位0規定讀或寫。在時鐘/日歷寄存器中的地址9~31或RAM寄存器中的地址31不能寄存數據。在多字節方式中,讀或寫從地址0的位0開始。必須按數據傳送的次序寫最先的8個寄存器。但是,當以多字節方式寫RAM時,為了傳送數據不必寫所有31字節。不管是否寫了全部31字節,所寫的每一字節都將傳送至RAM。

表 4.1   DS1302引腳功能

引腳號
引腳名稱
功   能
1
Vcc2
主電源
2,3
X1,X2
振蕩源,外界32.768kHz晶振
4
GND
地線
5
RST
復位/片選線
6
I/O
串行數據輸入/輸出端(雙向)
7
SCLK
串行數據輸入端
8
Vcc1
后備電池

7        6       5      4      3       2       1     0
1
RAM

A4
A3
A2
A1
A0
RAM

圖 4.2   DS1302的控制字

DS1302共有12個寄存器,其中有7個寄存器與日歷、時鐘相關,存放的數據位為BCD碼形式。其日歷、時間寄存器及其控制字見表3.2,其中奇數為讀操作,偶數為寫操作。

時鐘暫停:秒寄存器的位7定義位時鐘暫停位。當它為1時,DS1302停止震蕩,進入低功耗的備份方式。通常在對DS1302進行寫操作時(如進入時鐘調整程序),停止震蕩。當它為0時,時鐘將開始啟動。

AM-PM/12-24[小]時方式:[小]時寄存器的位7定義為12或24[小]時方式選擇位。它為高電平時,選擇12[小]時方式。在此方式下,位5是AM/PM位,此位是高電平時表示PM低電平表示AM。在24[小]時方式下,位5為第二個10[小]時位(20~23h)。

表 4.2  內部寄存器地址和內容

積存器名
命令字節
取值范圍
積存器內容
7
6
5
4
3
2
1
0
秒積存器
80H
81H
00~59
CH
10S
SEC
分積存器
82H
83H
00~59
0
10 min
MIN
[小]時積存器
84H
85H
00~23或01~12
12/24
0
10A/P
HR
HR
日積存器
85H
87H
01~28,29,30,31
0
0
10DATE
DATE
月積存器
88H
89H
01~12
0
0
0
10M
MONTH
周積存器
8AH
8BH
01~07
0
0
0
0
0
DAY
年積存器
8CH
D3H
00~99
10YEAR
YEAR

DS1302的晶震選用32.768kHz,電容推薦值為33pF,因為震蕩頻率較低,也可以不接電容,對計時精度影響不大。

4.3 測溫電路的設計

測溫電路主要使用溫度傳感器DS18B20,由于精度要求不高所以采用2位共陽LED數碼管以動態掃描法實現溫度顯示。其設計原理圖如附件一所示。

4.3.1 溫度傳感器工作原理

DS18B20溫度傳感器是美國DALLAS半導體公司最新推出的一種改進型智能溫度傳感器,與傳統的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據實際要示通過簡單的編程實現9~12位的數字值讀數方式。DS18B20的性能特點如下:

獨特的單線接口僅需要一個端口引腳進行通信;

多個DS18B20可以并聯在唯一的三線上,實現多點組網功能;

無須外部器件;

可通過數據線供電,電壓范圍為3.0~3.5V;

零待機功耗;

溫度以9或12數字量讀出;

用戶可定義的非易失性溫度報警設置;

報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件;

負電壓特性,電源極性接反時,溫度計不會因發熱而燒毀,但不能正常工作。

DS18B20采用3腳PR—35封裝或8腳SOIC封裝,其內部結構框圖如圖4.3所示。

64位ROM的位結構如圖4.4所示。開始8位是產品類型的編號,接著是每個器件的唯一的序號,共有48位,最后8位是前面56位的CRC檢驗碼,這也是多個DS18B20可以采用一線進行通信的原因。非易失性溫度報警觸發器TH和TL,可通過軟件寫入戶報警上下限。

DS18B20溫度傳感器的內部存儲器還包括一個調整暫存RAM和一個易失性的可電擦除的EERAM。高速暫存RAM的結構為8字節存儲器,結構如圖4.5所示。頭2個字節包含測得的溫度信息,第3和第4節是TH和TL的拷貝,是易失的,每次上電復位時被刷新。第5個字節為配置寄存器,它的內容用于確定溫度值的數字轉換分辨率。DS18B20工作時按此寄存器中的分辨率將溫度轉換為相應

8位檢驗CRC
48位序列號
8位工廠代碼(10H)
             MSB            LSB  MSB           LSB   MSB           LSB

                             圖4.4  64位ROM結構圖

溫度LSB
1字節
2字節
3字節
4字節
5字節
6字節
7字節
8字節
9字節

溫度MSB

TH用戶字節1

TL用戶字節2
TH用戶字節1
配置寄存器
TL用戶字節2
保留

保留

保留

CRC


圖4.5 高速暫存RAM結構圖

精度的數值。該字節各位的定義如圖4.6所示。低5位一直1,M是測試模式位,用于設置DS18B20在工作模式還是在測試模式。在DS18B20出廠時該位被設置為0,用戶不要去改動,R1和R0決定溫度轉換的精度位數,即用來設置分辨率,定義方法見表4.3。

由表4.3可見,DS18B20溫度轉換的時間比較長,而且設定的分辨率越高,所需要的溫度數據轉換時間就越長。因此,在實際應用中要將分辨率和轉換時間權衡考慮。

高速暫存RAM的第6、7、8字節保留未用,表現為全邏輯1。第9字節讀出前面所有8字節的CRC碼,可用來檢驗數據,從而保證通信數據的正確性。

當DS18B20接收到溫度轉換命令后,開始啟動轉換。轉換完成后的溫度值就以16位帶符號擴展的二進制補碼形式存儲在高速暫存存儲器的第1、2字節。單片機可以通過單線接口讀出該數據,讀數據時低位在先,高位在后,數據格式以0.0625°C/LSB形式表示。溫度值格式如圖4.7所示。

TM

R1

R0

1

1

1

1

1



圖 4.6  配置寄存器

表 4.3 DS18B20分辨率的定義規定


R1
R0
分辨率/位
測量最大轉換時間/ms
0
0
9
93.75
0
1
10
187.5
1
0
11
375
1
1
12
750


表 4.4 DS18B20溫度與測得值對應表

溫度/°C
二進制表示
十六進制表示
+125
0000 0111   1101 0000
07D0H
+85
0000 0101   0101 0000
0550H
+25.0625
0000 0001   1001 0001
0191H
+10.125
0000 0000   1010 0010
00A2H
+0.5
0000 0000   0000 1000
0008H
0
0000 0000   0000 0000
0000H
-0.5
1111 1111   1111 1000
FFF8H
-10.125
1111 1111   0101 1110
FF5EH
-25.0625
1111 1110   0110 1111
FE6FH
-55
1111 1100   1001 0000
FC90H

23
22
21
20
2-1
2-2
2-3
2-4
S
S
S
S
S
S6
S5
S4

圖 4.7 溫度數字值格式

當符號位S=0時,表現測得的溫度值為正值,可以直接將二進制位轉換為十進制,當符號位S=1時,表示測得的溫度值為負值,要先將補碼變成原碼再計算十進制值。表4.4是一部分溫度值對應的二進制溫度數據。

DS18B20完成溫度轉換后,把測得的溫度值與RAM中的TH、TL字節內容作比較。若T>TH或T<TL,則將該器件內的報警標志位置位,并對主機發出的報警搜索命令作出響應。因此,可用多只DS18B20同時測量溫度并進行報警搜索。

在64位ROM的最高有效字節中存儲有循環冗余檢驗碼(CRC)。主機根據ROM的前56位來計算CRC值,并和存入DS18B20的CRC作比較,以判斷主機收到的ROM數據是否正確。

DS18B20的測溫原理如圖4.8所示。圖中低溫度系數晶振的振蕩頻率受溫度的影響很小,用于產生固定頻率的脈沖信號送給減法計數器1;高溫度系數晶振隨溫度變化其振蕩頻率明顯改變,所產生的信號作為減法計數器2的脈沖輸入。圖中還隱含著計數門,當計算門打開時,DS18B20就對低溫度系數振蕩器產生的時鐘脈沖進行計數,進而完成溫度測量。計數門的開啟時間由高溫度系數振蕩器來決定,每次測量前,首先將-55°C所對應的一個基數分別置入減法計數器1、溫度寄存器中,減法計數器1和溫度寄存器被預置在-55°C所對應的一個基數值。

減法計數器1對低溫系數晶振產生的脈沖信號進行減法計數,當減法計數器1的預置值減到0時,溫度寄存的值將加1,減法計數器1的預置值將重新被裝入,減法計數器1重新開始對低溫度系數晶振產生的脈沖信號進行計數,如此循環直到減法計數器2計數到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數值就是所測溫度值。圖4.8中的斜率累加器用于補償和修正測溫過程中的非線性,其輸出用于修正減法計數器的預置值,只要計數門未關閉就重復上述過程,直到溫度寄存器值達到被測溫度值。

另外,由于DS18B20單線通信功能是分時完成的,它有嚴格的時隙概念,因此讀寫時序很重要。系統對DS18B20的各種操作必須按協議進行。操作協議為:初始化DS18B20(發復位脈沖)   發ROM功能指令    發存儲器操作命令     處理數據。

4.3.2 DS18B20與單片機的接口電路

DS18B20可以采用兩種方式供電,一種是采用電源供電方式,此時DS18B20的1腳接地,2腳作為引線,3腳接電源。另一種是寄生電源供電方式。單片機端口接單線總線,為保證在有效的DS18B20時鐘周期內提供足夠的電流,可用一個MOSFET管來完成對總線的上拉。

當DS18B20處于寫存儲器操作和溫度A/D轉換操作時,總線上必須有強的上拉,上拉開啟時間最大為10us。采用寄生電源供電方式時VDD和GND端均接地。由于單線制只有一根線,因此發送接口必須是三態的。

4.4 顯示電路的設計

顯示部分采用普通的共陽數碼管顯示,采用動態掃描,以減少硬件電路。考慮到第一次掃描17位數碼管顯示時會出現閃爍情況,設計時17個數碼管分3排同時掃描。第一排8個數碼管分別為千年、百年、十年、年、十月、月、十日、日,第二排7個數碼管分別為十時、時、十分、分、十秒、秒,第三排3個數碼管分別為星期、溫度(兩位)顯示。顯示時采用串行口輸出段碼,用1片74LS164來驅動3排數碼管,這樣掃描一次只需7ms。

表  4.5  74LS164特性表

操作模式
輸  入
輸  出
復 位
MR
A
B
Q0
Q1~Q7
移 位
L
×
×
L
Q0~Q6
H
L
L
L
Q0~Q6
H
L
H
L
Q0~Q6
H
H
L
L
Q0~Q6
H
H
H
H
Q0~Q6

74LS164內部為8個D觸發器,用以實現數據的串行移位,74LS164特性見表4.5。單片機以串口方式0(移位寄存器方式)輸出數據,3片74LS164作為3排共陽數碼管的串/并轉換顯示接口。74LS164為TTl單向8位移位寄存器,可實現串行輸入,并行輸出。其中A、B(第1、2腳)為串行數據輸入端,2個引腳按邏輯“與”運算規律輸入信號,共一個輸入信號時可并接,共同作為輸入腳。CP(第8腳)為時鐘輸入端,可連接到串行口的TXD端。每一個時鐘信號的上升沿加到CP端時,移位寄存器移一位。8個時鐘脈沖過后,8位二進制數全部移入74LS164中。MR腳(第9腳)為復位端,當該腳為低電平時,移位寄存器各位復0;只有當它高電平時,時鐘脈沖才起作用。Q1~Q8(第3~6和10~13引腳)并行輸出端分別接數碼管的h~a(因為串口從低位開始傳送)各段對應的引腳上。在給出了8個脈沖后,最先進入74LS164的第一個字節數據到達了最高位。再來1個脈沖,第1個脈沖就會從最高位移出,進入下個74LS164的第1位。3片74LS164首尾相串,而時鐘端則接在一起。這樣,當輸入8個脈沖時,從單片機RXD端輸出的第1字節數據就進入了第1片74LS164中,而當第2個8個脈沖到來后,第1字節數據就進入了第2片74LS164,而隨后的第2字節的數據則進入了第1片74LS164。這樣,當第3個8個脈沖完成后,首次送出的數據被送到了最下面的164(第3片)中,其它數據依次出現在第二和第一片74LS164中,實現了數據在74LS164中的串行輸入、并行輸出。

在方式0狀態下,串行口為同步移位寄存器方式,其波特率是固定的,為fosc/12。數據由RXD(P3.0)端輸入或輸出,同步移位脈沖由TXD(P3.1)端輸出。發送、接收數據時低位在先。所以根據提供的硬件電路圖,在編寫程序時,查共陽數碼管的段碼的二進制數據應該將正常的共陽數據管0~9的二進制值按位反序排序,如原來的二進制為11000000(C0H),要改為00000011(03H),就能使數碼管正常顯示。

4.5  鍵盤接口的設計

由于按鍵只有5個,用普通按鈕接10K上拉電阻,用查詢法完成讀鍵功能。

5 系統程序的設計5.1 陽歷程序設計

因為使用了時鐘芯片DS1302,陽歷程序只需從DS1302各寄存器中讀出年、周、月、日、[小]時、分、秒等數據,再處理即可。在首次對DS1302進行操作之前,必須對它進行初始化,然后從DS1302中讀出數據,再經過處理后,送給顯示緩沖單元。陽歷程序流程圖見圖5.1所示。

5.2 時間調整程序設計

調整時間用5個調整按鈕,1個作為移位、控制用,2個作為加和減用,還有2個作為鬧鐘調整使用,分別定義為控制按鈕、加按鈕、減按鈕、鬧鐘加按紐、鬧鐘減按紐。在調整時間過程中,要調整的位與別的位應該有區別。所以增加了閃爍功能,即調整的位一直在閃爍,直到調整下一位。閃爍原理就是,讓要調整的一位每隔一定時間熄滅一次,比如說50ms。利用定時器計時,當達到50ms溢出時,就送給該位熄滅符,在下一次溢出時,再送正常顯示的值,不斷交替,直到調整該位結束。此時送正常顯示值給該位,再進入下一位調整閃爍程序。時間調整程序流程圖如圖5.2所示。

5.3 溫度程序設計
系統程序主要包括主程序、讀出溫度子程序、溫度轉換命令子程序、計算溫度子程序、顯示數據刷新子程序等等。
5.3.1 主程序

主程序的主要功能是負責溫度的實時顯示、讀出并處理DS18B20的測量溫度值,溫度測量每1s進行一次。其程序流程圖見5.3。

5.3.2 讀出溫度子程序

主要功能是讀出RAM中的9字節,在讀出時需進行CRC校驗,校驗有錯時不進行溫度數據的改寫。其程序流程圖如圖5.4所示。

5.3.3 溫度轉換命令子程序

溫度轉換子程序主要是發溫度轉換開始命令,當采用12位分辨率時轉換時間約為750ms,在本程序設計中采用1s顯示程序延時法等待轉換的完成。溫度轉換命令子程序流程圖如圖5.5所示。

  

圖5.3  DS18B20溫度計主程序流程圖        圖5.4 讀出溫度子程序流程圖

5.3.4 計算溫度子程序

計算溫度子程序將RAM中讀取值進行BCD碼的轉換運算,并進行溫度值正負的判定,其程序流程圖如圖5.6所示。

5.3.5顯示數據刷新子程序

顯示數據刷新子程序主要是對顯示緩沖器中的顯示數據進行刷新操作,當最高顯示位為0時將符號顯示位移入下一位。程序流程圖如圖5.7所示。

圖5.5 溫度轉換命令子程序流程圖


 

圖5.6  計算溫度子程序流程圖          圖5.7  顯示數據刷新子程序流程圖


6 調試及性能分析6.1 調試步驟

系統的調試分為硬件調試和軟件調試。其中硬件調試主要是檢測硬件電路是否有短路、斷路、虛焊現象。時鐘和測溫部分的硬件電路很簡單,DS1302通過3根線、DS18B20只通過1根線與單片機相連接,很容易檢測,主要是檢測引腳晶振和電源是否接好。另外可以通過軟件來調試硬件,如編寫一個簡單的顯示程序來測試顯示電路連接是否正確。接下來可進行軟件調試,可以編寫只含DS1302的計時和讀寫程序、顯示程序,測試DS1302是否正常工作。最后調試日歷、時間、鬧鐘、報警和溫度程序。

6.2 性能分析

    計時器最關鍵的是計時的精度。電子萬年歷中DS1302上最好使用專用的晶振。經測試制作的電子萬年歷,誤差較大,設計可以通過換用標準晶振或用軟件進行修正。

7 總結

此次設計立足于電子技術的實際運用,不斷實踐,開拓了思維,設計以考查、調研、搜集資料、擬訂方案、進行系統規劃、編程、仿真、調試的流程,使我深刻的體會到了在學習我們專業的過程中理論與實踐相結合的重要性,同時也解決了以前學習比較模糊的專業知識點,使自己掌握的專業知識更加結構化、系統化。

總之,本次設計在各位的精心安排與大力支持下;在指導老師的耐心指導下;在各位同學和朋友的貼心幫助下解決了許多設計中的實際困難,我以最低的成本和最簡單的方案設計出了功能強大的電子萬年歷。



完整的Word格式文檔51黑下載地址:
基于51單片機的電子萬年歷的設計資料.doc (274.5 KB, 下載次數: 126)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏7 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:492846 發表于 2019-3-17 22:17 | 只看該作者
求一波代碼
回復

使用道具 舉報

板凳
ID:194679 發表于 2019-3-26 09:09 | 只看該作者
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久久久一区 | 日韩理论电影在线观看 | re久久 | 精精国产xxxx视频在线播放 | 四虎午夜剧场 | 色中文在线 | 欧美在线亚洲 | 日韩久久中文字幕 | 日本三级全黄三级三级三级口周 | 综合九九 | 久久成人精品 | 日本国产一区二区 | 久久精品一区 | 亚洲综合视频 | 毛片99| 亚洲精品在线观看网站 | 这里只有精品99re | www.亚洲一区二区三区 | 欧美日韩在线看 | 亚洲三区在线观看 | 免费欧美 | 国产精品成人国产乱一区 | a黄视频| 欧美区在线 | www日本在线 | 国产一区二区在线播放 | 国产成人精品免费视频大全最热 | 亚洲三级在线 | 国产91网站在线观看 | av成年人网站| 一区二区精品在线 | 一区二区三区影院 | 亚洲欧美另类在线观看 | 欧美 日韩 国产 一区 | 青春草在线 | 欧美小视频在线观看 | 国产美女在线观看 | 激情欧美日韩一区二区 | 国产在线对白 | 久久久久久中文字幕 | 亚洲精品成人 |