版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 電子時(shí)鐘</b></p><p> [摘要] 本設(shè)計(jì)是基于STC單片機(jī)的電子時(shí)鐘技術(shù),由STC12C5A16S2芯片和LCD1602液晶顯示屏,DS18B20進(jìn)行溫度測(cè)量,輔以必要的的電路,構(gòu)成一個(gè)單片機(jī)定時(shí)鬧鐘。電子鐘可采用數(shù)字電路實(shí)現(xiàn),也可以采用單片機(jī)來(lái)完成。LCD顯示“時(shí)”,“分”,LED閃動(dòng)來(lái)做秒計(jì)數(shù),定時(shí)時(shí)間到能發(fā)出警報(bào)聲或者啟動(dòng)繼電器,從而控制電器
2、的啟?!,F(xiàn)在是自動(dòng)化高度發(fā)達(dá)的時(shí)代,特別是電子類產(chǎn)品都是靠?jī)?nèi)部的控制電路來(lái)實(shí)現(xiàn)對(duì)產(chǎn)品的控制,達(dá)到自動(dòng)運(yùn)行的目的,這就需要我們這里要做的設(shè)計(jì)中的電器元件及電路的支持。 在這次設(shè)計(jì)中主要是用STC12C5A16S2來(lái)進(jìn)行定時(shí),也結(jié)合著其他輔助電路實(shí)施控制,在定時(shí)的時(shí)候,按一下控制小時(shí)的鍵對(duì)小時(shí)加一;按一下控制分鐘的鍵對(duì)分鐘加一;到達(dá)預(yù)設(shè)的時(shí)間,此電路就會(huì)發(fā)出報(bào)警聲音提示已經(jīng)到點(diǎn)。</p><p> [關(guān)鍵詞] 定時(shí)
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í)鐘的設(shè)計(jì)目的和要求2</p><p><b> 1.1設(shè)計(jì)目的2</b></p><p><
7、;b> 1.2設(shè)計(jì)要求2</b></p><p> 2 電子時(shí)鐘的設(shè)計(jì)流程3</p><p> 2.1總體方案的原理3</p><p> 2.2總體設(shè)計(jì)方案和框圖3</p><p> 3 系統(tǒng)硬件設(shè)計(jì)4</p><p> 3.1 STC12C5A16S2單片機(jī)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ū)動(dòng)8</p><p> 3.4.3蜂鳴器驅(qū)動(dòng)電路8</p><p> 3.4.4蜂鳴器驅(qū)動(dòng)設(shè)計(jì)9</p><p> 4 系統(tǒng)軟件設(shè)計(jì)10</p><p> 4.1程序流程圖10</p><p> 4.2 電子時(shí)鐘主要程序
10、11</p><p><b> 5 安裝調(diào)試17</b></p><p><b> 總 結(jié)18</b></p><p> 參 考 文 獻(xiàn)19</p><p> 附錄 電路原理圖20</p><p><b> 引 言</b></p
11、><p> 隨著微電子技術(shù)的不斷發(fā)展,微處理器芯片的集成程度越來(lái)越高,單片機(jī)已可以在一塊芯片上同時(shí)集成CPU、存儲(chǔ)器、定時(shí)器/計(jì)數(shù)器、并行和串行接口、看門狗、前置放大器、A/D轉(zhuǎn)換器、D/A轉(zhuǎn)換器等多種電路,這就很容易將計(jì)算機(jī)技術(shù)與測(cè)量控制技術(shù)結(jié)合,組成智能化測(cè)量控制系統(tǒng)。這種技術(shù)促使機(jī)器人技術(shù)也有了突飛猛進(jìn)的發(fā)展。單片機(jī)技術(shù)作為自動(dòng)控制技術(shù)的核心之一,被廣泛應(yīng)用于工業(yè)控制、智能儀器、機(jī)電產(chǎn)品、家用電器等領(lǐng)域。隨著
12、微電子技術(shù)的迅速發(fā)展,單片機(jī)功能也越來(lái)越強(qiáng)大,本設(shè)計(jì)基于STC單片機(jī)的電子時(shí)鐘技術(shù),以STC12C5A16S2為核心,構(gòu)成數(shù)字鐘,首先應(yīng)選擇一個(gè)脈沖源——能自動(dòng)地產(chǎn)生穩(wěn)定的標(biāo)準(zhǔn)時(shí)間脈沖信號(hào)。而脈沖源產(chǎn)生的脈沖信號(hào)的頻率較高,因此,需要進(jìn)行分頻,使得高頻脈沖信號(hào)轉(zhuǎn)變?yōu)檫m合于計(jì)時(shí)的低頻脈沖信號(hào),即“秒脈沖信號(hào)”(頻率為1HZ)。</p><p> 校時(shí)電路一般采用自動(dòng)快速調(diào)整和手動(dòng)調(diào)整,“自動(dòng)快速調(diào)整”可利用分頻器
13、輸出的不同頻率的脈沖使顯示的時(shí)間自動(dòng)迅速調(diào)整?!笆謩?dòng)調(diào)整”可利用手動(dòng)的節(jié)拍調(diào)準(zhǔn)顯示時(shí)間?;谝蟊敬尾捎昧俗詣?dòng)快速調(diào)整。數(shù)字鬧鐘要求有定時(shí)響鬧的功能,故需要提供設(shè)定鬧時(shí)電路和對(duì)比起鬧電路。設(shè)時(shí)電路應(yīng)共享譯碼器、驅(qū)動(dòng)器到數(shù)字顯示器,以便使用者設(shè)定時(shí)間,并可減少電路的芯片數(shù)量;而對(duì)比起鬧電路提供聲源,應(yīng)具有人工止鬧功能,止鬧后不再重新操作,將不再發(fā)生起鬧等功能。</p><p> 1 電子時(shí)鐘的設(shè)計(jì)目的和要求&l
14、t;/p><p><b> 1.1設(shè)計(jì)目的</b></p><p> ?。?) 掌握時(shí)鐘的基本構(gòu)件;</p><p> (2) 掌握各電子元器件的基本形狀及其功能;</p><p> ?。?) 掌握各電子元器件的焊接步驟與工作原理;</p><p> ?。?) 掌握單片機(jī)內(nèi)部結(jié)構(gòu)與程序編制方法;
15、</p><p> ?。?) 掌握數(shù)碼管內(nèi)部結(jié)構(gòu),掌握數(shù)碼顯示技術(shù);</p><p> ?。ǎ叮┩ㄟ^(guò)本次設(shè)計(jì)實(shí)驗(yàn),對(duì)自己的專業(yè)知識(shí)掌握和運(yùn)用有一個(gè)系統(tǒng)的考核。</p><p><b> 1.2設(shè)計(jì)要求</b></p><p> 利用實(shí)驗(yàn)開(kāi)發(fā)板上的液晶顯示屏,設(shè)計(jì)帶有鬧鐘及日期顯示功能的數(shù)字時(shí)鐘。</p>
16、<p> (1) 利用液晶顯示屏顯示時(shí)間及日期,時(shí)間為24小時(shí)制,日期格式為年-月- 日;</p><p> (2) 利用按鍵對(duì)時(shí)間、日期、鬧鈴進(jìn)行設(shè)置,到鬧鈴時(shí)間到時(shí),蜂鳴器發(fā)出聲音, 按停止鍵可使鬧鈴?fù)V梗?lt;/p><p> (3) 用了LED做鬧鈴倒計(jì)時(shí)顯示。</p><p> (4)實(shí)現(xiàn)的功能在數(shù)字鐘正常進(jìn)行顯示時(shí)其顯示周期為000
17、000至 23:59:59,其中有五個(gè)按鍵按下“暫?!辨I時(shí)鐘停止走動(dòng)按下“開(kāi)始”鍵時(shí) 鐘開(kāi)始走動(dòng)按下“秒設(shè)置”時(shí)鐘秒位自加1加至60時(shí)向分位進(jìn)1按下“分設(shè)置”時(shí)鐘分位自加1加至60時(shí)向時(shí)位進(jìn)1按下“時(shí)設(shè)置”時(shí)鐘秒位自加1加至24時(shí)顯示00。 </p><p> 2 電子時(shí)鐘的設(shè)計(jì)流程</p><p> 2.1總體方案的原理</p><p>
18、在一個(gè)完整的鬧鐘系統(tǒng)的設(shè)計(jì)中,我們采用的是自頂向下的設(shè)計(jì)思想,整個(gè)系統(tǒng)由若干個(gè)模塊組合來(lái)實(shí)現(xiàn),包括計(jì)數(shù)模塊、控制模塊、譯碼模塊、動(dòng)態(tài)掃描輸出模塊、鬧鐘控制模塊。設(shè)計(jì)鬧鐘時(shí)應(yīng)考慮的問(wèn)題有:鬧鐘能否計(jì)數(shù)、能否對(duì)計(jì)時(shí)時(shí)間進(jìn)行調(diào)整,定時(shí)鬧鈴功能是否正常,動(dòng)態(tài)掃描顯示是否正常等等。</p><p> 2.2總體設(shè)計(jì)方案和框圖</p><p> 圖2-1電子時(shí)鐘系統(tǒng)框圖</p>&l
19、t;p> 電子鬧鐘應(yīng)包括秒信號(hào)發(fā)生器、時(shí)間顯示電路、按鍵電路、供電電源以及鬧鈴指示電路等幾部分。 按鍵功能說(shuō)明:K1,設(shè)置時(shí)間和鬧鐘的小時(shí);K2,設(shè)置小時(shí)以及設(shè)置鬧鐘的開(kāi)關(guān);K3,設(shè)置分鐘和鬧鐘的分鐘;K4;設(shè)置完成退出</p><p> 電子鬧鐘的主電路指的是圖2-1中虛線框內(nèi)部分,主要涉及到CPU電路和按鍵按鈕電路。主機(jī)的設(shè)計(jì)具體地說(shuō)有:</p><p> ?。?)系統(tǒng)時(shí)鐘電
20、路設(shè)計(jì);</p><p> ?。?)系統(tǒng)復(fù)位電路設(shè)計(jì);</p><p> ?。?)按鍵與按鈕電路設(shè)計(jì):</p><p> ?。?)鬧鈴聲指示電路設(shè)計(jì)。</p><p><b> 3 系統(tǒng)硬件設(shè)計(jì)</b></p><p> 3.1 STC12C5A16S2單片機(jī)</p><
21、p> 教學(xué)用電子打鈴器主要由STC12C5A16S2單片機(jī)、鍵盤掃描模塊、時(shí)鐘和復(fù)位模塊、蜂鳴器模塊、LCD1602顯示模塊等組成。運(yùn)用匯編語(yǔ)言來(lái)控制單片機(jī)STC12C5A16S2來(lái)實(shí)現(xiàn)、動(dòng)態(tài)數(shù)碼顯示等功能。且本設(shè)計(jì)中的STC12C5A16S2單片機(jī)是整個(gè)工作過(guò)程的核心,是整個(gè)設(shè)計(jì)靈魂,它控制了脈沖時(shí)序的產(chǎn)生顯示信號(hào)的發(fā)送控制顯示LED的選擇。 STC12C5A16S2是一種帶4K字節(jié)存儲(chǔ)器的低電壓、高性能CMOS 8位微處理
22、器,俗稱單片機(jī).</p><p> 圖3-1 STC12C5A16S2管腳圖</p><p> P0.0—P0.7(39—32)P0口是一個(gè)漏極開(kāi)路型準(zhǔn)雙向I/O口。在訪問(wèn)外部存儲(chǔ)器時(shí),它是分時(shí)多路轉(zhuǎn)換的地址(低8位)和數(shù)據(jù)總線,在訪問(wèn)期間激活了內(nèi)部的上拉電阻。在EPROM編程時(shí),它接收指令字節(jié),而在驗(yàn)證程序時(shí),則輸出指令字節(jié)。驗(yàn)證時(shí),要求外接上拉電阻。</p><
23、;p> P1.0—P1.7(1-8):P1口是帶內(nèi)部上拉電阻的8位雙向I/O口。在EPROM編程和程序驗(yàn)證時(shí),它接收低8位地址。 </p><p> P2.0—P2.7(21-28):P2口是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口。在訪問(wèn)外部存儲(chǔ)器時(shí),它送出高8位地址。在對(duì)EFROM編程和程序驗(yàn)證期間,它接收高8位地址。</p><p> P3.0—P3.7(10-17):P3口
24、是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口。</p><p> 此部分是整個(gè)鬧鐘運(yùn)行的核心部件,起著控制鬧鐘所有運(yùn)行狀態(tài)的作用??刂品椒ㄓ泻芏啵蟛糠侄疾捎脝纹瑱C(jī)控制。由于51單片機(jī)具有價(jià)格低廉是使用簡(jiǎn)單的特點(diǎn),這里選擇了ATMEL公司的STC12C5A16S2作為控制核心部件。</p><p> STC12C5A16S2單片機(jī)系列的存儲(chǔ)器用的是哈佛結(jié)構(gòu),即將程序和數(shù)據(jù)存儲(chǔ) 截然分開(kāi),程序
25、存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器各有自己的尋址方式、尋址空間和控制系統(tǒng)。STC89C52的存儲(chǔ)器可分為五類:程序存儲(chǔ)器,內(nèi)部數(shù)據(jù)存儲(chǔ)器,特殊功能寄存器,位地址空間,外部數(shù)據(jù)存儲(chǔ)器。</p><p><b> 3.2模塊電路</b></p><p> 3.2.1 復(fù)位電路與晶振電路 </p><p> 復(fù)位電路是單片機(jī)系統(tǒng)必須的,用來(lái)為單片機(jī)提供正確的復(fù)
26、位信號(hào);振蕩電路就為單片機(jī)工作提供了所需要的時(shí)鐘脈沖信號(hào),使單片機(jī)的開(kāi)始正常工作; 如圖3-2所示 18腳和19接時(shí)鐘電路,XTAL1接外部晶振和微調(diào)電容的一端,在片內(nèi)它是振蕩器倒相放大器的輸入,XTAL2接外部晶振和微調(diào)電容的另一端,在片內(nèi)它是振蕩器倒相放大器的輸出;第9引腳為復(fù)位輸入端,接上電容,電阻及開(kāi)關(guān)后能夠形成上電復(fù)位電路。</p><p> 圖3-2 復(fù)位電路與晶振電路</p>&l
27、t;p> 3.2.2顯示模塊及芯片</p><p> 液晶顯示器各種圖形的顯示原理:線段的顯示,點(diǎn)陣圖形式液晶由M×N個(gè)顯示單元組成,假設(shè)LCD顯示屏有64行,每行有128列,每8列對(duì)應(yīng)1字節(jié)的8位,即每行由16字節(jié),共16×8=128個(gè)點(diǎn)組成,屏上64×16個(gè)顯示單元與顯示RAM區(qū)1024字節(jié)相對(duì)應(yīng),每一字節(jié)的內(nèi)容和顯示屏上相應(yīng)位置的亮暗對(duì)應(yīng)。例如屏的第一行的亮暗由RAM
28、區(qū)的000H——00FH的16字節(jié)的內(nèi)容決定,當(dāng)000H=FFH時(shí),則屏幕的左上角顯示一條短亮線,長(zhǎng)度為8個(gè)點(diǎn),當(dāng)3FF=FFH時(shí),則屏幕的右下角顯示一條短亮線當(dāng)000H=FFH,001H=00H,002H=00H?00EH=00H,00FH=00H時(shí),則在屏幕的頂部顯示一條由8段亮線和8條暗線組成的虛線。這就是LCD顯示的基本原理。</p><p> 字符的顯示:用LCD顯示一個(gè)字符時(shí)比較復(fù)雜,因?yàn)橐粋€(gè)字符由
29、6×8或8×8點(diǎn)陣組成,既要找到和顯示屏幕上某幾個(gè)位置對(duì)應(yīng)的顯示RAM區(qū)的8字節(jié),還要使每字節(jié)的不同位為“1”,其它的為“0”,為“1”的點(diǎn)亮。為“0”的不亮。這樣一來(lái)就組成某個(gè)字符。但由于內(nèi)帶字符發(fā)生器的控制器來(lái)說(shuō)。顯示字符就比較簡(jiǎn)單了,可以讓控制器工作在文本方式,根據(jù)在LCD上開(kāi)始顯示的行列號(hào)及每行的列數(shù)找出顯示RAM對(duì)應(yīng)的地址設(shè)立光標(biāo)在此送上該字符對(duì)應(yīng)的代碼即可。</p><p>
30、 圖3-3 LCD1602液晶顯示模塊</p><p><b> 3.3串口通訊單元</b></p><p> MAX232芯片是美信公司專門為電腦的RS-232標(biāo)準(zhǔn)串口設(shè)計(jì)的單電源電平轉(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兩個(gè)電源,提供給RS-232串口電平的需要。 </p><p> 數(shù)
32、據(jù)轉(zhuǎn)換通道:由7、8、9、10、11、12、13、14腳構(gòu)成兩個(gè)數(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電平較高,在接通時(shí)產(chǎn)生的瞬時(shí)電涌非常高,很有可能擊毀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> (2)電磁式蜂鳴器 電磁式蜂鳴器由振蕩器、電磁線圈、磁鐵、振動(dòng)膜片及外殼等組成。 </p><p> 3.4.2蜂鳴器的驅(qū)動(dòng)</p><p> 在單片機(jī)應(yīng)用的設(shè)計(jì)上,很多方案都會(huì)用到蜂鳴器,大部分都是使用蜂鳴器來(lái)做提示或報(bào)警,比如按鍵按下、開(kāi)始工作、工作結(jié)束或是故障等等。這里對(duì)單片機(jī)在蜂鳴器驅(qū)動(dòng)上的應(yīng)用作一下描述。圖3--5為蜂鳴器發(fā)聲</p
36、><p><b> 電路原理圖。</b></p><p> 圖3-5蜂鳴器發(fā)聲電路原理圖</p><p> 圖3-5蜂鳴器發(fā)聲電路原理圖</p><p> 驅(qū)動(dòng)方式:由于自激蜂鳴器是直流電壓驅(qū)動(dòng)的,不需要利用交流信號(hào)進(jìn)行驅(qū)動(dòng),只需對(duì)驅(qū)動(dòng)口輸出驅(qū)動(dòng)電平并通過(guò)三極管放大驅(qū)動(dòng)電流就能使蜂鳴器發(fā)出聲音,很簡(jiǎn)單,這里就不對(duì)自激
37、蜂鳴器進(jìn)行說(shuō)明了。這里只對(duì)必須用1/2duty 的方波信號(hào)進(jìn)行驅(qū)動(dòng)的他激蜂鳴器進(jìn)行說(shuō)明。 </p><p> 單片機(jī)驅(qū)動(dòng)他激蜂鳴器的方式有兩種:一種是PWM 輸出口直接驅(qū)動(dòng),另一種是利用I/O 定時(shí)翻轉(zhuǎn)電平產(chǎn)生驅(qū)動(dòng)波形對(duì)蜂鳴器進(jìn)行驅(qū)動(dòng)。 </p><p> PWM 輸出口直接驅(qū)動(dòng)是利用PWM 輸出口本身可以輸出一定的方波來(lái)直接驅(qū)動(dòng)蜂鳴器。比如頻率為2000Hz 的蜂鳴器的驅(qū)動(dòng),可以知道
38、周期為500μs,這樣只需要把PWM 的周期設(shè)置為500μs,占空比電平設(shè)置為250μs,就能產(chǎn)生一個(gè)頻率為2000Hz 的方波,通過(guò)這個(gè)方波再利用三極管就可以去驅(qū)動(dòng)這個(gè)蜂鳴器了。</p><p> 3.4.3蜂鳴器驅(qū)動(dòng)電路</p><p> 由于蜂鳴器的工作電流一般比較大,以致于單片機(jī)的I/O 口是無(wú)法直接驅(qū)動(dòng)的,所以要利用放大電路來(lái)驅(qū)動(dòng),一般使用三極管來(lái)放大電流就可以了。下圖為比較
39、安全的驅(qū)動(dòng)電路 </p><p> 圖3-6蜂鳴器安全的驅(qū)動(dòng)電路圖</p><p> 3.4.4蜂鳴器驅(qū)動(dòng)設(shè)計(jì)</p><p> 由于這里要介紹兩種驅(qū)動(dòng)方式的方法,所以程序不僅介紹了PWM 輸出口驅(qū)動(dòng)蜂鳴器的方法,還要介紹I/O 口驅(qū)動(dòng)蜂鳴器的方法。所以,我們將設(shè)計(jì)如下的一個(gè)系統(tǒng)來(lái)說(shuō)明單片機(jī)對(duì)蜂鳴器的驅(qū)動(dòng):系統(tǒng)有兩個(gè)他激蜂鳴器,頻率都
40、為2000Hz,一個(gè)由I/O 口進(jìn)行控制,另一個(gè)由PWM 輸出口進(jìn)行控制;系統(tǒng)還有兩個(gè)按鍵,一個(gè)按鍵為PORT 按鍵,I/O 口控制的蜂鳴器不鳴叫時(shí)按一次按鍵I/O 口控制的蜂鳴器鳴叫,再按一次停止鳴叫,另一個(gè)按鍵為PWM 按鍵,PWM 口控制的蜂鳴器不鳴叫時(shí)按一次按鍵PWM輸出口控制的蜂鳴器鳴叫,再按一次停止鳴叫。5 PWM 輸出口直接驅(qū)動(dòng)蜂鳴器方式由于PWM 只控制固定頻率的蜂鳴器,所以可以在程序的系統(tǒng)初始化時(shí)就對(duì)PWM 的輸出波形
41、進(jìn)行設(shè)置。 </p><p> 首先根據(jù)SH69P43 的PWM 輸出的周期寬度是10 位數(shù)據(jù)來(lái)選擇PWM 時(shí)鐘。系統(tǒng)使用4MHz 的晶振作為主振蕩器,一個(gè)tosc 的時(shí)間就是0.25μs,若是將PWM 的時(shí)鐘設(shè)置為tosc 的話, 則蜂鳴器要求的波形周期500μs 的計(jì)數(shù)值為500μs/0.25μs=(2000)10=(7D0)16,7D0H 為11 位的數(shù)據(jù),而SH69P43 的PWM 輸出周期寬度只是10
42、 位數(shù)據(jù),所以選擇PWM 的時(shí)鐘為tosc 是不能實(shí)現(xiàn)蜂鳴器所要的驅(qū)動(dòng)波的。</p><p><b> 4 系統(tǒng)軟件設(shè)計(jì)</b></p><p><b> 4.1程序流程圖</b></p><p> 圖4-1系統(tǒng)總流程圖</p><p> 4.2 電子時(shí)鐘主要程序</p>&
43、lt;p> #include<reg52.h></p><p> #include <intrins.h></p><p> sbit SCLK = P1^0; //DS1302時(shí)鐘口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點(diǎn)陣,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); //顯示開(kāi),關(guān)光標(biāo)</p><p><b> delay(5);&l
54、t;/b></p><p> write_com(0x06); //移動(dòng)光標(biāo)</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> 延時(shí)X微秒(STC12C5A60S2@12M)</p><p> 不同的工作環(huán)境,需要調(diào)整此函數(shù)</p><p> 此延時(shí)函數(shù)是使用1T的指令周期進(jìn)行計(jì)算,與傳統(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位計(jì)數(shù)器<
63、;/p><p><b> {</b></p><p> SCLK = 0; //時(shí)鐘線拉低</p><p> Delay(); //延時(shí)等待</p><p> dat >>= 1
64、; //數(shù)據(jù)右移一位</p><p> if (IO) dat |= 0x80; //讀取數(shù)據(jù)</p><p> SCLK = 1; //時(shí)鐘線拉高</p><p> Delay();
65、 //延時(shí)等待</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位計(jì)數(shù)器</p><p><b> {</b></p><p> SCLK = 0; /
68、/時(shí)鐘線拉低</p><p> Delay(); //延時(shí)等待</p><p> dat >>= 1; //移出數(shù)據(jù)</p><p> IO = CY;
69、 //送出到端口</p><p> SCLK = 1; //時(shí)鐘線拉高</p><p> Delay(); //延時(shí)等待</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的某個(gè)地址寫入數(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> 寫入初始時(shí)間</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); //寫保護(hù)</p><p><b> }</b></p><p> /**************************************</p>
82、<p><b> 讀取當(dāng)前時(shí)間</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); //時(shí)鐘啟動(dòng)</p><p> DS1302_WriteDa
87、ta(0x90, 0xa6); //一個(gè)二極管+4K電阻充電</p><p> DS1302_WriteData(0x8e, 0x80); //寫保護(hù)</p><p><b> }</b></p><p><b> 5 安裝調(diào)試</b></p><p> 5.1硬件系統(tǒng)的組裝與調(diào)試
88、</p><p> 硬件組裝前首先要仔細(xì)核對(duì)硬件系統(tǒng)設(shè)計(jì)原理的正確性,包括參數(shù)選用的正確性和原理的正確性,對(duì)沒(méi)有把握的電路可以通過(guò)在通用實(shí)驗(yàn)板上直接焊接實(shí)際電路來(lái)進(jìn)行實(shí)物調(diào)試和驗(yàn)證,調(diào)試分為斷電調(diào)試和通電調(diào)試。 </p><p> ?。?)斷電調(diào)試 為了安全起見(jiàn),首先必須進(jìn)行斷電調(diào)試,斷電調(diào)試的內(nèi)容至少包含短路檢測(cè)和原理正確性確認(rèn);系統(tǒng)電路焊接完成后,首先對(duì)實(shí)物進(jìn)行原理正確性的確認(rèn)
89、,其次必須進(jìn)行短路檢測(cè),選用合適的萬(wàn)用表歐姆檔,用紅表筆接到電路板的+5V電源的+、— 極,如果存在充放電現(xiàn)象,最后電阻穩(wěn)定在一個(gè)合適的位置,則基本上可排除系統(tǒng)短路現(xiàn)象。 </p><p> ?。?)通電調(diào)試 系統(tǒng)時(shí)鐘是否起 凡是微處理器系統(tǒng),正常運(yùn)行的必要條件是系統(tǒng)時(shí)鐘穩(wěn)定正常,在實(shí)際工作中,因?yàn)楦鞣N原因?qū)е孪到y(tǒng)時(shí)鐘不正常而出現(xiàn)系統(tǒng)無(wú)法正常運(yùn)行的情況也時(shí)有出現(xiàn),因此系統(tǒng)時(shí)鐘是否起震應(yīng)是通電檢查的首要一環(huán),檢
90、查方法包括邏輯筆發(fā)、數(shù)字萬(wàn)用表法、示波器法,在這里采用數(shù)字萬(wàn)用表法,測(cè)試晶振兩端引腳電壓為2.5V左右。 復(fù)位是否正常及關(guān)鍵點(diǎn)電壓參數(shù)是否正常 復(fù)位不正常也會(huì)導(dǎo)致系統(tǒng)不工作,這里的重點(diǎn)是檢查相關(guān)電路是否正常,同時(shí)檢查相應(yīng)電路的關(guān)鍵電壓參數(shù)是否正常,進(jìn)行一一排查。</p><p><b> 5.2軟件調(diào)試</b></p><p> 單片機(jī)的程序設(shè)計(jì)調(diào)試分為兩種,一種
91、是使用軟件模擬調(diào)試,即用開(kāi)發(fā)單片機(jī)程序的計(jì)算機(jī)去模擬單片機(jī)的指令執(zhí)行,并虛擬單片機(jī)片內(nèi)資源,從而實(shí)現(xiàn)調(diào)試的目的,但是軟件調(diào)試存在一些問(wèn)題,如計(jì)算機(jī)本身是多任務(wù)系統(tǒng),劃分執(zhí)行時(shí)間片序,也就是說(shuō),不可能像真正的單片機(jī)運(yùn)行環(huán)境那樣執(zhí)行的指令在同樣一個(gè)時(shí)間能完成(往往比單片機(jī)慢)。為了解決軟件調(diào)試問(wèn)題,第二種方法是硬件調(diào)試,硬件調(diào)試其實(shí)也需要計(jì)算機(jī)軟件的配合。軟件調(diào)試與所選用的軟件結(jié)構(gòu)有關(guān),如果采用模塊程序設(shè)計(jì)技術(shù),則逐個(gè)模塊調(diào)好后再進(jìn)行系統(tǒng)程
92、序總調(diào),如果采用實(shí)時(shí)多任務(wù)操作系統(tǒng),一般是逐個(gè)任務(wù)進(jìn)行調(diào)試,對(duì)于模塊結(jié)構(gòu)程序.要一個(gè)個(gè)子程序分別調(diào)試,調(diào)試時(shí),一定要符合入口條件和出口條件,調(diào)試可用單步運(yùn)行和斷點(diǎn)運(yùn)行方式,通過(guò)檢查用者系統(tǒng)的CPU現(xiàn)場(chǎng)情況、 RAM的內(nèi)容和I/O口的狀態(tài),檢測(cè)程序執(zhí)行結(jié)果是否符合設(shè)計(jì)要求,有無(wú)循環(huán)錯(cuò)誤、有無(wú)機(jī)器碼錯(cuò)誤以及轉(zhuǎn)移地址的錯(cuò)誤,同時(shí),還可以發(fā)現(xiàn)用者系統(tǒng)中存在的 硬件設(shè)計(jì)錯(cuò)誤和軟件算法錯(cuò)誤,各程序模塊通過(guò)后,則可以把相關(guān)功能塊連在一起進(jìn)行總調(diào)。&l
93、t;/p><p><b> 總 結(jié)</b></p><p> 通過(guò)此次多功能數(shù)字鐘設(shè)計(jì)制作,我們將從書(shū)本上學(xué)到的知識(shí)應(yīng)用于實(shí)踐,加強(qiáng)了自身的實(shí)踐動(dòng)手能力,雖然過(guò)程中遇到了一些困難,但是在解決這些問(wèn)題的過(guò)程無(wú)疑也是對(duì)自己自身專業(yè)素質(zhì)的一種提高,不管做什么事,計(jì)劃是很重要的。沒(méi)有一個(gè)完好的計(jì)劃,做事情就會(huì)沒(méi)有一個(gè)好的順序,做事情會(huì)比較亂,很難成功。而有一個(gè)好的計(jì)劃,不管做
94、什么事都會(huì)事半功倍,做事心中有數(shù),明確重點(diǎn)和緩急,不會(huì)有疏漏。這樣才能提高成功率;其次我們做事情要注意細(xì)節(jié),細(xì)節(jié)決定成敗,這句話在這次課題中不僅一次得到了印證,特別是在軟件的編程過(guò)程中,一點(diǎn)點(diǎn)的錯(cuò)誤就會(huì)使你整個(gè)程序不能運(yùn)行。因此我們不僅僅要有整體意識(shí),也要注意細(xì)節(jié),不要因一個(gè)關(guān)鍵地方的一個(gè)細(xì)節(jié)而導(dǎo)致滿盤皆輸;當(dāng)最終調(diào)試成功的時(shí)候也是對(duì)自己的一種肯定。此次的畢業(yè)設(shè)計(jì)不僅增強(qiáng)了自己在專業(yè)設(shè)計(jì)方面的信心,鼓舞了自己,更是一次興趣的培養(yǎng),為自己
95、以后的學(xué)習(xí)方向的明確了重點(diǎn)</p><p><b> 參 考 文 獻(xiàn)</b></p><p> [1]沈紅衛(wèi).基于單片機(jī)的智能系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[M].北京:電子工業(yè)出版社,2005.1</p><p> [2]侯玉寶,陳忠平,李成群.基于proteus的51系列單片機(jī)設(shè)計(jì)與仿真[M]. 2008.9</p><p>
96、; [3]江世明.基于Proteus的單片機(jī)應(yīng)用技術(shù)[M]. 電子工業(yè)出版社.2009.6.1</p><p> [4]王東峰.單片機(jī)C語(yǔ)言教程[M]. 電子工業(yè)出版社.2009</p><p> [5]周堅(jiān)編.單片機(jī)C語(yǔ)言輕松入門[M]. 北京航空航天大學(xué)出版社.2006</p><p> [6]劉勇. 數(shù)字電路 [M]. 電子工業(yè)出版社, 2005<
97、;/p><p> [7]靳桅.單片機(jī)原理及應(yīng)用[M]. 西南交通大學(xué)出版社.2004</p><p> [8]] 楊子文. 單片機(jī)原理及應(yīng)用[M]. 西安電子科技大學(xué)出版社2006</p><p> [9]楊幫文.新編傳感器實(shí)用寶典[M]. 機(jī)械工業(yè)出版社.2005</p><p> [10]謝自美.電子線路設(shè)計(jì).試驗(yàn).測(cè)試 [M]. 華
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)畢業(yè)設(shè)計(jì)--基于單片機(jī)的電子時(shí)鐘
- 畢業(yè)設(shè)計(jì)--基于單片機(jī)的電子時(shí)鐘設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于單片機(jī)的電子時(shí)鐘設(shè)計(jì)
- 基于單片機(jī)的電子時(shí)鐘設(shè)計(jì)【畢業(yè)設(shè)計(jì)】
- 基于單片機(jī)控制的電子時(shí)鐘畢業(yè)設(shè)計(jì)論文
- 畢業(yè)設(shè)計(jì)---用單片機(jī)實(shí)現(xiàn)電子時(shí)鐘
- 畢業(yè)設(shè)計(jì)(論文)基于51單片機(jī)的電子時(shí)鐘設(shè)計(jì)
- 基于單片機(jī)的電子時(shí)鐘設(shè)計(jì)
- 單片機(jī)電子時(shí)鐘畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--基于單片機(jī)的多功能電子時(shí)鐘設(shè)計(jì)
- 基于單片機(jī)的電子時(shí)鐘設(shè)計(jì)
- 基于單片機(jī)的電子時(shí)鐘設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--單片機(jī)電子時(shí)鐘
- 單片機(jī)電子時(shí)鐘畢業(yè)設(shè)計(jì)
- 基于-單片機(jī)的電子時(shí)鐘的設(shè)計(jì)
- 單片機(jī)電子時(shí)鐘設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的電子時(shí)鐘設(shè)計(jì)畢業(yè)論文
- 畢業(yè)論文---基于單片機(jī)的電子時(shí)鐘設(shè)計(jì)
- 畢業(yè)論文--基于單片機(jī)的電子時(shí)鐘設(shè)計(jì)
- 基于51單片機(jī)的電子時(shí)鐘設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論