版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 電子時鐘</b></p><p> [摘要] 本設(shè)計是基于STC單片機的電子時鐘技術(shù),由STC12C5A16S2芯片和LCD1602液晶顯示屏,DS18B20進行溫度測量,輔以必要的的電路,構(gòu)成一個單片機定時鬧鐘。電子鐘可采用數(shù)字電路實現(xiàn),也可以采用單片機來完成。LCD顯示“時”,“分”,LED閃動來做秒計數(shù),定時時間到能發(fā)出警報聲或者啟動繼電器,從而控制電器
2、的啟?!,F(xiàn)在是自動化高度發(fā)達的時代,特別是電子類產(chǎn)品都是靠內(nèi)部的控制電路來實現(xiàn)對產(chǎn)品的控制,達到自動運行的目的,這就需要我們這里要做的設(shè)計中的電器元件及電路的支持。 在這次設(shè)計中主要是用STC12C5A16S2來進行定時,也結(jié)合著其他輔助電路實施控制,在定時的時候,按一下控制小時的鍵對小時加一;按一下控制分鐘的鍵對分鐘加一;到達預(yù)設(shè)的時間,此電路就會發(fā)出報警聲音提示已經(jīng)到點。</p><p> [關(guān)鍵詞] 定時
3、鬧鐘 STC12C5A16S2 LCD1602</p><p> Time clock</p><p> [Abstract] The regular alarm clock designers design, by the microcontroller STC12C5A16S2 chip and LCD1602 display、 DS18B20 , combined with
4、 the necessary circuitry to form a single-chip timer alarm clock. Clock can be digital circuit, the microcontroller can also be used to complete. LCD display "when", "sub", LED flash to do the second
5、count, regular time to be able to sound an alarm or start relay to control the electrical start and stop. Now is the era of highly developed automation, especial</p><p> [Key Words] time clock STC12C5A1
6、6S2 LCD1602</p><p><b> 目 錄</b></p><p><b> 引 言1</b></p><p> 1 電子時鐘的設(shè)計目的和要求2</p><p><b> 1.1設(shè)計目的2</b></p><p><
7、;b> 1.2設(shè)計要求2</b></p><p> 2 電子時鐘的設(shè)計流程3</p><p> 2.1總體方案的原理3</p><p> 2.2總體設(shè)計方案和框圖3</p><p> 3 系統(tǒng)硬件設(shè)計4</p><p> 3.1 STC12C5A16S2單片機4</p&
8、gt;<p><b> 3.2模塊電路5</b></p><p> 3.2.1 復(fù)位電路與晶振電路5</p><p> 3.2.2顯示模塊及芯片5</p><p> 3.3串口通訊單元7</p><p> 3.4蜂鳴器單元7</p><p> 3.4.1鳴器的結(jié)
9、構(gòu)原理7</p><p> 3.4.2蜂鳴器的驅(qū)動8</p><p> 3.4.3蜂鳴器驅(qū)動電路8</p><p> 3.4.4蜂鳴器驅(qū)動設(shè)計9</p><p> 4 系統(tǒng)軟件設(shè)計10</p><p> 4.1程序流程圖10</p><p> 4.2 電子時鐘主要程序
10、11</p><p><b> 5 安裝調(diào)試17</b></p><p><b> 總 結(jié)18</b></p><p> 參 考 文 獻19</p><p> 附錄 電路原理圖20</p><p><b> 引 言</b></p
11、><p> 隨著微電子技術(shù)的不斷發(fā)展,微處理器芯片的集成程度越來越高,單片機已可以在一塊芯片上同時集成CPU、存儲器、定時器/計數(shù)器、并行和串行接口、看門狗、前置放大器、A/D轉(zhuǎn)換器、D/A轉(zhuǎn)換器等多種電路,這就很容易將計算機技術(shù)與測量控制技術(shù)結(jié)合,組成智能化測量控制系統(tǒng)。這種技術(shù)促使機器人技術(shù)也有了突飛猛進的發(fā)展。單片機技術(shù)作為自動控制技術(shù)的核心之一,被廣泛應(yīng)用于工業(yè)控制、智能儀器、機電產(chǎn)品、家用電器等領(lǐng)域。隨著
12、微電子技術(shù)的迅速發(fā)展,單片機功能也越來越強大,本設(shè)計基于STC單片機的電子時鐘技術(shù),以STC12C5A16S2為核心,構(gòu)成數(shù)字鐘,首先應(yīng)選擇一個脈沖源——能自動地產(chǎn)生穩(wěn)定的標準時間脈沖信號。而脈沖源產(chǎn)生的脈沖信號的頻率較高,因此,需要進行分頻,使得高頻脈沖信號轉(zhuǎn)變?yōu)檫m合于計時的低頻脈沖信號,即“秒脈沖信號”(頻率為1HZ)。</p><p> 校時電路一般采用自動快速調(diào)整和手動調(diào)整,“自動快速調(diào)整”可利用分頻器
13、輸出的不同頻率的脈沖使顯示的時間自動迅速調(diào)整?!笆謩诱{(diào)整”可利用手動的節(jié)拍調(diào)準顯示時間。基于要求本次采用了自動快速調(diào)整。數(shù)字鬧鐘要求有定時響鬧的功能,故需要提供設(shè)定鬧時電路和對比起鬧電路。設(shè)時電路應(yīng)共享譯碼器、驅(qū)動器到數(shù)字顯示器,以便使用者設(shè)定時間,并可減少電路的芯片數(shù)量;而對比起鬧電路提供聲源,應(yīng)具有人工止鬧功能,止鬧后不再重新操作,將不再發(fā)生起鬧等功能。</p><p> 1 電子時鐘的設(shè)計目的和要求&l
14、t;/p><p><b> 1.1設(shè)計目的</b></p><p> (1) 掌握時鐘的基本構(gòu)件;</p><p> ?。?) 掌握各電子元器件的基本形狀及其功能;</p><p> ?。?) 掌握各電子元器件的焊接步驟與工作原理;</p><p> ?。?) 掌握單片機內(nèi)部結(jié)構(gòu)與程序編制方法;
15、</p><p> ?。?) 掌握數(shù)碼管內(nèi)部結(jié)構(gòu),掌握數(shù)碼顯示技術(shù);</p><p> ?。ǎ叮┩ㄟ^本次設(shè)計實驗,對自己的專業(yè)知識掌握和運用有一個系統(tǒng)的考核。</p><p><b> 1.2設(shè)計要求</b></p><p> 利用實驗開發(fā)板上的液晶顯示屏,設(shè)計帶有鬧鐘及日期顯示功能的數(shù)字時鐘。</p>
16、<p> (1) 利用液晶顯示屏顯示時間及日期,時間為24小時制,日期格式為年-月- 日;</p><p> (2) 利用按鍵對時間、日期、鬧鈴進行設(shè)置,到鬧鈴時間到時,蜂鳴器發(fā)出聲音, 按停止鍵可使鬧鈴?fù)V梗?lt;/p><p> (3) 用了LED做鬧鈴倒計時顯示。</p><p> (4)實現(xiàn)的功能在數(shù)字鐘正常進行顯示時其顯示周期為000
17、000至 23:59:59,其中有五個按鍵按下“暫?!辨I時鐘停止走動按下“開始”鍵時 鐘開始走動按下“秒設(shè)置”時鐘秒位自加1加至60時向分位進1按下“分設(shè)置”時鐘分位自加1加至60時向時位進1按下“時設(shè)置”時鐘秒位自加1加至24時顯示00。 </p><p> 2 電子時鐘的設(shè)計流程</p><p> 2.1總體方案的原理</p><p>
18、在一個完整的鬧鐘系統(tǒng)的設(shè)計中,我們采用的是自頂向下的設(shè)計思想,整個系統(tǒng)由若干個模塊組合來實現(xiàn),包括計數(shù)模塊、控制模塊、譯碼模塊、動態(tài)掃描輸出模塊、鬧鐘控制模塊。設(shè)計鬧鐘時應(yīng)考慮的問題有:鬧鐘能否計數(shù)、能否對計時時間進行調(diào)整,定時鬧鈴功能是否正常,動態(tài)掃描顯示是否正常等等。</p><p> 2.2總體設(shè)計方案和框圖</p><p> 圖2-1電子時鐘系統(tǒng)框圖</p>&l
19、t;p> 電子鬧鐘應(yīng)包括秒信號發(fā)生器、時間顯示電路、按鍵電路、供電電源以及鬧鈴指示電路等幾部分。 按鍵功能說明:K1,設(shè)置時間和鬧鐘的小時;K2,設(shè)置小時以及設(shè)置鬧鐘的開關(guān);K3,設(shè)置分鐘和鬧鐘的分鐘;K4;設(shè)置完成退出</p><p> 電子鬧鐘的主電路指的是圖2-1中虛線框內(nèi)部分,主要涉及到CPU電路和按鍵按鈕電路。主機的設(shè)計具體地說有:</p><p> ?。?)系統(tǒng)時鐘電
20、路設(shè)計;</p><p> ?。?)系統(tǒng)復(fù)位電路設(shè)計;</p><p> ?。?)按鍵與按鈕電路設(shè)計:</p><p> ?。?)鬧鈴聲指示電路設(shè)計。</p><p><b> 3 系統(tǒng)硬件設(shè)計</b></p><p> 3.1 STC12C5A16S2單片機</p><
21、p> 教學(xué)用電子打鈴器主要由STC12C5A16S2單片機、鍵盤掃描模塊、時鐘和復(fù)位模塊、蜂鳴器模塊、LCD1602顯示模塊等組成。運用匯編語言來控制單片機STC12C5A16S2來實現(xiàn)、動態(tài)數(shù)碼顯示等功能。且本設(shè)計中的STC12C5A16S2單片機是整個工作過程的核心,是整個設(shè)計靈魂,它控制了脈沖時序的產(chǎn)生顯示信號的發(fā)送控制顯示LED的選擇。 STC12C5A16S2是一種帶4K字節(jié)存儲器的低電壓、高性能CMOS 8位微處理
22、器,俗稱單片機.</p><p> 圖3-1 STC12C5A16S2管腳圖</p><p> P0.0—P0.7(39—32)P0口是一個漏極開路型準雙向I/O口。在訪問外部存儲器時,它是分時多路轉(zhuǎn)換的地址(低8位)和數(shù)據(jù)總線,在訪問期間激活了內(nèi)部的上拉電阻。在EPROM編程時,它接收指令字節(jié),而在驗證程序時,則輸出指令字節(jié)。驗證時,要求外接上拉電阻。</p><
23、;p> P1.0—P1.7(1-8):P1口是帶內(nèi)部上拉電阻的8位雙向I/O口。在EPROM編程和程序驗證時,它接收低8位地址。 </p><p> P2.0—P2.7(21-28):P2口是一個帶內(nèi)部上拉電阻的8位雙向I/O口。在訪問外部存儲器時,它送出高8位地址。在對EFROM編程和程序驗證期間,它接收高8位地址。</p><p> P3.0—P3.7(10-17):P3口
24、是一個帶內(nèi)部上拉電阻的8位雙向I/O口。</p><p> 此部分是整個鬧鐘運行的核心部件,起著控制鬧鐘所有運行狀態(tài)的作用??刂品椒ㄓ泻芏?,大部分都采用單片機控制。由于51單片機具有價格低廉是使用簡單的特點,這里選擇了ATMEL公司的STC12C5A16S2作為控制核心部件。</p><p> STC12C5A16S2單片機系列的存儲器用的是哈佛結(jié)構(gòu),即將程序和數(shù)據(jù)存儲 截然分開,程序
25、存儲器和數(shù)據(jù)存儲器各有自己的尋址方式、尋址空間和控制系統(tǒng)。STC89C52的存儲器可分為五類:程序存儲器,內(nèi)部數(shù)據(jù)存儲器,特殊功能寄存器,位地址空間,外部數(shù)據(jù)存儲器。</p><p><b> 3.2模塊電路</b></p><p> 3.2.1 復(fù)位電路與晶振電路 </p><p> 復(fù)位電路是單片機系統(tǒng)必須的,用來為單片機提供正確的復(fù)
26、位信號;振蕩電路就為單片機工作提供了所需要的時鐘脈沖信號,使單片機的開始正常工作; 如圖3-2所示 18腳和19接時鐘電路,XTAL1接外部晶振和微調(diào)電容的一端,在片內(nèi)它是振蕩器倒相放大器的輸入,XTAL2接外部晶振和微調(diào)電容的另一端,在片內(nèi)它是振蕩器倒相放大器的輸出;第9引腳為復(fù)位輸入端,接上電容,電阻及開關(guān)后能夠形成上電復(fù)位電路。</p><p> 圖3-2 復(fù)位電路與晶振電路</p>&l
27、t;p> 3.2.2顯示模塊及芯片</p><p> 液晶顯示器各種圖形的顯示原理:線段的顯示,點陣圖形式液晶由M×N個顯示單元組成,假設(shè)LCD顯示屏有64行,每行有128列,每8列對應(yīng)1字節(jié)的8位,即每行由16字節(jié),共16×8=128個點組成,屏上64×16個顯示單元與顯示RAM區(qū)1024字節(jié)相對應(yīng),每一字節(jié)的內(nèi)容和顯示屏上相應(yīng)位置的亮暗對應(yīng)。例如屏的第一行的亮暗由RAM
28、區(qū)的000H——00FH的16字節(jié)的內(nèi)容決定,當000H=FFH時,則屏幕的左上角顯示一條短亮線,長度為8個點,當3FF=FFH時,則屏幕的右下角顯示一條短亮線當000H=FFH,001H=00H,002H=00H?00EH=00H,00FH=00H時,則在屏幕的頂部顯示一條由8段亮線和8條暗線組成的虛線。這就是LCD顯示的基本原理。</p><p> 字符的顯示:用LCD顯示一個字符時比較復(fù)雜,因為一個字符由
29、6×8或8×8點陣組成,既要找到和顯示屏幕上某幾個位置對應(yīng)的顯示RAM區(qū)的8字節(jié),還要使每字節(jié)的不同位為“1”,其它的為“0”,為“1”的點亮。為“0”的不亮。這樣一來就組成某個字符。但由于內(nèi)帶字符發(fā)生器的控制器來說。顯示字符就比較簡單了,可以讓控制器工作在文本方式,根據(jù)在LCD上開始顯示的行列號及每行的列數(shù)找出顯示RAM對應(yīng)的地址設(shè)立光標在此送上該字符對應(yīng)的代碼即可。</p><p>
30、 圖3-3 LCD1602液晶顯示模塊</p><p><b> 3.3串口通訊單元</b></p><p> MAX232芯片是美信公司專門為電腦的RS-232標準串口設(shè)計的單電源電平轉(zhuǎn)換芯片,使用+5V單電源供電。 </p><p><b> 引腳圖片: </b></p><p> 圖3
31、-4MAX232管腳及功能</p><p><b> 引腳介紹:</b></p><p><b> 主要分為幾部分</b></p><p> 電荷泵電路:由1、2、3、4、5、6腳和4只電容構(gòu)成。功能是產(chǎn)生+12v和-12v兩個電源,提供給RS-232串口電平的需要。 </p><p> 數(shù)
32、據(jù)轉(zhuǎn)換通道:由7、8、9、10、11、12、13、14腳構(gòu)成兩個數(shù)據(jù)通道。 其中13腳(R1IN)、12腳(R1OUT)、11腳(T1IN)、14腳(T1OUT)為第一數(shù)據(jù)通道。8腳(R2IN)、9腳(R2OUT)、10腳(T2IN)、7腳(T2OUT)為第二數(shù)據(jù)通道。 </p><p> TTL/CMOS數(shù)據(jù)從T1IN、T2IN輸入轉(zhuǎn)換成RS-232數(shù)據(jù)從T1OUT、T2OUT送到電腦DB9插頭;DB9插頭的
33、RS-232數(shù)據(jù)從R1IN、R2IN輸入轉(zhuǎn)換成TTL/CMOS數(shù)據(jù)后從R1OUT、R2OUT輸出。 </p><p> 供電:15腳GND、16腳VCC(+5v)。 </p><p> 由于RS232電平較高,在接通時產(chǎn)生的瞬時電涌非常高,很有可能擊毀max232,所以在使用中應(yīng)盡量避免熱插拔。</p><p><b> 3.4蜂鳴器單元</b
34、></p><p> 3.4.1鳴器的結(jié)構(gòu)原理</p><p> ?。?)壓電式蜂鳴器 壓電式蜂鳴器主要由多諧振蕩器、壓電蜂鳴片、阻抗匹配器及共鳴箱、外殼等組成。有的壓電式蜂鳴器外殼上還裝有發(fā)光二極管。 </p><p> 壓電蜂鳴片由鋯鈦酸鉛或鈮鎂酸鉛壓電陶瓷材料制成。在陶瓷片的兩面鍍上銀電極,經(jīng)極化和老化處理后,再與黃銅片或不銹鋼片粘在一起。 <
35、/p><p> ?。?)電磁式蜂鳴器 電磁式蜂鳴器由振蕩器、電磁線圈、磁鐵、振動膜片及外殼等組成。 </p><p> 3.4.2蜂鳴器的驅(qū)動</p><p> 在單片機應(yīng)用的設(shè)計上,很多方案都會用到蜂鳴器,大部分都是使用蜂鳴器來做提示或報警,比如按鍵按下、開始工作、工作結(jié)束或是故障等等。這里對單片機在蜂鳴器驅(qū)動上的應(yīng)用作一下描述。圖3--5為蜂鳴器發(fā)聲</p
36、><p><b> 電路原理圖。</b></p><p> 圖3-5蜂鳴器發(fā)聲電路原理圖</p><p> 圖3-5蜂鳴器發(fā)聲電路原理圖</p><p> 驅(qū)動方式:由于自激蜂鳴器是直流電壓驅(qū)動的,不需要利用交流信號進行驅(qū)動,只需對驅(qū)動口輸出驅(qū)動電平并通過三極管放大驅(qū)動電流就能使蜂鳴器發(fā)出聲音,很簡單,這里就不對自激
37、蜂鳴器進行說明了。這里只對必須用1/2duty 的方波信號進行驅(qū)動的他激蜂鳴器進行說明。 </p><p> 單片機驅(qū)動他激蜂鳴器的方式有兩種:一種是PWM 輸出口直接驅(qū)動,另一種是利用I/O 定時翻轉(zhuǎn)電平產(chǎn)生驅(qū)動波形對蜂鳴器進行驅(qū)動。 </p><p> PWM 輸出口直接驅(qū)動是利用PWM 輸出口本身可以輸出一定的方波來直接驅(qū)動蜂鳴器。比如頻率為2000Hz 的蜂鳴器的驅(qū)動,可以知道
38、周期為500μs,這樣只需要把PWM 的周期設(shè)置為500μs,占空比電平設(shè)置為250μs,就能產(chǎn)生一個頻率為2000Hz 的方波,通過這個方波再利用三極管就可以去驅(qū)動這個蜂鳴器了。</p><p> 3.4.3蜂鳴器驅(qū)動電路</p><p> 由于蜂鳴器的工作電流一般比較大,以致于單片機的I/O 口是無法直接驅(qū)動的,所以要利用放大電路來驅(qū)動,一般使用三極管來放大電流就可以了。下圖為比較
39、安全的驅(qū)動電路 </p><p> 圖3-6蜂鳴器安全的驅(qū)動電路圖</p><p> 3.4.4蜂鳴器驅(qū)動設(shè)計</p><p> 由于這里要介紹兩種驅(qū)動方式的方法,所以程序不僅介紹了PWM 輸出口驅(qū)動蜂鳴器的方法,還要介紹I/O 口驅(qū)動蜂鳴器的方法。所以,我們將設(shè)計如下的一個系統(tǒng)來說明單片機對蜂鳴器的驅(qū)動:系統(tǒng)有兩個他激蜂鳴器,頻率都
40、為2000Hz,一個由I/O 口進行控制,另一個由PWM 輸出口進行控制;系統(tǒng)還有兩個按鍵,一個按鍵為PORT 按鍵,I/O 口控制的蜂鳴器不鳴叫時按一次按鍵I/O 口控制的蜂鳴器鳴叫,再按一次停止鳴叫,另一個按鍵為PWM 按鍵,PWM 口控制的蜂鳴器不鳴叫時按一次按鍵PWM輸出口控制的蜂鳴器鳴叫,再按一次停止鳴叫。5 PWM 輸出口直接驅(qū)動蜂鳴器方式由于PWM 只控制固定頻率的蜂鳴器,所以可以在程序的系統(tǒng)初始化時就對PWM 的輸出波形
41、進行設(shè)置。 </p><p> 首先根據(jù)SH69P43 的PWM 輸出的周期寬度是10 位數(shù)據(jù)來選擇PWM 時鐘。系統(tǒng)使用4MHz 的晶振作為主振蕩器,一個tosc 的時間就是0.25μs,若是將PWM 的時鐘設(shè)置為tosc 的話, 則蜂鳴器要求的波形周期500μs 的計數(shù)值為500μs/0.25μs=(2000)10=(7D0)16,7D0H 為11 位的數(shù)據(jù),而SH69P43 的PWM 輸出周期寬度只是10
42、 位數(shù)據(jù),所以選擇PWM 的時鐘為tosc 是不能實現(xiàn)蜂鳴器所要的驅(qū)動波的。</p><p><b> 4 系統(tǒng)軟件設(shè)計</b></p><p><b> 4.1程序流程圖</b></p><p> 圖4-1系統(tǒng)總流程圖</p><p> 4.2 電子時鐘主要程序</p>&
43、lt;p> #include<reg52.h></p><p> #include <intrins.h></p><p> sbit SCLK = P1^0; //DS1302時鐘口P1.0</p><p> sbit IO = P1^1;
44、 //DS1302數(shù)據(jù)口P1.1</p><p> sbit RST = P1^2; //DS1302片選口P1.2</p><p> unsigned char code init[] = {0x00, 0x00, 0x20, 0x01, 0x01, 0x05, 0x10};</p>
45、<p> unsigned char data now[7];</p><p> void DS1302_Initial();</p><p> void DS1302_SetTime(unsigned char *p);</p><p> void DS1302_GetTime(unsigned char *p);</p><
46、p> sbit LCD_RS = P1^7; </p><p> sbit LCD_wr = P1^6;</p><p> sbit LCD_EN = P1^5;</p><p> void write_com(unsigned char com);</p><p> void write_date (
47、unsigned char date);</p><p> void Init();</p><p> void delay(int ms);</p><p> void delayms( unsigned int z);</p><p> void write_sfm(unsigned char add,unsigned char
48、date);</p><p> void main()</p><p> { //unsigned char i3,i1,i2;</p><p><b> LCD_wr=0;</b></p><p><b> Init();</b></p><p><b>
49、 while(1)</b></p><p> {write_sfm( 4,45);</p><p> delay(5000);</p><p><b> }</b></p><p><b> }</b></p><p> void write_sfm(
50、unsigned char add,unsigned char date)</p><p> { unsigned char shi,ge;</p><p> shi=date%10;</p><p> ge=date/10;</p><p> write_com(0x80+0x40+add);</p><p>
51、; write_date(0x30+shi);</p><p> write_date(0x30+ge);</p><p> LCD_EN = 0; </p><p><b> }</b></p><p> void Init()</p><p> {
52、 </p><p> write_com(0x38); //16*2顯示,5*7點陣,8位數(shù)據(jù)</p><p><b> delay(5);</b></p><p> write_com(0x38); </p><p><b> delay(5);&
53、lt;/b></p><p> write_com(0x38); </p><p><b> delay(5);</b></p><p> write_com(0x0c); //顯示開,關(guān)光標</p><p><b> delay(5);&l
54、t;/b></p><p> write_com(0x06); //移動光標</p><p><b> delay(5);</b></p><p> write_com(0x01); //清除LCD的顯示內(nèi)容</p><p>&l
55、t;b> delay(5);</b></p><p><b> }</b></p><p> /void delay(int ms)</p><p> { </p><p><b> int i;</b></p&g
56、t;<p> while(ms--)</p><p><b> {</b></p><p> for(i = 0; i< 250; i++)</p><p><b> {</b></p><p><b> _nop_();</b></p>
57、;<p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> }</b></p><p> void delayms(
58、 unsigned int z)</p><p> { unsigned int x,y;</p><p> for( x=z;x>0;x--)</p><p> for( y=1100;y>0;y--);</p><p><b> }</b></p><p> /*****
59、*********************************</p><p> 延時X微秒(STC12C5A60S2@12M)</p><p> 不同的工作環(huán)境,需要調(diào)整此函數(shù)</p><p> 此延時函數(shù)是使用1T的指令周期進行計算,與傳統(tǒng)的12T的MCU不同</p><p> ************************
60、**************/</p><p> void Delay()</p><p><b> {</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b&
61、gt; }</b></p><p> /**************************************</p><p> 從DS1302讀1字節(jié)數(shù)據(jù)</p><p> **************************************/</p><p> unsigned char DS1302_
62、ReadByte()</p><p><b> {</b></p><p> unsigned char i;</p><p> unsigned char dat = 0;</p><p> for (i=0; i<8; i++) //8位計數(shù)器<
63、;/p><p><b> {</b></p><p> SCLK = 0; //時鐘線拉低</p><p> Delay(); //延時等待</p><p> dat >>= 1
64、; //數(shù)據(jù)右移一位</p><p> if (IO) dat |= 0x80; //讀取數(shù)據(jù)</p><p> SCLK = 1; //時鐘線拉高</p><p> Delay();
65、 //延時等待</p><p><b> }</b></p><p> return dat;</p><p><b> }</b></p><p> /**************************************
66、</p><p> 向DS1302寫1字節(jié)數(shù)據(jù)</p><p> **************************************/</p><p> void DS1302_WriteByte(unsigned char dat)</p><p><b> {</b></p><
67、p><b> char i;</b></p><p> for (i=0; i<8; i++) //8位計數(shù)器</p><p><b> {</b></p><p> SCLK = 0; /
68、/時鐘線拉低</p><p> Delay(); //延時等待</p><p> dat >>= 1; //移出數(shù)據(jù)</p><p> IO = CY;
69、 //送出到端口</p><p> SCLK = 1; //時鐘線拉高</p><p> Delay(); //延時等待</p><p><b> }</b></p><p&
70、gt;<b> }</b></p><p> /**************************************</p><p> 讀DS1302某地址的的數(shù)據(jù)</p><p> **************************************/</p><p> unsigned ch
71、ar DS1302_ReadData(unsigned char addr)</p><p><b> {</b></p><p> unsigned char dat;</p><p><b> RST = 0;</b></p><p><b> Delay();</b&g
72、t;</p><p><b> SCLK = 0;</b></p><p><b> Delay();</b></p><p><b> RST = 1;</b></p><p><b> Delay();</b></p><p
73、> DS1302_WriteByte(addr); //寫地址</p><p> dat = DS1302_ReadByte(); //讀數(shù)據(jù)</p><p><b> SCLK = 1;</b></p><p><b> RST = 0;</b></p><
74、p> return dat;</p><p><b> }</b></p><p> /**************************************</p><p> 往DS1302的某個地址寫入數(shù)據(jù)</p><p> ***********************************
75、***/</p><p> void DS1302_WriteData(unsigned char addr, unsigned char dat)</p><p><b> {</b></p><p><b> RST = 0;</b></p><p><b> Delay();
76、</b></p><p><b> SCLK = 0;</b></p><p><b> Delay();</b></p><p><b> RST = 1;</b></p><p><b> Delay();</b></p>
77、;<p> DS1302_WriteByte(addr); //寫地址</p><p> DS1302_WriteByte(dat); //寫數(shù)據(jù)</p><p><b> SCLK = 1;</b></p><p><b> RST = 0;</b></p&g
78、t;<p><b> }</b></p><p> /**************************************</p><p><b> 寫入初始時間</b></p><p> **************************************/</p>&
79、lt;p> void DS1302_SetTime(unsigned char *p)</p><p><b> {</b></p><p> unsigned char addr = 0x80;</p><p> unsigned char n = 7;</p><p> DS1302_WriteDat
80、a(0x8e, 0x00); //允許寫操作</p><p> while (n--)</p><p><b> {</b></p><p> DS1302_WriteData(addr, *p++);</p><p> addr += 2;</p><p&
81、gt;<b> }</b></p><p> DS1302_WriteData(0x8e, 0x80); //寫保護</p><p><b> }</b></p><p> /**************************************</p>
82、<p><b> 讀取當前時間</b></p><p> **************************************/</p><p> void DS1302_GetTime(unsigned char *p)</p><p><b> {</b></p><p
83、> unsigned char addr = 0x81;</p><p> unsigned char n = 7;</p><p> while (n--)</p><p><b> {</b></p><p> *p++ = DS1302_ReadData(addr);</p><
84、p> addr += 2;</p><p><b> }</b></p><p><b> }</b></p><p> /**************************************</p><p><b> 初始化DS1302</b><
85、/p><p> **************************************/</p><p> void DS1302_Initial()</p><p><b> {</b></p><p><b> RST = 0;</b></p><p><
86、b> SCLK = 0;</b></p><p> DS1302_WriteData(0x8e, 0x00); //允許寫操作</p><p> DS1302_WriteData(0x80, 0x00); //時鐘啟動</p><p> DS1302_WriteDa
87、ta(0x90, 0xa6); //一個二極管+4K電阻充電</p><p> DS1302_WriteData(0x8e, 0x80); //寫保護</p><p><b> }</b></p><p><b> 5 安裝調(diào)試</b></p><p> 5.1硬件系統(tǒng)的組裝與調(diào)試
88、</p><p> 硬件組裝前首先要仔細核對硬件系統(tǒng)設(shè)計原理的正確性,包括參數(shù)選用的正確性和原理的正確性,對沒有把握的電路可以通過在通用實驗板上直接焊接實際電路來進行實物調(diào)試和驗證,調(diào)試分為斷電調(diào)試和通電調(diào)試。 </p><p> (1)斷電調(diào)試 為了安全起見,首先必須進行斷電調(diào)試,斷電調(diào)試的內(nèi)容至少包含短路檢測和原理正確性確認;系統(tǒng)電路焊接完成后,首先對實物進行原理正確性的確認
89、,其次必須進行短路檢測,選用合適的萬用表歐姆檔,用紅表筆接到電路板的+5V電源的+、— 極,如果存在充放電現(xiàn)象,最后電阻穩(wěn)定在一個合適的位置,則基本上可排除系統(tǒng)短路現(xiàn)象。 </p><p> ?。?)通電調(diào)試 系統(tǒng)時鐘是否起 凡是微處理器系統(tǒng),正常運行的必要條件是系統(tǒng)時鐘穩(wěn)定正常,在實際工作中,因為各種原因?qū)е孪到y(tǒng)時鐘不正常而出現(xiàn)系統(tǒng)無法正常運行的情況也時有出現(xiàn),因此系統(tǒng)時鐘是否起震應(yīng)是通電檢查的首要一環(huán),檢
90、查方法包括邏輯筆發(fā)、數(shù)字萬用表法、示波器法,在這里采用數(shù)字萬用表法,測試晶振兩端引腳電壓為2.5V左右。 復(fù)位是否正常及關(guān)鍵點電壓參數(shù)是否正常 復(fù)位不正常也會導(dǎo)致系統(tǒng)不工作,這里的重點是檢查相關(guān)電路是否正常,同時檢查相應(yīng)電路的關(guān)鍵電壓參數(shù)是否正常,進行一一排查。</p><p><b> 5.2軟件調(diào)試</b></p><p> 單片機的程序設(shè)計調(diào)試分為兩種,一種
91、是使用軟件模擬調(diào)試,即用開發(fā)單片機程序的計算機去模擬單片機的指令執(zhí)行,并虛擬單片機片內(nèi)資源,從而實現(xiàn)調(diào)試的目的,但是軟件調(diào)試存在一些問題,如計算機本身是多任務(wù)系統(tǒng),劃分執(zhí)行時間片序,也就是說,不可能像真正的單片機運行環(huán)境那樣執(zhí)行的指令在同樣一個時間能完成(往往比單片機慢)。為了解決軟件調(diào)試問題,第二種方法是硬件調(diào)試,硬件調(diào)試其實也需要計算機軟件的配合。軟件調(diào)試與所選用的軟件結(jié)構(gòu)有關(guān),如果采用模塊程序設(shè)計技術(shù),則逐個模塊調(diào)好后再進行系統(tǒng)程
92、序總調(diào),如果采用實時多任務(wù)操作系統(tǒng),一般是逐個任務(wù)進行調(diào)試,對于模塊結(jié)構(gòu)程序.要一個個子程序分別調(diào)試,調(diào)試時,一定要符合入口條件和出口條件,調(diào)試可用單步運行和斷點運行方式,通過檢查用者系統(tǒng)的CPU現(xiàn)場情況、 RAM的內(nèi)容和I/O口的狀態(tài),檢測程序執(zhí)行結(jié)果是否符合設(shè)計要求,有無循環(huán)錯誤、有無機器碼錯誤以及轉(zhuǎn)移地址的錯誤,同時,還可以發(fā)現(xiàn)用者系統(tǒng)中存在的 硬件設(shè)計錯誤和軟件算法錯誤,各程序模塊通過后,則可以把相關(guān)功能塊連在一起進行總調(diào)。&l
93、t;/p><p><b> 總 結(jié)</b></p><p> 通過此次多功能數(shù)字鐘設(shè)計制作,我們將從書本上學(xué)到的知識應(yīng)用于實踐,加強了自身的實踐動手能力,雖然過程中遇到了一些困難,但是在解決這些問題的過程無疑也是對自己自身專業(yè)素質(zhì)的一種提高,不管做什么事,計劃是很重要的。沒有一個完好的計劃,做事情就會沒有一個好的順序,做事情會比較亂,很難成功。而有一個好的計劃,不管做
94、什么事都會事半功倍,做事心中有數(shù),明確重點和緩急,不會有疏漏。這樣才能提高成功率;其次我們做事情要注意細節(jié),細節(jié)決定成敗,這句話在這次課題中不僅一次得到了印證,特別是在軟件的編程過程中,一點點的錯誤就會使你整個程序不能運行。因此我們不僅僅要有整體意識,也要注意細節(jié),不要因一個關(guān)鍵地方的一個細節(jié)而導(dǎo)致滿盤皆輸;當最終調(diào)試成功的時候也是對自己的一種肯定。此次的畢業(yè)設(shè)計不僅增強了自己在專業(yè)設(shè)計方面的信心,鼓舞了自己,更是一次興趣的培養(yǎng),為自己
95、以后的學(xué)習(xí)方向的明確了重點</p><p><b> 參 考 文 獻</b></p><p> [1]沈紅衛(wèi).基于單片機的智能系統(tǒng)的設(shè)計與實現(xiàn)[M].北京:電子工業(yè)出版社,2005.1</p><p> [2]侯玉寶,陳忠平,李成群.基于proteus的51系列單片機設(shè)計與仿真[M]. 2008.9</p><p>
96、; [3]江世明.基于Proteus的單片機應(yīng)用技術(shù)[M]. 電子工業(yè)出版社.2009.6.1</p><p> [4]王東峰.單片機C語言教程[M]. 電子工業(yè)出版社.2009</p><p> [5]周堅編.單片機C語言輕松入門[M]. 北京航空航天大學(xué)出版社.2006</p><p> [6]劉勇. 數(shù)字電路 [M]. 電子工業(yè)出版社, 2005<
97、;/p><p> [7]靳桅.單片機原理及應(yīng)用[M]. 西南交通大學(xué)出版社.2004</p><p> [8]] 楊子文. 單片機原理及應(yīng)用[M]. 西安電子科技大學(xué)出版社2006</p><p> [9]楊幫文.新編傳感器實用寶典[M]. 機械工業(yè)出版社.2005</p><p> [10]謝自美.電子線路設(shè)計.試驗.測試 [M]. 華
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機畢業(yè)設(shè)計--基于單片機的電子時鐘
- 畢業(yè)設(shè)計--基于單片機的電子時鐘設(shè)計
- 畢業(yè)設(shè)計---基于單片機的電子時鐘設(shè)計
- 基于單片機的電子時鐘設(shè)計【畢業(yè)設(shè)計】
- 基于單片機控制的電子時鐘畢業(yè)設(shè)計論文
- 畢業(yè)設(shè)計---用單片機實現(xiàn)電子時鐘
- 畢業(yè)設(shè)計(論文)基于51單片機的電子時鐘設(shè)計
- 基于單片機的電子時鐘設(shè)計
- 單片機電子時鐘畢業(yè)設(shè)計
- 畢業(yè)設(shè)計--基于單片機的多功能電子時鐘設(shè)計
- 基于單片機的電子時鐘設(shè)計
- 基于單片機的電子時鐘設(shè)計
- 畢業(yè)設(shè)計--單片機電子時鐘
- 單片機電子時鐘畢業(yè)設(shè)計
- 基于-單片機的電子時鐘的設(shè)計
- 單片機電子時鐘設(shè)計畢業(yè)設(shè)計
- 基于單片機的電子時鐘設(shè)計畢業(yè)論文
- 畢業(yè)論文---基于單片機的電子時鐘設(shè)計
- 畢業(yè)論文--基于單片機的電子時鐘設(shè)計
- 基于51單片機的電子時鐘設(shè)計
評論
0/150
提交評論