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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

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

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

3、864液晶顯示屏來顯示,可以同時(shí)顯示年、月、日、星期、時(shí)、分、秒等信息。此外,該電子時(shí)鐘還具有時(shí)間校準(zhǔn)等功能。</p><p>  關(guān)鍵詞:STC89C51單片機(jī),DS1302時(shí)鐘芯片,液晶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時(shí)鐘發(fā)展史</b></p>

7、<p>  很早以前,人類主要是利用天文現(xiàn)象和流動(dòng)物質(zhì)的連續(xù)運(yùn)動(dòng)來計(jì)時(shí)。例如,日晷是利用日影的方位計(jì)時(shí),陰雨天和夜里沒法使用且測量誤差較大;漏壺和沙漏是利用水流和沙流的流量計(jì)時(shí),雖然晚上可以使用,但是水容易結(jié)冰,誤差還是大。后來人們發(fā)明了機(jī)械鐘,以機(jī)械振動(dòng)系統(tǒng)為時(shí)間基準(zhǔn),實(shí)現(xiàn)對時(shí)間的計(jì)量,誤差達(dá)到一天一分鐘左右。而如今的數(shù)字鐘用數(shù)字電路實(shí)現(xiàn)時(shí)、分、秒,精度較高,一天的誤差不到一秒。目前精度最高的時(shí)鐘要屬原子鐘,其每天的誤差小于

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

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

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

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

12、。電子鐘已成為人們?nèi)粘I钪斜夭豢缮俚谋匦杵?,廣泛用于個(gè)人家庭以及車站、碼頭、劇院、辦公室等公共場所,給人們的生活、學(xué)習(xí)、工作、娛樂帶來極大地方便。相對于其他時(shí)鐘類型,它的特點(diǎn)可歸結(jié)為“兩強(qiáng)一弱 ”:比機(jī)械鐘強(qiáng)在觀時(shí)顯著,比石英鐘強(qiáng)在走時(shí)準(zhǔn)確,但是它的弱點(diǎn)為顯示較為單調(diào)。鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便,而且大大地?cái)U(kuò)展了鐘表原先的報(bào)時(shí)功能。諸如定時(shí)自動(dòng)報(bào)警、按時(shí)自動(dòng)打鈴、時(shí)間程序自動(dòng)控制、定時(shí)廣播、自動(dòng)起閉路燈、定時(shí)開關(guān)烘箱、

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

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

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

16、具有紅外遙控功能。</p><p>  2.1.2方案的選擇</p><p>  本課題是基于單片機(jī)控制的電子時(shí)鐘設(shè)計(jì),MCS-51系列的單片機(jī)集成了8位CPU、4K字節(jié)ROM、128字節(jié)RAM、2個(gè)16位定時(shí)器/計(jì)數(shù)器和4個(gè)8位I/O口等基本功能部件,基本能滿足本課題的研究,所以主控芯片選擇STC89C51單片機(jī)。時(shí)鐘的顯示功能用128*64LCD來實(shí)現(xiàn),其顯示分辨率為128×

17、64,內(nèi)置8192個(gè)16*16點(diǎn)漢字,和128 個(gè)16*8 點(diǎn)ASCII 字符集.利用該模塊靈活的接口方式和簡單、方便的操作指令,可構(gòu)成全中文人機(jī)交互圖形界面。可以顯示8×4 行16×16 點(diǎn) 陣的漢字,也可完成圖形顯示。低電壓低功耗是其又一顯著特點(diǎn)。由該模塊構(gòu)成的液晶顯示方案與同類型的圖形點(diǎn)陣液晶顯示模塊相比,不論硬件電路結(jié)構(gòu)或顯示程序都要簡潔得多,且該模塊的價(jià)格也略低于相同點(diǎn)陣的圖形液晶模塊。為了更精確的顯示時(shí)間

18、,需要一時(shí)鐘芯片來進(jìn)行計(jì)時(shí)。DS1302是由美國DALLAS公司推出的具有涓細(xì)電流充電能力的低功耗實(shí)時(shí)時(shí)鐘芯片。它可以對年、月、日、周、時(shí)、分、秒進(jìn)行計(jì)時(shí),且具有閏年補(bǔ)償?shù)榷喾N功能。對于紅外遙控功能,主要用來調(diào)整時(shí)間和切換顯示頁面。本課題中選用通用紅外遙控器和紅外接收頭。</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è)計(jì)</b></p><p><b>  3. 1主芯片模塊</b></p><p>  STC89C51單片的引腳功能圖如圖3.1所示,邏輯符號如圖3.2所示,它有40個(gè)引腳。</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>  時(shí)鐘電路引腳</b>

21、;</p><p>  XTAL1(18)、XTAL2(19):XTAL1為片內(nèi)振蕩電路的輸入端,XTAL2為片內(nèi)振蕩電路的輸出端。8051的時(shí)鐘有兩種方式,一種是片內(nèi)振蕩方式,需在這兩個(gè)腳外接石英晶體和振蕩電容,振蕩電容一般取10p~30p;另一種是外部時(shí)鐘方式,即將XTAL 1接地,外部時(shí)鐘信號從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個(gè)時(shí)鐘周期以上的高

23、電平,系統(tǒng)即復(fù)位。</p><p><b>  輸入/輸出引腳</b></p><p>  P0.0~P0.7(39~32):8位雙向并行I/O口,P0口可作為通用雙向I/O口。在外接數(shù)據(jù)、程序存儲器時(shí),可作為低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ù)、程序存儲器時(shí),可作為高8位地址輸出引腳。</p><p>  P3.0~P3.7(10~17):8位雙向并行I/O口。P3口除了作為通用I/O口使用外,每一個(gè)引腳都可以復(fù)用。</p><p>  3.1.1 中斷系統(tǒng)</p><p>  8051單片機(jī)允許

25、5個(gè)中斷源:</p><p> ?。?)外部中斷源(2個(gè))</p><p>  由INT0(P3.2)引腳和INT1(P3.3)引腳引入。這兩個(gè)中斷源的請求方式有兩種:低電平觸發(fā)或下降沿觸發(fā)。</p><p> ?。?)內(nèi)部中斷源(2個(gè))</p><p>  T0:定時(shí)/計(jì)數(shù)器0中斷,由T0溢出引起。</p><p>

26、  T1:定時(shí)/計(jì)數(shù)器1中斷,由T1溢出引起。</p><p>  (3)TI/RI(1個(gè))</p><p>  串行I/O口中斷,由一幀字符發(fā)送/接收完后引起。</p><p>  3.1.2常用寄存器</p><p>  (1)定時(shí)器方式控制寄存器TMOD</p><p>  工作方式選擇位M1、M0定義如下:&l

27、t;/p><p>  GATE=0:軟件啟動(dòng)定時(shí)器,使TRx置“1”即可啟動(dòng)定時(shí)器;</p><p>  =1:軟件和硬件共同啟動(dòng)定時(shí)器,除了要使TRx置“1”外,外部中斷請求信號輸入端INTx還必須輸入高電平才能啟動(dòng)定時(shí)器。</p><p>  C/T=0:定時(shí)器方式工作;</p><p>  =1:計(jì)數(shù)器方式工作。</p>&l

28、t;p>  (2)定時(shí)控制寄存器TCON</p><p>  TF0/TF1:定時(shí)器溢出中斷申請標(biāo)志位(由硬件自動(dòng)置位)。</p><p>  TF0/TF1=0:定時(shí)器未溢出;</p><p>  =1:定時(shí)器溢出時(shí)硬件自動(dòng)置位,申請中斷。</p><p>  TR0/TR1:定時(shí)器啟動(dòng)/停止控制位。</p><p

29、>  TR0/TR1=0:定時(shí)器停止;</p><p><b>  =1:定時(shí)器啟動(dòng)。</b></p><p>  IE0/IE1:外部中斷申請標(biāo)志位(由硬件自動(dòng)置位,中斷響應(yīng)后轉(zhuǎn)向中斷服務(wù)程序時(shí),由由硬件自動(dòng)清零)</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í)/計(jì)數(shù)器T1的溢出中斷允許位。=0:禁止中斷;=1允許中斷</p><p>  EX1——外部中斷1中斷允許位。=0:禁止中斷;=1允許中斷</p><p>  ET0——定時(shí)/計(jì)數(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單片機(jī)的內(nèi)部有一個(gè)用于

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

34、上的高電平,即執(zhí)行復(fù)位操作。按鍵復(fù)位是指系統(tǒng)在運(yùn)行時(shí),按下一個(gè)開關(guān),就能在RST引腳產(chǎn)生一段時(shí)間的高電平,使系統(tǒng)復(fù)位,常見的按鍵復(fù)位電路如圖3.4所示。對12MHz晶振頻率而言,電路中C取10pF,R取1KΩ。</p><p>  3.3 DS1302時(shí)鐘芯片電路</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時(shí),由Vcc2向DS1302供電,當(dāng)Vcc2< Vcc1時(shí),由Vcc1向DS1302供電。       </p><p>  SCLK:串行時(shí)鐘,輸入,控制數(shù)據(jù)的輸入與輸出;       </p><p>  I/O:雙向數(shù)據(jù)線;

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

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

39、式時(shí),位5是第二個(gè)10小時(shí)位。 </p><p>  秒寄存器(81h、80h)的位7定義為時(shí)鐘暫停標(biāo)志(CH)。當(dāng)該位置為1時(shí),時(shí)鐘振蕩器停止,DS1302處于低功耗狀態(tài);當(dāng)該位置為0時(shí),時(shí)鐘開始運(yùn)行。 </p><p>  控制寄存器(8Fh、8Eh)的位7是寫保護(hù)位(WP),其它7位均置為0。在任何的對時(shí)鐘和RAM的寫操作之前,WP位必須為0。當(dāng)WP位為1時(shí),寫保

40、護(hù)位防止對任一寄存器的寫操作。</p><p>  3.3.3 DS1302外圍電路</p><p>  圖3.8 DS1302外圍電路</p><p>  DS1302只有3個(gè)引腳與單片機(jī)相連,分別是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點(diǎn)陣組成,可顯示漢字及圖形,內(nèi)置8192個(gè)中文漢字(16*16點(diǎn)陣)、128個(gè)字符

42、(8*16)點(diǎn)陣,8位并行及串行連接方式。</p><p><b>  控制引腳說明</b></p><p>  RS、R/W四種模式</p><p><b>  E信號</b></p><p>  說明:BF標(biāo)志提供內(nèi)部工作情況BF=1表示模塊在進(jìn)行內(nèi)部操作,此時(shí)模塊不接受外部指令和數(shù)據(jù).BF=0

43、時(shí),模塊為準(zhǔn)備狀態(tài),隨時(shí)可接受外部指令和數(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地址計(jì)數(shù)器控制的,該命令自動(dòng)將A0-A5位地址送入Z地址計(jì)數(shù)器,起始地址可以是0-63范圍內(nèi)任意一行。Z地址計(jì)數(shù)器具有循環(huán)計(jì)數(shù)功能,用于顯示行掃描同步,當(dāng)掃描完一行后自動(dòng)加一。</p><p><b>  (3)設(shè)置列地址</b></p><p>  功能: DDRA

45、M 的列地址存儲在Y地址計(jì)數(shù)器中,讀寫數(shù)據(jù)對列地址有影響,在對DDRAM進(jìn)行讀寫操作后,Y地址自動(dòng)加一。</p><p><b> ?。?)狀態(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地址計(jì)數(shù)器自動(dòng)加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地址計(jì)數(shù)器自動(dòng)加1。</p><p>  3.4.3 LCD12864電路接線</p><p>  單片機(jī)P2口作為指令/數(shù)據(jù)接口,右DB0-DB7輸入,數(shù)據(jù)命令選擇端RS接單片機(jī)P1.2,讀寫控制信號端R/W接單片機(jī)P1.1,使能端

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

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

51、已調(diào)制的指令編碼信號解調(diào)出來,即還原為編碼信號。指令譯碼器將編碼指令信號進(jìn)行譯碼,最后由驅(qū)動(dòng)電路來驅(qū)動(dòng)執(zhí)行電路實(shí)現(xiàn)各種指令的操作控制。其大致工作過程如圖3.11所示。</p><p>  圖3.11 紅外工作原理</p><p>  紅外遙控器采用通用遙控器,接收器為紅外接收頭,如圖3.11所示。圖3.12為紅外接收頭電路,其信號輸出端接單片機(jī)引腳P3.2。</p><

52、p>  圖3.11 紅外遙控器和接收頭 圖3.12 紅外接收頭電路</p><p><b>  4 系統(tǒng)軟件設(shè)計(jì)</b></p><p><b>  4.1 主程序設(shè)計(jì)</b></p><p>  本課題程序編寫為C語言,編譯軟件為Keil5,程序分為4個(gè)模塊,分別是主函數(shù)main.c、LCD128

53、64程序LCD12864.h、時(shí)鐘芯片DS1302程序DS1302.h和紅外遙控程序IRIN.h。程序流程圖如圖4.1所示。</p><p>  圖4.1 程序流程圖</p><p>  4.2 LCD12864驅(qū)動(dòng)程序</p><p>  圖4.2 12864寫操作時(shí)序</p><p>  根據(jù)以上寫時(shí)序,可以寫出寫指令函數(shù)和寫數(shù)據(jù)函數(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ù)據(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ù)時(shí),關(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、) //再寫入兩個(gè)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ū)動(dòng)程序</p><p>  DS1302讀寫時(shí)序如圖所示,圖4.4為

68、單字節(jié)讀時(shí)序,圖4.5為單字節(jié)寫時(shí)序。</p><p>  圖4.4 DS1302單字節(jié)讀時(shí)序</p><p>  圖4.5 DS1302單字節(jié)寫時(shí)序</p><p>  (1)DS1302寫一個(gè)字節(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> ?。?)寫入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_(); //啟動(dòng)</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é)合單片機(jī)P3.2口外部中斷INT0來執(zhí)行命令,紅外遙控器共21個(gè)按鍵,其鍵值分別為</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>  //確認(rèn)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、 //計(jì)算IR高電平時(shí)長</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計(jì)數(shù)過長自動(dòng)離開。</p><p>  } //高電平計(jì)數(shù)完畢 <

89、/p><p>  IRCOM[j]=IRCOM[j] >> 1; //數(shù)據(jù)最高位補(bǔ)“0”</p><p>  if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;} //數(shù)據(jù)最高位補(bǔ)“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 正常顯示日期時(shí)間畫面</p><p>  5.2 進(jìn)入調(diào)整時(shí)間日期畫面</p><p><b>

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

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

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

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

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

96、賀,張正吉,邱偉華,劉筠筠.LCD顯示模塊并行接口驅(qū)動(dòng)程序設(shè)計(jì)[J].國外電子測量技術(shù),2009,28(10)</p><p>  [3] 王海燕,楊艷華.Proteus和Keil軟件在單片機(jī)實(shí)驗(yàn)教學(xué)中的應(yīng)用[J] .實(shí)驗(yàn)室研究與探索,2012,31(5)</p><p>  [4] 黃明強(qiáng). DS1302在單片機(jī)系統(tǒng)中的應(yīng)用[J]. 保定師范專科學(xué)校學(xué)報(bào),2004,17(2)</p

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

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

99、1] 劉維紅,譚永超. 基于STC89C52單片機(jī)的電子時(shí)鐘研究[J]. 機(jī)電產(chǎn)品開發(fā)與創(chuàng)新, 2012,25(5)</p><p>  [12] 孫雪梅,范久臣. 實(shí)時(shí)時(shí)鐘芯片在單片機(jī)系統(tǒng)中的應(yīng)用[J].沈陽教育學(xué)院學(xué)報(bào),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ī)萬年歷設(shè)計(jì)[J].職大學(xué)報(bào),2009, 2(10)</p><p>  [15] 馮育長. 單片機(jī)系統(tǒng)設(shè)計(jì)與實(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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論