版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 目錄</b></p><p> 一、原理分析(董小雙)4</p><p> 二、方案選擇(董小雙)4</p><p><b> 2.1方案論證4</b></p><p> 2.1.1控制器模塊4</p><p> 2.1.2時(shí)鐘
2、模塊5</p><p> 2.1.3發(fā)聲器模塊6</p><p> 2.1.4顯示模塊6</p><p> 2.1.5電源模塊6</p><p><b> 2.2系統(tǒng)設(shè)計(jì)6</b></p><p><b> 2.3結(jié)構(gòu)框圖7</b></p>
3、<p> 三、電路原理圖繪制及仿真(何明波)7</p><p> 3.1 STC89C52以及最小系統(tǒng)介紹7</p><p> 3.1.1 STC89C52主要功能及PDIP封裝7</p><p> 3.1.2 STC89C52引腳介紹7</p><p> 3.1.3 STC89C52最小系統(tǒng)8<
4、/p><p> 3.2 DS1302時(shí)鐘芯片以及時(shí)鐘集成模塊介紹9</p><p> 3.2.1 DS1302概述9</p><p> 3.2.2 DS1302引腳介紹9</p><p> 3.2.3 DS1302使用方法10</p><p> 3.2.4 時(shí)鐘集成模塊內(nèi)部原理圖12</
5、p><p> 3. 3 1602字符液晶以及顯示模塊介紹12</p><p> 3.3.1 1602液晶概述12</p><p> 3.3.2 1602引腳介紹 13</p><p> 3.3.3 1602字符液晶使用方法14</p><p> 3.3.4 LCD
6、顯示模塊原理圖15</p><p> 3.4蜂鳴器的使用16</p><p> 3.4.1蜂鳴器的結(jié)構(gòu)原理16</p><p> 3.4.2電路原理16</p><p> 四 、綜合調(diào)試 (溫鵬飛)16</p><p> 4.1程序流程圖17</p><p> 4.3控制
7、程序( 見附錄三 )18</p><p><b> 5 硬件調(diào)試18</b></p><p> 5.1復(fù)位顯示 18</p><p> 5.2實(shí)時(shí)時(shí)間 18</p><p> 5.3時(shí)間設(shè)置 18</p><
8、p> 5.4秒鐘復(fù)位 18</p><p> 5.5鬧鈴電路18</p><p> 5.6 實(shí)物圖18</p><p> 五 、總結(jié) (溫鵬飛)19</p><p><b> 參考文獻(xiàn)19</b></p><p><b> 附錄一20</b>
9、</p><p><b> 附錄二21</b></p><p><b> 附錄三22</b></p><p> 一、原理分析(董小雙)</p><p> 1.1設(shè)計(jì)要求1. 用6個(gè)7段LED數(shù)碼管作為顯示設(shè)備,設(shè)計(jì)時(shí)鐘功能;</p><p> 2. 可以分別設(shè)定
10、小時(shí)、分鐘和秒,復(fù)位后時(shí)間為00:00:00;</p><p> 3. 秒鐘復(fù)位功能,秒復(fù)位鍵按下后,秒回到00;</p><p> 4. 日期、時(shí)間切換功能;</p><p> 5. 使用LCD取代LED作為顯示設(shè)備;</p><p> 6. 實(shí)現(xiàn)鬧鐘功能。</p><p> 其中4、5為擴(kuò)展功能,6為創(chuàng)新
11、功能。</p><p><b> 1.2 原理分析</b></p><p> 本題目要求設(shè)計(jì)一個(gè)能顯示年月日,時(shí)分秒,并且具有復(fù)位等功能的電子時(shí)鐘,我們選用采用ATMEL 公司的STC89C52作為主要控制芯片,選用美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路DS1302時(shí)鐘模塊作為時(shí)鐘信號(hào)芯片,并且采用LCD1602液晶顯示屏顯示時(shí)間,用
12、一個(gè)蜂鳴器作為發(fā)聲設(shè)備完成鬧鐘功能。本設(shè)計(jì)在設(shè)計(jì)要求的基礎(chǔ)上增加了時(shí)間調(diào)節(jié)設(shè)置和鬧鐘設(shè)置功能,通過相關(guān)設(shè)置可以設(shè)置當(dāng)前時(shí)間,和要設(shè)置的鬧鈴提醒時(shí)間,并且還完成了時(shí)間復(fù)位顯示00:00:00以及秒鐘復(fù)位和切換功能??傮w上完成了設(shè)計(jì)要求,并且也有一定的創(chuàng)新。</p><p> 二、方案選擇(董小雙)</p><p> 考慮到功能的實(shí)現(xiàn)對(duì)硬件的要求我們直接選用LCD1602液晶屏作為顯示器件
13、,用89C52作為主要控制芯片采集來自DS1302的時(shí)鐘信號(hào)并經(jīng)過相關(guān)處理送到液晶顯示屏顯示,在主控制芯片的控制下實(shí)現(xiàn)鬧鐘功能并由外接的蜂鳴器產(chǎn)生鬧鈴。整個(gè)時(shí)鐘系統(tǒng)還可以通過主控芯片外接的按鍵設(shè)置時(shí)間及鬧鈴。</p><p><b> 2.1方案論證</b></p><p> 2.1.1控制器模塊</p><p><b> 方案
14、一: </b></p><p> 采用STC89C52芯片作為硬件核心。STC89C52內(nèi)部具有8KB ROM 存儲(chǔ)空間,512字節(jié)數(shù)據(jù)存儲(chǔ)空間,帶有2K字節(jié)的EEPROM存儲(chǔ)空間,與MCS-51系列單片機(jī)完全兼容,STC89C52可以通過串口下載。</p><p><b> 方案二:</b></p><p> 采用AT89S
15、52。AT89S52片內(nèi)具有8K字節(jié)程序存儲(chǔ)空間,256字節(jié)的數(shù)據(jù)存儲(chǔ)空間沒有EEPROM存儲(chǔ)空間,也與MCS-51系列單片機(jī)完全兼容,具有在線編程可擦除技術(shù)。</p><p> 兩種單片機(jī)都完全能夠滿足設(shè)計(jì)需要,STC89C52相對(duì)ATS89C52價(jià)格便宜,且抗干擾能力強(qiáng)。考慮到成本因素,因此選用STC89C52。STC89C52是STC公司生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編
16、程Flash存儲(chǔ)器。STC89C52使用經(jīng)典的MCS-51內(nèi)核,但做了很多的改進(jìn)使得芯片具有傳統(tǒng)51單片機(jī)不具備的功能。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。 具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,512字節(jié)RAM, 32 位I/O 口線,看門狗定時(shí)器,內(nèi)置4KB EEPROM,MAX810復(fù)位電路,3個(gè)16 位定時(shí)器/計(jì)數(shù)器,4個(gè)外部中
17、斷,一個(gè)7向量4級(jí)中斷結(jié)構(gòu)(兼容傳統(tǒng)51的5向量2級(jí)中斷結(jié)構(gòu)),全雙工串行口。另外 STC89C52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式。空閑模式下,CPU 停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)</p><p><b> 2.1.2時(shí)鐘模塊</b></p
18、><p><b> 方案一:</b></p><p> 直接采用單片機(jī)定時(shí)計(jì)數(shù)器提供秒信號(hào),使用程序?qū)崿F(xiàn)年、月、日、星期、時(shí)、分、秒計(jì)數(shù)。采用此種方案雖然減少芯片的使用,節(jié)約成本,但是,實(shí)現(xiàn)的時(shí)間誤差較大。所以不采用此方案。</p><p><b> 方案二:</b></p><p> 采用DS
19、1302時(shí)鐘芯片實(shí)現(xiàn)時(shí)鐘,DS1302芯片是一種高性能的時(shí)鐘芯片,可自動(dòng)對(duì)秒、分、時(shí)、日、周、月、年以及閏年補(bǔ)償?shù)哪赀M(jìn)行計(jì)數(shù),而且精度高,工作電壓2.5V~5.5V范圍內(nèi),2.5V時(shí)耗電小于300nA.采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)31×8的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級(jí)產(chǎn)品,與DS1202兼容,但增加了主電源
20、/后備電源雙電源引腳,同時(shí)提供了對(duì)后備電源進(jìn)行涓細(xì)電流充電的能力。 </p><p> 對(duì)比方案一二,我們采用DS1302作為時(shí)鐘模塊</p><p> 2.1.3發(fā)聲器模塊</p><p> 由于是小型電子時(shí)鐘,我們采用壓電式蜂鳴器作為鬧鈴設(shè)備,蜂鳴器是一種一體化結(jié)構(gòu)的電子訊響器,采用直流電壓供電,主要由多諧振蕩器、壓電蜂鳴片、阻抗匹配器及共鳴箱、外殼等
21、組成。</p><p><b> 2.1.4顯示模塊</b></p><p><b> 方案一:</b></p><p> 采用點(diǎn)陣式數(shù)碼管顯示。點(diǎn)陣式數(shù)碼管是由八行八列的發(fā)光二極管組成,對(duì)于顯示文字比較適合,如采用在顯示數(shù)字顯得太浪費(fèi),且也相對(duì)較高,所以不用此種作為顯示。</p><p>&
22、lt;b> 方案二:</b></p><p> 采用LED數(shù)碼管動(dòng)態(tài)掃描。LED數(shù)碼管價(jià)格便宜,對(duì)于顯示數(shù)字最合適,但功耗較大,且顯示容量不夠,所以也不用此種方案。</p><p><b> 方案三:</b></p><p> 采用LCD液晶顯示屏。液晶顯示屏的顯示功能強(qiáng)大,可顯示大量文字,顯示多樣,清晰可見,且價(jià)格適
23、中,所以采用了LCD數(shù)碼管作為顯示。</p><p> 考慮到功能的實(shí)現(xiàn)對(duì)硬件的要求我們直接采用LCD1602液晶屏作為顯示器,它是一種專門用來顯示字母、數(shù)字、符號(hào)等的點(diǎn)陣型液晶模塊。它由若干個(gè)5X7或者5X11等點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符,每位之間有一個(gè)點(diǎn)距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因?yàn)槿绱怂运荒芎芎玫仫@示圖形,1602是指顯示的內(nèi)容為16X2,即可以
24、顯示兩行,每行16個(gè)字符液晶模塊。 </p><p><b> 2.1.5電源模塊</b></p><p> 方案一:電池供電,便攜,可隨時(shí)隨地應(yīng)用,但電壓不夠穩(wěn)定,電量消耗快。</p><p> 方案二:USB直流供電,穩(wěn)定,但需要有電的地方。</p><p> 整個(gè)系統(tǒng)對(duì)電壓要求不超過5V,為了系統(tǒng)穩(wěn)定顯示清
25、晰,采用USB接口提供電源。</p><p><b> 2.2系統(tǒng)設(shè)計(jì)</b></p><p> 整個(gè)電子時(shí)鐘系統(tǒng)由主控制芯片STC89C52,時(shí)鐘電路DS1302,顯示模塊LCD1602,蜂鳴器以及相關(guān)設(shè)置按鍵組成。</p><p><b> 2.3結(jié)構(gòu)框圖</b></p><p> 三、
26、電路原理圖繪制及仿真(何明波)</p><p> 3.1 STC89C52以及最小系統(tǒng)介紹</p><p> 3.1.1 STC89C52主要功能及PDIP封裝</p><p> STC89C52是由深圳宏晶科技公司生產(chǎn)的與工業(yè)標(biāo)準(zhǔn)MCS-51指令集和輸出管腳相兼容的單片機(jī)。STC89C52主要功能如表1所示,其PDIP封裝如圖2所示</p>
27、<p> 表1:STC89C52主要功能</p><p> 3.1.2 STC89C52引腳介紹</p><p> ?、?主電源引腳(2根)</p><p> VCC(Pin40):電源輸入,接+5V電源</p><p> GND(Pin20):接地線</p><p> ?、谕饨泳д褚_(2根)&
28、lt;/p><p> XTAL1(Pin19):片內(nèi)振蕩電路的輸入端</p><p> XTAL2(Pin20):片內(nèi)振蕩電路的輸出端</p><p><b> ?、劭刂埔_(4根)</b></p><p> RST/VPP(Pin9):復(fù)位引腳,引腳上出現(xiàn)2個(gè)機(jī)器周期的高電平將使單片機(jī)復(fù)位。</p>&
29、lt;p> ALE/PROG(Pin30):地址鎖存允許信號(hào)</p><p> PSEN(Pin29):外部存儲(chǔ)器讀選通信號(hào)</p><p> EA/VPP(Pin31):程序存儲(chǔ)器的內(nèi)外部選通,接低電平從外部程序存儲(chǔ)器讀指令,如果接高電平則從內(nèi)部程序存儲(chǔ)器讀指令。</p><p> ④可編程輸入/輸出引腳(32根)</p><p&
30、gt; STC89C52單片機(jī)有4組8位的可編程I/O口,分別位P0、P1、P2、P3口,每個(gè)口有8位(8根引腳),共32根。</p><p> P0口(Pin39~Pin32):8位雙向I/O口線,名稱為P0.0~P0.7</p><p> P1口(Pin1~Pin8):8位準(zhǔn)雙向I/O口線,名稱為P1.0~P1.7 </p><p> P2口(Pin21
31、~Pin28):8位準(zhǔn)雙向I/O口線,名稱為P2.0~P2.7 </p><p> P3口(Pin10~Pin17):8位準(zhǔn)雙向I/O口線,名稱為P3.0~P3.7</p><p> 圖2:STC89C52 PDIP封裝圖</p><p> 3.1.3 STC89C52最小系統(tǒng) </p><p> 最小系統(tǒng)是指能進(jìn)行正常工作的最簡(jiǎn)單
32、電路。STC89C52最小應(yīng)用系統(tǒng)電路如圖3所示。它包含五個(gè)電路部分:電源電路、時(shí)鐘電路、復(fù)位電路、片內(nèi)外程序存儲(chǔ)器選擇電路、輸入/輸出接口電路。其中電源電路、時(shí)鐘電路、復(fù)位電路是 保證單片機(jī)系統(tǒng)能夠正常工作的最基本的三部分電路,缺一不可。</p><p> 電源電路 芯片引腳VCC一般接上直流穩(wěn)壓電源+5V,引腳GND接電源+5V的負(fù)極,電源電壓范圍在4~5.5之間,可保證單片機(jī)系統(tǒng)能正常工作。</p
33、><p> 時(shí)鐘電路 單片機(jī)引腳18和引腳19外接晶振及電容, STC89C52芯片的工作頻率可在2~33MHz范圍之間選,單片機(jī)工作頻率取決于晶振XT的頻率,通常選用11.0592MHz晶振。兩個(gè)小電容通常取值3pF,以保證振蕩器電路的穩(wěn)定性及快速性。</p><p> 復(fù)位電路 一般若在引腳RST上保持24個(gè)工作主頻周期的高電平,單片機(jī)就可以完成復(fù)位,但為了保證系統(tǒng)可靠地復(fù)位,復(fù)位
34、電路應(yīng)使引腳RST保持10ms以上的高電平。如圖復(fù)位電路帶有上電自動(dòng)復(fù)位功能,當(dāng)電路上電時(shí),由于C1電容兩端電壓值不能突變,電源+5V會(huì)通過電容向RST提供充電電流,因此在RST引腳上產(chǎn)生一高電平,使單片機(jī)進(jìn)入復(fù)位狀態(tài)。隨著電容C1充電,它兩端電壓上升使得RST電位下降,最終使單片機(jī)退出復(fù)位狀態(tài)。正常運(yùn)行時(shí),可按復(fù)位按鈕對(duì)單片機(jī)復(fù)位。</p><p> 3.2 DS1302時(shí)鐘芯片以及時(shí)鐘集成模塊介紹<
35、/p><p> 3.2.1 DS1302概述</p><p> DS1302 是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘芯片,它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為2.5V~5.5V。采用雙電源供電(主電源和備用電源),同時(shí)提供了對(duì)后背電源進(jìn)行涓細(xì)電流充電的能力。采用三線接口與CPU進(jìn)行同步通信。</p><
36、p> 圖4:DS1302封裝圖</p><p> 3.2.2 DS1302引腳介紹</p><p><b> 各引腳功能為:</b></p><p> Vcc: 主電源;Vcc2:備用電源。當(dāng)Vcc2>Vcc1+0.2V時(shí),由Vcc2向DS1302供電;當(dāng)Vcc2<Vcc1時(shí),由Vcc1向DS1302供電。&l
37、t;/p><p> SCLK:串行時(shí)鐘輸入端,控制數(shù)據(jù)的輸入與輸出</p><p> I/O: 三線接口時(shí)的雙向數(shù)據(jù)線 </p><p> CE: 輸入信號(hào),在讀、寫數(shù)據(jù)期間必須為高</p><p> 3.2.3 DS1302使用方法</p><p> (1) 時(shí)鐘芯片DS1302的工作原理:<
38、/p><p> DS1302在每次進(jìn)行讀、寫程序前都必須初始化,先把SCLK端置 “0”,接著把RST端置“1”,最后才給予SCLK脈沖;讀/寫時(shí)序如圖5所示。表2為DS1302的控制字,此控制字的位7必須置1,若為0則不能把對(duì)DS1302進(jìn)行讀寫數(shù)據(jù)。對(duì)于位6,若對(duì)程序進(jìn)行讀/寫時(shí)RAM=1,對(duì)時(shí)間進(jìn)行讀/寫時(shí),CK=0。位1至位5指操作單元的地址。位0是讀/寫操作位,進(jìn)行讀操作時(shí),該位為1;該位為0則表示進(jìn)行的
39、是寫操作。控制字節(jié)總是從最低位開始輸入/輸出的。表6為DS1302的日歷、時(shí)間寄存器內(nèi)容:“CH”是時(shí)鐘暫停標(biāo)志位,當(dāng)該位為1時(shí),時(shí)鐘振蕩器停止,DS1302處于低功耗狀態(tài);當(dāng)該位為0時(shí),時(shí)鐘開始運(yùn)行。“WP”</p><p> 是寫保護(hù)位,在任何的對(duì)時(shí)鐘和RAM的寫操作之前,WP必須為0。當(dāng)“WP”為1時(shí),寫保護(hù)位防止對(duì)任一寄存器的寫操作。</p><p> (2) DS1302的控
40、制字節(jié)</p><p> DS1302的控制字如表所示??刂谱止?jié)最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入DS1302中,位6如果0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進(jìn)行寫操作,為1表示進(jìn)行讀操作,控制字節(jié)總是從最低位開始傳輸</p><p> 表2:DS1302控制字</p>
41、<p> (3) 數(shù)據(jù)輸入輸出(I/O)</p><p> 在控制指令字輸入后的下一個(gè)SCLK時(shí)鐘的上升沿時(shí),數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個(gè)SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時(shí)從低位0位到高位7。其讀寫時(shí)序如圖示</p><p> 圖5:DS1302讀寫時(shí)序</p><p>
42、 ?。?)DS1302寄存器</p><p> DS1302中與時(shí)間、日期有關(guān)的寄存器共有12個(gè),其中7個(gè)存放數(shù)據(jù)的格式為BCD碼格式,其讀寫地址如下表所示</p><p> 表3:DS1302時(shí)鐘寄存器</p><p> 第一行秒寄存器,CH為時(shí)鐘暫停標(biāo)志位,該位為1時(shí)時(shí)鐘停止,該位為0時(shí)時(shí)鐘運(yùn)行</p><p> 第二行分寄存器,
43、bit0~bit6表示分鐘數(shù),因采用BCD編碼,所以低四位最大能表示的數(shù)字為9,計(jì)數(shù)滿向高三位進(jìn)1。</p><p> 第三行時(shí)寄存器,12/24用來定義DS1302小時(shí)的運(yùn)行模式,12小時(shí)模式下bit5為1表示PM下午,bit5為0表示AM上午。</p><p> 第八行控制寄存器,bit7是寫保護(hù)位WP,當(dāng)WP為1時(shí),寫保護(hù)位可防止對(duì)任一寄存器的寫操作,在任何的對(duì)時(shí)鐘和RAM的寫操
44、作之前,WP位必須為0 。此外,DS1302 還有年份寄存器、控制寄存器、充電寄存器、時(shí)鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。時(shí)鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內(nèi)容。 </p><p> 圖6:DS1302內(nèi)部原理圖</p><p> DS1302與RAM相關(guān)的寄存器分為兩類:一類是單個(gè)RAM單元,共31個(gè),每個(gè)單元組態(tài)為一個(gè)8位的字節(jié),其命令控制字為C0H~FD
45、H,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的RAM寄存器,此方式下可一次性讀寫所有的RAM的31個(gè)字節(jié),命令控制字為FEH(寫)、FFH(讀)。</p><p> 3.2.4 時(shí)鐘集成模塊內(nèi)部原理圖 </p><p> 3. 3 1602字符液晶以及顯示模塊介紹</p><p> 3.3.1 1602液晶概述</p>
46、<p> 工業(yè)字符型液晶,1602是指顯示的內(nèi)容為16*2,即能夠同時(shí)顯示兩行,每行16個(gè)字符。常見的1602字符液晶有兩種,一種顯示的是綠色背光黑色字體,另一種顯示藍(lán)色背光白色字體,目前市面上字符液晶絕大多數(shù)是基于HD44780液晶芯片的,控制原理是完全相同的。本課題所用1602液晶模塊,顯示屏是藍(lán)色背光白色字體。如圖6所示</p><p> 圖8:1602字符液晶</p><
47、p> 3.3.2 1602引腳介紹 </p><p> 表4:1602字符液晶引腳說明</p><p> 各個(gè)引腳具體功能說明:</p><p> 第1腳:GND為地電源。</p><p> 第2腳:VCC接5V正電源。</p><p> 第3腳:VO為液晶顯示器對(duì)
48、比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高,對(duì)比度過高時(shí)會(huì)產(chǎn)生重影,使用一個(gè)1K的電位器調(diào)整對(duì)比度。</p><p> 第4腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器,低電平時(shí)選擇指令寄存器。</p><p> 第5腳:R/W為讀寫信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。</p><p> 第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平
49、時(shí),液晶模塊執(zhí)行命令。</p><p> 第7~14腳:DB0~DB7為8位雙向數(shù)據(jù)線。</p><p> 第15~16腳:背光燈電源。</p><p> 3.3.3 1602字符液晶使用方法</p><p><b> ?。?)基本操作時(shí)序</b></p><p> 圖9:1602液晶讀
50、時(shí)序圖</p><p> 圖10:1602液晶寫時(shí)序圖</p><p><b> ?。?)RAM</b></p><p> 1602液晶控制器芯片內(nèi)部帶有80個(gè)8位的RAM緩沖區(qū),其地址和屏幕的對(duì)應(yīng)關(guān)系如圖7示</p><p> 圖11地址和屏幕的對(duì)應(yīng)關(guān)系圖</p><p> ?。?)16
51、02字符液晶字庫</p><p> 1602液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(CGROM)已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖形,如下表所示,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號(hào)、和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時(shí)模塊把地址41H中的點(diǎn)陣字符圖形顯示出來,我們就能看到字母“A” 。</p><p>
52、 圖121602字符液晶字庫</p><p> 3.3.4 LCD顯示模塊原理圖</p><p> 圖13 LCD顯示模塊原理圖</p><p><b> 3.4蜂鳴器的使用</b></p><p> 3.4.1蜂鳴器的結(jié)構(gòu)原理</p><p> 壓電式蜂鳴器 壓電式蜂鳴器主要由多諧振蕩
53、器、壓電蜂鳴片、阻抗匹配器及共鳴箱、外殼等組成。有的壓電式蜂鳴器外殼上還裝有發(fā)光二極管。</p><p> 多諧振蕩器由晶體管或集成電路構(gòu)成。當(dāng)接通電源后(1.5~15V直流工作電壓),多諧振蕩器起振,輸出1.5~2.5kHZ的音頻信號(hào),阻抗匹配器推動(dòng)壓電蜂鳴片發(fā)聲。</p><p> 壓電蜂鳴片由鋯鈦酸鉛或鈮鎂酸鉛壓電陶瓷材料制成。在陶瓷片的兩面鍍上銀電極,經(jīng)極化和老化處理后,再與黃
54、銅片或不銹鋼片粘在一起。</p><p><b> 3.4.2電路原理</b></p><p> 如圖14所示,使用SH69P43 為控制芯片,使用4MHz 晶振作為主振蕩器。</p><p> PORTC.3/T0 作為I/O 口通過三極管Q2 來驅(qū)動(dòng)蜂鳴器LS1,而PORTC.2/PWM0 則作為PWM 輸出口通過三極管Q1 來驅(qū)動(dòng)蜂
55、鳴器LS2。另外在PORTA.3 和PORTA.2 分別接了兩個(gè)按鍵,一個(gè)是PWM 按鍵,是用來控制PWM 輸出口驅(qū)動(dòng)蜂鳴器使用的;另一個(gè)是PORT 按鍵,是用來控制I/O 口驅(qū)動(dòng)蜂鳴器使用的。連接按鍵的I/O 口開內(nèi)部上拉電阻。</p><p><b> 圖14.蜂鳴器電路</b></p><p> 3.5總原理圖(見附件一)
56、 </p><p> 四 、綜合調(diào)試 (溫鵬飛) </p><p><b> 4.1程序流程圖</b></p><p> 圖15主程序流程圖 </p><p><b> 圖16切換與復(fù)位<
57、;/b></p><p> 4.2時(shí)間設(shè)置程序流程圖( 見附錄二 )</p><p> 4.3控制程序( 見附錄三 )</p><p><b> 5 硬件調(diào)試</b></p><p> 5.1復(fù)位顯示 </p><p> 5.2實(shí)時(shí)時(shí)間
58、 </p><p> 5.3時(shí)間設(shè)置 </p><p> 5.4秒鐘復(fù)位 </p><p> 5.5鬧鈴電路 </p><p><b> 5.6 實(shí)物圖</b></p><p><b> 五 總結(jié) </b>
59、;</p><p> 這次課程設(shè)計(jì)比較順利,完成了所有的設(shè)計(jì)目的,唯一不足的地方是鬧鐘部分由于燒壞了蜂鳴器改用二極管閃爍示警,在焊接的過程中不夠仔細(xì),漏焊虛焊的情況時(shí)有發(fā)生,這點(diǎn)需要我們提高警惕。在調(diào)試過程中首先遇到的問題是顯示頻的輝度不夠,查閱資料后接上滑動(dòng)變阻器才解決這個(gè)問題,然后就是時(shí)鐘的時(shí)間并不走動(dòng),仿真了幾次才發(fā)現(xiàn)是電源的電流不符合時(shí)鐘模塊的要求,這些問題暴漏了我們對(duì)課本上所學(xué)的知識(shí)的運(yùn)用還不夠熟練。
60、</p><p> 在調(diào)試過程中往往一個(gè)小小的錯(cuò)誤都會(huì)話費(fèi)我們巨大的精力去解決,這也反映了電子專業(yè)對(duì)精密準(zhǔn)確程度的要求這高,在設(shè)計(jì)過程中我們必需嚴(yán)謹(jǐn)以及考慮周全,盡量避免不必要的錯(cuò)誤。</p><p> 在設(shè)計(jì)制作的過程中要感謝同學(xué)之間的相互協(xié)作、集思廣益,發(fā)揚(yáng)團(tuán)隊(duì)精神,最終才獲得好的結(jié)果,希望在今后的學(xué)習(xí)中能夠有更多的機(jī)會(huì)鍛煉我們,真正做到學(xué)以致用,學(xué)有所獲。</p>
61、<p><b> 參考文獻(xiàn)</b></p><p> [1]李廣第,朱月秀,冷租祁.單片機(jī)基礎(chǔ)第三版[M].北京:北京航空航天大學(xué)出版社</p><p> [2]李慶亮.C語言程序設(shè)計(jì)實(shí)用教程[M].北京:機(jī)械工業(yè)出版社,2005.3</p><p> [3]康華光.電子技術(shù)基礎(chǔ)數(shù)字部分[M].北京:高等教育出版社,2008&
62、lt;/p><p> [4]康華光.電子技術(shù)基礎(chǔ)模擬部分[M].北京:高等教育出版社,2008</p><p> [5]楊志忠.數(shù)字電子技術(shù)[M].北京:高等教育出版社,2003.12</p><p> [6]及力.Protel 99 SE原理圖與PCB設(shè)計(jì)教程[M].北京:電子工業(yè)出版社,2007.8</p><p> [7]邢小杰.單
63、片機(jī)電子時(shí)鐘設(shè)計(jì)[j].中國科技博覽,2009。</p><p><b> 附錄一</b></p><p><b> 附錄二</b></p><p><b> 附錄三</b></p><p> #include<reg52.h>//52單片機(jī)頭文件,規(guī)定了5
64、2單片機(jī)的寄存器和IO口等</p><p> #include<intrins.h>//_nop_空指令及左右循環(huán)移位子函數(shù)庫 </p><p> #define uchar unsigned char//宏定義</p><p> #define uint unsigned int//宏定義</p><p> sbit l
65、cden=P2^2;//定義下面通過lcden來操作P2^2口,1602液晶使能控制端</p><p> sbit lcdwr=P2^1;//定義下面通過lcdrw來操作P2^1口,1602讀寫選擇端</p><p> sbit lcdrs=P2^0;//定義選數(shù)據(jù)寄存器選指令寄存器控制端</p><p> sbit sda=P3^6;//定義DS1302數(shù)據(jù)
66、總線</p><p> sbit rst=P3^4;//DS1320復(fù)位</p><p> sbit sck=P3^5;//定義時(shí)鐘總線</p><p> sbit s1=P1^0;//定義設(shè)置按鈕</p><p> sbit s2=P1^1;//定義調(diào)時(shí)按鈕</p><p> sbit s3=P1^2;//
67、定義確定按鈕</p><p> sbit s4=P1^3;</p><p> sbit k1=P1^4;</p><p> sbit k2=P1^5;</p><p> sbit kss=P1^6;</p><p> sbit resmiao=P1^7;</p><p> sbit
68、ACC0=ACC^0;</p><p> sbit ACC7=ACC^7;</p><p> sbit BELL=P3^7;</p><p> char fen,shi,miao,ri,yue,nian,zhou,s1num,s2num,s4num,flag1,flag2,lshi,lfen;</p><p> uchar code
69、table0[]={" 2014-06-01 7 "};//要寫入1602液晶的數(shù)據(jù)</p><p> uchar code table1[]={" 00:00:00 08:00 "};//字庫中的字可直接以外加""號(hào)的形式直接寫入</p><p> uchar code table2[]={" Welcom
70、e To "};//歡迎界面</p><p> uchar code table3[]={" XI NAN DA XUE "}; //歡迎界面</p><p> uchar code table4[]={"****************"};</p><p> /*****************
71、**************************************************************</p><p> 時(shí)函數(shù),z的取值為這個(gè)函數(shù)的延時(shí)ms數(shù),delay(200);大約延時(shí)200ms. delay(500);大約延時(shí)500ms</p><p> **************************************************
72、*****************************/</p><p> void delay(uint z) </p><p> { </p><p><b> uint x,y;</b></p><p> for(x=z;x>0;x--)</p>
73、<p> for(y=110;y>0;y--);</p><p><b> }</b></p><p> /*********************蜂鳴器函數(shù)************************************************/</p><p> void didi() </p>
74、;<p><b> { </b></p><p><b> uchar i;</b></p><p> for(i=0;i<60;i++)</p><p><b> {</b></p><p><b> BELL = 0;</b
75、></p><p><b> delay(1);</b></p><p><b> BELL = 1;</b></p><p><b> delay(1);</b></p><p><b> }</b></p><p>
76、;<b> }</b></p><p> /*******************向1602液晶中寫一個(gè)指令**************************************/</p><p> void write_com(uchar com)</p><p><b> {</b></p>
77、<p> lcdwr=0;//lcdwr為讀寫控制端,lcdwr=0,這里可不寫</p><p> lcdrs=0; //液晶rs接口為0時(shí),寫指令,rs為1時(shí)寫數(shù)據(jù)</p><p><b> lcden=0;</b></p><p> P0=com; //將要寫的指令賦給P0口
78、,</p><p> delay(5); //由1602讀寫操作時(shí)序圖,先將指令賦給P0口,延時(shí)后將使能</p><p> lcden=1; // 端lcden置高,再延時(shí)一段時(shí)間,然后將lcden置低,這樣指令</p><p> delay(5); // 就寫入到LCD了</p><p><b> lc
79、den=0;</b></p><p><b> }</b></p><p> /****************************向液晶寫數(shù)據(jù)***************************************/</p><p> void write_data(uchar date)//與寫指令類似,這里lc
80、drs設(shè)為1</p><p><b> {</b></p><p> lcdrs=1;lcdwr=0;lcden=0;</p><p><b> P0=date;</b></p><p><b> delay(5);</b></p><p>&l
81、t;b> lcden=1;</b></p><p><b> delay(5);</b></p><p><b> lcden=0;</b></p><p><b> }</b></p><p> /*************************
82、****初使化1602液晶************************************/</p><p> void init_1602()</p><p><b> {</b></p><p><b> lcdwr=0;</b></p><p><b> lcden=
83、1;</b></p><p> write_com(0x38);//設(shè)置LCD為16*2顯示、5*7點(diǎn)陣、8位數(shù)據(jù)接口模式</p><p> write_com(0x0c);//開顯示、不顯示光標(biāo)</p><p> write_com(0x06);//寫一個(gè)字符后,地址指針加1</p><p> write_com(0x0
84、1);//顯示清0</p><p> write_com(0x80);</p><p><b> }</b></p><p> /*******************************************************************************/</p><p> vo
85、id gudingtime_1602()</p><p><b> {</b></p><p> uchar num;</p><p> write_com(0x80);//將指針指向初始位置</p><p> for(num=0;num<16;num++)//循環(huán)函數(shù),用于將" 2014-06-
86、01 7 "寫入液晶</p><p> write_data(table0[num]);</p><p> write_com(0x80+0x40);//將指針指向1602液晶的第二行</p><p> for(num=0;num<16;num++)//功能與上同,用于將" 08:08:08 08:00 "寫入<
87、;/p><p> write_data(table1[num]);</p><p><b> }</b></p><p> /**************************顯示歡迎界面函數(shù)*************************************/</p><p> void displayst
88、ar(void) </p><p><b> {</b></p><p><b> uchar i;</b></p><p> write_com(0x80);</p><p> for(i=0;i<16;i++)</p><p> write_data(ta
89、ble2[i]);</p><p> write_com(0x80+0x40);</p><p> for(i=0;i<16;i++)</p><p> write_data(table3[i]);</p><p><b> }</b></p><p> /************
90、***************顯示時(shí)間、日期子函數(shù)*********************************/</p><p> void write_sfm(uchar add,uchar time)//用于在1602上顯示年、月、日、時(shí)、分、秒。Add為顯示位置,time為要顯示的內(nèi)容</p><p> { <
91、/p><p> uchar shiwei,gewei;</p><p> shiwei=time/16; //將從DS1302中讀取的BCD碼數(shù)據(jù)轉(zhuǎn)化成10進(jìn)制個(gè)位和10 </p><p> gewei=time%16; //進(jìn)制十位</p><p> write_com(add+0x80);//定義顯示在液晶的什么位
92、置</p><p> write_data(0x30+shiwei);//由1602液晶字庫可知,0~9的數(shù)據(jù)碼分別對(duì)應(yīng)0x30~0x39</p><p> write_data(0x30+gewei);//初使化中設(shè)定了寫一個(gè)字符后,地址指針加1,因此這里</p><p> } // 不用重新光標(biāo)寫位</p&g
93、t;<p> /**************************顯示周子函數(shù)*****************************************/</p><p> void write_zhou(uchar time1)//用于在1602上顯示周信息,與顯示</p><p> { //時(shí)間日期子函數(shù)類似&
94、lt;/p><p> uchar gewei;</p><p> gewei=time1%16;//一周七天,因此只需個(gè)位</p><p> write_com(0x80+13);</p><p> write_data(0x30+gewei);</p><p><b> }</b><
95、/p><p> /***************************寫數(shù)據(jù)字節(jié)子函數(shù)************************************/</p><p> void Input_1byte(uchar TD)//寫一字節(jié)數(shù)據(jù)</p><p><b> {</b></p><p><b&g
96、t; uchar i;</b></p><p><b> ACC=TD;</b></p><p> for(i=8;i>0;i--)</p><p><b> {</b></p><p><b> sda=ACC0;</b></p>&
97、lt;p><b> sck=1;</b></p><p><b> sck=0;</b></p><p> ACC=ACC>>1; </p><p><b> }</b></p><p><b> }</b></p>
98、<p> /*************************讀數(shù)據(jù)字節(jié)子函數(shù)**************************************/</p><p> uchar Output_1byte(void)//讀一字節(jié)數(shù)據(jù)</p><p><b> {</b></p><p><b> ucha
99、r i;</b></p><p> for(i=8;i>0;i--)</p><p><b> {</b></p><p> ACC=ACC>>1;</p><p><b> ACC7=sda;</b></p><p><b>
100、 sck=1;</b></p><p><b> sck=0;</b></p><p><b> }</b></p><p> return(ACC);</p><p><b> }</b></p><p> /*********
101、******************寫DS1302數(shù)據(jù)函數(shù)***********************************/</p><p> void write_1302(uchar DS_ADD,uchar DS_DAT)//寫操作</p><p><b> { </b></p><p><b> rst=0;&
102、lt;/b></p><p><b> sck=0; </b></p><p><b> rst=1;</b></p><p> Input_1byte(DS_ADD);</p><p> Input_1byte(DS_DAT);</p><p><b&
103、gt; sck=1;</b></p><p><b> rst=0;</b></p><p><b> }</b></p><p> /***************************讀DS1302數(shù)據(jù)函數(shù)***********************************/</p>
104、<p> uchar read_1302(uchar DS_ADD)//讀操作</p><p><b> { </b></p><p> uchar DS_INF;</p><p><b> rst=0;</b></p><p><b> sck=0; <
105、;/b></p><p><b> rst=1;</b></p><p> Input_1byte(DS_ADD);</p><p> DS_INF=Output_1byte();</p><p><b> sck=1;</b></p><p><b>
106、; rst=0;</b></p><p> return(DS_INF);</p><p><b> }</b></p><p> /*************************初始化DS1302子函數(shù)***********************************/</p><p>
107、void inital_1302()</p><p><b> {</b></p><p> write_1302(0x8e,0x00);//禁止寫保護(hù)</p><p> write_1302(0x90,0xaa);//定義充電</p><p> write_1302(0x80,0x00);//秒 </
108、p><p> write_1302(0x84,0x00);//時(shí) </p><p> write_1302(0x82,0x00);//分</p><p> write_1302(0x8c,0x14);//年</p><p> write_1302(0x88,0x06);//月</p><p> write
109、_1302(0x86,0x01);//日</p><p> write_1302(0x8a,0x07);//星期</p><p> write_1302(0xc0,0x08);//鬧鐘小時(shí)初始化</p><p> write_1302(0xfc,0x00);//鬧鐘分鐘初始化</p><p> write_1302(0x8e,0x80
110、);//開保護(hù)</p><p><b> }</b></p><p> /********************************************************************************</p><p><b> 掃描函數(shù)</b></p><p>
111、; ********************************************************************************/</p><p> void keyscan()</p><p><b> { </b></p><p> if(s1==0&&s4num==0)//
112、按鍵1按下且s4再次之前未曾按過</p><p><b> { </b></p><p><b> delay(5);</b></p><p> if(s1==0&&s4num==0)</p><p><b> { </b></p>&
113、lt;p><b> flag1=1;</b></p><p><b> s1num++;</b></p><p> while(!s1);didi();</p><p> if(s1num==1)</p><p><b> {</b></p>
114、<p> write_com(0x80+0x40+8);//光標(biāo)移動(dòng)到**位置</p><p> write_com(0x0f);//顯示光標(biāo)</p><p><b> }</b></p><p> if(s1num==2)</p><p><b> {</b></p&
115、gt;<p> write_1302(0x8e,0x00);//禁止寫保護(hù)</p><p> write_1302(0x80,miao);//寫入秒信息</p><p> write_1302(0x8e,0x80);//開寫保護(hù)</p><p> write_com(0x80+0x40+5);</p><p><b
116、> }</b></p><p> if(s1num==3)</p><p><b> {</b></p><p> write_1302(0x8e,0x00);</p><p> write_1302(0x82,fen);</p><p> write_1302(0x
117、8e,0x80);</p><p> write_com(0x80+0x40+2);</p><p><b> }</b></p><p> if(s1num==4)</p><p><b> {</b></p><p> write_1302(0x
118、8e,0x00);</p><p> write_1302(0x88,yue);</p><p> write_1302(0x8e,0x80);</p><p> write_com(0x80+13);</p><p><b> }</b></p><p> if(s1num==5)&l
119、t;/p><p><b> {</b></p><p> write_1302(0x8e,0x00);</p><p> write_1302(0x84,shi);</p><p> write_1302(0x8e,0x80);</p><p> write_com(0x80+10);<
120、;/p><p><b> }</b></p><p> if(s1num==6)</p><p><b> {</b></p><p> write_1302(0x8e,0x00);</p><p> write_1302(0x86,ri);</p>&l
121、t;p> write_1302(0x8e,0x80);</p><p> write_com(0x80+7);</p><p><b> }</b></p><p> if(s1num==7)</p><p><b> {</b></p><p> writ
122、e_1302(0x8e,0x00);</p><p> write_1302(0x8c,nian);</p><p> write_1302(0x8e,0x80);</p><p> write_com(0x80+4);</p><p><b> }</b></p><p> if(s1
123、num==8)</p><p><b> { </b></p><p><b> flag1=0;</b></p><p><b> s1num=0;</b></p><p> write_1302(0x8e,0x00);</p><p>
124、write_1302(0x8a,zhou);</p><p> write_1302(0x8e,0x80);</p><p> write_com(0x0c);//不顯示光標(biāo)</p><p><b> }</b></p><p><b> }</b></p><p>
125、<b> }</b></p><p> /*******************************************************************************/</p><p> if(s1num!=0&&s4num==0)//按鍵1按下*次且s4再次之前未曾按過</p><p&g
126、t;<b> {</b></p><p><b> if(s2==0)</b></p><p><b> {</b></p><p><b> delay(5);</b></p><p><b> if(s2==0)</b>
127、</p><p><b> { </b></p><p> while(!s2);didi();</p><p> if(s1num==1)</p><p><b> {</b></p><p> int x1,x2;</p><p>
128、 x1=miao%16;</p><p> x2=miao/16;</p><p><b> x1++;</b></p><p> if(x1==10)</p><p><b> {</b></p><p><b> x1=0;</b><
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子時(shí)鐘的設(shè)計(jì)課程設(shè)計(jì)論文
- 電子時(shí)鐘課程設(shè)計(jì)
- 電子時(shí)鐘 課程設(shè)計(jì)
- 電子時(shí)鐘課程設(shè)計(jì)
- 電子時(shí)鐘課程設(shè)計(jì)
- 課程設(shè)計(jì)--電子時(shí)鐘
- 課程設(shè)計(jì)----電子時(shí)鐘設(shè)計(jì)
- 電子時(shí)鐘課程設(shè)計(jì)--proteus環(huán)境下的電子時(shí)鐘設(shè)計(jì)
- 電子時(shí)鐘接口課程設(shè)計(jì)
- 電子時(shí)鐘課程設(shè)計(jì) (2)
- 電子時(shí)鐘課程設(shè)計(jì)2
- led電子時(shí)鐘課程設(shè)計(jì)
- 電子時(shí)鐘課程設(shè)計(jì)報(bào)告
- eda課程設(shè)計(jì)---電子時(shí)鐘
- 電子時(shí)鐘課程設(shè)計(jì) (2)
- 數(shù)字電子時(shí)鐘課程設(shè)計(jì)
- 數(shù)字電子時(shí)鐘課程設(shè)計(jì)
- eda課程設(shè)計(jì)--電子時(shí)鐘
- 電子時(shí)鐘課程設(shè)計(jì)--數(shù)字電子時(shí)鐘焊接調(diào)試報(bào)告
- 數(shù)字電子時(shí)鐘課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論