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

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  1 設(shè)計(jì)任務(wù)和方案</p><p><b>  1.1設(shè)計(jì)任務(wù)</b></p><p> ?。ㄒ唬┰O(shè)計(jì)題目:萬(wàn)年歷</p><p>  (二)設(shè)計(jì)目的與任務(wù):</p><p>  學(xué)生通過(guò)理論設(shè)計(jì)和實(shí)物制作解決相應(yīng)的實(shí)際問(wèn)題,鞏固和運(yùn)用在《單片機(jī)技術(shù)》中所學(xué)的理論知識(shí)和實(shí)驗(yàn)技能,掌握單片機(jī)應(yīng)用系統(tǒng)

2、的一般設(shè)計(jì)方法,提高設(shè)計(jì)能力和實(shí)踐動(dòng)手能力,為以后從事電子電路設(shè)計(jì)、研發(fā)電子產(chǎn)品打下良好的基礎(chǔ)。</p><p>  本次設(shè)計(jì)要能夠顯示年、月、日、時(shí)、分、秒、星期;其次,能對(duì)年、月、日、時(shí)、分、秒、星期進(jìn)行修改。</p><p><b>  1.2功能要求說(shuō)明</b></p><p>  這次項(xiàng)目共設(shè)定了十五個(gè)功能鍵,其中S1GN鍵至S8GN

3、鍵分別進(jìn)入相應(yīng)的功能模塊;S10GN鍵可以顯示此日是否有節(jié)日,是什么節(jié)日;S11GN鍵對(duì)選中的時(shí)間變量進(jìn)行減一;S12GN鍵對(duì)選中的時(shí)間變量進(jìn)行加一;S13GN鍵為退出鍵;S14GN鍵對(duì)所要修改的時(shí)間變量進(jìn)行移位選擇;S15GN鍵按下,即可對(duì)要修改的時(shí)間變量進(jìn)行修改,同時(shí)在要修改的地方用游標(biāo)顯示;S16GN鍵為確認(rèn)鍵。只有當(dāng)修改鍵按下時(shí)才能對(duì)時(shí)間進(jìn)行修改,當(dāng)時(shí)間修改完成后,按下節(jié)日鍵即可顯示此日是什么節(jié)日,再按下確認(rèn)鍵即可以顯示時(shí)間。&

4、lt;/p><p>  1.3設(shè)計(jì)總體方案及工作原理說(shuō)明</p><p>  1.3.1主控制器的選擇與比較</p><p>  方案(1):采用CPLD作為主控制器, 由于CPLD具有強(qiáng)大的資源,使用方便靈活,易于進(jìn)行功能擴(kuò)展,特別是結(jié)合了EDA,可以達(dá)到很高的效率。此方案邏輯電路復(fù)雜,且靈活性不高,不利于各種功能的擴(kuò)展。</p><p>  

5、方案(2):基于AT89S52單片機(jī)來(lái)實(shí)現(xiàn)系統(tǒng)的控制, 控制外圍電路進(jìn)行時(shí)鐘顯示,鍵盤(pán)控制和液晶顯示,此系統(tǒng)控制靈活,能很好地滿足本題的基本要求。</p><p>  由于本學(xué)期我們開(kāi)設(shè)了單片機(jī)這門(mén)課程,并且我在暑假期間參加單片機(jī)培訓(xùn)時(shí)使用的也是AT89S52單片機(jī)這塊芯片,因此對(duì)這塊芯片還是比較了解,故在此采用這塊芯片作為主控制器。</p><p>  1.3.2時(shí)鐘方案的選擇與比較&l

6、t;/p><p>  方案(1):AT89S52單片機(jī)內(nèi)部帶有定時(shí)/計(jì)數(shù)功能,此定時(shí)功能是通過(guò)對(duì)外部晶振的脈沖進(jìn)行計(jì)數(shù),從而達(dá)到計(jì)時(shí)功能,只要使用11.0592的晶振就能實(shí)現(xiàn)零誤差的計(jì)時(shí),因此可以利用此功能實(shí)現(xiàn)計(jì)時(shí),但因?yàn)橹挥袉我坏挠?jì)時(shí)功能要實(shí)現(xiàn)“萬(wàn)年歷”的功能需要較復(fù)雜的程序,而且如果單片機(jī)掉電無(wú)法繼續(xù)進(jìn)行計(jì)時(shí),所以使用不便。</p><p>  方案(2):DS1302是美國(guó)DALLAS公

7、司推出的一種高性能、低功耗的實(shí)時(shí)時(shí)鐘芯片,附加31字節(jié)靜態(tài)RAM,采用SPI三線接口與CPU進(jìn)行通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)和RAM數(shù)據(jù)。實(shí)時(shí)時(shí)鐘可提供秒、分、時(shí)、日、星期、月和年,一個(gè)月小與31天時(shí)可以自動(dòng)調(diào)整,且具有閏年補(bǔ)償功能。工作電壓寬達(dá)2.5~5.5V。采用雙電源供電(主電源和備用電源),可設(shè)置備用電源充電方式,提供了對(duì)后備電源進(jìn)行涓細(xì)電流充電的能力。利用單片機(jī)強(qiáng)大的控制功能就可實(shí)現(xiàn)實(shí)時(shí)計(jì)時(shí)的功能,而且消耗

8、的系統(tǒng)資源少,程序簡(jiǎn)單。</p><p>  綜合上述兩種方案,宜采用方案(2)實(shí)現(xiàn)實(shí)時(shí)計(jì)時(shí)功能。</p><p>  1.3.3按鍵模塊方案的選擇與比較</p><p>  方案(1): 矩陣式鍵盤(pán),行線的一端通過(guò)上拉電阻與單片機(jī)的P1口線的高四位相連,列線的一端也通過(guò)上拉電阻與單片機(jī)的P1口線低四位相連。矩陣式鍵盤(pán)結(jié)構(gòu)性好,使用于按鍵較多時(shí)的情況。</p&

9、gt;<p>  方案(2):獨(dú)立式鍵盤(pán), 每個(gè)按鍵的電路是獨(dú)立的,都有單獨(dú)一根數(shù)據(jù)線輸出鍵的通斷狀態(tài)。單片機(jī)一條I / O口線對(duì)應(yīng)一個(gè)按鍵。獨(dú)立式鍵盤(pán)結(jié)構(gòu)簡(jiǎn)單,易于編程,適用本實(shí)驗(yàn)按鍵較少的情況。</p><p>  由于這次設(shè)計(jì)中,使用的功能鍵比較多,若采用獨(dú)立式鍵盤(pán)占有的I/O口比較多,所以在這里采用行列式鍵盤(pán)。</p><p>  1.3.4顯示模塊方案的選擇與比較&

10、lt;/p><p>  方案(1):采用液晶顯示,液晶顯示是一種被動(dòng)式的顯示器,即液晶本身并不發(fā)光,而是利用液晶經(jīng)過(guò)處理后能改變光線通過(guò)的特性,而達(dá)到白底黑字的目的。液晶顯示功耗低,抗干擾能力強(qiáng),顯示信息豐富等特點(diǎn)。</p><p>  方案(2):數(shù)碼管是利用發(fā)光二極管的特性組合而成數(shù)字顯示器件,通過(guò)控制相應(yīng)的二極管的狀態(tài)顯示相應(yīng)的數(shù)字。要使數(shù)碼管正常顯示就得有驅(qū)動(dòng)電路驅(qū)動(dòng)相應(yīng)的段碼,數(shù)碼管

11、的現(xiàn)實(shí)方式可分為靜態(tài)顯示和動(dòng)態(tài)顯示,靜態(tài)顯示方式只適合顯示單個(gè)的數(shù)字,因此本設(shè)計(jì)應(yīng)采用動(dòng)態(tài)顯示方式。由于動(dòng)態(tài)顯示方式利用的是人眼視覺(jué)暫留的特性,掃描的時(shí)間應(yīng)不大于20毫秒,占用系統(tǒng)資源大,而且顯示的個(gè)數(shù)和字型有限,在本設(shè)計(jì)中不易采用。 </p><p>  由于此次要顯示的內(nèi)容比較多,故采用液晶作為顯示界面。</p><p>  總體的設(shè)計(jì)原理圖如圖1.1所示</p><

12、;p>  圖1.1 原理框圖</p><p>  萬(wàn)年歷的硬件系統(tǒng)的設(shè)計(jì)</p><p>  2.1 硬件系統(tǒng)各模塊功能簡(jiǎn)要介紹</p><p>  該萬(wàn)年歷主要由單片機(jī)最小系統(tǒng)、行列式鍵盤(pán)模塊、液晶顯示電路模塊、DS1302時(shí)鐘電路模塊和LED指示燈電路模塊組成。各模塊的功能如下:</p><p> ?。?)單片機(jī)最小系統(tǒng)<

13、/p><p>  由AT89S52單片機(jī)、時(shí)鐘電路和復(fù)位電路構(gòu)成。AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲(chǔ)器。時(shí)鐘電路由一個(gè)12MHz的石英晶體振蕩器和兩個(gè)33pF的的電容組成振蕩電路和分頻電路。復(fù)位電路采用上電復(fù)位和按鍵復(fù)位結(jié)合的方式對(duì)電路進(jìn)行復(fù)位,主要是通過(guò)RST引腳送入單片機(jī)。單片機(jī)最小系統(tǒng)為整個(gè)電路的核心。</p><p> ?。?)矩

14、陣式鍵盤(pán)模塊</p><p>  在鍵盤(pán)中按鍵數(shù)量較多時(shí),為了減少I/O口的占用,通常將按鍵排列成矩陣形式,如圖1所示。在矩陣式鍵盤(pán)中,每條水平線和垂直線在交叉處不直接連通,而是通過(guò)一個(gè)按鍵加以連接。這樣,一個(gè)端口(如P1口)就可以構(gòu)成4*4=16個(gè)按鍵,比之直接將端口線用于鍵盤(pán)多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比如再多加一條線就可以構(gòu)成20鍵的鍵盤(pán),而直接用端口線則只能多出一鍵(9鍵)。由此可見(jiàn),在需要的鍵

15、數(shù)比較多時(shí),采用矩陣法來(lái)做鍵盤(pán)是合理的。 </p><p>  矩陣式結(jié)構(gòu)的鍵盤(pán)顯然比直接法要復(fù)雜一些,識(shí)別也要復(fù)雜一些,上圖中,列線通過(guò)電阻接正電源,并將行線所接的單片機(jī)的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當(dāng)按鍵沒(méi)有按下時(shí),所有的輸出端都是高電平,代表無(wú)鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會(huì)被拉低,這樣,通過(guò)讀入輸入線的狀態(tài)就可得知是否有鍵按下了。</p>&

16、lt;p>  (3)液晶顯示電路模塊</p><p>  這次使用的是12864液晶芯片,接在單片機(jī)P0口。通常所說(shuō)的12864LCD顯示塊是所說(shuō)的點(diǎn)陣液晶顯示模塊,就是由128*64個(gè)液晶顯示點(diǎn)組成的一個(gè)128列*64行的陣列,所以也就叫成了12864。每個(gè)顯示點(diǎn)都對(duì)應(yīng)著有一位二進(jìn)制數(shù),0表示滅,1表示亮。存儲(chǔ)這些點(diǎn)陣信息的RAM被稱為顯示數(shù)據(jù)存儲(chǔ)器。如果要顯示某個(gè)圖形或漢字就是將相應(yīng)的點(diǎn)陣信息寫(xiě)入到對(duì)應(yīng)

17、的存儲(chǔ)單元中。圖形或漢字的點(diǎn)陣信息是由自己設(shè)計(jì),這時(shí)候問(wèn)題的關(guān)鍵是顯示點(diǎn)在液晶屏上的位置與其在存儲(chǔ)器中的地址之間的關(guān)系。</p><p>  顯示點(diǎn)在64*64液晶屏上的位置由列號(hào)(line,0~63)與行號(hào)(line,0~63)確定。512*8 bits RAM中某個(gè)存儲(chǔ)單元的地址由頁(yè)地址(Xpage,0~7)和列地址(Yaddress,0~63)確定。每個(gè)存儲(chǔ)單元存儲(chǔ)8個(gè)液晶點(diǎn)的顯示信息。</p>

18、<p> ?。?)DS1302電路模塊</p><p>  DS1302是美國(guó)DALLAS公司推出的一種高性能、低功耗的實(shí)時(shí)時(shí)鐘芯片,附加31字節(jié)靜態(tài)RAM,采用SPI三線接口與CPU進(jìn)行通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)和RAM數(shù)據(jù)。實(shí)時(shí)時(shí)鐘可提供秒、分、時(shí)、日、星期、月和年,一個(gè)月小與31天時(shí)可以自動(dòng)調(diào)整,且具有閏年補(bǔ)償功能。工作電壓寬達(dá)2.5~5.5V。采用雙電源供電(主電源和備

19、用電源),可設(shè)置備用電源充電方式,提供了對(duì)后備電源進(jìn)行涓細(xì)電流充電的能力。</p><p><b>  各引腳的功能為:</b></p><p>  Vcc1:備用電池端;</p><p>  Vcc2:5V電源。當(dāng)Vcc2>Vcc1+0.2V時(shí),由Vcc2向DS1302供電,當(dāng)Vcc2< Vcc1時(shí),由Vcc1向DS1302供電。

20、</p><p>  SCLK:串行時(shí)鐘,輸入;  </p><p>  I/O:數(shù)據(jù)輸入輸出口;</p><p>  CE/RST:復(fù)位腳</p><p>  、X1、X2 是外接晶振腳 (32.768KHz的晶振)</p><p><b>  地(GND)</b></p>

21、<p>  圖2.1DS1302引腳圖</p><p> ?。?)LED指示燈電路模塊</p><p>  單片機(jī)P3.2口線上經(jīng)過(guò)一個(gè)470Ω的電阻與LED燈的陰極相連接,LED燈的陽(yáng)極接正五伏電壓。470Ω的電阻起限流的作用。LED指示燈電路模塊主要用來(lái)指示用違規(guī)操作發(fā)生。</p><p>  電路原理圖、PCB圖和元器件布局圖</p>

22、<p>  Protel原理圖、PCB圖以及元器件布局圖分別見(jiàn)附錄1附錄2與附錄3。 </p><p><b>  元器件清單</b></p><p>  元器件清單見(jiàn)附錄4。</p><p>  3 萬(wàn)年歷軟件系統(tǒng)的設(shè)計(jì)</p><p>  3.1 使用的單片機(jī)資源的情況</p>&l

23、t;p>  萬(wàn)年歷用到了單片機(jī)的定時(shí)器的功能,定時(shí)器1采用工作方式1并以中斷方式工作;在數(shù)據(jù)的顯示時(shí)采用的是查表的方法,因此需要將表格、數(shù)據(jù)存到單片機(jī)的程序存儲(chǔ)器中去;用到了波特率發(fā)生器與DS1302相連</p><p>  本設(shè)計(jì)采用矩陣式鍵盤(pán),鍵盤(pán)直接接在P1口上且按鍵的結(jié)果存貯在單片機(jī)的內(nèi)部數(shù)據(jù)存儲(chǔ)器里面。用到的液晶顯示器接到了單片機(jī)的P0口線上和P3口線上。DS1302接在單片機(jī)P3口線上。 <

24、;/p><p>  3.2 各模塊功能簡(jiǎn)要介紹</p><p>  該搶答器所用的軟件模塊有定時(shí)器模塊、按鍵模塊、液晶顯示模塊、時(shí)鐘芯片模塊。</p><p><b> ?。?)定時(shí)器模塊</b></p><p>  選擇定時(shí)器1,設(shè)置定時(shí)器定時(shí)方式為方式1以中斷方式工作,設(shè)置定時(shí)時(shí)間為50mS。</p>&

25、lt;p><b>  (2)按鍵模塊</b></p><p>  采用矩陣式鍵盤(pán),共用15個(gè)按鍵對(duì)電路進(jìn)行控制和操作,分別為S1GN至S8GN來(lái)控制選擇相應(yīng)功能模塊。S10GN顯示相應(yīng)的節(jié)日;S11GN、S12GN、分別對(duì)時(shí)間變量進(jìn)行減與加法處理;S13GN退出鍵、S14GN為移動(dòng)修改變量鍵、S15GN為修改鍵S16GN為退出鍵。</p><p><b&g

26、t; ?。?)液晶顯示模塊</b></p><p>  液晶初始時(shí)顯示{1.萬(wàn)年歷2.點(diǎn)陣屏3.頻率計(jì)4.密碼鎖5.信號(hào)源6.電壓表7.溫度計(jì)8.計(jì)算器};進(jìn)入萬(wàn)年歷界面后顯示初始時(shí)間2008年2月19日12時(shí)20分10秒星期四。</p><p><b> ?。?)時(shí)鐘模塊</b></p><p>  DS1302有自帶的時(shí)間且比較

27、精確。因此只要學(xué)會(huì)如何去讀取,以及如何向其寫(xiě)入數(shù)據(jù),即可利用其內(nèi)部時(shí)鐘。</p><p>  3.3 程序的流程框圖</p><p> ?。?)主程序流程框圖</p><p><b>  如圖3.1所示。</b></p><p>  圖3.1 主程序流程框圖</p><p>  (2)萬(wàn)年歷功

28、能流程框圖</p><p>  萬(wàn)年歷流程框圖如圖3.2所示。</p><p>  圖3.2 萬(wàn)年歷功能流程框圖</p><p>  (3)萬(wàn)年歷修改函數(shù)程序流程框圖</p><p>  萬(wàn)年歷修改程序流程框圖如圖3.3所示。</p><p>  圖3.3 修改函數(shù)程序流程框圖</p><p&g

29、t;  (4)修改天數(shù)程序流程框圖</p><p>  修改天數(shù)程序流程框圖如圖3.4所示。</p><p>  圖3.4 修改天數(shù)程序流程框圖</p><p>  (5)顯示節(jié)日程序流程框圖</p><p>  顯示節(jié)日程序流程框圖如圖3.5所示。</p><p>  圖3.5 顯示節(jié)日程序流程框圖</p&

30、gt;<p><b>  3.4程序清單</b></p><p><b>  見(jiàn)附錄5。</b></p><p>  4 萬(wàn)年歷設(shè)計(jì)結(jié)論、仿真結(jié)果和教學(xué)建議</p><p><b>  設(shè)計(jì)結(jié)論和使用說(shuō)明</b></p><p><b> ?。?)設(shè)計(jì)

31、結(jié)論</b></p><p>  通過(guò)對(duì)單片機(jī)進(jìn)行外接鍵盤(pán)和液晶顯示器及DS1302時(shí)鐘芯片的操作以及加上硬件電路和軟件設(shè)計(jì)相結(jié)合,實(shí)現(xiàn)了對(duì)萬(wàn)年歷的年、月、日、時(shí)、分、秒、星期的顯示,并能人為的對(duì)年、月、日、時(shí)、分、秒、星期進(jìn)行修改,同時(shí)還可以顯示出相應(yīng)的節(jié)日。</p><p>  但其上電時(shí)顯示{ 湖南 工學(xué)院 , 自本0801 ,Made in China

32、 , 文 亮 },閃爍三次后顯示{1.萬(wàn)年歷2.點(diǎn)陣屏3.頻率計(jì)4.密碼鎖5.信號(hào)源6.電壓表7.溫度計(jì)8.計(jì)算器};進(jìn)入萬(wàn)年歷界面后顯示初始時(shí)間2008年2月19日12時(shí)20分10秒星期四。</p><p><b>  仿真結(jié)果</b></p><p>  在仿真時(shí)用要兩個(gè)軟件,第一個(gè)是Keil,第二個(gè)是Proteus,本次仿真是將兩個(gè)軟件結(jié)合起

33、來(lái)進(jìn)行的。運(yùn)用Keil軟件用來(lái)編譯和調(diào)試程序,運(yùn)用Ptoteus軟件來(lái)仿真。</p><p>  這次設(shè)計(jì)已在Keil中調(diào)試成功并運(yùn)行無(wú)誤,但在Ptoteus仿真軟件中沒(méi)有找到合適的仿真模型,因此沒(méi)有仿真運(yùn)行結(jié)果。但是在實(shí)物上運(yùn)行結(jié)果完全正常無(wú)誤,特此用手機(jī)將運(yùn)行結(jié)果拍攝下來(lái),如下圖所示</p><p>  圖4.1 萬(wàn)年歷界面圖</p><p>  圖4.2

34、萬(wàn)年歷初始時(shí)間圖</p><p>  圖4.3 節(jié)日顯示結(jié)果圖</p><p>  圖4.4 節(jié)日顯示結(jié)果圖</p><p><b>  4.3設(shè)計(jì)體會(huì)</b></p><p>  本次我設(shè)計(jì)的萬(wàn)年歷已經(jīng)能夠完成任務(wù),達(dá)到了設(shè)計(jì)要求。這次設(shè)計(jì)的巧妙之處就在于我編寫(xiě)了許多函數(shù),把每一個(gè)功能分塊做成一個(gè)一個(gè)的子函數(shù),再去

35、調(diào)用這些子函數(shù),因此使讀者很容易讀懂,且為今后在做類似方面課程設(shè)計(jì)提供了方便之處。其次我編寫(xiě)的顯示節(jié)日的功能也比較新穎,這個(gè)想法是我在網(wǎng)上查找如何將陽(yáng)歷轉(zhuǎn)換為陰歷時(shí)無(wú)意中發(fā)現(xiàn)的,這是在一份C語(yǔ)言的課程設(shè)計(jì)中看到這個(gè)想法的,我在結(jié)合自己對(duì)硬件的了解成功的實(shí)現(xiàn)了這一功能,覺(jué)得無(wú)比的欣慰。</p><p>  我所用的實(shí)物板子的電路雖然不是自己設(shè)計(jì)的,是在暑假培訓(xùn)時(shí)按照老師給我的原理圖自己制作的PCB板,在暑期的兩個(gè)月

36、培訓(xùn)過(guò)程中我已經(jīng)基本掌握了其硬件設(shè)計(jì)原理,并懂得了如何去使用這些功能模塊,我的硬件設(shè)計(jì)與軟件設(shè)計(jì)能力也得到了一定程度的提高。</p><p>  在這次課程設(shè)計(jì)中我本來(lái)還想加上鬧鈴功能,但由于時(shí)間的關(guān)系未能完成,以后我會(huì)更加努力完善其功能。</p><p><b>  4.4教學(xué)建議</b></p><p>  在我的印象中王老師總是對(duì)我們嚴(yán)格

37、的要求,好像片刻也不能讓我們放下學(xué)習(xí)的腳步,雖然我們覺(jué)得很累,正是在您這種嚴(yán)格的要求下我們才能真正的學(xué)到知識(shí)。王老師你一直在向我們灌輸勤實(shí)踐的思想對(duì)我們的學(xué)習(xí)帶來(lái)了很大的幫助,我們用我們辛勤的奮斗學(xué)到了許多書(shū)本上沒(méi)有的但很實(shí)用的知識(shí),我覺(jué)得王老師應(yīng)該繼續(xù)向下一屆學(xué)生灌輸這種思想</p><p><b>  參考文獻(xiàn)</b></p><p> ?。?]馬忠梅,籍順心,張

38、凱,馬巖.單片機(jī)的C語(yǔ)言應(yīng)用程序設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,2006</p><p>  Ma Zhongmei,J, Zhang Kai, MaYan. MCU C language program design [M] .beijing: Beijing aerospace university press, 2006</p><p> ?。?]李廣弟,朱月秀,冷祖祁.單

39、片機(jī)基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社,2007</p><p>  Li Guangdi, ZhuYuexiu, Leng Zuqi. Microcontroller [M] .beijing: Beijing university of aeronautics and press, 2007 </p><p><b>  致 謝</b></p>

40、<p>  在這里我要感謝XX老師這段時(shí)間對(duì)我的悉心教誨,這段時(shí)間我確實(shí)學(xué)到了很多實(shí)用的知識(shí),同時(shí)經(jīng)過(guò)不斷的實(shí)踐操作,我也加深了對(duì)理論的理解。正是在這學(xué)期的單片機(jī)學(xué)習(xí)過(guò)程中我的硬件設(shè)計(jì)能力與軟件設(shè)計(jì)能力有了相當(dāng)大程度提高,在這里我感覺(jué)學(xué)到了正真的知識(shí),我對(duì)今后就業(yè)也充滿了信心,真心的感謝王老師對(duì)我的幫助!</p><p><b>  附 錄1</b></p>&

41、lt;p><b>  圖1原理圖</b></p><p><b>  圖2矩陣式鍵盤(pán)</b></p><p><b>  附 錄2</b></p><p>  圖1加液晶最小系統(tǒng)PCB頂層圖</p><p>  圖2加液晶最小系統(tǒng)PCB底層圖</p>&l

42、t;p>  圖3矩陣式鍵盤(pán)PCB圖</p><p><b>  附 錄3</b></p><p><b>  圖1布局圖</b></p><p><b>  附 錄4</b></p><p>  表4.1 元器件清單</p><p>&l

43、t;b>  附 錄5</b></p><p>  /*******************************************************************************</p><p>  * 描述:

44、 *</p><p>  * AT89S52液晶演示 數(shù)據(jù)p0,控制p1 *</p><p>  * 功能: *</p><p>  * 萬(wàn)年歷 *</p><p>  * 技術(shù)支持:

45、 *</p><p>  * 湖南工學(xué)院 *</p><p>  * *</p><p>  * *

46、 *</p><p>  ********************************************************************************/</p><p>  #include <reg52.h></p><p>  #include <intrins.h></p>

47、<p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  /******************引腳定義區(qū)********************/</p><p>  #define LCD_data P0 /*數(shù)據(jù)口*/</

48、p><p>  sbit LCD_RS = P3^0; /*寄存器選擇輸入*/ </p><p>  sbit LCD_RW = P3^1; /*液晶讀/寫(xiě)控制*/</p><p>  sbit LCD_EN = P3^5; /*液晶使能控制*/</p><p>  sbit LCD_PSB =

49、 P3^2; /*串/并方式控制*/</p><p>  sbit LCD_RST = P3^7; /*液晶復(fù)位引腳*/</p><p>  sbit LE=P3^6; /*373引腳*/</p><p>  sbit L1 =P3^7;/*DS1302引腳*/</p><p>  sb

50、it SCK=P3^2;/*DS1302引腳*/</p><p>  sbit SCL= P3^3;/*DS1302引腳*/</p><p>  sbit RST=P3^4; /*DS1302引腳*/</p><p>  /******************變量定義區(qū)*********************/</p>&l

51、t;p>  uchar key;</p><p>  uchar keyy;</p><p>  uchar keyx=0;</p><p>  uchar q=0;</p><p><b>  uchar i;</b></p><p>  uchar f_50ms;</p>

52、<p>  uchar f_x=0;</p><p>  uchar tmp;</p><p>  uchar tmp2;</p><p><b>  char p;</b></p><p><b>  uchar ar;</b></p><p>  uchar a

53、r0;</p><p>  uchar leap=1;</p><p>  /**********************/</p><p>  bit ReadRTC_Flag;</p><p>  bit timer;</p><p>  /*************************************

54、********************/</p><p>  #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};</p><p>  /*************************字符數(shù)組定義區(qū)********************************/</p><p>  /********

55、* *開(kāi)機(jī)界面顯示字符***********/</p><p>  uchar code DIS1[] = {" 湖南 工學(xué)院 "};</p><p>  uchar code DIS2[] = {" 自本0801 "};</p><p>  uchar code DIS3[] = {"

56、Made in China "};</p><p>  uchar code DIS4[] = {" 文 亮 "};</p><p>  /**************菜單顯示字符**************/</p><p>  uchar code DIS5[] = {"1.萬(wàn)年歷2.點(diǎn)陣屏&quo

57、t;};</p><p>  uchar code DIS6[] = {"3.頻率計(jì)4.密碼鎖"};</p><p>  uchar code DIS7[] = {"5.信號(hào)源6.電壓表"};</p><p>  uchar code DIS8[] = {"7.溫度計(jì)8.計(jì)算器"};</p>

58、;<p>  /**********************************************/</p><p>  uchar code DIS19[] = {" 今天無(wú)節(jié)日 "};</p><p>  uchar code DIS20[] = {" 元旦快了 "};</p><

59、;p>  uchar code DIS21[] = {" 世界麻風(fēng)日 "};</p><p>  uchar code DIS22[] = {" 春節(jié)快樂(lè) "};</p><p>  uchar code DIS23[] = {" 元宵節(jié)快樂(lè) "};</p><p>

60、  uchar code DIS24[] = {" 青龍節(jié) "};</p><p>  uchar code DIS25[] = {" 世界濕地日 "};</p><p>  uchar code DIS26[] = {" 明天情人節(jié)了 "};</p><p>  ucha

61、r code DIS27[] = {" 情人節(jié)快樂(lè)了 "};</p><p>  uchar code DIS28[] = {" 國(guó)際海豹日 "};</p><p>  uchar code DIS29[] = {" 全國(guó)愛(ài)耳日 "};</p><p>  uchar code

62、DIS30[] = {"明天是結(jié)婚紀(jì)念日"};</p><p>  uchar code DIS31[] = {"3.8 結(jié)婚紀(jì)念日 "};</p><p>  uchar code DIS32[] = {" 植樹(shù)節(jié) "};</p><p>  uchar code DIS33[]

63、= {" 國(guó)際警察日 "};</p><p>  uchar code DIS34[] = {" 消費(fèi)者權(quán)益日 "};</p><p>  uchar code DIS35[] = {" 國(guó)際航海日 "};</p><p>  uchar code DIS36[] = {"

64、; 世界森林日 "};</p><p>  uchar code DIS37[] = {" 世界水日 "};</p><p>  uchar code DIS38[] = {" 世界氣象日 "};</p><p>  uchar code DIS39[] = {"世界防治結(jié)

65、核病日"};</p><p>  uchar code DIS40[] = {"愚人節(jié) 小心上當(dāng)"};</p><p>  uchar code DIS41[] = {" 世界衛(wèi)生日 "};</p><p>  uchar code DIS42[] = {" 復(fù)活節(jié) &quo

66、t;};</p><p>  uchar code DIS43[] = {" 黑色星期五 "};</p><p>  uchar code DIS44[] = {" 端午節(jié)快樂(lè) "};</p><p>  uchar code DIS45[] = {" 勞動(dòng)節(jié)快了 "};<

67、;/p><p>  uchar code DIS46[] = {" 五四青年節(jié) "};</p><p>  uchar code DIS47[] = {" 世界紅十字日 "};</p><p>  uchar code DIS48[] = {" 國(guó)際護(hù)士節(jié) "};</p>

68、<p>  uchar code DIS49[] = {"近日注意母親節(jié) "};</p><p>  uchar code DIS50[] = {" 國(guó)際家庭日 "};</p><p>  uchar code DIS51[] = {" 世界無(wú)煙日 "};</p><p>

69、;  uchar code DIS52[] = {" 國(guó)際兒童節(jié) "};</p><p>  uchar code DIS53[] = {" 世界環(huán)境日 "};</p><p>  uchar code DIS54[] = {" 國(guó)際禁毒日 "};</p><p>  ucha

70、r code DIS55[] = {" 全國(guó)愛(ài)眼日 "};</p><p>  uchar code DIS56[] = {"近日注意父親節(jié) "};</p><p>  uchar code DIS57[] = {"近日注意父親節(jié) "};</p><p>  uchar code DIS

71、58[] = {"乞巧節(jié)中國(guó)情人節(jié)"};</p><p>  uchar code DIS59[] = {" 中元節(jié)快樂(lè) "};</p><p>  uchar code DIS60[] = {"香港回歸記念日 "};</p><p>  uchar code DIS61[] = {&quo

72、t;抗日戰(zhàn)爭(zhēng)記念日 "};</p><p>  uchar code DIS62[] = {" 世界人口日 "};</p><p>  uchar code DIS63[] = {" 中秋節(jié)快樂(lè) "};</p><p>  uchar code DIS64[] = {" 八一建軍節(jié)

73、 "};</p><p>  uchar code DIS65[] = {" 中國(guó)男子節(jié) "};</p><p>  uchar code DIS66[] = {"抗戰(zhàn)勝利記念日 "};</p><p>  uchar code DIS67[] = {" 今日重陽(yáng)節(jié) "

74、;};</p><p>  uchar code DIS68[] = {" 中國(guó)教師節(jié) "};</p><p>  uchar code DIS69[] = {"九·一八事變記念"};</p><p>  uchar code DIS70[] = {" 國(guó)際愛(ài)牙日 "};&l

75、t;/p><p>  uchar code DIS71[] = {" 世界旅游日 "};</p><p>  uchar code DIS72[] = {" 中國(guó)國(guó)慶節(jié) "};</p><p>  uchar code DIS73[] = {" 世界動(dòng)物日 "};</p>

76、;<p>  uchar code DIS74[] = {" 聯(lián)合國(guó)日 "};</p><p>  uchar code DIS75[] = {"明天國(guó)際教師節(jié) "};</p><p>  uchar code DIS76[] = {" 國(guó)際教師節(jié) "};</p><p

77、>  uchar code DIS77[] = {" 世界青年節(jié) "};</p><p>  uchar code DIS78[] = {" 世界學(xué)生節(jié) "};</p><p>  uchar code DIS79[] = {" 世界艾滋病日 "};</p><p>  uc

78、har code DIS80[] = {" 明晚平安夜 "};</p><p>  uchar code DIS81[] = {" 今晚平安夜 "};</p><p>  uchar code DIS82[] = {" 圣誕快樂(lè) "};</p><p>  uchar co

79、de DIS83[] = {" 明日新年 "};</p><p>  uchar code DIS84[] = {" ★★凌晨☆☆ "};</p><p>  uchar code DIS85[] = {" ☆○早晨○● "};</p><p>  uchar code DIS8

80、6[] = {" ○●上午●● "};</p><p>  uchar code DIS87[] = {" ●●中午●● "};</p><p>  uchar code DIS88[] = {" ●●下午●○ "};</p><p>  uchar code DIS89[] = {&qu

81、ot; ○☆晚上☆★ "};</p><p>  uchar code DIS90[] = {" ★☆夜晚★★ "};</p><p>  uchar code DIS91[] = {" ★★深夜★★ "};</p><p>  /**************************萬(wàn)年歷顯示字符**

82、*******************************/</p><p>  uchar code yejingtable[]</p><p>  = {0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39/*,0x03,0x2d*/};//0--9</p><p>  uchar l_tmpdate[7] =

83、{10, 20, 12, 19, 2, 4, 8};//秒分時(shí)日月周年08-05-15 12:00:00</p><p>  // 0 1 2 3 4 5 6</p><p>  // 秒,分,時(shí),日,月 ,周, 年</p><p>  uchar l_tmpdisplay[14];</p

84、><p>  code uchar write_rtc_address[7] = {0x80,0x82,0x84,0x86,0x88,0x8a,0x8c}; //秒分時(shí)日月周年 最低位讀寫(xiě)位</p><p>  code uchar read_rtc_address[7] = {0x81,0x83,0x85,0x87,0x89,0x8b,0x8d}; </p><p&g

85、t;  uchar code DIS11[] = ("時(shí)分秒年月日星期");</p><p>  uchar code DIS121[] = ("修改");</p><p>  uchar code DIS12[] = ("一二三四五六七");</p><p>  uchar code DIS

86、122[] = ("確認(rèn)");</p><p>  uchar code DIS423[] = {"退出"};</p><p>  uchar code DIS123[] = {"鬧鐘"};</p><p>  uchar code DIS124[] = {"鬧鐘設(shè)定"};<

87、;/p><p>  /*********************************************************************************/</p><p>  uchar panduan(year)</p><p><b>  {</b></p><p>  if((l_tm

88、pdate[6]%4==0&l_tmpdate[6]%100!=0)||year%400==0)</p><p><b>  {leap=1;}</b></p><p>  else{leap=0;}</p><p>  return(leap);</p><p><b>  }</b>&l

89、t;/p><p>  /*******************************************************************/</p><p>  /* */</p><p>  /* 延時(shí)函數(shù)

90、 */</p><p>  /* */</p><p>  /******************************************************

91、*************/</p><p>  void delay(int ms)</p><p><b>  {</b></p><p>  while(ms--)</p><p><b>  {</b></p><p><b>  uchar i;</

92、b></p><p>  for(i=0;i<150;i++) </p><p><b>  {</b></p><p>  _nop_(); </p><p><b>  _nop_();</b></p><p><b>  _nop_()

93、;</b></p><p><b>  _nop_();</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  /*****

94、**************************************************************/</p><p>  /* */</p><p>  /*檢查L(zhǎng)CD忙狀態(tài)

95、 */</p><p>  /*lcd_busy為1時(shí),忙,等待。lcd-busy為0時(shí),閑,可寫(xiě)指令與數(shù)據(jù)。 */</p><p>  /* */</p><p>  /**********

96、*********************************************************/</p><p>  bit lcd_busy()</p><p><b>  {</b></p><p>  bit result=0;</p><p>  LCD_RS =0;</p>

97、<p>  LCD_RW =1; </p><p>  LCD_EN =1; </p><p>  delayNOP();</p><p>  result = (bit)(P0&0x80);</p><p>  LCD_EN = 0;</p><p>  return(result); <

98、/p><p><b>  }</b></p><p>  /*******************************************************************/</p><p>  /*

99、 */</p><p>  /*寫(xiě)指令數(shù)據(jù)到LCD */</p><p>  /*RS=L,RW=L,E=高脈沖,D0-D7=指令碼。 */</p><p>  /*

100、 */</p><p>  /*******************************************************************/</p><p>  void writecommand(uchar cmd)/*寫(xiě)指令數(shù)據(jù)到LCD*/</p><p>

101、;  { </p><p>  while(lcd_busy());/*只有不忙的時(shí)候才能寫(xiě)指令*/</p><p>  LCD_RS = 0;</p><p>  LCD_RW = 0;</p><p>  LCD_EN = 0;</p><p><b>

102、;  _nop_();</b></p><p><b>  _nop_(); </b></p><p>  P0 = cmd;/*cmd代表指令*/</p><p>  delayNOP();</p><p>  LCD_EN = 1;</p><p>  delayNOP()

103、;</p><p>  LCD_EN = 0; </p><p><b>  }</b></p><p>  /*******************************************************************/</p><p>  /*

104、 */</p><p>  /*寫(xiě)顯示數(shù)據(jù)到LCD */</p><p>  /*RS=H,RW=L,E=高脈沖,D0-D7=數(shù)據(jù)。 */</p&

105、gt;<p>  /* */</p><p>  /*******************************************************************/</p><p>  void writedata(uint

106、dat)/*寫(xiě)顯示數(shù)據(jù)到LCD*/</p><p>  { </p><p>  while(lcd_busy());/*只有不忙的時(shí)候才能寫(xiě)顯示數(shù)據(jù)*/</p><p>  LCD_RS = 1;</p><p>  LCD_RW = 0;</p><p>  

107、LCD_EN = 1;</p><p><b>  _nop_();</b></p><p><b>  _nop_(); </b></p><p>  P0 = dat;/*dat代表顯示數(shù)據(jù),是8位的二進(jìn)制數(shù)*/</p><p><b>  _nop_();</b>

108、</p><p><b>  _nop_(); </b></p><p>  LCD_EN = 0; </p><p><b>  }</b></p><p>  /*******************************************************************

109、/</p><p>  /* */</p><p>  /* LCD初始化設(shè)定 */</p><p>  /*

110、 */</p><p>  /*******************************************************************/</p><p>  void lcd_init()</p><p><b>  { <

111、/b></p><p>  LCD_PSB = 1; //并口方式</p><p>  LCD_RST = 0; //液晶復(fù)位</p><p>  delay(3); </p><p>  LCD_RST = 1; </p><p>  // d

112、elay(3);</p><p><b>  delay(5);</b></p><p>  writecommand(0x30); //基本指令操作</p><p><b>  delay(5);</b></p><p>  writecommand(0x0C); //顯示開(kāi),

113、關(guān)光標(biāo)</p><p><b>  delay(5);</b></p><p>  writecommand(0x01); //清除LCD的顯示內(nèi)容</p><p><b>  delay(5);</b></p><p><b>  }</b></p>

114、<p>  /*********************************************************/</p><p>  /* */</p><p>  /* 設(shè)定顯示位置

115、 */</p><p>  /* */</p><p>  /*********************************************************/</p><p>  void lcd_pos(uchar X,ucha

116、r Y)</p><p>  { </p><p>  uchar pos;</p><p><b>  if (X==1)</b></p><p><b>  {X=0x80;}</b></p><p>  else if

117、 (X==2)</p><p><b>  {X=0x90;}</b></p><p>  else if (X==3)</p><p><b>  {X=0x88;}</b></p><p>  else if (X==4)</p><p><b>  {X=0x

118、98;}</b></p><p>  pos = X+Y ; </p><p>  writecommand(pos); //顯示地址</p><p><b>  }</b></p><p>  /****************************************************

119、*****</p><p>  * *</p><p>  * 閃爍函數(shù) *</p><p>  *

120、 *</p><p>  *********************************************************/</p><p>  void lcdflag() </p><p><b>  {</b></p><p>  writecomman

121、d(0x08); </p><p>  delay(300);</p><p>  writecommand(0x0c); </p><p>  delay(300);</p><p>  writecommand(0x08); </p><p>  delay(300);</p>&

122、lt;p>  writecommand(0x0c); </p><p>  delay(300);</p><p>  writecommand(0x08); </p><p>  delay(300); </p><p>  writecommand(0x0c); </p><p>  delay(

123、300);</p><p>  writecommand(0x01); /*清屏*/</p><p><b>  delay(5);</b></p><p><b>  }</b></p><p>  /*******************************************

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論