版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 學(xué)士學(xué)位畢業(yè)論文(設(shè)計)</p><p> 題 目:基于單片機的12864時鐘顯示</p><p><b> 摘要</b></p><p> 電子時鐘是一種非常廣泛日常計時工具,給人們的帶來了很大的方便,在社會上越來越流行。它可以對年、月、日、星期、時、分、秒進行計時,采用直觀的數(shù)字顯示,可以同時顯示年月日時分秒等信
2、息,還有時間校準(zhǔn)等功能。該電子時鐘主要采用STC89C52單片機作為主控核心,用DS1302時鐘芯片作為時鐘、液晶12864顯示屏顯示。STC89C52單片機是由深圳宏晶科技公司推出的,功耗小,電壓可選用4~6V電壓供電;DS1302時鐘芯片是美國DALLAS公司推出的具有細電流充電功能的低功耗實時時鐘芯片,它可以對年、月、日、星期、時、分、秒進行計時,還具有閏年補償?shù)榷喾N功能,而且DS1302的使用壽命長,誤差?。粩?shù)字顯示是采用的12
3、864液晶顯示屏來顯示,可以同時顯示年、月、日、星期、時、分、秒等信息。此外,該電子時鐘還具有時間校準(zhǔn)等功能。</p><p> 關(guān)鍵詞:STC89C51單片機,DS1302時鐘芯片,液晶12864</p><p><b> Abstract</b></p><p> Electronic clock is a very extensiv
4、e daily timing tool, to the people has brought great convenience, more and more popular in the community. It can be the year, month, date, day, hour, minute, second for a time, using intuitive digital display, can displa
5、y information such as year, month, day, hour, and time alignment functions. The electronic clock is used mainly as a master STC89C52 microcontroller core, with theDS1302 clock chip as a clock, LCD display12864. STC89C52
6、SCM is a Shenzhen Hong Cr</p><p> Key Words: STC89C51 microcontroller, DS1302 clock chip, LCD 12864</p><p><b> 1緒論</b></p><p><b> 1.1時鐘發(fā)展史</b></p>
7、<p> 很早以前,人類主要是利用天文現(xiàn)象和流動物質(zhì)的連續(xù)運動來計時。例如,日晷是利用日影的方位計時,陰雨天和夜里沒法使用且測量誤差較大;漏壺和沙漏是利用水流和沙流的流量計時,雖然晚上可以使用,但是水容易結(jié)冰,誤差還是大。后來人們發(fā)明了機械鐘,以機械振動系統(tǒng)為時間基準(zhǔn),實現(xiàn)對時間的計量,誤差達到一天一分鐘左右。而如今的數(shù)字鐘用數(shù)字電路實現(xiàn)時、分、秒,精度較高,一天的誤差不到一秒。目前精度最高的時鐘要屬原子鐘,其每天的誤差小于
8、一億分之一秒。</p><p> 隨著人們生活水平的提高和生活節(jié)奏的加快,對時間的要求越來越高,精準(zhǔn)數(shù)字計時的消費需求也是越來越多。 </p><p> 二十一世紀(jì)的今天,最具代表性的計時產(chǎn)品就是電子萬年歷,它是近代世界鐘表業(yè)界的第三次革命。第一次是擺和擺輪游絲的發(fā)明,相對穩(wěn)定的機械振蕩頻率源使鐘表的走時差從分級縮小到秒級,代表性的產(chǎn)品就是帶有擺或擺輪游絲的機械鐘或表。第二次
9、革命是石英晶體振蕩器的應(yīng)用,發(fā)明了走時精度更高的石英電子鐘表,使鐘表的走時和月差從分級縮小到秒級。第三次革命就是單片機數(shù)碼計時技術(shù)的應(yīng)用(電子萬年歷),使計時產(chǎn)品的走時日差從分級縮小到1/600萬秒,從原有傳統(tǒng)指針計時的方式發(fā)展為人們?nèi)粘8鼮槭煜さ囊构鈹?shù)字顯示方式,直觀明了,并增加了全自動日期、星期、溫度以及其他日常附屬信息的顯示功能,它更符合消費者的生活需求!因此,電子萬年歷的出現(xiàn)帶來了鐘表計時業(yè)界跨躍性的進步。</p>
10、<p> 1.2 目前的研究現(xiàn)狀 </p><p> 我國生產(chǎn)的電子萬年歷有很多種,總體上來說以研究多功能電子萬年歷為主,使萬年歷除了原有的顯示時間,日期等基本功能外,還具有鬧鈴,報警等功能。商家生產(chǎn)的電子萬年歷更從質(zhì)量,價格,實用上考慮,不斷的改進電子萬年歷的設(shè)計,使其更加的具有市場。在國內(nèi),電子鐘因LCD數(shù)字顯示效用直接有效,所以大多運用在城市的主要營業(yè)場所,以及車站、碼頭等公共場所
11、。在對公共場所的電子鐘設(shè)定的時候,使用者還可根據(jù)周邊的氣候、溫度等對LCD屏進行設(shè)置。同時,因為LCD的顯示耗電量很省,所以能夠保持持續(xù)的工作效果。</p><p> 1.3研究目的及意義</p><p> 電子鐘亦稱數(shù)字顯示鐘,是一種用數(shù)字電路技術(shù)實現(xiàn)時、分、秒計時的裝置,與機械時鐘相比,直觀性為其主要顯著特點,且因非機械驅(qū)動,具有更長的使用壽命,相較石英鐘的石英機芯驅(qū)動,更具準(zhǔn)確性
12、。電子鐘已成為人們?nèi)粘I钪斜夭豢缮俚谋匦杵罚瑥V泛用于個人家庭以及車站、碼頭、劇院、辦公室等公共場所,給人們的生活、學(xué)習(xí)、工作、娛樂帶來極大地方便。相對于其他時鐘類型,它的特點可歸結(jié)為“兩強一弱 ”:比機械鐘強在觀時顯著,比石英鐘強在走時準(zhǔn)確,但是它的弱點為顯示較為單調(diào)。鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便,而且大大地擴展了鐘表原先的報時功能。諸如定時自動報警、按時自動打鈴、時間程序自動控制、定時廣播、自動起閉路燈、定時開關(guān)烘箱、
13、通斷動力設(shè)備甚至各種定時電氣的自動啟用等,所有這些,都是以鐘表數(shù)字化為基礎(chǔ)的。因此,研究數(shù)字鐘及擴大其應(yīng)用,有著非常現(xiàn)實的意義。</p><p> 除了采用集成化的時鐘芯片外,還有采用MCU的方案,利用STC89系列單片微機制成萬年歷電路,采用軟件和硬件結(jié)合的方法,控制輸出,分別用來顯示年、月、日、時、分、秒,其最大特點是:硬件電路簡單,安裝方便易于實現(xiàn),軟件設(shè)計獨特,可靠。STC89C51是由深圳宏晶科技公司
14、推出的一種小型單片機。其主要特點為采用Flash存貯器技術(shù),降低了制造成本,其軟件、硬件與MCS-51完全兼容,可以很快被廣大用戶接受。 本文介紹了基于STC89C51單片機設(shè)計的電子時鐘。可以同時顯示年、月、日、星期、時、分、秒等信息,還具有時間紅外校準(zhǔn)等功能。</p><p><b> 2 總體方案設(shè)計</b></p><p><b> 2
15、.1 方案的選擇</b></p><p><b> 2.1.1設(shè)計要求</b></p><p> A.具有年、月、日、周、時、分、秒的顯示功能;</p><p> B.具有年、月、日、周、時、分、秒的校準(zhǔn)功能;</p><p> C.具有圖片顯示功能;</p><p> D.
16、具有紅外遙控功能。</p><p> 2.1.2方案的選擇</p><p> 本課題是基于單片機控制的電子時鐘設(shè)計,MCS-51系列的單片機集成了8位CPU、4K字節(jié)ROM、128字節(jié)RAM、2個16位定時器/計數(shù)器和4個8位I/O口等基本功能部件,基本能滿足本課題的研究,所以主控芯片選擇STC89C51單片機。時鐘的顯示功能用128*64LCD來實現(xiàn),其顯示分辨率為128×
17、64,內(nèi)置8192個16*16點漢字,和128 個16*8 點ASCII 字符集.利用該模塊靈活的接口方式和簡單、方便的操作指令,可構(gòu)成全中文人機交互圖形界面。可以顯示8×4 行16×16 點 陣的漢字,也可完成圖形顯示。低電壓低功耗是其又一顯著特點。由該模塊構(gòu)成的液晶顯示方案與同類型的圖形點陣液晶顯示模塊相比,不論硬件電路結(jié)構(gòu)或顯示程序都要簡潔得多,且該模塊的價格也略低于相同點陣的圖形液晶模塊。為了更精確的顯示時間
18、,需要一時鐘芯片來進行計時。DS1302是由美國DALLAS公司推出的具有涓細電流充電能力的低功耗實時時鐘芯片。它可以對年、月、日、周、時、分、秒進行計時,且具有閏年補償?shù)榷喾N功能。對于紅外遙控功能,主要用來調(diào)整時間和切換顯示頁面。本課題中選用通用紅外遙控器和紅外接收頭。</p><p> 2.2總體方案組成框圖</p><p> 根據(jù)以上硬件的選擇,系統(tǒng)的硬件框圖2.1所示。<
19、/p><p> 圖2.1 系統(tǒng)硬件框圖</p><p><b> 3系統(tǒng)硬件設(shè)計</b></p><p><b> 3. 1主芯片模塊</b></p><p> STC89C51單片的引腳功能圖如圖3.1所示,邏輯符號如圖3.2所示,它有40個引腳。</p><p>
20、圖3.1 STC89C51引腳圖 圖3.2 STC89C51邏輯圖</p><p><b> 電源引腳</b></p><p> VCC(40):電源正端,外接+5V。</p><p> VSS(20):接地。</p><p><b> 時鐘電路引腳</b>
21、;</p><p> XTAL1(18)、XTAL2(19):XTAL1為片內(nèi)振蕩電路的輸入端,XTAL2為片內(nèi)振蕩電路的輸出端。8051的時鐘有兩種方式,一種是片內(nèi)振蕩方式,需在這兩個腳外接石英晶體和振蕩電容,振蕩電容一般取10p~30p;另一種是外部時鐘方式,即將XTAL 1接地,外部時鐘信號從XTAL 2腳輸入。</p><p><b> 控制引腳</b>&
22、lt;/p><p> ALE/PROG(30):地址鎖存控制信號/編程脈沖輸入端。</p><p> PSEN(29):外部程序存儲器的選通信號。</p><p> EA/VPP(31):外部程序存儲器地址允許輸入端/編程電壓輸入端。</p><p> RESET/VPT(9):復(fù)位/備用電源輸入引腳。在該引腳上輸入24個時鐘周期以上的高
23、電平,系統(tǒng)即復(fù)位。</p><p><b> 輸入/輸出引腳</b></p><p> P0.0~P0.7(39~32):8位雙向并行I/O口,P0口可作為通用雙向I/O口。在外接數(shù)據(jù)、程序存儲器時,可作為低8位地址/數(shù)據(jù)總線復(fù)用引腳。</p><p> P1.0~P1.7(1~8):8位雙向并行I/O口。</p><
24、p> P2.0~P2.7(21~28):8位雙向并行I/O口。P0口可作為通用雙向I/O口。在外接數(shù)據(jù)、程序存儲器時,可作為高8位地址輸出引腳。</p><p> P3.0~P3.7(10~17):8位雙向并行I/O口。P3口除了作為通用I/O口使用外,每一個引腳都可以復(fù)用。</p><p> 3.1.1 中斷系統(tǒng)</p><p> 8051單片機允許
25、5個中斷源:</p><p> ?。?)外部中斷源(2個)</p><p> 由INT0(P3.2)引腳和INT1(P3.3)引腳引入。這兩個中斷源的請求方式有兩種:低電平觸發(fā)或下降沿觸發(fā)。</p><p> ?。?)內(nèi)部中斷源(2個)</p><p> T0:定時/計數(shù)器0中斷,由T0溢出引起。</p><p>
26、 T1:定時/計數(shù)器1中斷,由T1溢出引起。</p><p> ?。?)TI/RI(1個)</p><p> 串行I/O口中斷,由一幀字符發(fā)送/接收完后引起。</p><p> 3.1.2常用寄存器</p><p> (1)定時器方式控制寄存器TMOD</p><p> 工作方式選擇位M1、M0定義如下:&l
27、t;/p><p> GATE=0:軟件啟動定時器,使TRx置“1”即可啟動定時器;</p><p> =1:軟件和硬件共同啟動定時器,除了要使TRx置“1”外,外部中斷請求信號輸入端INTx還必須輸入高電平才能啟動定時器。</p><p> C/T=0:定時器方式工作;</p><p> =1:計數(shù)器方式工作。</p>&l
28、t;p> (2)定時控制寄存器TCON</p><p> TF0/TF1:定時器溢出中斷申請標(biāo)志位(由硬件自動置位)。</p><p> TF0/TF1=0:定時器未溢出;</p><p> =1:定時器溢出時硬件自動置位,申請中斷。</p><p> TR0/TR1:定時器啟動/停止控制位。</p><p
29、> TR0/TR1=0:定時器停止;</p><p><b> =1:定時器啟動。</b></p><p> IE0/IE1:外部中斷申請標(biāo)志位(由硬件自動置位,中斷響應(yīng)后轉(zhuǎn)向中斷服務(wù)程序時,由由硬件自動清零)</p><p> IE0/IE1=0:沒有外部中斷申請;</p><p> =1:有外部中斷申
30、請。</p><p> IT0/IT1:外部中斷請求的觸發(fā)方式控制位。</p><p> IT0/IT1=0:在INT0/INT1端申請中斷的信號低電平有效;</p><p> =1:在INT0/INT1端申請中斷的信號下降沿有效。</p><p> ?。?)中斷允許寄存器IE。</p><p> ES——串行
31、口中斷允許位。=0:禁止中斷;=1允許中斷。</p><p> ET1——定時/計數(shù)器T1的溢出中斷允許位。=0:禁止中斷;=1允許中斷</p><p> EX1——外部中斷1中斷允許位。=0:禁止中斷;=1允許中斷</p><p> ET0——定時/計數(shù)器T0的溢出中斷允許位。=0:禁止中斷;=1允許中斷</p><p> EX0—
32、—外部中斷0中斷允許位。=0:禁止中斷;=1允許中斷</p><p> EA——總的中斷允許控制位(總開關(guān))。=0:禁止所有中斷;=1:允許中斷。</p><p> 3.2晶振和復(fù)位電路</p><p><b> 3.2.1晶振電路</b></p><p> 如圖3.3所示,STC89C51單片機的內(nèi)部有一個用于
33、構(gòu)成振蕩器的高增益反相放大器,它的輸入端為XTAL1引腳,輸出端為XTAL2引腳,兩個跨接石英晶體及兩個電容就可以構(gòu)成穩(wěn)定的自激振蕩器。電容器通常取30pF左右。</p><p> 圖3.3 晶振電路 圖3.4 復(fù)位電路</p><p><b> 3.2.2復(fù)位電路</b></p><p> 往單片機的復(fù)位引腳上輸入24個時鐘周期以
34、上的高電平,即執(zhí)行復(fù)位操作。按鍵復(fù)位是指系統(tǒng)在運行時,按下一個開關(guān),就能在RST引腳產(chǎn)生一段時間的高電平,使系統(tǒng)復(fù)位,常見的按鍵復(fù)位電路如圖3.4所示。對12MHz晶振頻率而言,電路中C取10pF,R取1KΩ。</p><p> 3.3 DS1302時鐘芯片電路</p><p> 3.3.1 DS1302引腳圖</p><p> 如圖3.5為DS1302的
35、引腳圖,圖3.6為邏輯圖。</p><p> 圖3.5 DS1302引腳圖 圖3.6 DS1302邏輯圖</p><p><b> 各引腳的功能為: </b></p><p><b> Vcc1:主電源;</b></p><p> Vcc2:備用電源。當(dāng)Vcc2>Vc
36、c1+0.2V時,由Vcc2向DS1302供電,當(dāng)Vcc2< Vcc1時,由Vcc1向DS1302供電。 </p><p> SCLK:串行時鐘,輸入,控制數(shù)據(jù)的輸入與輸出; </p><p> I/O:雙向數(shù)據(jù)線;
37、 </p><p> X1、X2:晶振引腳;</p><p> CE:輸入信號,在讀、寫數(shù)據(jù)期間,必須為高。該引腳有兩個功能:第一,CE開始控制字訪問移位寄存器的控制邏輯;其次,CE提供結(jié)束單字節(jié)或多字節(jié)數(shù)據(jù)傳輸?shù)姆椒ā?lt;/p><p> 3.3.2 DS1302寄存器</p><p> DS1302有關(guān)日歷、時間的寄存器
38、共有12個,其中有7個寄存器(讀時81H~8DH,寫時80H~8CH),存放的數(shù)據(jù)格式為BCD碼形式,如圖3.7所示。</p><p> 圖3.7 DS1302日歷、時間寄存器</p><p> 小時寄存器(85h、84h)的位7用于定義DS1302是運行于12小時模式還是24小時模式。當(dāng)為高時,選擇12小時模式。在12小時模式時,位5是 ,當(dāng)為1時,表示PM。在24小時模
39、式時,位5是第二個10小時位。 </p><p> 秒寄存器(81h、80h)的位7定義為時鐘暫停標(biāo)志(CH)。當(dāng)該位置為1時,時鐘振蕩器停止,DS1302處于低功耗狀態(tài);當(dāng)該位置為0時,時鐘開始運行。 </p><p> 控制寄存器(8Fh、8Eh)的位7是寫保護位(WP),其它7位均置為0。在任何的對時鐘和RAM的寫操作之前,WP位必須為0。當(dāng)WP位為1時,寫保
40、護位防止對任一寄存器的寫操作。</p><p> 3.3.3 DS1302外圍電路</p><p> 圖3.8 DS1302外圍電路</p><p> DS1302只有3個引腳與單片機相連,分別是RST(5)、SCLK(7)和I/O(6),其2、3引腳接32768Hz晶振,如圖3.8。</p><p> 3.4 LCD12864顯
41、示模塊</p><p> 3.4.1 LCD12864引腳功能</p><p> 表3.1 LCD12864引腳說明 圖3.9 12864引腳圖</p><p> 圖3.9所示為帶中文字庫LCD12864引腳圖,表3.1為引腳說明。該液晶顯示模塊由128*64點陣組成,可顯示漢字及圖形,內(nèi)置8192個中文漢字(16*16點陣)、128個字符
42、(8*16)點陣,8位并行及串行連接方式。</p><p><b> 控制引腳說明</b></p><p> RS、R/W四種模式</p><p><b> E信號</b></p><p> 說明:BF標(biāo)志提供內(nèi)部工作情況BF=1表示模塊在進行內(nèi)部操作,此時模塊不接受外部指令和數(shù)據(jù).BF=0
43、時,模塊為準(zhǔn)備狀態(tài),隨時可接受外部指令和數(shù)據(jù)。</p><p> 3.4.2 LCD12864指令說明</p><p> ?。?)顯示開/關(guān)設(shè)置</p><p> 功能:設(shè)置屏幕顯示開/關(guān)。</p><p> DB0=H,開顯示;DB0=L,關(guān)顯示。</p><p> ?。?)設(shè)置顯示起始行</p>
44、<p> 功能:執(zhí)行該命令后,所設(shè)置的行將顯示在屏幕的第一行。顯示起始行是由Z地址計數(shù)器控制的,該命令自動將A0-A5位地址送入Z地址計數(shù)器,起始地址可以是0-63范圍內(nèi)任意一行。Z地址計數(shù)器具有循環(huán)計數(shù)功能,用于顯示行掃描同步,當(dāng)掃描完一行后自動加一。</p><p><b> (3)設(shè)置列地址</b></p><p> 功能: DDRA
45、M 的列地址存儲在Y地址計數(shù)器中,讀寫數(shù)據(jù)對列地址有影響,在對DDRAM進行讀寫操作后,Y地址自動加一。</p><p><b> (4)狀態(tài)檢測 </b></p><p> 功能:讀忙信號標(biāo)志位(BF)、復(fù)位標(biāo)志位(RST)以及顯示狀態(tài)位 (ON/OFF)。</p><p> BF=H:內(nèi)部正在執(zhí)行操作;B
46、F=L:空閑狀態(tài)。 </p><p> RST=H:正處于復(fù)位初始化狀態(tài);RST=L:正常狀態(tài)。
47、0;</p><p> ON/OFF=H:表示顯示關(guān)閉;ON/OFF=L:表示顯示開。</p><p><b> ?。?)寫顯示數(shù)據(jù) </b></p><p> 功能:寫數(shù)據(jù)到DDRAM,DDRAM是存儲圖形顯示數(shù)據(jù)的,寫指令執(zhí)行后Y地址計數(shù)器自動加1。D7-D0位數(shù)據(jù)為1表示顯示,數(shù)據(jù)為0表示不顯示。</p>&l
48、t;p><b> (6)讀顯示數(shù)據(jù)</b></p><p> 功能:從DDRAM讀數(shù)據(jù),讀指令執(zhí)行后Y地址計數(shù)器自動加1。</p><p> 3.4.3 LCD12864電路接線</p><p> 單片機P2口作為指令/數(shù)據(jù)接口,右DB0-DB7輸入,數(shù)據(jù)命令選擇端RS接單片機P1.2,讀寫控制信號端R/W接單片機P1.1,使能端
49、E接單片機P1.0,串/并行方式選擇端PSB接P1.6,復(fù)位端RST接P1.7,16、18號引腳可以不接,如圖3.10所示。</p><p> 圖3.10 LCD12864電路圖</p><p> 3.5 紅外遙控模塊</p><p> 本課題采用紅外遙控功能對時鐘進行校準(zhǔn),包括年、月、日、周、時、分秒的加減操作,還有切換顯示、復(fù)位的功能。紅外遙控裝置包括紅外
50、發(fā)送(即遙控器)和紅外接收兩部分組成。發(fā)射機一般由指令按鍵、指令編碼系統(tǒng)、調(diào)制電路、驅(qū)動電路、發(fā)射電路等幾部分組成。當(dāng)按下指令鍵時,指令編碼電路產(chǎn)生所需的指令編碼信號,指令編碼信號對載波進行調(diào)制,再由驅(qū)動電路進行功率放大后由發(fā)射電路向外發(fā)射經(jīng)調(diào)制定的指令編碼信號。接收電路一般由接收電路、放大電路、調(diào)制電路、指令譯碼電路、驅(qū)動電路、執(zhí)行電路等幾部分組成。接收電路將發(fā)射器發(fā)出的已調(diào)制的編碼指令信號接收下來,并進行放大后送解調(diào)電路,解調(diào)電路將
51、已調(diào)制的指令編碼信號解調(diào)出來,即還原為編碼信號。指令譯碼器將編碼指令信號進行譯碼,最后由驅(qū)動電路來驅(qū)動執(zhí)行電路實現(xiàn)各種指令的操作控制。其大致工作過程如圖3.11所示。</p><p> 圖3.11 紅外工作原理</p><p> 紅外遙控器采用通用遙控器,接收器為紅外接收頭,如圖3.11所示。圖3.12為紅外接收頭電路,其信號輸出端接單片機引腳P3.2。</p><
52、p> 圖3.11 紅外遙控器和接收頭 圖3.12 紅外接收頭電路</p><p><b> 4 系統(tǒng)軟件設(shè)計</b></p><p><b> 4.1 主程序設(shè)計</b></p><p> 本課題程序編寫為C語言,編譯軟件為Keil5,程序分為4個模塊,分別是主函數(shù)main.c、LCD128
53、64程序LCD12864.h、時鐘芯片DS1302程序DS1302.h和紅外遙控程序IRIN.h。程序流程圖如圖4.1所示。</p><p> 圖4.1 程序流程圖</p><p> 4.2 LCD12864驅(qū)動程序</p><p> 圖4.2 12864寫操作時序</p><p> 根據(jù)以上寫時序,可以寫出寫指令函數(shù)和寫數(shù)據(jù)函數(shù)。
54、</p><p><b> (1)寫指令</b></p><p> void lcd_wcmd(uchar cmd) //寫指令函數(shù)</p><p> { </p><p> while(lcd_busy()); //判忙</p>
55、<p> LCD_RS = 0; //RS=L</p><p> LCD_RW = 0; //RW=L</p><p> LCD_EN = 0; //EN 上升沿</p><p><b> _nop_();</b></p><p><
56、;b> _nop_(); </b></p><p><b> P2 = cmd;</b></p><p> delayNOP();</p><p> LCD_EN = 1;</p><p> delayNOP();</p><p> LCD_EN = 0; <
57、/p><p><b> }</b></p><p><b> ?。?)寫顯示數(shù)據(jù)</b></p><p> void lcd_wdat(uchar dat) //寫顯示數(shù)據(jù)函數(shù)</p><p> { </p><p>
58、 while(lcd_busy()); //判忙</p><p> LCD_RS = 1; //RS=H</p><p> LCD_RW = 0; //RW=L</p><p> LCD_EN = 0; //EN 上升沿</p><p><b> P2 = dat;&l
59、t;/b></p><p> delayNOP();</p><p> LCD_EN = 1;</p><p> delayNOP();</p><p> LCD_EN = 0; </p><p><b> }</b></p><p><b>
60、(3)設(shè)定顯示位置</b></p><p> void lcd_pos(uchar X,uchar Y)</p><p> { </p><p> uchar pos;</p><p><b> if (X==1)</b></p>&l
61、t;p> {X=0x80;} //第一行首地址</p><p> else if (X==2)</p><p> {X=0x90;} //第二行首地址</p><p> else if (X==3)</p><p> {X=0x88;} //第三行首地址</p><p> else
62、if (X==4)</p><p> {X=0x98;} //第四行首地址</p><p> pos = X+Y ; </p><p> lcd_wcmd(pos); //顯示地址,行地址加列地址</p><p><b> }</b></p><p><b> ?。?/p>
63、4)圖形顯示</b></p><p> void photodisplay(uchar *bmp)</p><p><b> { </b></p><p> uchar i,j;</p><p> lcd_wcmd(0x34); //寫數(shù)據(jù)時,關(guān)閉圖形顯示</p><
64、;p> for(i=0;i<32;i++)</p><p><b> {</b></p><p> lcd_wcmd(0x80+i); //寫入垂直坐標(biāo)值</p><p> lcd_wcmd(0x80); //先寫入水平坐標(biāo)值</p><p> for(j=0;j<16;j++
65、) //再寫入兩個8位元的數(shù)據(jù) </p><p> lcd_wdat(*bmp++); </p><p> delay1(1);</p><p><b> }</b></p><p> for(i=0;i<32;i++)</p><p><b> { &
66、lt;/b></p><p> lcd_wcmd(0x80+i);</p><p> lcd_wcmd(0x88);</p><p> for(j=0;j<16;j++) </p><p> lcd_wdat(*bmp++); </p><p> delay1(1);<
67、/p><p><b> }</b></p><p> lcd_wcmd(0x36); //寫完數(shù)據(jù),開圖形顯示 </p><p><b> }</b></p><p> 4.3 DS1302驅(qū)動程序</p><p> DS1302讀寫時序如圖所示,圖4.4為
68、單字節(jié)讀時序,圖4.5為單字節(jié)寫時序。</p><p> 圖4.4 DS1302單字節(jié)讀時序</p><p> 圖4.5 DS1302單字節(jié)寫時序</p><p> ?。?)DS1302寫一個字節(jié)</p><p> void Write_Ds1302_Byte(unsigned char temp) </p><
69、;p><b> {</b></p><p> unsigned char i;</p><p> for (i=0;i<8;i++) //循環(huán)8次 寫入數(shù)據(jù)</p><p><b> { </b></p><p> SCK=0; //
70、SCK為上升沿</p><p> IO=temp&0x01; //每次傳輸?shù)妥止?jié) </p><p> temp>>=1; //右移一位</p><p><b> SCK=1;</b></p><p><b> }</b></p><p
71、><b> }</b></p><p> (2)寫入DS1302</p><p> void Write_Ds1302( unsigned char address,unsigned char dat ) </p><p><b> {</b></p><p><b>
72、; RST=0;</b></p><p><b> _nop_();</b></p><p><b> SCK=0;</b></p><p><b> _nop_();</b></p><p><b> RST=1; </b><
73、/p><p> _nop_(); //啟動</p><p> Write_Ds1302_Byte(address); //發(fā)送地址</p><p> Write_Ds1302_Byte(dat); //發(fā)送數(shù)據(jù)</p><p> RST=0; //恢復(fù)</p>
74、;<p><b> }</b></p><p> ?。?)讀出DS1302數(shù)據(jù)</p><p> unsigned char Read_Ds1302 ( unsigned char address )</p><p><b> {</b></p><p> unsigned c
75、har i,temp=0x00;</p><p><b> RST=0;</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> SCK=0;</b></p&g
76、t;<p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> RST=1;</b></p><p><b> _nop_();</b></p><p><b>
77、 _nop_();</b></p><p> Write_Ds1302_Byte(address);</p><p> for (i=0;i<8;i++) //循環(huán)8次 讀取數(shù)據(jù)</p><p><b> { </b></p><p><b> if(IO)</b
78、></p><p> temp|=0x80; //每次傳輸?shù)妥止?jié)</p><p><b> SCK=0;</b></p><p> temp>>=1; //右移一位</p><p><b> _nop_();</b></p><p&g
79、t;<b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> SCK=1;</b></p><p><b> } </b></p><p><b> RST=0;</b>
80、;</p><p> return (temp); //返回</p><p><b> }</b></p><p> 4.4 紅外遙控程序</p><p> 紅外遙控結(jié)合單片機P3.2口外部中斷INT0來執(zhí)行命令,紅外遙控器共21個按鍵,其鍵值分別為</p><p><b&
81、gt; 45 46 47</b></p><p><b> 44 40 43</b></p><p><b> 07 15 09</b></p><p><b> 16 19 0D</b></p><p><b> 0C 18 5E</b&
82、gt;</p><p><b> 08 1C 5A</b></p><p><b> 42 52 4A</b></p><p> void IR_IN(void) interrupt 0 // 外部中斷0</p><p><b> {</b></p>
83、<p> unsigned char j,k,N=0;</p><p> EX0 = 0; </p><p> IRdelay(15);</p><p> if (IRIN==1) </p><p><b> { EX0 =1;</b></p><p><b>
84、 return;</b></p><p><b> } </b></p><p> //確認IR信號出現(xiàn)</p><p> while (!IRIN) //等IR變?yōu)楦唠娖?,跳過9ms的前導(dǎo)低電平信號。</p><p> {IRdelay(1);}</p><
85、p> for (j=0;j<4;j++) //收集四組數(shù)據(jù)</p><p><b> {</b></p><p> for (k=0;k<8;k++) //每組數(shù)據(jù)有8位</p><p><b> {</b></p><p> while (
86、IRIN) //等 IR 變?yōu)榈碗娖?,跳過4.5ms的前導(dǎo)高電平信號。</p><p> {IRdelay(1);}</p><p> while (!IRIN) //等 IR 變?yōu)楦唠娖?lt;/p><p> {IRdelay(1);}</p><p> while (IRIN)
87、 //計算IR高電平時長</p><p><b> {</b></p><p> IRdelay(1);</p><p> N++; </p><p> if (N>=50)</p><p><b> { </b></p>&
88、lt;p><b> EX0=1;</b></p><p><b> return;</b></p><p> } //0.14ms計數(shù)過長自動離開。</p><p> } //高電平計數(shù)完畢 <
89、/p><p> IRCOM[j]=IRCOM[j] >> 1; //數(shù)據(jù)最高位補“0”</p><p> if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;} //數(shù)據(jù)最高位補“1”</p><p><b> N=0;</b></p><p&g
90、t;<b> }</b></p><p><b> }</b></p><p><b> 5 調(diào)試結(jié)果</b></p><p> 5.1 正常顯示日期時間畫面</p><p> 5.2 進入調(diào)整時間日期畫面</p><p><b>
91、 5.3圖片顯示畫面</b></p><p><b> 6總結(jié)</b></p><p> 本課題研究的主要內(nèi)容是以STC89C51單片機為核心、DS1302為計時芯片、LCD12864液晶為顯示部分的一個電子日歷,可顯示年、月、日、周、時、分、秒及圖形顯示,并采用紅外遙控技術(shù),來實現(xiàn)對日期和時間的調(diào)整。</p><p> 本
92、次畢業(yè)設(shè)計的制作,從最初的方案設(shè)計,材料選擇,板子焊接到最終的程序編寫及調(diào)試,這一連串的過程讓我從中學(xué)到了很多知識。再一次熟悉了單片機的內(nèi)部結(jié)構(gòu)和工作原理,熟練運用單片機的中斷系統(tǒng)和定時器的使用,掌握了編程軟件Keil的使用,同時C語言的程序編寫也得到進一步提升。這次的畢業(yè)設(shè)計除了加深以前所學(xué)過的知識外,我還學(xué)到了以前課本中所沒學(xué)到的知識。熟悉了LCD12864的結(jié)構(gòu)和工作原理。12864 LCD帶中文字庫的128X64是一種
93、具有4位/8位并行、2線或3線串行多種接口方式,內(nèi)部含有國標(biāo)一級、二級簡體中文字庫的點陣圖形液晶顯示模塊,其顯示分辨率為128×64,內(nèi)置8192個16*16點漢字,和128個16*8點ASCII字符集.利用該模塊靈活的接口方式和簡單、方便的操作指令,可構(gòu)成全中文人機交互圖形界面??梢燥@示8×4行16×16點陣的漢字。也可完成圖形顯示。了解了時鐘芯片DS1302的工作原理。它能對年、月、日、星期、時、分、秒
94、進行計時,且有閏年補償功能,讀寫方便。同時熟悉了紅外遙控的工作原理,在本課題中用作調(diào)整時間和切換顯示,操作簡便。</p><p> 在這次的畢業(yè)設(shè)計期間,雖然遇到了很多小難題,但是經(jīng)過不懈的努力,查閱書籍,上網(wǎng)搜索,最終使問題迎刃而解,并完成課題目標(biāo),收獲還是很大的。相信付出就一定會有收獲,不管什么事情,只要認真去做了,再大的困難也是可以一步步解決的。這次的畢業(yè)設(shè)計我做的實物,這不僅學(xué)到了知識,還鍛煉了動手能力
95、,我覺得還是蠻有意義的,為以后更好的在社會上立足打下了一定的基礎(chǔ)。</p><p><b> 致謝</b></p><p><b> 參考文獻</b></p><p> [1] 劉教瑜,曾勇.單片機原理及應(yīng)用[M].武漢:武漢理工大學(xué)出版社,2011 </p><p> [2] 張芝賢,王明
96、賀,張正吉,邱偉華,劉筠筠.LCD顯示模塊并行接口驅(qū)動程序設(shè)計[J].國外電子測量技術(shù),2009,28(10)</p><p> [3] 王海燕,楊艷華.Proteus和Keil軟件在單片機實驗教學(xué)中的應(yīng)用[J] .實驗室研究與探索,2012,31(5)</p><p> [4] 黃明強. DS1302在單片機系統(tǒng)中的應(yīng)用[J]. 保定師范??茖W(xué)校學(xué)報,2004,17(2)</p
97、><p> [5] 馮大捷. 基于DS1302電子時鐘的設(shè)計[J]. 科技視界,2012,03(3)</p><p> [6] 張亞峰. Keil C51軟件使用方法[J]. 電子制作,2011,16(12)</p><p> [7] 陳紅, 李瑋. 基于單片機和12864LCD模塊的萬年歷設(shè)計與仿真[J]. 中小企業(yè)管理與科技(上旬刊),2012,03(13)&
98、lt;/p><p> [8] 潭浩強.C語言程序設(shè)計[M].北京:清華大學(xué)出版社,1991</p><p> [9] 郭天祥.新概念51單片機C語言教程[M].北京:電子工業(yè)出版社,2009</p><p> [10] 聶詩良,李磊民. 采用單片機發(fā)送并接收紅外遙控信號的方法[J]. 信息技術(shù),2004,28(2)</p><p> [1
99、1] 劉維紅,譚永超. 基于STC89C52單片機的電子時鐘研究[J]. 機電產(chǎn)品開發(fā)與創(chuàng)新, 2012,25(5)</p><p> [12] 孫雪梅,范久臣. 實時時鐘芯片在單片機系統(tǒng)中的應(yīng)用[J].沈陽教育學(xué)院學(xué)報,2005,15(2)</p><p> [13] 8-bit Microcontroller With 8K Bytes in-system programble F
100、lash AT89S52, ATMEL, 2001</p><p> [14]. 蔣敏. 單片微機萬年歷設(shè)計[J].職大學(xué)報,2009, 2(10)</p><p> [15] 馮育長. 單片機系統(tǒng)設(shè)計與實例分析[M],西安:L西安電子科技大學(xué)出版社,2007</p><p><b> 附錄一</b></p>
溫馨提示
- 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機電子鐘畢業(yè)設(shè)計---基于單片機的時鐘顯示器設(shè)計
- 基于單片機的時鐘顯示器畢業(yè)設(shè)計
- 畢業(yè)設(shè)計---基于單片機的時鐘顯示器設(shè)計
- 畢業(yè)設(shè)計--基于單片機的時鐘顯示器設(shè)計
- 單片機畢業(yè)設(shè)計---基于51系列的單片機日歷和時鐘顯示設(shè)計
- 單片機畢業(yè)設(shè)計--基于單片機的電子時鐘
- 基于單片機的led點陣顯示電子鐘畢業(yè)設(shè)計
- 單片機畢業(yè)設(shè)計---基于51系列的單片機進行的實時日歷和時鐘顯示設(shè)計
- 實時日歷和時鐘顯示單片機畢業(yè)設(shè)計
- 畢業(yè)設(shè)計---基于單片機數(shù)字時鐘設(shè)計
- 單片機畢業(yè)設(shè)計--基于51系列的單片機進行的實時日歷和時鐘顯示設(shè)計
- 基于單片機的智能時鐘畢業(yè)設(shè)計
- 單片機畢業(yè)設(shè)計---實時日歷和時鐘顯示設(shè)計
- 基于單片機的簡易時鐘設(shè)計(畢業(yè)設(shè)計)
- 畢業(yè)設(shè)計----基于單片機的數(shù)字時鐘設(shè)計
- 基于51單片機數(shù)字時鐘 畢業(yè)設(shè)計
- 單片機畢業(yè)設(shè)計---基于單片機控制的模擬電梯顯示
- 基于單片機的數(shù)字時鐘的設(shè)計 畢業(yè)設(shè)計
- 基于單片機的數(shù)字時鐘的設(shè)計畢業(yè)設(shè)計
- 單片機數(shù)字時鐘畢業(yè)設(shè)計
評論
0/150
提交評論