|
單片機,是集 CPU ,RAM ,ROM ,定時器,計數器和多種接口于一體的微控制器。自
20 世紀 70 年代問世以來,以其極高的性能價格比,受到人們的重視和關注。它體積
小、重量輕、抗干擾能力強、環境要求不高、價格低廉、可靠性高、靈活性好、開發
較為容易,廣泛應用于智能生產和工業自動化上。
本系統為基于DS12C887 的 多功能電子鐘 ,以STC89C51單片機 作為主控芯,采用實時
時鐘芯片DS12C887,使用 1602 液晶作為顯示輸出。該系統走時精確,具有鬧鐘設置,
時間模式切換,秒表以及可同時顯示時間、日期等多種功能。本文將詳細介紹STC89C51
單片機和DS12C887 時鐘芯片的基本原理,從軟件和硬件電路的實現兩大方面進行分析
【關鍵詞】
STC89C51 單片機 液晶屏 時鐘芯片 蜂鳴器
目 錄 -
- II --
前 言 ................................................................. 1
一、方案選型: ......................................................... 2
二、系統硬件設計 ....................................................... 3
2.1 51 單片機最小系統設計 ........................................... 3
2.2 電源供電電路設計................................................ 3
2.3 串口通信電路設計................................................ 4
2.4 時鐘芯片電路設計................................................ 4
2.5 LCD顯示電路設計................................................. 6
2.6 報警電路設計.................................................... 6
2.7 鍵控電路設計.................................................... 6
三、系統軟件設計 ....................................................... 7
3.1 系統程序流程圖設計.............................................. 7
3.2 系統程序設計 (見附錄)........................................ 9
四、總結 ............................................................... 9
4.1 作品功能、特色.................................................. 9
4.2 綜合設計的體會.................................................. 9
參考文獻 .............................................................. 11
附錄 .................................................................. 12-
- 1 --
前 言
隨著科學技術的不斷發展 , 人們對時間計量的要求越來越高 。在當今社會,電子
時鐘已經得到相當廣泛的應用,產品多樣,發展更是多元化。本作品是以STC89C51單
片機 作為主控芯片,使用 12MHZ的晶振,使用專用時鐘日歷芯片DS12C887 產生時間
信息,時間精確。軟件部分以C語言為主體,用 1602LCD液晶屏顯示輸出信息,輸出
信息量多,更直觀、人性化。該時鐘可實現人機交互,可通過提供的鍵盤對其進行
調整。系統具有以下功能:年、月、日、時、分、秒顯示;12 小時/24 小時模式切換,
在 12 小時模式中,用AM和PM區分上午和下午;秒表功能;整點鬧鈴和報時功能,且
鬧鐘可設置多組。本次設計的電子時鐘系統由單片機最小系統,1602LCD液晶屏,時
鐘芯片,調整按鍵,蜂鳴器,電源五大部分組成。-
- 2 --
一、方案選型:
我們在設計電子時鐘時遇到了芯片選型的問題,以下是三個設計方案:
方案一:DS1302+數碼管
DS1302 的使用非常方便,而且價格便宜而數碼管顯示的也很清楚,特別是顯示
時間很直觀。但在制作過程中我們發現了這方案的一些問題。DS1302 是不自帶電池,
雖然可以通過外接紐扣電池來達到斷電走時繼續的目的,但在實際調試中會發現這
是比較困難的。因為 DS1302 上電需要復位,而復位就會把正確的走時清零。如果不
復位,DS1302 會出現各種各樣的問題,如不走時、讀出亂碼等。要解決這個問題需
要增加如 2402 等存儲器,上電后先存儲時間值,再復位。這么做無疑增加了電路設
計和軟件設計的復雜度。而使用數碼管顯示,雖然價格也便宜,顯示效果好,但多
位的數碼管在動態掃描的時候會出現閃爍。如果少用幾位,用切換的方法查看日期,
時間等信息又顯得麻煩。
方案二:DS12C887+1602LCD 液晶屏
DS12C887 時鐘芯片功能豐富價格適中,能夠自動產生世紀、年、月、日、時、
分、秒以及時間模式轉換等的時間信息,芯片內部增加了世紀存儲器,從而利用硬
件電路解決了“千年”的問題。DS12C887 時鐘芯片中還自帶有鋰電池,單片機掉電
后時鐘芯片內部的時間信息可以保持十年之久。1602LCD 液晶屏可以輸出 2 行,每行
顯示 16 個字符。雖然 1602LCD 液晶屏較昂貴,但是該液晶屏顯示清晰且不會閃爍,
由于液晶屏是數字式的,因此和單片機系統的接口簡單,操作方便。1602LCD 液晶屏
的功耗主要消耗在其內部的電極和驅動 IC 上,因而耗電量比其它顯示器要少得多,
功耗較低。以上兩種元件的程序編寫簡單,適用于多方面的應用。
方案三:SD2068+1602LCD 液晶屏
SD2068 實時時鐘芯片功能更加豐富,它除了具備有 DS12C887 時鐘芯片的功能,
另外還內置時鐘精度數字調整功能,可以在很寬的范圍內校正時鐘的偏差;內置上
電復位電路及指示位;內置電源穩壓,內部計時電壓可低至 1.5V。該芯片為工業級產
品,是在選用實時時鐘 IC 時的理想選擇。但是該芯片是一款新型的芯片,使用并不
廣泛,操作不方便,可能會出現芯片不穩定等的因素。
因此由以上三種方案進行比較,我們選擇方案二來設計電子時鐘。以 STC89C51-
- 3 --
為主控芯片,DS12C887 為時鐘芯片,1602LCD 液晶屏作為顯示器。程序控制 DS12C887
時鐘芯片實現小時,分,秒和年,月,日的計時,并在 1602LCD 液晶屏上顯示出來。通
過按鍵對 12 小時/24 小時顯示模式切換。當時間走到程序所設定的時間時,蜂鳴器
響起,起到鬧鈴功能。當要
顯示秒表計時時,可以通過按鍵切換來實現。
二、系統硬件設計
2.1 51 單片機最小系統設計
單片機最小系統如下圖 1-1 所示:
圖 1-1
以 STC89C51 單片機為核心,選用 12MHZ 的晶振,由于晶振的頻率越高,單片
機的運行速度就越快,但考慮到單片機的運行速度快會導致對存儲器的要求就會變
高,因此 12MHZ 晶振為最佳選擇。外接電容的值雖然沒有嚴格的要求,但是外接電
容的大小會影響振蕩器的頻率高低、振蕩器的穩定性和起振的快速性,因此我們選
用 30pF 的電容作為起振電容。復位電路為按鍵高電平復位,當按鍵按下,RES 端為
高電平,當高電平持續 4us 的時間就可以使單片機復位。
2.2 電源供電電路設計
電源供電電路如下圖 1-2 所示:-
- 4 --
圖 1-2
我們采用外接 USB 端口的方式為單片機供電,LPOW1 為電源顯示燈,當按鍵
S5 按下,顯示燈亮,表示給單片機供+5V 電壓。
2.3 串口通信電路設計
串口通信電路如下圖 1-3 所示:
圖 1-3 串口通信電路圖
圖中通過 MAX232 進行 TTL 電平和 232 電平轉換,從而單片機和上位機之間通信提供
通道。通信電路的目的就是讓通信雙發的電平匹配,單片機用的是 TTL 電平,上位
機的串口用的是 232 電平。TTL 電平的邏輯 1 的電壓范圍是+3.3V 到+5V,邏輯 0 的
電壓范圍是 0 到+3.3V;232 電平的邏輯 1 的電壓范圍是-15V 到-5V,邏輯 0 的電壓范
圍是+5V 到+15V。因此設計串口通信電路就是讓這兩種電平統一。
2.4 時鐘芯片電路設計
時鐘芯片電路如下圖 1-4 所示: -
- 5 --
圖 1-4
我們采用 DS12C887 時鐘芯片定時及計時功能,DS12C887 時鐘芯片共需要 13 條
信號線。GND、 VCC:直流電源,其中 VCC 接+5V 輸入,GND 接地,當 VCC 輸入為+5V
時,用戶可以訪問 DS12C887 內 RAM 中的數據,并可對其進行讀、寫操作;當 VCC 的
輸入小于+4.25V 時,禁止用戶對內部 RAM 進行讀、寫操作,此時用戶不能正確獲取
芯片內的時間信息;當 VCC 的輸入小于+3V 時, DS12C887 會自動將電源發換到內部
自帶的鋰電池上,以保證內部的電路能夠正常工作 MOT:模式選擇腳。SQW:方波
輸出腳,當供電電壓 VCC 大于 4.25V 時,SQW 腳可進行方波輸出。AD0~AD7:復用地
址數據總線,該總線采用分時復用技術,在總線周期的前半部分,出現在 AD0~AD7
上的是地址信息,可用以選通 DS12C887 內的 RAM,總線周期的后半部分出現在 AD0
~AD7 上的數據信息 AS:地址選通輸入腳。DS/RD:數據選擇或讀輸入腳,該引腳
有兩種工作模式,當 MOT 接 VCC 時,選用 Motorola 工作模式,在這種工作模式中,
每個總線周期的后一部分的 DS 為高電平。在讀操作中,DS 的上升沿使 DS12C887 將
內部數據送往總線 AD0~AD7 上,以供外部讀取 在寫操作中,DS 的下降沿將使總線
AD0~AD7 上的數據鎖存在 DS12C887 中。當 MOT 接 GND 時,選用 Intel 工作模式,在
該模式中,該引腳是讀允許輸入腳 R/W:讀/寫輸入端,該管腳也有 2 種工作模式,
當 MOT 接 VCC 時,R/W 工作在 Motorola 模式 CS:片選輸入,低電平有效
IRQ:中斷請求輸入,低電平有效,該腳有效對 DS12C887 內的時鐘、日歷和 RAM 中
的內容沒有任何影響,僅內部的控制寄存器有影響,在典型的應用中,RESET 可以直
接接 VCC,這樣可以保證 DS1
2C887 在掉電時,其內部控制寄存器不受影響-
- 6 --
2.5 LCD顯示電路設計
1602LCD 液晶屏顯示電路如下圖 1-5 所示:
圖 1-5
1602LCD 液晶屏為 5V 電壓驅動,帶背光,可顯示兩行,每行 16 個字符,不能顯
示漢字。液晶 1,2 端為電源;15,16 為背光電源;為防止直接加 5V 而燒壞背光燈,
在 15 腳串聯一個 1k 電阻用于限流。液晶 3 端為液晶對比度調節端,通過一個 10k
的變位器來調節液晶顯示對比度。液晶 4 端為向液晶控制器寫數據/寫命令選擇端,
接單片機的 P3.5 口。液晶 5 端為讀/寫選擇端,因為我們不從液晶中讀取數據,只
向其寫入命令和顯示數據,因此此端始終選擇為寫狀態,即低電平接地。液晶 6 端
為使能信號,是操作時必須的信號,接單片機的 P3.4 口。
2.6 報警電路設計
蜂鳴器鬧鈴電路如下圖 1-6 所示
圖 1-6
蜂鳴器電路接在單片機的 P2.3 引腳上,當給該引腳一個低電平,三極管導通,蜂鳴器發出
聲音作為鬧鈴。
2.7 鍵控電路設計
按鍵調整電路如下圖 1-7 所示:-
- 7 --
圖 1-7
四個獨立鍵盤均采用查詢方式,我們將按鍵的一端接地,另一端各接一根輸入
線直接與 STC89C51 的 I/O 口相連,當按鍵閉合時,相當于該 I/O 口通過按鍵與地相
連,變成低電平,單片機通過檢測 I/O 口的電平狀態,即可以識別出按下的鍵。通
過四個按鍵實現各方式的切換,S2 用于 12 小時/24 小時的模式切換,S3 用于秒表功
能與時鐘功能間的切換,S4 用于實現參數設置和調節功能。
三、系統軟件設計
3.1 系統程序流程圖設計
流程圖 1:實驗主程序流程圖-
- 8 --
流程圖 2:定時中斷程序流程圖
流程圖 3:調時功能流程圖-
- 9 --
3.2 系統程序設計 (見附錄)
四、總結
4.1 作品功能、特色
本系統實現了人機交互功能,有夏時令制以及萬年歷功能。可對年、月、日、時、
分、秒進行任意設定,多組鬧鐘設定任你行,具有整點報時功能,模式切換隨你意,秒
表功能同時有。
特色:本系統采用 1602LCD 顯示信息,相比其他電子時鐘,其顯示信息更豐富,
可同時顯示時間,日期,星期等。秒表功能精確到毫秒級,比普通具有秒表功能的時鐘
要高一個數量級。鬧鐘可設置多組,解決了普通電子鐘只能設置一組給大家帶來的煩惱。
系統具有斷電保護功能,芯片可以保存掉電時候的信息并繼續工作,其睡眠工作時間可
長達 12 小時
4.2 綜合設計的體會
本次大賽很好的鍛煉了我們的動手能力以及團隊合作能力,讓我們享受到電子設
計的快樂。讓我們開闊了視野,同時也增長了見識,在課余時間發揮想象和積極思考,
鍛煉了自己的思維能力。在元件的選擇和電路的設計上我們大膽創新,敢于嘗試,并
且積極搜查資料,認真分析,選擇出最優的電路組合,使整個系統能夠按照設計要求-
- 10 --
穩定運行。-
- 11 --
參考文獻
[1] 李廣弟等編 單片機基礎北京航空航天大學出版社 2001
[2] 吳金戌等編 8051 單片機實踐與應用清華大學出版社 2001
[3] 王洪慶編 微型計算機控制技術機械工業出版社 2006
[4] 付家才編 單片機控制工程實踐技術化學工業出版社 2004
[5] 鮑宏亞等編 MCS-51 系列單片機應用系統設計及實用技術中國宇航出版社
2005
[6] 楊文龍.單片機原理及應用[M].西安電子科技大學出版社, 2000
[7] 趙文博,劉文濤.單片機語言 C51 程序設計[M].人民郵電出版社, 2006-
- 12 --
附錄
/*******************************************************************************
***************************************
1602 管腳分配:1 2 3 4 5 6 7 8 9 10 11 12 13 14
15 16
VSS VDD VL RS R/W E D0
D1 D2 D3 D4 D5
D6 D7 BLA BLK
| | | | |
|
|
| | |
|
| | |
|
|
| | | | |
|
|
| | |
|
| | |
|
|
P2.5 GND P2.6
P1.0~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~P1.7 GND
(R/W 接 GND 實現只寫不讀)
/*******************************************************************************
**************************************/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit lcd_en=P2^6;
//LCD1602 使能信號 E 位定義
sbit lcd_rs=P2^5;
//LCD1602 讀/寫(H/L)控制信號 RS 位定義
uchar ii,ll;
//在 1602 上寫字符串所用的變量
sbit beep=P2^3;
//蜂鳴器實現鬧鐘報警
sbit dscs=P2^7;
sbit dsas=P2^4;
sbit dsrw=P3^6;
sbit dsds=P3^7;
sbit dsirq=P3^2; //鬧鐘申請
//按鍵部分
sbit s1=P2^0;
sbit s2=P2^1;-
- 13 --
sbit s3=P2^2;
sbit s4=P3^0;
uchar code table4[] =" 20 - - Mon";
uchar code table5[]=" : : ";
uchar count,s3_num,s4_num,flag,flag1;
uchar miao,shi,fen,nian,yue,ri,xinqi,n_miao,n_shi,n_fen;
//顯示字符串
uchar code table1[] =" 2009-07-13 Mon";
uchar code table2[]=" 00:00:00";
uchar code table3[] =" Alarm Clock ";//鬧鐘字符串
//void display()
|
-
-
基于51單片機的電子時鐘設計.rar
2020-3-26 21:56 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
441.56 KB, 下載次數: 23, 下載積分: 黑幣 -5
|