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