2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩34頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  學士學位畢業(yè)論文(設計)</p><p>  題 目:基于單片機的12864時鐘顯示</p><p><b>  摘要</b></p><p>  電子時鐘是一種非常廣泛日常計時工具,給人們的帶來了很大的方便,在社會上越來越流行。它可以對年、月、日、星期、時、分、秒進行計時,采用直觀的數(shù)字顯示,可以同時顯示年月日時分秒等信

2、息,還有時間校準等功能。該電子時鐘主要采用STC89C52單片機作為主控核心,用DS1302時鐘芯片作為時鐘、液晶12864顯示屏顯示。STC89C52單片機是由深圳宏晶科技公司推出的,功耗小,電壓可選用4~6V電壓供電;DS1302時鐘芯片是美國DALLAS公司推出的具有細電流充電功能的低功耗實時時鐘芯片,它可以對年、月、日、星期、時、分、秒進行計時,還具有閏年補償?shù)榷喾N功能,而且DS1302的使用壽命長,誤差?。粩?shù)字顯示是采用的12

3、864液晶顯示屏來顯示,可以同時顯示年、月、日、星期、時、分、秒等信息。此外,該電子時鐘還具有時間校準等功能。</p><p>  關鍵詞: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)象和流動物質的連續(xù)運動來計時。例如,日晷是利用日影的方位計時,陰雨天和夜里沒法使用且測量誤差較大;漏壺和沙漏是利用水流和沙流的流量計時,雖然晚上可以使用,但是水容易結冰,誤差還是大。后來人們發(fā)明了機械鐘,以機械振動系統(tǒng)為時間基準,實現(xiàn)對時間的計量,誤差達到一天一分鐘左右。而如今的數(shù)字鐘用數(shù)字電路實現(xiàn)時、分、秒,精度較高,一天的誤差不到一秒。目前精度最高的時鐘要屬原子鐘,其每天的誤差小于

8、一億分之一秒。</p><p>  隨著人們生活水平的提高和生活節(jié)奏的加快,對時間的要求越來越高,精準數(shù)字計時的消費需求也是越來越多。 </p><p>  二十一世紀的今天,最具代表性的計時產品就是電子萬年歷,它是近代世界鐘表業(yè)界的第三次革命。第一次是擺和擺輪游絲的發(fā)明,相對穩(wěn)定的機械振蕩頻率源使鐘表的走時差從分級縮小到秒級,代表性的產品就是帶有擺或擺輪游絲的機械鐘或表。第二次

9、革命是石英晶體振蕩器的應用,發(fā)明了走時精度更高的石英電子鐘表,使鐘表的走時和月差從分級縮小到秒級。第三次革命就是單片機數(shù)碼計時技術的應用(電子萬年歷),使計時產品的走時日差從分級縮小到1/600萬秒,從原有傳統(tǒng)指針計時的方式發(fā)展為人們日常更為熟悉的夜光數(shù)字顯示方式,直觀明了,并增加了全自動日期、星期、溫度以及其他日常附屬信息的顯示功能,它更符合消費者的生活需求!因此,電子萬年歷的出現(xiàn)帶來了鐘表計時業(yè)界跨躍性的進步。</p>

10、<p>  1.2 目前的研究現(xiàn)狀 </p><p>  我國生產的電子萬年歷有很多種,總體上來說以研究多功能電子萬年歷為主,使萬年歷除了原有的顯示時間,日期等基本功能外,還具有鬧鈴,報警等功能。商家生產的電子萬年歷更從質量,價格,實用上考慮,不斷的改進電子萬年歷的設計,使其更加的具有市場。在國內,電子鐘因LCD數(shù)字顯示效用直接有效,所以大多運用在城市的主要營業(yè)場所,以及車站、碼頭等公共場所

11、。在對公共場所的電子鐘設定的時候,使用者還可根據周邊的氣候、溫度等對LCD屏進行設置。同時,因為LCD的顯示耗電量很省,所以能夠保持持續(xù)的工作效果。</p><p>  1.3研究目的及意義</p><p>  電子鐘亦稱數(shù)字顯示鐘,是一種用數(shù)字電路技術實現(xiàn)時、分、秒計時的裝置,與機械時鐘相比,直觀性為其主要顯著特點,且因非機械驅動,具有更長的使用壽命,相較石英鐘的石英機芯驅動,更具準確性

12、。電子鐘已成為人們日常生活中必不可少的必需品,廣泛用于個人家庭以及車站、碼頭、劇院、辦公室等公共場所,給人們的生活、學習、工作、娛樂帶來極大地方便。相對于其他時鐘類型,它的特點可歸結為“兩強一弱 ”:比機械鐘強在觀時顯著,比石英鐘強在走時準確,但是它的弱點為顯示較為單調。鐘表的數(shù)字化給人們生產生活帶來了極大的方便,而且大大地擴展了鐘表原先的報時功能。諸如定時自動報警、按時自動打鈴、時間程序自動控制、定時廣播、自動起閉路燈、定時開關烘箱、

13、通斷動力設備甚至各種定時電氣的自動啟用等,所有這些,都是以鐘表數(shù)字化為基礎的。因此,研究數(shù)字鐘及擴大其應用,有著非常現(xiàn)實的意義。</p><p>  除了采用集成化的時鐘芯片外,還有采用MCU的方案,利用STC89系列單片微機制成萬年歷電路,采用軟件和硬件結合的方法,控制輸出,分別用來顯示年、月、日、時、分、秒,其最大特點是:硬件電路簡單,安裝方便易于實現(xiàn),軟件設計獨特,可靠。STC89C51是由深圳宏晶科技公司

14、推出的一種小型單片機。其主要特點為采用Flash存貯器技術,降低了制造成本,其軟件、硬件與MCS-51完全兼容,可以很快被廣大用戶接受。 本文介紹了基于STC89C51單片機設計的電子時鐘??梢酝瑫r顯示年、月、日、星期、時、分、秒等信息,還具有時間紅外校準等功能。</p><p><b>  2 總體方案設計</b></p><p><b>  2

15、.1 方案的選擇</b></p><p><b>  2.1.1設計要求</b></p><p>  A.具有年、月、日、周、時、分、秒的顯示功能;</p><p>  B.具有年、月、日、周、時、分、秒的校準功能;</p><p>  C.具有圖片顯示功能;</p><p>  D.

16、具有紅外遙控功能。</p><p>  2.1.2方案的選擇</p><p>  本課題是基于單片機控制的電子時鐘設計,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,內置8192個16*16點漢字,和128 個16*8 點ASCII 字符集.利用該模塊靈活的接口方式和簡單、方便的操作指令,可構成全中文人機交互圖形界面??梢燥@示8×4 行16×16 點 陣的漢字,也可完成圖形顯示。低電壓低功耗是其又一顯著特點。由該模塊構成的液晶顯示方案與同類型的圖形點陣液晶顯示模塊相比,不論硬件電路結構或顯示程序都要簡潔得多,且該模塊的價格也略低于相同點陣的圖形液晶模塊。為了更精確的顯示時間

18、,需要一時鐘芯片來進行計時。DS1302是由美國DALLAS公司推出的具有涓細電流充電能力的低功耗實時時鐘芯片。它可以對年、月、日、周、時、分、秒進行計時,且具有閏年補償?shù)榷喾N功能。對于紅外遙控功能,主要用來調整時間和切換顯示頁面。本課題中選用通用紅外遙控器和紅外接收頭。</p><p>  2.2總體方案組成框圖</p><p>  根據以上硬件的選擇,系統(tǒng)的硬件框圖2.1所示。<

19、/p><p>  圖2.1 系統(tǒng)硬件框圖</p><p><b>  3系統(tǒng)硬件設計</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為片內振蕩電路的輸入端,XTAL2為片內振蕩電路的輸出端。8051的時鐘有兩種方式,一種是片內振蕩方式,需在這兩個腳外接石英晶體和振蕩電容,振蕩電容一般取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):復位/備用電源輸入引腳。在該引腳上輸入24個時鐘周期以上的高

23、電平,系統(tǒng)即復位。</p><p><b>  輸入/輸出引腳</b></p><p>  P0.0~P0.7(39~32):8位雙向并行I/O口,P0口可作為通用雙向I/O口。在外接數(shù)據、程序存儲器時,可作為低8位地址/數(shù)據總線復用引腳。</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ù)據、程序存儲器時,可作為高8位地址輸出引腳。</p><p>  P3.0~P3.7(10~17):8位雙向并行I/O口。P3口除了作為通用I/O口使用外,每一個引腳都可以復用。</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> ?。?)內部中斷源(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> ?。?)定時器方式控制寄存器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> ?。?)定時控制寄存器TCON</p><p>  TF0/TF1:定時器溢出中斷申請標志位(由硬件自動置位)。</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:外部中斷申請標志位(由硬件自動置位,中斷響應后轉向中斷服務程序時,由由硬件自動清零)</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>  (3)中斷允許寄存器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——總的中斷允許控制位(總開關)。=0:禁止所有中斷;=1:允許中斷。</p><p>  3.2晶振和復位電路</p><p><b>  3.2.1晶振電路</b></p><p>  如圖3.3所示,STC89C51單片機的內部有一個用于

33、構成振蕩器的高增益反相放大器,它的輸入端為XTAL1引腳,輸出端為XTAL2引腳,兩個跨接石英晶體及兩個電容就可以構成穩(wěn)定的自激振蕩器。電容器通常取30pF左右。</p><p>  圖3.3 晶振電路 圖3.4 復位電路</p><p><b>  3.2.2復位電路</b></p><p>  往單片機的復位引腳上輸入24個時鐘周期以

34、上的高電平,即執(zhí)行復位操作。按鍵復位是指系統(tǒng)在運行時,按下一個開關,就能在RST引腳產生一段時間的高電平,使系統(tǒng)復位,常見的按鍵復位電路如圖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:備用電源。當Vcc2>Vc

36、c1+0.2V時,由Vcc2向DS1302供電,當Vcc2< Vcc1時,由Vcc1向DS1302供電。       </p><p>  SCLK:串行時鐘,輸入,控制數(shù)據的輸入與輸出;       </p><p>  I/O:雙向數(shù)據線;

37、 </p><p>  X1、X2:晶振引腳;</p><p>  CE:輸入信號,在讀、寫數(shù)據期間,必須為高。該引腳有兩個功能:第一,CE開始控制字訪問移位寄存器的控制邏輯;其次,CE提供結束單字節(jié)或多字節(jié)數(shù)據傳輸?shù)姆椒ā?lt;/p><p>  3.3.2 DS1302寄存器</p><p>  DS1302有關日歷、時間的寄存器

38、共有12個,其中有7個寄存器(讀時81H~8DH,寫時80H~8CH),存放的數(shù)據格式為BCD碼形式,如圖3.7所示。</p><p>  圖3.7 DS1302日歷、時間寄存器</p><p>  小時寄存器(85h、84h)的位7用于定義DS1302是運行于12小時模式還是24小時模式。當為高時,選擇12小時模式。在12小時模式時,位5是 ,當為1時,表示PM。在24小時模

39、式時,位5是第二個10小時位。 </p><p>  秒寄存器(81h、80h)的位7定義為時鐘暫停標志(CH)。當該位置為1時,時鐘振蕩器停止,DS1302處于低功耗狀態(tài);當該位置為0時,時鐘開始運行。 </p><p>  控制寄存器(8Fh、8Eh)的位7是寫保護位(WP),其它7位均置為0。在任何的對時鐘和RAM的寫操作之前,WP位必須為0。當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點陣組成,可顯示漢字及圖形,內置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標志提供內部工作情況BF=1表示模塊在進行內部操作,此時模塊不接受外部指令和數(shù)據.BF=0

43、時,模塊為準備狀態(tài),隨時可接受外部指令和數(shù)據。</p><p>  3.4.2 LCD12864指令說明</p><p> ?。?)顯示開/關設置</p><p>  功能:設置屏幕顯示開/關。</p><p>  DB0=H,開顯示;DB0=L,關顯示。</p><p> ?。?)設置顯示起始行</p>

44、<p>  功能:執(zhí)行該命令后,所設置的行將顯示在屏幕的第一行。顯示起始行是由Z地址計數(shù)器控制的,該命令自動將A0-A5位地址送入Z地址計數(shù)器,起始地址可以是0-63范圍內任意一行。Z地址計數(shù)器具有循環(huán)計數(shù)功能,用于顯示行掃描同步,當掃描完一行后自動加一。</p><p><b> ?。?)設置列地址</b></p><p>  功能: DDRA

45、M 的列地址存儲在Y地址計數(shù)器中,讀寫數(shù)據對列地址有影響,在對DDRAM進行讀寫操作后,Y地址自動加一。</p><p><b>  (4)狀態(tài)檢測 </b></p><p>  功能:讀忙信號標志位(BF)、復位標志位(RST)以及顯示狀態(tài)位 (ON/OFF)。</p><p>  BF=H:內部正在執(zhí)行操作;B

46、F=L:空閑狀態(tài)。             </p><p>  RST=H:正處于復位初始化狀態(tài);RST=L:正常狀態(tài)。             

47、0;</p><p>  ON/OFF=H:表示顯示關閉;ON/OFF=L:表示顯示開。</p><p><b> ?。?)寫顯示數(shù)據 </b></p><p>  功能:寫數(shù)據到DDRAM,DDRAM是存儲圖形顯示數(shù)據的,寫指令執(zhí)行后Y地址計數(shù)器自動加1。D7-D0位數(shù)據為1表示顯示,數(shù)據為0表示不顯示。</p>&l

48、t;p><b> ?。?)讀顯示數(shù)據</b></p><p>  功能:從DDRAM讀數(shù)據,讀指令執(zhí)行后Y地址計數(shù)器自動加1。</p><p>  3.4.3 LCD12864電路接線</p><p>  單片機P2口作為指令/數(shù)據接口,右DB0-DB7輸入,數(shù)據命令選擇端RS接單片機P1.2,讀寫控制信號端R/W接單片機P1.1,使能端

49、E接單片機P1.0,串/并行方式選擇端PSB接P1.6,復位端RST接P1.7,16、18號引腳可以不接,如圖3.10所示。</p><p>  圖3.10 LCD12864電路圖</p><p>  3.5 紅外遙控模塊</p><p>  本課題采用紅外遙控功能對時鐘進行校準,包括年、月、日、周、時、分秒的加減操作,還有切換顯示、復位的功能。紅外遙控裝置包括紅外

50、發(fā)送(即遙控器)和紅外接收兩部分組成。發(fā)射機一般由指令按鍵、指令編碼系統(tǒng)、調制電路、驅動電路、發(fā)射電路等幾部分組成。當按下指令鍵時,指令編碼電路產生所需的指令編碼信號,指令編碼信號對載波進行調制,再由驅動電路進行功率放大后由發(fā)射電路向外發(fā)射經調制定的指令編碼信號。接收電路一般由接收電路、放大電路、調制電路、指令譯碼電路、驅動電路、執(zhí)行電路等幾部分組成。接收電路將發(fā)射器發(fā)出的已調制的編碼指令信號接收下來,并進行放大后送解調電路,解調電路將

51、已調制的指令編碼信號解調出來,即還原為編碼信號。指令譯碼器將編碼指令信號進行譯碼,最后由驅動電路來驅動執(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)軟件設計</b></p><p><b>  4.1 主程序設計</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驅動程序</p><p>  圖4.2 12864寫操作時序</p><p>  根據以上寫時序,可以寫出寫指令函數(shù)和寫數(shù)據函數(shù)。

54、</p><p><b> ?。?)寫指令</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ù)據</b></p><p>  void lcd_wdat(uchar dat) //寫顯示數(shù)據函數(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)設定顯示位置</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ù)據時,關閉圖形顯示</p><

64、;p>  for(i=0;i<32;i++)</p><p><b>  {</b></p><p>  lcd_wcmd(0x80+i); //寫入垂直坐標值</p><p>  lcd_wcmd(0x80); //先寫入水平坐標值</p><p>  for(j=0;j<16;j++

65、) //再寫入兩個8位元的數(shù)據 </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ù)據,開圖形顯示 </p><p><b>  }</b></p><p>  4.3 DS1302驅動程序</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ù)據</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> ?。?)寫入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ù)據</p><p>  RST=0; //恢復</p>

74、;<p><b>  }</b></p><p>  (3)讀出DS1302數(shù)據</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ù)據</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>  紅外遙控結合單片機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的前導低電平信號。</p><p>  {IRdelay(1);}</p><

85、p>  for (j=0;j<4;j++) //收集四組數(shù)據</p><p><b>  {</b></p><p>  for (k=0;k<8;k++) //每組數(shù)據有8位</p><p><b>  {</b></p><p>  while (

86、IRIN) //等 IR 變?yōu)榈碗娖剑^4.5ms的前導高電平信號。</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ù)據最高位補“0”</p><p>  if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;} //數(shù)據最高位補“1”</p><p><b>  N=0;</b></p><p&g

90、t;<b>  }</b></p><p><b>  }</b></p><p><b>  5 調試結果</b></p><p>  5.1 正常顯示日期時間畫面</p><p>  5.2 進入調整時間日期畫面</p><p><b>

91、  5.3圖片顯示畫面</b></p><p><b>  6總結</b></p><p>  本課題研究的主要內容是以STC89C51單片機為核心、DS1302為計時芯片、LCD12864液晶為顯示部分的一個電子日歷,可顯示年、月、日、周、時、分、秒及圖形顯示,并采用紅外遙控技術,來實現(xiàn)對日期和時間的調整。</p><p>  本

92、次畢業(yè)設計的制作,從最初的方案設計,材料選擇,板子焊接到最終的程序編寫及調試,這一連串的過程讓我從中學到了很多知識。再一次熟悉了單片機的內部結構和工作原理,熟練運用單片機的中斷系統(tǒng)和定時器的使用,掌握了編程軟件Keil的使用,同時C語言的程序編寫也得到進一步提升。這次的畢業(yè)設計除了加深以前所學過的知識外,我還學到了以前課本中所沒學到的知識。熟悉了LCD12864的結構和工作原理。12864 LCD帶中文字庫的128X64是一種

93、具有4位/8位并行、2線或3線串行多種接口方式,內部含有國標一級、二級簡體中文字庫的點陣圖形液晶顯示模塊,其顯示分辨率為128×64,內置8192個16*16點漢字,和128個16*8點ASCII字符集.利用該模塊靈活的接口方式和簡單、方便的操作指令,可構成全中文人機交互圖形界面??梢燥@示8×4行16×16點陣的漢字。也可完成圖形顯示。了解了時鐘芯片DS1302的工作原理。它能對年、月、日、星期、時、分、秒

94、進行計時,且有閏年補償功能,讀寫方便。同時熟悉了紅外遙控的工作原理,在本課題中用作調整時間和切換顯示,操作簡便。</p><p>  在這次的畢業(yè)設計期間,雖然遇到了很多小難題,但是經過不懈的努力,查閱書籍,上網搜索,最終使問題迎刃而解,并完成課題目標,收獲還是很大的。相信付出就一定會有收獲,不管什么事情,只要認真去做了,再大的困難也是可以一步步解決的。這次的畢業(yè)設計我做的實物,這不僅學到了知識,還鍛煉了動手能力

95、,我覺得還是蠻有意義的,為以后更好的在社會上立足打下了一定的基礎。</p><p><b>  致謝</b></p><p><b>  參考文獻</b></p><p>  [1] 劉教瑜,曾勇.單片機原理及應用[M].武漢:武漢理工大學出版社,2011 </p><p>  [2] 張芝賢,王明

96、賀,張正吉,邱偉華,劉筠筠.LCD顯示模塊并行接口驅動程序設計[J].國外電子測量技術,2009,28(10)</p><p>  [3] 王海燕,楊艷華.Proteus和Keil軟件在單片機實驗教學中的應用[J] .實驗室研究與探索,2012,31(5)</p><p>  [4] 黃明強. DS1302在單片機系統(tǒng)中的應用[J]. 保定師范??茖W校學報,2004,17(2)</p

97、><p>  [5] 馮大捷. 基于DS1302電子時鐘的設計[J]. 科技視界,2012,03(3)</p><p>  [6] 張亞峰. Keil C51軟件使用方法[J]. 電子制作,2011,16(12)</p><p>  [7] 陳紅, 李瑋. 基于單片機和12864LCD模塊的萬年歷設計與仿真[J]. 中小企業(yè)管理與科技(上旬刊),2012,03(13)&

98、lt;/p><p>  [8] 潭浩強.C語言程序設計[M].北京:清華大學出版社,1991</p><p>  [9] 郭天祥.新概念51單片機C語言教程[M].北京:電子工業(yè)出版社,2009</p><p>  [10] 聶詩良,李磊民. 采用單片機發(fā)送并接收紅外遙控信號的方法[J]. 信息技術,2004,28(2)</p><p>  [1

99、1] 劉維紅,譚永超. 基于STC89C52單片機的電子時鐘研究[J]. 機電產品開發(fā)與創(chuàng)新, 2012,25(5)</p><p>  [12] 孫雪梅,范久臣. 實時時鐘芯片在單片機系統(tǒng)中的應用[J].沈陽教育學院學報,2005,15(2)</p><p>  [13] 8-bit Microcontroller With 8K Bytes in-system programble F

100、lash AT89S52, ATMEL, 2001</p><p>  [14]. 蔣敏. 單片微機萬年歷設計[J].職大學報,2009, 2(10)</p><p>  [15] 馮育長. 單片機系統(tǒng)設計與實例分析[M],西安:L西安電子科技大學出版社,2007</p><p><b>  附錄一</b></p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論