




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 摘 要隨著科技的不斷發(fā)展以及集成電路的發(fā)展單片機(jī)的應(yīng)用正不斷的深入。單片機(jī)芯片體積小、功能強(qiáng)、成本低,可廣泛地嵌入到如工業(yè)控制單元、機(jī)器人、智能儀器儀表、汽車電子系統(tǒng)、家用電器、辦公自動化設(shè)備、金融電子系統(tǒng)、玩具、個人信息終端及通信產(chǎn)品中。萬年歷是一種應(yīng)用非常廣泛的日常計時工具,給我?guī)砹酥T多方便,而液晶顯示的日歷時鐘以其讀取方便、顯示直觀、功能多樣、適用性廣泛等優(yōu)點深受大家喜愛。本設(shè)計就是以單片機(jī)為核心,用時鐘芯片進(jìn)行計時,液晶顯示模塊做為顯示,設(shè)計一個電子萬年歷,具備能顯示年、月、日、時、分、秒、及星期信息功能,調(diào)整時間和日期功能以及電子鬧鐘功能。關(guān)鍵字:單片機(jī);萬年歷;時鐘芯片;液晶顯
2、示 abstract with the continuous development of science and technology and the development of integrated circuits of the single chip microcomputer application is constant depth. single chip microcomputer chip small volume, the function is strong, low cost, can be widely em- bedded in such as industria
3、l control unit, robot, intelligent instruments, automobile electro- nic system, home appliances, office automation equipment, financial electronic system, to- ys, personal information terminals and communication products.calendar is a very extensive daily timing tool, brought me many convenient, and
4、 liquid crystal display calendar clock with its convenient, direct display read, functional diversity, applicability widely advantages very popular. this design is with the single chip processor as the core, with the clock chips for time, liquid crystal display module as a display, design a electron
5、ic calendar, have can show date and time, minutes and seconds, and week information function, adjust the time and date function and electronic alarm clock function.key words : single-chip microcomputer ; target clock generator ; liquid-crystal display 目錄摘 要iabstractii1 緒論1 1.1 引言1 1.2 設(shè)計所實現(xiàn)目標(biāo)及總體方案1
6、1.2.1 實現(xiàn)目標(biāo)1 1.2.2 總體方案12 系統(tǒng)硬件設(shè)計3 2.1 電源模塊3 2.2 單片機(jī)最小系統(tǒng)模塊3 2.2.1 stc89c52單片機(jī)功能介紹3 2.2.2 stc89c52引腳介紹4 2.2.3 復(fù)位電路5 2.2.4 晶振電路5 2.3 顯示模塊設(shè)計6 2.3.1 1602lcd引腳介紹6 2.3.2 1602lcd操作時序介紹7 2.3.3 1602lcd與單片機(jī)的連接電路7 2.4 時鐘計算模塊設(shè)計8 2.4.1 ds1302引腳介紹8 2.4.2 ds1302相關(guān)寄存器介紹9 2.4.3 ds1302與單片機(jī)接口電路9 2.5 鬧鐘模塊11 2.6 按鍵設(shè)置模塊113
7、 系統(tǒng)軟件設(shè)計12 3.1 主程序流程圖12 3.2 讀寫ds1302程序13 3.3 lcd1602顯示程序14 3.4 鬧鐘程序15 3.5 時鐘調(diào)整程序15畢業(yè)設(shè)計總結(jié)19參考文獻(xiàn)20附錄i:系統(tǒng)硬件電路21附錄:源程序代碼23附錄: 實物圖42致謝431 緒論1.1 引言現(xiàn)在社會不斷的在發(fā)展,人們生活節(jié)奏的不斷加快,人們對時間的要求也越來越高,人們走到哪里都需要能很方便的讀取時間。隨著科技的發(fā)展,電子產(chǎn)品得到飛速的發(fā)展,現(xiàn)在電子萬年歷已經(jīng)成了人們生活中必不可少的工具,電子萬年歷現(xiàn)在已經(jīng)應(yīng)用到個個地方,給人們的生活帶來了極大的方便。1.2 設(shè)計所實現(xiàn)目標(biāo)及總體方案1.2.1 實現(xiàn)目標(biāo)本設(shè)
8、計采用單片機(jī)為控制芯片,液晶顯示做為顯示,要求能顯示年、月、日、星期、時、分、秒、鬧鐘時間、鬧鐘開關(guān)等信息,日歷顯示為陽歷,時間為24小時制顯示,用戶可以自己調(diào)整年、月、日、星期、時、分、秒等信息,可以自己設(shè)定鬧鐘時間和鬧鐘開關(guān)情況。1.2.2 總體方案本設(shè)計采用stc89c52單片機(jī)為核心的單片機(jī)控制芯片,利用單片機(jī)強(qiáng)大的控制能力及其控制的準(zhǔn)確性,靈活的編程設(shè)計和豐富的io端口,通過與ds1302時鐘芯片進(jìn)行不斷通信從而獲得實時時間,并將獲得的信息通過1602lcd顯示出來,還可以通過相應(yīng)的不同按鍵調(diào)整相應(yīng)的值。 本設(shè)計系統(tǒng)可以分為硬件部分和軟件部分兩大部分,其中硬件部分可以分為六個模塊:電
9、源輸入模塊,單片機(jī)控制模塊,顯示模塊,時鐘計算模塊,鬧鐘模塊,按鍵設(shè)置模塊。軟件部分包括主程序、初始化程序、lcd顯示程序、讀/寫ds1302數(shù)據(jù)程序、設(shè)置程序,鬧鐘程序,延時程序等組成。系統(tǒng)總體方案設(shè)計原理框圖1-1所示。stc89c52單片機(jī)時間計算模塊(ds1302)電源輸入復(fù)位電路顯示模塊(1602lcd)時鐘電路鬧鐘模塊按鍵電路 圖1-1 系統(tǒng)總體方案設(shè)計原理框圖 2 系統(tǒng)硬件設(shè)計系統(tǒng)硬件部分主要包括電源模塊,單片機(jī)最小系統(tǒng)模塊,顯示模塊,時鐘計算模塊,鬧鐘模塊,按鍵設(shè)置模塊等6個模塊,下面我們對每個模塊逐一介紹。2.1 電源模塊本設(shè)計中要應(yīng)用到5v電源,但是家用電源電壓是220v,
10、所以5v電源就需要自己設(shè)計制作。下圖為自己制作的一個簡易電源電路圖,該電源的元件:變壓器一個,二極管四個,7085一個,極性1000uf電容一個,極性220uf電容一個,自鎖開關(guān)一個。電路如2-1所示。 圖2-1 電源電路2.2 單片機(jī)最小系統(tǒng)模塊本模塊主要有stc89c52及其復(fù)位電路和時鐘電路等外圍電路組成。2.2.1 stc89c52單片機(jī)功能介紹stc89c52單片機(jī)主要功能:表2-1 syc89c52功能兼容mcs51指令系統(tǒng)8k可反復(fù)擦寫flash rom32個雙向i/o口256x8bit內(nèi)部ram3個16位可編程定時/計數(shù)器中斷時鐘頻率0-24mhz2個串行中斷2個外部中斷源低功
11、耗空閑和掉電模式2.2.2 stc89c52引腳介紹引腳結(jié)構(gòu)如圖2-2所示: 圖2-2 stc89c52引腳圖引腳功能說明: 主電源引腳(2根)vcc(p40):電源輸入,接5v電源gnd(p20):接地線外接晶振引腳(2根)xtal1(p19):片內(nèi)振蕩電路的輸入端xtal2(p20):片內(nèi)振蕩電路的輸出端控制引腳(4根)rst/vpp(p9):復(fù)位引腳,引腳上出現(xiàn)2個機(jī)器周期的高電平將使單片機(jī)復(fù)位。ale/prog(p30):地址鎖存允許信號psen(p29):外部存儲器讀選通信號ea/vpp(p31):程序存儲器的內(nèi)外部選通,接低電平從外部程序存儲器讀指令,如果接高電平則從內(nèi)部程序存儲器
12、讀指令??删幊梯斎?輸出引腳(32根)stc89c52單片機(jī)有4組8位的可編程i/o口,分別位p0、p1、p2、p3口,每個口有8位(8根引腳),共32根。po口(p39p32):8位雙向i/o口線,名稱為p0.0p0.7p1口(p1p8):8位準(zhǔn)雙向i/o口線,名稱為p1.0p1.7 p2口(p21p28):8位準(zhǔn)雙向i/o口線,名稱為p2.0p2.7 p3口(p10p17):8位準(zhǔn)雙向i/o口線,名稱為p3.0p 復(fù)位電路單片機(jī)復(fù)位是使cpu和系統(tǒng)中的其他功能部件都處在一個確定的初始狀態(tài), 并從這個狀態(tài)開始工作。無論是在單片機(jī)剛開始接上電源時, 還是斷電后或者發(fā)生故障后都要
13、復(fù)位。89系列單片機(jī)的復(fù)位信號是從rst引腳輸人到芯片的施密特觸發(fā)器中的。當(dāng)系統(tǒng)處于正常工作狀態(tài)時, 且振蕩器穩(wěn)定后, 如果rst引腳有一個高電平并維持2個機(jī)器周期(24個振蕩周期), 則cpu就可響應(yīng)并且將系統(tǒng)復(fù)位。當(dāng)stc89c52進(jìn)行復(fù)位時,pc初始化為0000h,使stc89c52單片機(jī)從程序存儲器的0000h單元開始執(zhí)行程序。復(fù)位電路通常采用上電自動復(fù)位和手動按鈕復(fù)位兩種方式,本設(shè)計系統(tǒng)采用的是手動按鈕復(fù)位。系統(tǒng)復(fù)位電路如圖2-3所示。圖2-3 復(fù)位電路2.2.4 晶振電路晶振是用一種能把電能和機(jī)械能相互轉(zhuǎn)化的晶體在共振的狀態(tài)下工作,以提供穩(wěn)定,精確的單頻振蕩。晶振的作用是為系統(tǒng)提供
14、基本的時鐘信號,at89c52內(nèi)部有一個用于構(gòu)成片內(nèi)振蕩器的高增益反相放大器, 振蕩器產(chǎn)生的信號送到cpu, 作為cpu的時鐘信號,驅(qū)動cpu產(chǎn)生執(zhí)行指令功能的機(jī)器周期。引腳xtal1和xtal2是此放大器的輸人端和輸出端。這個放大器與作為反饋元件的片外石英晶體或陶瓷諧振器一起可構(gòu)成一個自激振蕩器, 振蕩電路的連接如下圖所示,外接石英晶體或陶瓷諧振器以及電容c1和c2構(gòu)成并聯(lián)諧振電路, 接在放大器的反饋回路中。振蕩信號頻率與晶振頻率及電容c1、c2的容量有關(guān),但主要由晶振頻率決定,外接石英晶體時, c1和c2一般取5pf-30pf, 本設(shè)計中c1、c2選擇標(biāo)稱值30pf,晶振為11.0592m
15、hz。系統(tǒng)振蕩電路如下圖2-4所示:圖2-4 晶振電路2.3 顯示模塊設(shè)計 液晶顯示器具有體積小、功耗低、直觀、清晰、顯示操作簡單,采用lcd顯示克服了led數(shù)碼管顯示單一的缺點,使設(shè)計的電子萬年歷更具有可觀賞性,本設(shè)計用的是1602lcd顯示,1602型lcd工作電壓為+5v,可以顯示2行16個字符,有8位數(shù)據(jù)總線d0-d7和rs,r/w,en三個控制端口,可直接與單片機(jī)接口相接,電源直接與電源電路相接,使用單片機(jī)的p0口和p2口與1602進(jìn)行通信。2.3.1 1602lcd引腳介紹1602lcd有16個引腳,引腳圖如下圖2-5: 圖2-5 lcd1602引腳圖1602lcd的各引腳接口說明
16、如下表2-2: 表2-2 1602引腳接口介紹編號符號引腳說明編號符號引腳說明1gnd電源地9d2數(shù)據(jù)2vcc電源正極10d3數(shù)據(jù)3vo對比度調(diào)節(jié)11d4數(shù)據(jù)4rs數(shù)據(jù)/命令選擇(h/l)12d5數(shù)據(jù)5r/w讀/寫(h/l)13d6數(shù)據(jù)6e使能信號14d7數(shù)據(jù)7d0數(shù)據(jù)15bg vcc背光源正極8d1數(shù)據(jù)16bg gnd背光源負(fù)極2.3.2 1602lcd操作時序介紹因為本設(shè)計中只需要將數(shù)據(jù)寫到1602lcd中不需要讀數(shù)據(jù)這里只介紹兩個寫時序。寫指令:輸入:rs=l,rw=l,e=高脈沖,db0db7=指令碼;輸出:無 寫數(shù)據(jù):輸入:rs=h,rw=l,e=高脈沖,db0db7=數(shù)據(jù); 輸出:
17、無 (關(guān)于e=高脈沖:開始時初始化e為0,然后置e為1,再將e置為0)2.3.3 1602lcd與單片機(jī)的連接電路 本設(shè)計中用的是單片機(jī)的p0口和p2口與1602lcd進(jìn)行通信具體電路圖如圖2-6所示。圖2-6 1602lcd與單片機(jī)接口電路工作過程:向1602寫入指令時,單片機(jī)先將1602lcd的rs(p2.0)、rw(p2.1)、e(p2.2)等引腳置為低電平,再將指令碼從db0db7(p0)傳給1602lcd,再將e置為高電平后再置為低電平,1602lcd檢測到ce的高脈沖后就將db0db7數(shù)據(jù)口上的指令碼讀取,這樣就完成了一次指令的寫入。向1602寫入數(shù)據(jù)時,先將1602lcd的rs(
18、p2.0)引腳置為高電平,rw(p2.1)、e(p2.2)等置為低電平,再將數(shù)據(jù)從db0db7(p0)傳給1602lcd,再將e置為高電平后再置為低電平,1602lcd檢測到ce的高脈沖后就將db0db7數(shù)據(jù)口上的數(shù)據(jù)讀取,這樣就完成了一次數(shù)據(jù)的寫入。2.4 時鐘計算模塊設(shè)計ds1302是一種低功耗實時時鐘芯片,附加31字節(jié)靜態(tài)ram,采用spi(高速同步串行口)三線接口與cpu 進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號和ram 數(shù)據(jù)。它可以對年、月、日、周、日、時、分、秒進(jìn)行計時,且具有閏年補(bǔ)償?shù)榷喾N功能。工作電壓寬達(dá)2.55.5v。采用雙電源進(jìn)行供電,即使電源掉電后通過3v
19、的紐扣電池仍能維持ds1302精確走時。2.4.1 ds1302引腳介紹ds1302引腳圖如2-7圖所示。 圖2-7 ds1302引腳圖各引腳的功能為:1、5v電源。當(dāng)vcc2vcc1+0.2v時,由vcc2向ds1302供電,當(dāng)vcc2 vcc1時,由vcc1向ds1302供電。2、x1 x2是外接晶振腳 (32.768khz的晶振)4、電源地(gnd)5、ce/rst:復(fù)位腳,輸入信號,在讀、寫數(shù)據(jù)期間,必須為高。該引腳有兩個功能:第一,ce接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,ce提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。6、i/o:數(shù)據(jù)輸入/輸出口。7、 sclk:串行時鐘
20、輸入,控制數(shù)據(jù)的輸入輸出。8、vcc1:備用電池端。2.4.2 ds1302相關(guān)寄存器介紹 ds1302有關(guān)日歷、時間的寄存器有12個,其中7個存放時間數(shù)據(jù)的寄存器(讀時81h8f,寫時80h8eh)如表2-3,數(shù)據(jù)以bcd碼形式存放在寄存器中。 表2-3 ds1302相關(guān)寄存器年星期月日時分秒讀寫8dh8ch8bh8ah89h88h87h86h85h84h83h82h81h80h2.4.3 ds1302與單片機(jī)接口電路本設(shè)計中用的是單片機(jī)的p2口的p2.3、p2.4、p2.5與ds1302進(jìn)行通信具體電路圖如圖2-8:圖2-8 ds1302與單片機(jī)接口電路工作過程:ds1302的2、3號引腳
21、接的是32768hz的晶振,可以為ds1302的提供精確走時。ds1302的數(shù)據(jù)讀寫是通過i/o串行口進(jìn)行的,進(jìn)行一次讀寫操作時可以讀寫兩個字節(jié),讀寫的第一個字節(jié)是控制字節(jié),就是一個命令,告訴ds1302是進(jìn)行讀操作還是進(jìn)行寫操作,以及要操作的地址。第二個字節(jié)就是要進(jìn)行讀或?qū)懙臄?shù)據(jù)了。我們先看單字節(jié)寫:在進(jìn)行操作之前單片機(jī)先得將ce(p2.5)、sclk(p2.4)置低電平,再將ce置高電平,然后單片機(jī)將控制字的位0放到i/o上,將sclk置高電平,ds1302檢測到sclk的上升沿后就會讀取i/o上的數(shù)據(jù),然后單片機(jī)將sclk(p2.3)置為低電平,再將控制字的位1放到i/o上,再將sclk
22、置為高電平,如此反復(fù)操作8次,就將一個字節(jié)的控制字的8個位全部傳給了ds1302。緊接著就是傳一個字節(jié)的數(shù)據(jù)給ds1302,操作和前面一樣,當(dāng)傳完數(shù)據(jù)后,單片機(jī)將ce置為低電平,操作結(jié)束。單字節(jié)讀操作的一開始寫控制字的過程和上面的單字節(jié)寫操作是一樣,但是單字節(jié)讀操作在寫控制字的最后一個位,sclk還處于高電平時,ds1302就將數(shù)據(jù)放到i/o上,單片機(jī)將sclk置為低電平后數(shù)據(jù)鎖存,單機(jī)機(jī)就可以讀取i/o上的數(shù)據(jù)。如此反復(fù)操作8次,將一個字節(jié)的數(shù)據(jù)讀入單片機(jī)。讀與寫操作的不同的地方就在于,進(jìn)行寫操作時是在sclk低電平時單片機(jī)將數(shù)據(jù)放到io上,當(dāng)sclk上升沿時,ds1302讀取。而進(jìn)行讀操作
23、時是在sclk高電平時ds1302放數(shù)據(jù)到io上,將sclk置為低電平后(即下降沿),單片機(jī)就可從io上讀取數(shù)據(jù)。2.5 鬧鐘模塊本設(shè)計中鬧鐘模塊由蜂鳴器來發(fā)出聲音來實現(xiàn),蜂鳴器與單片機(jī)的接口電路如2-9圖:圖2-9 蜂鳴器與單片機(jī)的接口電路工作原理:因為單片機(jī)個io口默認(rèn)輸出為高電平,系統(tǒng)加電后pnp不導(dǎo)通,所以蜂鳴器不發(fā)出聲音,當(dāng)程序滿足鬧鐘條件時單片機(jī)將p2.7口置為電平,此時pnp導(dǎo)通,蜂鳴器發(fā)出響聲,從而實現(xiàn)鬧鐘功能。2.6 按鍵設(shè)置模塊 按鍵設(shè)置模塊采用四個按鍵與p1.4、p1.5、p1.6、p1.7相接,另一端接地,接口電路如圖2-10所示。 圖2-10 按鍵電路 其中k1鍵為進(jìn)
24、入設(shè)置位選擇鍵,k2鍵為增加鍵,k3鍵為減小鍵,k4鍵為退出設(shè)置鍵當(dāng)有鍵按下后,對應(yīng)的單片機(jī)的引腳就變成低電平,單片機(jī)根據(jù)對應(yīng)程序執(zhí)行相應(yīng)的命令。3 系統(tǒng)軟件設(shè)計軟件是系統(tǒng)的靈魂,在軟件的支配下硬件電路才能正常工作,整個系統(tǒng)才能實現(xiàn)既定的功能。軟件的設(shè)計又是建立在硬件的基礎(chǔ)上的,通過編寫程序,使得cpu能夠按照人們設(shè)想給出脈沖從而在硬件電路上實現(xiàn)其功能。由于stc89c52不具有spi三線接口,所以必須通過程序來模擬spi通信,對ds1302進(jìn)行讀、寫操作。本設(shè)計采用c語言編程。c語言簡潔緊湊、靈活方便,運(yùn)算符豐富,語言限制寬松,程序設(shè)計自由度大,且程序生成的代碼質(zhì)量高,程序執(zhí)行效率高,所以本
25、設(shè)計的軟件選擇用c51編寫。本軟件設(shè)計中,依據(jù)系統(tǒng)的功能要求,將整體軟件系統(tǒng)分割成若干個獨(dú)立的程序模塊,包括:主程序,顯示歡迎界面程序,lcd顯示程序,lcd、ds1302初始話程序,讀/寫ds1302程序,設(shè)置程序,鬧鐘程序等等。3.1 主程序流程圖 系統(tǒng)的主程序流程圖如上圖,開機(jī)后程序進(jìn)行初始化設(shè)置,初始化設(shè)置包括設(shè)置單機(jī)的定時中斷、定時器工作方式,以及ds1302和1602lcd的初始化設(shè)置。系統(tǒng)初始化以后,lcd顯示開機(jī)歡迎詞,然后單片機(jī)機(jī)從ds1302讀取實時時間并傳送給1602lcd顯示。當(dāng)set鍵(k1)按下后程序進(jìn)入設(shè)置程序,當(dāng)?shù)搅唆[鐘時間并且開了鬧鐘則進(jìn)入鬧鐘程序。開始系統(tǒng)初
26、始化顯示歡迎界面從ds1302讀取時間液晶顯示相關(guān)信息數(shù)據(jù)寫入ds1302 set是否 按下設(shè)置程序 y n 判斷是否滿足鬧鐘條件鬧鐘程序n y 圖3-1 主程序流程圖 3.2 讀寫ds1302程序 本設(shè)計中stc89c52單片機(jī)通過p2.3(接串行時鐘scl)和p2.4(接串行io)p2.5(接ce)來模擬spi三線接口,實現(xiàn)與ds1302進(jìn)行數(shù)據(jù)交換。具體工作過程如下: 將數(shù)據(jù)寫入ds1302:在進(jìn)行操作之前單片機(jī)先得將ce、sclk置低電平,再將ce置高電平,然后單片機(jī)將控制字的位0放到i/o上,將sclk置高電平,ds1302檢測到sclk的上升沿后就會讀取i/o上的數(shù)據(jù),然后單片機(jī)將
27、sclk置為低電平,再將控制字的位1放到i/o上,再將sclk置為高電平,如此反復(fù)操作8次,就將一個字節(jié)的控制字的8個位全部傳給了ds1302。緊接著就是傳一個字節(jié)的數(shù)據(jù)給ds1302,操作和前面一樣,當(dāng)傳完數(shù)據(jù)后,單片機(jī)將ce置為低電平,操作結(jié)束,這樣就完成一次控制字+數(shù)據(jù)的寫入。 從ds1302讀數(shù)據(jù):單字節(jié)讀操作的一開始寫控制字的過程和上面的單字節(jié)寫操作是一樣,但是單字節(jié)讀操作在寫控制字的最后一個位,sclk還處于高電平時,ds1302就將數(shù)據(jù)放到i/o上,單片機(jī)將sclk置為低電平后數(shù)據(jù)鎖存,單機(jī)機(jī)就可以讀取i/o上的數(shù)據(jù)。如此反復(fù)操作8次,將一個字節(jié)的數(shù)據(jù)讀入單片機(jī)。讀與寫操作的不同
28、的地方就在于,進(jìn)行寫操作時是在sclk低電平時單片機(jī)將數(shù)據(jù)放到io上,當(dāng)sclk上升沿時,ds1302讀取。而進(jìn)行讀操作時是在sclk高電平時ds1302放數(shù)據(jù)到io上,將sclk置為低電平后(即下降沿),單片機(jī)就可從io上讀取數(shù)據(jù)。這樣就完成一次控制字寫入和數(shù)據(jù)的讀取。3.3 lcd1602顯示程序 本設(shè)計中單片機(jī)通過p0口(接db0db7)、p2.0(接rs)、p2.1(接rw)、p2.2(接e)來與1602lcd進(jìn)行通信。流程圖如下向1602寫入指令向1602寫入數(shù)據(jù)1602lcd顯示 圖3-2 lcd顯示流程圖向1602寫入指令時,單片機(jī)先將1602lcd的rs(p2.0)、rw(p2
29、.1)、e(p2.2)等引腳置為低電平,再將指令碼從db0db7(p0)傳給1602lcd,再將e置為高電平后再置為低電平,1602lcd檢測到ce的高脈沖后就將db0db7數(shù)據(jù)口上的指令碼讀取,這樣就完成了一次指令的寫入。 向1602寫入數(shù)據(jù)時,先將1602lcd的rs(p2.0)引腳置為高電平,rw(p2.1)、e(p2.2)等置為低電平,再將數(shù)據(jù)從db0db7(p0)傳給1602lcd,再將e置為高電平后再置為低電平,1602lcd檢測到ce的高脈沖后就將db0db7數(shù)據(jù)口上的數(shù)據(jù)讀取,這樣就完成了一次數(shù)據(jù)的寫入。3.4 鬧鐘程序 本程序比較簡單,先判斷實時時間的小時和分鐘是否與設(shè)定的鬧
30、鐘的小時分鐘相等且實時時間的秒鐘為0,再判斷鬧鐘是否處于開狀態(tài),若為關(guān)狀態(tài)則不執(zhí)行命令,若為開狀態(tài)則調(diào)用鬧鐘程序單片機(jī)將p2.7置為低電平,pnp導(dǎo)通蜂鳴器發(fā)出響聲,并在1602lcd上顯示“time up!”。當(dāng)按下退出鍵k4(即p1.7為低電平)時,退出鬧鐘程序,單片機(jī)將p1.7置為高電平,pnp不導(dǎo)通,蜂鳴器不發(fā)出聲音。詳細(xì)程序如下: if(hours=houra)&(minutes=minutea)&(seconds=0) if(alarmmode!=0)write_com(0x01);delay1ms(5);write_address(0x03);write_date(t);writ
31、e_date(i);write_date(m);write_date(e);write_address(0x08);write_date(u);write_date(p);write_date(!);delay1ms(400); baojing(); write_com(0x01);delay1ms(5);displaymainpart();display_time( ); hours為實時小時時間,minutes為實時分鐘時間,houra為鬧鐘小時時間,minutea為鬧鐘分鐘時間,alarmmode為鬧鐘開關(guān)狀態(tài)變量,為0時鬧鐘關(guān)閉,為1時鬧鐘開啟。3.5 時時鐘調(diào)整程序 程序流程圖如下圖
32、3-2所示。秒清0設(shè)置鍵(k1)有效進(jìn)入年設(shè)置減鍵有效加鍵有效年減1年加1等待按鍵按下減鍵有效加鍵有效等待按鍵按下設(shè)置鍵(k1)有效進(jìn)入秒設(shè)置開始等待按鍵按下設(shè)置鍵(k1)有效進(jìn)入時設(shè)置減鍵有效加鍵有效時減1時加1等待按鍵按下設(shè)置鍵(k1)有效進(jìn)入分設(shè)置減鍵有效加鍵有效分減1分加1等待按鍵按下設(shè)置鍵(k1)有效進(jìn)入月設(shè)置減鍵有效加鍵有效月減1月加1等待按鍵按下設(shè)置鍵(k1)有效進(jìn)入日設(shè)置減鍵有效加鍵有效日減1日加1等待按鍵按下設(shè)置鍵有效進(jìn)入鬧鐘時設(shè)置減鍵有效加鍵有效時減1時加1等待按鍵按下設(shè)置鍵有效進(jìn)入鬧鐘分年設(shè)置減鍵有效加鍵有效分減1分加1等待按鍵按下設(shè)置鍵有效進(jìn)入鬧鐘開關(guān)設(shè)置減鍵有效加鍵有
33、效鬧鐘開關(guān)狀態(tài)取反等待按鍵按下設(shè)置鍵(k1)有效進(jìn)入星期設(shè)置減鍵有效加鍵有效星期減1星期加1退出設(shè)置退出鍵(k4)有效圖3-2 時鐘調(diào)整程序流程圖 設(shè)置程序工作過程:設(shè)置位選擇鍵k1、增加鍵k2、減小鍵k3、退出鍵k4分別與單片機(jī)p1.4、p1.5、p1.6、p1.7相接,另一端接地。本程序主要由一個switch語句實現(xiàn),每次當(dāng)設(shè)置鍵(k1)按下時即p1.4口為低電平時變量mode加1,mode=1時調(diào)用小時調(diào)整函數(shù)可以對小時進(jìn)行調(diào)整,mode=2時調(diào)用分鐘調(diào)整函數(shù)可以對分鐘進(jìn)行調(diào)整,mode=3時調(diào)用秒調(diào)整函數(shù)可以對秒進(jìn)行調(diào)整,mode=4時調(diào)用年調(diào)整函數(shù)可以對年進(jìn)行調(diào)整,mode=5時調(diào)用
34、月調(diào)整函數(shù)可以對月進(jìn)行調(diào)整,mode=6時調(diào)用日調(diào)整函數(shù)可以對日進(jìn)行調(diào)整,mode=7時調(diào)用鬧鐘小時調(diào)整函數(shù)可以對鬧鐘小時進(jìn)行調(diào)整,mode=8時調(diào)用鬧鐘分鐘調(diào)整函數(shù)可以對鬧鐘分鐘進(jìn)行調(diào)整,mode=9時調(diào)用鬧鐘開關(guān)調(diào)整函數(shù)可以對鬧鐘開關(guān)進(jìn)行設(shè)置,mode=10時調(diào)用星期調(diào)整函數(shù)可以對星期進(jìn)行調(diào)整,當(dāng)mode=11時將mode重新置為1。當(dāng)有k4鍵按下是程序退出設(shè)置。畢業(yè)設(shè)計總結(jié)在做畢業(yè)設(shè)計之前我做了比較多的準(zhǔn)備,看了很多的資料和網(wǎng)絡(luò)教程,深入學(xué)習(xí)了單片機(jī),1602lcd液晶顯示器,ds1302時鐘芯片元件的應(yīng)用。學(xué)會了用altium designer畫原理圖,畫pcb板,用c51編寫單片機(jī)程
35、序。通過這次制作畢業(yè)設(shè)計,我發(fā)現(xiàn)在現(xiàn)實設(shè)計中還需要注意很多的細(xì)節(jié),包括程序設(shè)計和硬件設(shè)計都要我們小心仔細(xì)。在硬件設(shè)計時,焊實物之前要先對各個元件的位置布局有個充分了解,不然焊的時候會造成很多地方要飛線,影響美觀,焊的時候不要過長以免損壞元件。在寫程序時,要不斷的調(diào)試程序,根據(jù)實物情況檢查程序的問題所在有事半功倍的效果。從最基本的方案制定,到硬件電路的選擇,再到電路版的焊接,最后進(jìn)行軟件的調(diào)試。在此期間遇到過很多的困難,但經(jīng)過自己的不屑努力,以及老師和同學(xué)的幫助,終于擊破各個難點,達(dá)到的所需的效果也因為這次設(shè)計,我也在這次實訓(xùn)中學(xué)會了很多東西,總結(jié)出自已的一套解決問題的方法,這讓我覺得自已有了很
36、大的收獲,為今后的學(xué)習(xí)和工作打下了堅定的基礎(chǔ)。 參考文獻(xiàn)1 張毅剛,彭喜元,彭宇編著. 單片機(jī)原理及應(yīng)用m. 北京:高等教育出版社 2 史久貴編著. 基于altium designer的原理圖與pcb設(shè)計m. 北京:機(jī)械工業(yè)出版社3 郭天祥.51單片機(jī)c語言教程m. 北京:電子工業(yè)出版社 2009 4 譚浩強(qiáng).c程序設(shè)計(第二版)m. 北京:清華大學(xué)出版社 1999 5 五校半導(dǎo)體科學(xué)研究躍進(jìn)戰(zhàn)斗團(tuán)編著. 光敏電阻的制造及其應(yīng)用m. 北京:民郵電出版社 19596王慶澤,趙翠敏.關(guān)于產(chǎn)蛋雞補(bǔ)光和補(bǔ)鈣j. 河北唐山:四川畜牧獸醫(yī), sichuan animal and veterinary sc
37、iences, 編輯部郵箱 2004年 12期 .7 h m peitel,p l deitel.c how to program,second edition.蔣才鵬等譯. c程序設(shè)計教程。北京:機(jī)械工業(yè)出版社,20008 stephen g kochan 著.programming in ansi c. hagden kooks indianapolis:indiana u.s.a,199498-bit microcontroller with 8k bytes flash at89c52. atmel,1999附錄i:系統(tǒng)硬件電路附錄:源程序代碼#include#include#defi
38、ne uint unsigned int#define uchar unsigned charuchar code displaywelcome=happy every day;/歡迎界面uchar code digit=0123456789; /數(shù)字代碼uchar mode,amode,alarmmode=1,minutes,hours,minutea,seconds,houra=12; week;sbit sclk=p23;/ds1302時鐘輸入sbit io=p24;/ds1302數(shù)據(jù)輸入sbit rst=p25;/ds1302復(fù)位端口sbit set=p14;/ds1302設(shè)置模式選擇
39、位sbit add=p15;/增加sbit red=p16;/減小sbit canl=p17;void delay1ms(uint i)/1毫秒延時 uint j; for( ;i0;i-) for(j=0;j333;j+) ; void delaynus(uchar n) /延時若干微秒 uchar i; for(i=0;in;i+);/*蜂鳴器模塊*/ sbit beep=p27;/位定義,定義p.6位fmpvoid baojing(void) while(1) beep=0; if(canl=0) beep=1; break; /*ds1302模塊*/ void write1302(uc
40、har date)/向1302寫數(shù)據(jù) uchar i;sclk=0;delaynus(2);for(i=0;i=1; void writeset1302(uchar cmd,uchar date) /根據(jù)相應(yīng)的命令輸入相應(yīng)的數(shù)據(jù) rst=0;sclk=0;rst=1;write1302(cmd);delaynus(5);write1302(date);sclk=1;rst=0; uchar read1302(void)/讀取1302數(shù)據(jù) uchar i,date;delaynus(2);for(i=0;i=1;if(io=1)date|=0x80;sclk=1;delaynus(2);sclk=0;delaynus(2);return date; uchar readset1302(uchar cmd)/根據(jù)命令讀取1302相應(yīng)的值uchar date;rst=0;sclk=0;rst=1;write1302(cmd);delaynus(2);date=read1302();sclk=1;rst=0;return date;void intds1302(void) /ds1302初始化 uchar flag; flag= readset1302(0x81);if(flag&0x80) /判斷時鐘芯片是否關(guān)閉 writeset1302(0x
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國不干膠標(biāo)簽行業(yè)市場前景展望及投資規(guī)模研究報告
- 2025年中國無菌耳穴撳針市場調(diào)查研究報告
- 2025屆四川省成都市蓉城名校聯(lián)考高三上學(xué)期開學(xué)考-數(shù)學(xué)試題(含答案)
- 5.客流變化規(guī)律項目一運(yùn)營計劃學(xué)習(xí)車站行車計劃77課件
- 2025年中國數(shù)顯式電子萬能試驗機(jī)市場調(diào)查研究報告
- 2025-2030年中國互聯(lián)網(wǎng)彩票業(yè)投資模式分析與發(fā)展戰(zhàn)略規(guī)劃預(yù)測研究報告
- 肇慶市實驗中學(xué)高中歷史一:第課專制集權(quán)的不斷加強(qiáng)教案
- 2025-2030年中國ORC發(fā)電行業(yè)發(fā)展趨勢展望與投資策略研究報告
- 新疆鐵道職業(yè)技術(shù)學(xué)院《藝術(shù)教育美術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年中國組合式大氣反吹扁袋除塵器市場調(diào)查研究報告
- 一流課程建設(shè)背景下物理化學(xué)實驗教學(xué)改革與探索
- 2025年農(nóng)村商業(yè)銀行往年招聘筆試試題
- 輸變電工程監(jiān)督檢查標(biāo)準(zhǔn)化清單-質(zhì)監(jiān)站檢查
- 節(jié)能環(huán)保產(chǎn)品推廣銷售協(xié)議
- 電子商務(wù)稅收政策研究報告
- 救護(hù)車租賃合同模板
- 教師師德師風(fēng)考核結(jié)果通報制度
- 傳染病防治中的醫(yī)學(xué)倫理
- 餐飲業(yè)供應(yīng)鏈管理與采購策略
- 防爆電氣工程施工方案
- 2023年高考真題-生物(遼寧卷) 含答案
評論
0/150
提交評論