2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩35頁(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><b>  Xxxx大學(xué)</b></p><p><b>  畢業(yè)設(shè)計(jì)</b></p><p>  設(shè)計(jì)項(xiàng)目: 萬(wàn)年歷 </p><p>  系 別: </p><p>  專 業(yè):

2、 </p><p>  學(xué) 號(hào): </p><p>  姓 名: </p><p>  指導(dǎo)老師: </p><p>  完成時(shí)間:

3、 </p><p><b>  目 錄</b></p><p>  一、引言…………………………………………………2</p><p>  二、設(shè)計(jì)目的及要求……………………………………2</p><p>  1、設(shè)計(jì)任務(wù)…………………………………………… 2<

4、/p><p>  2、實(shí)現(xiàn)功能…………………………………………… 2</p><p>  三、設(shè)計(jì)原理及內(nèi)容……………………………………3</p><p>  1、硬件介紹……………………………………………3</p><p>  2、電路功能單元設(shè)計(jì)……………………………………7</p><p>  四、設(shè)計(jì)結(jié)論……………

5、………………………………9</p><p>  五、設(shè)計(jì)感想……………………………………………9</p><p>  參考文獻(xiàn)…………………………………………………11</p><p>  附錄一:原理圖…………………………………………12</p><p>  附錄二:程序清單………………………………………13</p><

6、p>  可調(diào)萬(wàn)年歷系統(tǒng)的設(shè)計(jì)</p><p><b>  引言</b></p><p>  液晶顯示模塊在各種測(cè)量?jī)x器、測(cè)量裝置、顯示儀表等日用電子產(chǎn)品中的應(yīng)用越來(lái)越廣泛,并且對(duì)器件的測(cè)量精度和顯示精度的要求也越來(lái)越高,尤其是對(duì)時(shí)間的測(cè)量不但要準(zhǔn)確,而且需要讀取數(shù)值更直觀更方便。</p><p>  本文介紹由單片機(jī)AT89C52和DS1

7、302控制12864點(diǎn)陣液晶顯示模塊實(shí)現(xiàn)電子萬(wàn)年歷的設(shè)計(jì),并且用Proteus軟件對(duì)整個(gè)電路進(jìn)行模擬和仿真。</p><p>  關(guān)鍵詞:?jiǎn)纹瑱C(jī) DS1302 LCD12864 DS18B20</p><p><b>  設(shè)計(jì)目的及要求</b></p><p><b>  1.設(shè)計(jì)任務(wù)</b></p>

8、<p>  本系統(tǒng)設(shè)計(jì)中使用的單片機(jī)為AT89C52,其內(nèi)部是8位的CPU,8KB片內(nèi)ROM以及256B的可使用的片內(nèi)RAM,32根并行I/O接口,兩個(gè)16位的定時(shí)/計(jì)數(shù)器,五個(gè)中斷源,兩個(gè)中斷優(yōu)先級(jí)的內(nèi)部結(jié)構(gòu)。其中單片機(jī)的外圍電路有復(fù)位電路,時(shí)鐘電路。從而實(shí)現(xiàn)時(shí)間設(shè)置和鬧鐘設(shè)置。</p><p><b>  2、實(shí)現(xiàn)功能</b></p><p>  本

9、系統(tǒng)由單片機(jī)系統(tǒng)、列陣鍵盤、LCD顯示和警報(bào)系統(tǒng)組成。系統(tǒng)能完成時(shí)間顯示,日期顯示,溫度顯示,按鍵操作等功能。系統(tǒng)成本低廉,功能實(shí)用,操作方便,顯示直觀。</p><p><b>  圖1 效果圖</b></p><p><b>  三、設(shè)計(jì)原理及內(nèi)容</b></p><p><b>  1、硬件介紹</

10、b></p><p>  1.1 AT89C52單片機(jī)</p><p>  AT89C52是一個(gè)低電壓,高性能CMOS 8位單片機(jī)帶有4K字節(jié)的可反復(fù)擦寫的程序存儲(chǔ)器(PENROM)和128字節(jié)的存取數(shù)據(jù)存儲(chǔ)器(RAM),這種器件采用ATMEL公司的高密度、不容易丟失存儲(chǔ)技術(shù)生產(chǎn),并且能夠與MCS-51系列的單片機(jī)兼容。片內(nèi)含有8位中央處理器和閃爍存儲(chǔ)單元,有較強(qiáng)的功能的AT80C

11、52單片機(jī)能夠被應(yīng)用到控制領(lǐng)域中。(見(jiàn)圖2所示)</p><p>  圖2 單片機(jī)外形圖及引腳排列</p><p>  1) AT8952主要性能:</p><p>  AT89C52提供以下的功能標(biāo)準(zhǔn):8K字節(jié)閃爍存儲(chǔ)器,256字節(jié)隨機(jī)存取數(shù)據(jù)存儲(chǔ)器,32個(gè)I/O口,2個(gè)16位定時(shí)/計(jì)數(shù)器,1個(gè)5向量?jī)杉?jí)中斷結(jié)構(gòu),1個(gè)串行通信口,片內(nèi)震蕩器和時(shí)鐘電路。另外,A

12、T89C52還可以進(jìn)行0HZ的靜態(tài)邏輯操作,并支持兩種軟件的節(jié)電模式。閑散方式停止中央處理器的工作,能夠允許隨機(jī)存取數(shù)據(jù)存儲(chǔ)器、定時(shí)/計(jì)數(shù)器、串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存隨機(jī)存取數(shù)據(jù)存儲(chǔ)器中的內(nèi)容,但震蕩器停止工作并禁止其它所有部件的工作直到下一個(gè)復(fù)位。</p><p>  2)AT8051的結(jié)構(gòu)框圖</p><p>  圖3 AT89C52的結(jié)構(gòu)框圖</p>

13、<p>  3)AT8051的引腳說(shuō)明</p><p>  a.電源引腳及時(shí)鐘引腳:VCC (40腳):電源端,接+5V電源;</p><p>  GND (20腳):接地端,接+5V電源地端;</p><p>  XTAL1(19腳):晶體振蕩器接入的一個(gè)引腳; </p><p>  XTAL2(18腳):晶體振蕩器接入的另一個(gè)

14、引腳;</p><p>  圖4 80C51內(nèi)、外部振蕩電路</p><p>  b.控制線引腳(4個(gè)):</p><p>  RST:復(fù)位輸入端,高電平有效。 </p><p>  ALE/:地址鎖存允許/編程線。</p><p>  /Vpp:外部程序存儲(chǔ)器的讀選通線。</p><p> 

15、 /VPP:片外ROM允許訪問(wèn)端/編程電源端。 </p><p>  c.并行I/O引腳(34個(gè),分成4個(gè)8位口):</p><p>  P0.0-P0.7:一般I/O口引腳或數(shù)據(jù)/地位地址總線復(fù)用引腳;</p><p>  P1.0-P1.7:一般I/O口引腳;</p><p>  P2.0-P2.7:一般I/O口引腳或高位地址總線引腳;

16、</p><p>  P3.0-P3.7:一般I/O口引腳或第二功能引腳。</p><p>  表1 P3口的第二功能表</p><p>  1.2、液晶LCD12864</p><p>  1) 特點(diǎn) 12864字符型LCD模塊的應(yīng)用非常廣泛,顯示直觀,價(jià)格低廉。LCD12864分為兩種,帶字庫(kù)和不帶字庫(kù)的。用軟件可以自己編寫字庫(kù),不過(guò)在

17、取模之前要進(jìn)行一定的設(shè)置,若不這樣,取模時(shí)將會(huì)出現(xiàn)亂碼。而各種液晶廠家均有提供幾乎都是同樣規(guī)格的12864模塊或兼容模塊,盡管各廠家的對(duì)其各自的產(chǎn)品命名不盡相同;12864字符型LCD模塊最初采用的LCD控制器采用的是HD44780,在各廠家生產(chǎn)的12864模塊當(dāng)中,基本上也都采用了與之兼容的控制IC,所以從特性上基本上是一樣的;當(dāng)然,很多廠商提供了不同的字符顏色、背光色之類的顯示模塊。 </p><p>  圖

18、5 12864 LCD模塊的規(guī)格</p><p>  2) 結(jié)構(gòu)及引腳示意 </p><p>  下圖為一般的12864 LCD模塊的結(jié)構(gòu)尺寸示意圖及引腳說(shuō)明如下表: </p><p>  圖6 1602 LCD模塊的結(jié)構(gòu)尺寸示意圖</p><p>  表2 1602 LCD引腳說(shuō)明</p><p>  1.3、時(shí)

19、鐘芯片DS1302</p><p><b>  1) 簡(jiǎn)介</b></p><p>  美國(guó)DALLAS公司推出的具有涓細(xì)電流充電能力的低功耗實(shí)時(shí)時(shí)鐘電路DS1302的結(jié)構(gòu)、工作原理及其在實(shí)時(shí)顯示時(shí)間中的應(yīng)用。它可以對(duì)年、月、日、周、日、時(shí)、分、秒進(jìn)行計(jì)時(shí),且具有閏年補(bǔ)償?shù)榷喾N功能。</p><p>  圖7 DS1302結(jié)構(gòu)圖</p

20、><p>  2) DS1302的結(jié)構(gòu)及工作原理</p><p>  工作電壓為2.5V~5.5V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)31×8的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級(jí)產(chǎn)品,與DS1202兼容,但增加了主電源/后備電源雙電源引腳,同時(shí)提供了對(duì)后備電源進(jìn)行涓細(xì)電流充

21、電的能力。 </p><p>  DS1302的引腳排列,其中Vcc1為后備電源,VCC2為主電源。在主電源關(guān)閉的情況下,也能保持時(shí)鐘的連續(xù)運(yùn)行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當(dāng)Vcc2大于Vcc1+0.2V時(shí),Vcc2給DS1302供電。當(dāng)Vcc2小于Vcc1時(shí),DS1302由Vcc1供電。X1和X2是振蕩源,外接32.768kHz晶振。RST是復(fù)位/片選線,通過(guò)把RST輸入驅(qū)動(dòng)置高電平來(lái)

22、啟動(dòng)所有的數(shù)據(jù)傳送。</p><p>  1.4、數(shù)字溫度傳感器DS18B20</p><p><b>  1) 簡(jiǎn)介</b></p><p>  DS18B20數(shù)字溫度傳感器接線方便,封裝成后可應(yīng)用于多種場(chǎng)合,如管道式,螺紋式,磁鐵吸附式,不銹鋼 封裝式,型號(hào)多種多樣,有LTM8877,LTM8874等等。主要根據(jù)應(yīng)用場(chǎng)合的不同而改變其外觀

23、。封裝后的DS18 B20可用于電纜溝測(cè)溫,高爐水循環(huán)測(cè)溫,鍋爐測(cè)溫,機(jī)房測(cè)溫,農(nóng)業(yè)大棚測(cè)溫,潔凈室測(cè)溫,彈藥庫(kù)測(cè)溫等各 種非極限溫度場(chǎng)合。耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設(shè)備數(shù)字測(cè)溫和控制領(lǐng)。</p><p>  1) DS18B20工作原理</p><p>  圖8 DS18B20測(cè)溫原理框圖</p><p>  圖中低溫度系數(shù)晶

24、振的振蕩頻率受溫度影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給計(jì)數(shù)器1。高溫度系數(shù)晶振隨溫度變化其振蕩率明顯改變,所產(chǎn)生的信號(hào)作為計(jì)數(shù)器2的脈沖輸入。計(jì)數(shù)器1和溫度寄存器被預(yù)置在-55℃所對(duì)應(yīng)的一個(gè)基數(shù)值。計(jì)數(shù)器1對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)計(jì)數(shù)器1的預(yù)置值減到0時(shí),溫度寄存器的值將加1,計(jì)數(shù)器1的預(yù)置將重新被裝入,計(jì)數(shù)器1重新開(kāi)始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán)直到計(jì)數(shù)器2計(jì)數(shù)到0時(shí),停止溫度寄存器值的累

25、加,此時(shí)溫度寄存器中的數(shù)值即為所測(cè)溫度。</p><p>  2、電路功能單元設(shè)計(jì)</p><p>  2.1按鍵電路設(shè)計(jì) </p><p>  本設(shè)計(jì)就采用行列式鍵盤,同時(shí)也能減少鍵盤與單片機(jī)接口時(shí)所占用的I/O線的數(shù)目,使用者操作簡(jiǎn)單。按鍵的操作面板如圖所示。</p><p>  圖9 按鍵接線示意圖</p><p&

26、gt;  2.2顯示電路設(shè)計(jì) </p><p>  采用液晶LCD12864。通過(guò)按鍵對(duì)單片機(jī)進(jìn)行控制,把數(shù)據(jù)顯示到液晶上。同時(shí)可以設(shè)定鬧鈴,帶有聲音輸出,可調(diào)節(jié)不同的鬧鈴聲。</p><p><b>  2.3程序設(shè)計(jì)</b></p><p>  采用89C52單片機(jī),及相關(guān)器件,具體程序見(jiàn)附錄2。</p><p>&

27、lt;b>  2.3系統(tǒng)流程圖</b></p><p>  圖10 萬(wàn)年歷系統(tǒng)流程圖</p><p><b>  四、設(shè)計(jì)結(jié)論</b></p><p>  該萬(wàn)年歷系統(tǒng)的軟件設(shè)計(jì)分為以下幾個(gè)模塊: </p><p>  (1)主程序模塊 :主程序主要完成初始化、設(shè)置中斷向量、檢查有無(wú)按鍵按下、以及調(diào)

28、用顯示等等。 </p><p>  (2)鍵盤掃描及識(shí)別子程序 :鍵盤采用查詢的方式,放在主程序中,當(dāng)沒(méi)有按鍵按下的時(shí)候,單片機(jī)循環(huán)主程序,一旦有按鍵按下,便轉(zhuǎn)向相應(yīng)的子程序處理,處理結(jié)束再返回。 </p><p>  通過(guò)以上模塊化得設(shè)計(jì),使得電子密碼鎖更加好用,易學(xué),同時(shí),也會(huì)減少不少的成本。在以后的發(fā)展中,必不可少,將占有一席之地。</p><p><b

29、>  五、設(shè)計(jì)感想</b></p><p>  通過(guò)本次設(shè)計(jì)掌握萬(wàn)年歷系統(tǒng)設(shè)計(jì)的方法,熟悉其設(shè)計(jì)的相關(guān)軟件,以及硬件描述語(yǔ)言的使用,了解電子萬(wàn)年歷的系統(tǒng)構(gòu)成,利用單片機(jī)實(shí)現(xiàn)電子萬(wàn)年歷的設(shè)計(jì)與實(shí)現(xiàn),可以加深自己對(duì)所學(xué)專業(yè)的認(rèn)識(shí),關(guān)聯(lián)知識(shí),增強(qiáng)自己的動(dòng)手能力,積累實(shí)踐經(jīng)驗(yàn),為以后的工作打好基礎(chǔ)。</p><p><b>  參考文獻(xiàn)</b></p&

30、gt;<p>  [1] 李全利.單片機(jī)原理及應(yīng)用技術(shù).高等教育出版社.2009.(01):3</p><p>  [2] 趙化啟.零基礎(chǔ)學(xué)PIC單片機(jī).機(jī)械工業(yè)出版社.2010.(08):1</p><p>  [3] 李連華.基于89C51的電子萬(wàn)年歷設(shè)計(jì).中國(guó)科技信息,2006,(01):64</p><p>  [4] 許琦.基于FPGA的電子

31、萬(wàn)年歷的設(shè)計(jì).科技信息,2006,(10):240-241</p><p>  [5] 王衛(wèi)兵,劉克剛,朱秋萍.用8951的電子密碼鎖.電子技術(shù),2005,(01):26-28</p><p>  [6] 趙益丹,徐曉林,周振峰.單片機(jī)應(yīng)用系統(tǒng)原理、設(shè)計(jì)程序及流程圖.嘉興學(xué)院學(xué)報(bào),2003,15(S1):103-105</p><p>  [7] 陸重陽(yáng),盧東華.單

32、片機(jī)技術(shù)及其發(fā)展趨勢(shì).微電子技術(shù),2003,(01):5-7</p><p>  [8] 王曉勇.單片機(jī)的基本原理及運(yùn)用.艦船電子工程,2005,(02):82-85</p><p>  [9] 程耀林.FPGA的系統(tǒng)設(shè)計(jì)方法解析.現(xiàn)代電子技術(shù),2005,(19):90-93</p><p><b>  附錄一:原理圖</b></p>

33、;<p><b>  附錄二:程序清單</b></p><p>  /****************************文件包含*************************************/</p><p>  #include < reg52.h ></p><p>  #include <

34、 lcd.h ></p><p>  #include < clock.h ></p><p>  #include < calendar.h ></p><p>  #include < key.h ></p><p>  #include < 1302.h ></p>&

35、lt;p>  /*****************************預(yù)定義**************************************/</p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  /****************

36、************************************************************/</p><p>  sbit bell = P2 ^ 0; //定義蜂鳴器端口</p><p>  sbit in = P2 ^ 7; //定義紅外檢測(cè)端口</p><p>  /*******************************

37、**********************************************</p><p>  * 名稱: Timer0_Service() inturrupt 1</p><p>  * 功能: 中斷服務(wù)程序 整點(diǎn)報(bào)時(shí) 3聲嘟嘟的聲音</p><p>  **********************************************

38、*******************************/</p><p>  void Timer0_Service() interrupt 1</p><p><b>  {</b></p><p>  static uchar count = 0;</p><p>  static uchar flag =

39、0; //記錄鳴叫的次數(shù)</p><p>  count = 0;</p><p>  TR0 = 0; //關(guān)閉Timer0</p><p>  TH0 = 0x3c;</p><p>  TL0 = 0XB0; //延時(shí) 50 ms</p><p>  TR0 = 1 ; //啟動(dòng)Timer0

40、</p><p><b>  count ++;</b></p><p>  if( count == 20 ) //鳴叫 1 秒 </p><p><b>  {</b></p><p>  bell = ~ bell; count = 0; flag ++;</p><p

41、><b>  } </b></p><p>  if( flag == 6 )</p><p><b>  {</b></p><p>  flag = 0; TR0 = 0; //關(guān)閉Timer0</p><p><b>  } }</b></p>

42、<p>  /*****************************************************************************</p><p>  * 名稱: Timer2_Servie() interrupt 5</p><p>  * 功能: 中斷服務(wù)程序 整點(diǎn)報(bào)時(shí) 一分鐘</p><p>  ******

43、***********************************************************************/</p><p>  void Timer3_Service() interrupt 5</p><p><b>  {</b></p><p>  static uchar count;</p&

44、gt;<p>  TF2 = 0; //軟件清除中斷標(biāo)志</p><p><b>  count ++;</b></p><p>  if( in == 1 )</p><p><b>  {</b></p><p>  count = 0; //計(jì)算清0</p><

45、;p>  TR2 = 0; //關(guān)閉Timer2</p><p>  bell = 1; //關(guān)閉蜂鳴器</p><p><b>  } </b></p><p>  if( count == 120 ) // 一分鐘后 關(guān)閉報(bào)警</p><p><b>  {</b></p>

46、<p>  count = 0; //計(jì)算清0</p><p>  TR2 = 0; //關(guān)閉Timer2</p><p>  bell = 1; //關(guān)閉蜂鳴器</p><p><b>  }</b></p><p><b>  } </b></p><p>  

47、uchar HexNum_Convert(uchar HexNum) ; uchar Numtemp;</p><p>  Numtemp=(HexNum>>4)*10+(HexNum&0X0F); return Numtemp;</p><p><b>  }</b></p><p>  /*************

48、*****************************************************************</p><p>  * 函數(shù)名稱:main()</p><p><b>  * 功 能:</b></p><p>  *********************************************

49、**********************************</p><p>  void main( void )</p><p>  { </p><p>  uchar clock_time[6] = {0X00,0X59,0X23,0X09,0X04,0X11}; </p><p>  uchar

50、 clock_time[7]={0x00,0x59,0x00,0x04,0x01,0x11};</p><p>  uchar alarm_time[2] = { 10, 06};uchar temperature[2];</p><p>  Lcd_Initial(); //LCD初始化</p><p>  Clock_Initial( clock_ti

51、me ); //時(shí)鐘初試化</p><p>  /***********************中斷初始化***************************/</p><p>  EA = 1; //開(kāi)總中斷</p><p>  ET0 = 1; //Timer0 開(kāi)中斷</p><p>  ET2 = 1; //Timer2 開(kāi)中斷&

52、lt;/p><p>  TMOD = 0x01 ; //Timer0 工作方式 1</p><p>  RCAP2H = 0x3c; </p><p>  RCAP2L = 0xb0; //Timer2 延時(shí) 50 ms</p><p>  while( 1 )</p><p><b>  {</b>

53、</p><p>  switch( Key_Scan() )</p><p><b>  {</b></p><p>  case up_array: </p><p>  { Key_Idle(); } break; </p><p>  case down_array:

54、 </p><p>  { Key_Idle(); } break; </p><p>  case clear_array: </p><p>  { Key_Idle(); } break;</p><p>  case function_array:{</p><

55、;p>  Key_Function( clock_time, alarm_time );</p><p><b>  }</b></p><p>  case null: </p><p><b>  {</b></p><p>  Clock_Fresh( clock_time )

56、; //時(shí)間刷新</p><p>  Lcd_Clock( clock_time ); //時(shí)間顯示</p><p>  Sensor_Fresh( temperature ); //溫度更新</p><p>  Lcd_Temperture( temperature ); //溫度顯示</p><p>  Calendar_Conver

57、t( 0 , clock_time );</p><p>  Week_Convert( 0, clock_time ); //整點(diǎn)報(bào)時(shí)</p><p>  if( ( * clock_time == 0x59 ) && ( * ( clock_time + 1 ) == 0x59 ) )</p><p><b>  {</b>

58、</p><p>  bell = 0; TR2 = 1; //啟動(dòng)Timer2</p><p><b>  }</b></p><p><b>  //鬧鐘報(bào)警</b></p><p>  if( * alarm_time == HexNum_Convert(* ( clock_time +

59、1 ) )) </p><p><b>  //分鐘相吻合</b></p><p>  if( * ( alarm_time + 1 ) == HexNum_Convert(*( clock_time + 2 )) ) </p><p><b>  //小時(shí)相吻合</b></p><p><b

60、>  {</b></p><p>  bell = 0; TR2 = 1; //啟動(dòng)Timer2</p><p><b>  } } </b></p><p><b>  break;</b></p><p><b>  } } }</b><

61、/p><p>  #ifndef _LCD_12864</p><p>  #define _LCD_12864</p><p>  /*****************************預(yù)定義**************************************/</p><p>  #define uchar unsigned c

62、har</p><p>  #define uint unsigned int</p><p>  ***************************12864管腳配置****************************/</p><p>  #define port P1</p><p>  sbit rs=P3^0;sbit

63、rw=P3^1;</p><p>  sbit e=P3^2;sbit cs1=P3^6;</p><p>  sbit cs2=P3^7;</p><p>  /******************************************************************************</p><p> 

64、 * 函數(shù)名稱:Delay()</p><p>  * 功 能:延遲時(shí)間=a*1ms</p><p>  ******************************************************************************/</p><p>  void Delay(uint a)</p><p>

65、;<b>  {</b></p><p>  uchar i; while(a--)</p><p>  for(i=0;i<125;i++);</p><p><b>  }</b></p><p>  /*****************************************

66、*************************************</p><p>  * 函數(shù)名稱:Lcd_Display_On()</p><p>  * 功 能:LCD顯示開(kāi)</p><p>  ****************************************************************************

67、**/</p><p>  void Lcd_Display_On()</p><p>  { port=0x3f;rs=0;rw=0;e=1;e=0; }</p><p>  /******************************************************************************</p>

68、<p>  * 函數(shù)名稱:Lcd_Display_Off()</p><p>  * 功 能:LCD顯示關(guān)</p><p>  ******************************************************************************/</p><p>  void Lcd_Display_Off()

69、</p><p>  { port=0x3e;rs=0;rw=0;e=1;e=0; }</p><p>  /******************************************************************************</p><p>  * 函數(shù)名稱:Lcd_Set_X(uchar x)</p>

70、<p>  * 功 能:LCD設(shè)置X坐標(biāo)</p><p>  ******************************************************************************/</p><p>  void Lcd_Set_X(uchar x)</p><p>  { port=0xb8;rs=0;rw=

71、0;e=1;e=0; }</p><p>  /******************************************************************************</p><p>  * 函數(shù)名稱:Lcd_Set_Y(uchar y)</p><p>  * 功 能:LCD設(shè)置Y坐標(biāo)</p><p

72、>  ******************************************************************************/</p><p>  void Lcd_Set_Y(uchar y)</p><p>  { port=0x40;rs=0;rw=0;e=1;e=0; }</p><p>  /********

73、**********************************************************************</p><p>  * 函數(shù)名稱:Lcd_Set_X_Y(uchar x, uchar y )</p><p>  * 功 能:LCD設(shè)置x y坐標(biāo)</p><p>  *************************

74、*****************************************************/</p><p>  void Lcd_Set_X_Y(uchar x, uchar y)</p><p><b>  { </b></p><p>  if( y<64 )</p><p>  { cs1

75、=1; cs2=0; Lcd_Set_Y( y ); }</p><p><b>  else</b></p><p>  { cs1=0; cs2=1; Lcd_Set_Y( y-64 ); }</p><p>  Lcd_Set_X( x);</p><p><b>  }</b></p

76、><p>  /******************************************************************************</p><p>  * 函數(shù)名稱:Lcd_Write_Command()</p><p>  * 功 能:寫指令代碼</p><p>  ***************

77、***************************************************************/</p><p>  void Lcd_Write_Command(uchar temp)</p><p>  { port=temp ;rs=0; rw=0; e=1; e=0; }</p><p>  /**********

78、********************************************************************</p><p>  * 函數(shù)名稱:Lcd_Write_Byte()</p><p>  * 功 能:寫數(shù)據(jù)</p><p>  ************************************************

79、******************************/</p><p>  void Lcd_Write_Byte(uchar temp)</p><p><b>  { </b></p><p>  port=temp;</p><p>  rs=1; rw=0; e=1; e=0; <

80、/p><p><b>  }</b></p><p>  /****************************************************************************</p><p>  *名稱:Lcd_Character_16X8( bit bit_flag, uchar x, uchar y, uc

81、har code *point )</p><p>  *功能:顯示16X8字符(字母) </p><p>  *說(shuō)明:bit_flag = 1 正常顯示 bit_flag = 0 黑白反相顯示 </p><p>  ******************************************************************

82、**********/</p><p>  void Lcd_Character_16X8( bit bit_flag, uchar x, uchar y, uchar code *point )</p><p><b>  {</b></p><p>  uchar i , j,temp; temp=y;</p><p

83、>  if( bit_flag )</p><p><b>  { </b></p><p>  for( i=0; i<2; i++ )</p><p><b>  {</b></p><p>  x+=i; y=temp;</p><p>  for(

84、 j=0;j<8;j++ )</p><p><b>  {</b></p><p>  Lcd_Set_X_Y( x, y ); y++;</p><p>  Lcd_Write_Byte( point[ i*8 + j] ); </p><p><b>  } } }</b><

85、/p><p><b>  else</b></p><p><b>  {</b></p><p>  for( i = 0; i < 2; i++ )</p><p><b>  {</b></p><p>  x += i; y = temp;

86、</p><p>  for( j = 0; j < 8; j++ )</p><p><b>  {</b></p><p>  Lcd_Set_X_Y( x, y ); y++;</p><p>  Lcd_Write_Byte( ~point[ i * 8 + j ] );</p><p&

87、gt;  } } } }</p><p>  /****************************************************************************</p><p>  * 名稱:Lcd_Character_16X16( bit bit_flag, uchar x, uchar y, uchar code *point )<

88、;/p><p>  * 功能:顯示16*16字符(漢字) </p><p>  *說(shuō)明:bit_flag = 1 正常顯示 bit_flag = 0 黑白反相顯示</p><p>  ****************************************************************************/</p>

89、<p>  void Lcd_Character_16X16( bit bit_flag, uchar x, uchar y, uchar code *point )</p><p><b>  {</b></p><p>  uchar i,j,temp ; temp=y;</p><p>  if( bit_flag )&l

90、t;/p><p><b>  {</b></p><p>  for( i=0; i<2; i++ )</p><p><b>  {</b></p><p>  x+=i; y=temp;</p><p>  for( j=0;j<16;j++ )</p&

91、gt;<p><b>  {</b></p><p>  Lcd_Set_X_Y( x, y ); y++;</p><p>  Lcd_Write_Byte( point[ i*16 + j] ); </p><p><b>  } } }</b></p><p><b

92、>  else</b></p><p><b>  {</b></p><p>  for( i = 0; i<2; i++ )</p><p><b>  {</b></p><p>  x += i; y = temp;</p><p>  f

93、or( j = 0; j < 16; j++ )</p><p><b>  {</b></p><p>  Lcd_Set_X_Y( x, y ); y++;</p><p>  Lcd_Write_Byte( ~ point[ i * 16 + j ] );</p><p>  } } } }</p

94、><p>  /****************************************************************************</p><p>  * 名稱:Lcd_Clear(void)</p><p>  * 功能:清屏 </p><p>  **********************

95、******************************************************/</p><p>  void Lcd_Clear()</p><p><b>  {</b></p><p>  uchar i,j; cs1=1; cs2=1;</p><p>  for(i=0;i&

96、lt;8;i++)</p><p><b>  {</b></p><p>  Lcd_Set_X( i ); Lcd_Set_Y( 0 );</p><p>  for(j=0;j<64;j++)</p><p>  Lcd_Write_Byte(0x00);</p><p><b

97、>  } }</b></p><p>  /******************************************************************************</p><p>  * 函數(shù)名稱:Lcd_Initial()</p><p>  * 功 能:初始化LCD</p><p

98、>  ******************************************************************************/</p><p>  void Lcd_Initial()</p><p><b>  { </b></p><p>  Lcd_Display_Off();

99、Lcd_Write_Command(0xb8); </p><p>  Lcd_Write_Command(0x40); Lcd_Write_Command(0xc0); </p><p>  Lcd_Display_On(); Lcd_Clear();</p><p><b>  }</b></p

100、><p>  /****************************************************************************</p><p>  * 名稱:Lcd_Time(uchar * clock_time )</p><p>  * 功能:顯示時(shí)間 </p><p>  *******

101、*********************************************************************/</p><p>  void Lcd_Time(uchar * clock_time )</p><p><b>  {</b></p><p>  uchar i=0;

102、 </p><p>  i= * clock_time >> 4;</p><p>  Lcd_Character_16X8( 1, 2, 80, letter_logo[i]); //顯示sec的高位</p><p>  i= * clock_time & 0x0f;</p>

103、<p>  Lcd_Character_16X8( 1, 2, 88, letter_logo[i]); //顯示sec的低位</p><p>  Lcd_Character_16X16( 1, 2, 96 , time_logo[2]); //顯示 秒</p><p>  clock_time ++;</p><p>  i= * cloc

104、k_time >> 4;</p><p>  Lcd_Character_16X8( 1, 2, 48, letter_logo[i]); //顯示 min的高位</p><p>  i= * clock_time & 0x0f;</p><p>  Lcd_Character_16X8( 1, 2, 56, letter_logo[i

105、]); //顯示 min的低位</p><p>  Lcd_Character_16X16( 1, 2, 64 , time_logo[1]); //顯示 分</p><p>  clock_time ++;</p><p>  i= * clock_time >> 4;</p><p>  Lcd_Characte

106、r_16X8( 1, 2, 16 , letter_logo[i]); //顯示 hour的高位</p><p>  i= * clock_time & 0x0f;</p><p>  Lcd_Character_16X8( 1, 2, 24 , letter_logo[i]); //顯示 hour的低位</p><p>  Lcd_Ch

107、aracter_16X16( 1, 2, 32 , time_logo[0]); //顯示 分 </p><p><b>  }</b></p><p>  /****************************************************************************</p><p&

108、gt;  * 名稱:Lcd_Data(uchar * clock_time )</p><p>  * 功能:顯示日期 </p><p>  ****************************************************************************/</p><p>  void Lcd_Data(uchar

109、 * clock_time )</p><p><b>  {</b></p><p>  uchar i=0; clock_time += 3; //顯示 "year 年 month 月 day 日" </p><p&

110、gt;  i= * clock_time >> 4;</p><p>  Lcd_Character_16X8( 1, 0, 88, letter_logo[i]); //顯示 day的高位</p><p>  i= * clock_time & 0x0f;</p><p>  Lcd_Character_16X8( 1, 0, 96, l

111、etter_logo[i]); //顯示 day的低位 </p><p>  Lcd_Character_16X16( 1, 0, 104, data_logo[2]); //顯示 日</p><p>  clock_time ++;</p><p>  i= * clock_time >> 4 ;</p><p> 

112、 Lcd_Character_16X8( 1, 0, 56, letter_logo[i]); //顯示 month的高位</p><p>  i= * clock_time & 0x0f;</p><p>  Lcd_Character_16X8( 1, 0, 64, letter_logo[i]); //顯示 month的低位</p><p>

113、  Lcd_Character_16X16( 1, 0, 72, data_logo[1]); //顯示 月</p><p>  clock_time ++ ; </p><p>  i= * clock_time >> 4;</p><p>  Lcd_Character_16X8( 1, 0, 24 , letter_logo[i]);

114、 //顯示 year的高位</p><p>  i= * clock_time & 0x0f;</p><p>  Lcd_Character_16X8( 1, 0, 32 , letter_logo[i]); //顯示 year的低位</p><p>  Lcd_Character_16X16( 1, 0, 40, data_logo[0]);

115、 //顯示 年</p><p>  Lcd_Character_16X8(1,0,8,letter_logo[2]);</p><p>  Lcd_Character_16X8(1,0,16,letter_logo[0]);</p><p><b>  }</b></p><p>  /***************

116、*************************************************************</p><p>  * 名稱:Lcd_Data(uchar * clock_time )</p><p>  * 功能:顯示日期 </p><p>  ****************************************

117、************************************/</p><p>  void Lcd_Week( uchar week )</p><p><b>  { </b></p><p>  Lcd_Character_16X16( 1, 6, 0, week_logo[7] ); //星</p><

118、;p>  Lcd_Character_16X16( 1, 6, 16, week_logo[8] ); //期</p><p>  Lcd_Character_16X16( 1, 6, 32, week_logo[ week & 0x0f ] );</p><p><b>  }</b></p><p>  /*********

119、********************************************************************</p><p>  * 函數(shù)名稱: Lcd_Clock( uchar *clock_time )</p><p>  * 功能: 顯示時(shí)鐘</p><p>  ***********************************

120、*******************************************/</p><p>  void Lcd_Clock( uchar * clock_time )</p><p><b>  {</b></p><p>  Lcd_Data( clock_time ); //顯示日期</p><p>

121、  Lcd_Time( clock_time ); //顯示時(shí)間</p><p><b>  }</b></p><p>  /******************************************************************************</p><p>  * 名稱: void Lcd_Lunar

122、_Calendar( uchar * lunch_calendar )</p><p>  * 功能: 顯示農(nóng)歷</p><p>  ******************************************************************************/</p><p>  void Lcd_Lunar_Calendar( uc

123、har * lunar_canlendar )</p><p><b>  {</b></p><p>  uint i,j,k;</p><p>  i= * lunar_canlendar >> 4; j= * lunar_canlendar & 0x0f; k=i*10+j;</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)論