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

下載本文檔

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

文檔簡介

1、<p><b>  課程設(shè)計報告</b></p><p>  題 目: 自動滴灌系統(tǒng)設(shè)計 </p><p>  課程名稱: 單片機原理及應(yīng)用 </p><p>  學(xué) 院: 信息工程學(xué)院 </p><p>  專 業(yè):

2、 計算機科學(xué)與技術(shù) </p><p>  班 級: 2014 級計本 1 班 </p><p><b>  目錄</b></p><p>  第一章 系統(tǒng)概要2</p><p><b>  1.1系統(tǒng)背景2</b></p><p>&

3、lt;b>  1.2系統(tǒng)功能2</b></p><p><b>  1.3設(shè)計要求2</b></p><p>  第二章 系統(tǒng)硬件原理3</p><p>  2.1AW60主要模塊和特點3</p><p>  2.2 LCD模塊3</p><p>  2.3 LED模

4、塊4</p><p>  第三章 系統(tǒng)軟件設(shè)計6</p><p><b>  3.1系統(tǒng)流程6</b></p><p>  3.2主程序(main.c)7</p><p>  3.2中斷處理程序(isr.c)7</p><p><b>  3.3構(gòu)件組成9</b>

5、</p><p>  第四章 系統(tǒng)測試27</p><p>  4.1測試結(jié)果27</p><p>  第五章 總結(jié)展望31</p><p><b>  5.1總結(jié)31</b></p><p><b>  5.2展望31</b></p>&l

6、t;p><b>  參考文獻32</b></p><p><b>  第一章 系統(tǒng)概要</b></p><p><b>  1.1系統(tǒng)背景</b></p><p>  隨著科學(xué)技術(shù)的發(fā)展電子技術(shù)產(chǎn)業(yè)結(jié)構(gòu)調(diào)整,單片機開始迅速發(fā)展,由于單片機本身的易于控制,精度高,自動化全面,市場對于智能控制系統(tǒng)

7、的需求也越來越大。 自動滴灌系統(tǒng),就是在單片機程序的控制下實現(xiàn)濕度監(jiān)測、滴灌控制的設(shè)備。單片機系統(tǒng)座位一種典型的嵌入式系統(tǒng),其系統(tǒng)設(shè)計包括硬件設(shè)計和軟件設(shè)計編程設(shè)計兩個方面,其調(diào)試過程一般分為軟件調(diào)試,硬件調(diào)試,系統(tǒng)調(diào)試。自動滴灌系統(tǒng)需要實現(xiàn)濕度采集,A/D轉(zhuǎn)換,濕度顯示,工作狀態(tài)顯示,電機驅(qū)動的功能。</p><p><b>  1.2系統(tǒng)功能</b></p>&l

8、t;p>  首先要進行濕度監(jiān)測,每隔固定的時間就采集一次濕度,在內(nèi)部轉(zhuǎn)換后與標(biāo)準(zhǔn)值進行比較如果濕度值低于給定值的話就切換至工作狀態(tài),滴灌結(jié)束時自動切換至結(jié)束模式,繼續(xù)監(jiān)測濕度。</p><p>  仿真狀態(tài)下濕度監(jiān)測采用軟件模擬實現(xiàn),采集濕度信息使用LED顯示,每隔5s采集一次。 工作狀態(tài)由LCD顯示。分別有滴灌開始(“Drip-irrigation is starting..”),和滴灌結(jié)束(“Drip-

9、irrigation has ended..”)。滴灌時間為5s。結(jié)束后切換至結(jié)束模式。</p><p><b>  1.3設(shè)計要求</b></p><p>  學(xué)生在設(shè)計中可以引用所需的參考資料,避免重復(fù)工作,加快設(shè)計進程,但必須和題目的要求相符合,保證設(shè)計的正確。學(xué)生要在老師的指導(dǎo)下制定好自己各環(huán)節(jié)的詳細(xì)設(shè)計進程計劃,按給定的時間計劃保質(zhì)保量的完成個階段的設(shè)計任務(wù)

10、。設(shè)計中可邊設(shè)計,邊修改,軟件設(shè)計與硬件設(shè)計可交替進行,問題答疑與調(diào)試和方案修改相結(jié)合,提高設(shè)計的效率,保證按時完成設(shè)計工作并交出合格的設(shè)計報告。</p><p>  第二章 系統(tǒng)硬件原理</p><p>  2.1AW60主要模塊和特點</p><p>  AW60系列主要常規(guī)模塊和特點: </p><p> ?。?)最高達40MHz的

11、CPU工作頻率和20MHz的內(nèi)部總線工作頻率;時鐘源選項包括晶振,諧振器,外部時鐘或,內(nèi)部產(chǎn)生的時鐘。 </p><p> ?。?)相比HC08CPU指令集,S08CPU增加了BGND指令。 </p><p> ?。?)單線后臺調(diào)試模式接口:增強的斷點能力,允許單一的斷點設(shè)置在線調(diào)試(在片內(nèi)調(diào)試模塊增加了多于兩個的斷點)。 </p><p> ?。?)內(nèi)含32

12、個中斷/復(fù)位源;內(nèi)含2KB的片內(nèi)RAM;內(nèi)含60KB的片內(nèi)在線可編程的Flash存儲器,帶有 塊保護和安全選項。 </p><p> ?。?)可選的計算機正常操作(COP)復(fù)位;低電壓檢測與復(fù)位或中斷;非法操作碼檢測與復(fù)位;非法地址檢測與復(fù)位。 </p><p>  (6)ADC:多達16個通道,10個A/D轉(zhuǎn)換器與動動比較功能;兩個串行通信接口SCI模塊與可選的13位中斷;一個串行外

13、設(shè)接口SPI模塊;集成電路互聯(lián)總線IIC模塊運行高達100kbps的最高總線負(fù)載;8引腳鍵盤中斷KBI模塊。 </p><p> ?。?)Timers:1個2 通道和一個6通道16位定時器/脈沖寬度調(diào)制器模塊。既有輸入捕獲,輸出比較,脈寬調(diào)制功能。AW子系列MCU的4種封裝形式只是引腳數(shù)量和形式有所區(qū)別,其他方面是一致的。</p><p><b>  2.2 LCD模塊</

14、b></p><p>  LCD作為電子信息產(chǎn)品的主要顯示器件,相對于其他類型的顯示器件來說有其自身的特點,主要包括: </p><p> ?。?)低電壓,低功耗;</p><p> ?。?)平板型結(jié)構(gòu); </p><p> ?。?)使用壽命長; </p><p><b>

15、 ?。?)被動顯示; </b></p><p> ?。?)顯示信息量大且易于彩色化; </p><p>  (6)無電磁輻射。 </p><p>  點陣字符型LCD是專門用于顯示數(shù)字,字母,圖形符號及少量自定義符號的液晶顯示器。這類顯示器把LCD控制器,點陣驅(qū)動器,字符存儲器,顯示體及少量的阻容元件等集成一個液晶顯示模板。

16、鑒于字符型液晶顯示模塊目前在國際上已經(jīng)規(guī)范化,其電特性及接口特性是統(tǒng)一的,只要設(shè)計出一種型號的接口電路,在指令上稍加修改即可使用各種規(guī)格的字符型液晶顯示器模塊。</p><p>  字符型液晶顯示器模塊的特點如下: </p><p> ?。?)液晶顯示屏是以若干5*8或5*11點陣塊等組成的顯示字符群。每個點陣塊塊為一個字符位,字符間距和行間距都是一個點的寬度。 <

17、;/p><p>  (2)主控制電路為HD44780(HITACHI及其他公司的兼容電路。從程序員的角度來看LCD顯示接口與編程是面向HD44780的,只要了解HD44780的編程結(jié)構(gòu)即可進行LCD的顯示編程。 </p><p> ?。?)內(nèi)部具有字符發(fā)生器ROM,可顯示192種字符。 </p><p> ?。?)具有64字節(jié)的字符發(fā)生器RAM,可以

18、定義8個5*8點陣字符或4個5*11的點陣字符。 </p><p>  (5)具有64字節(jié)的數(shù)據(jù)顯示RAM,供顯示器編程使用。 (6)標(biāo)準(zhǔn)接口特性,與MC9S08系列的MCU容易接口。 (7)模塊結(jié)構(gòu)緊湊,輕巧,裝配容易。 </p><p>  (8)單+5V電源供電(寬溫型需要加-7V驅(qū)動電源)。 (9)低功耗,高可靠性。</p&g

19、t;<p><b>  2.3 LED模塊</b></p><p>  LED發(fā)光二極管分為共陰極和共陽極數(shù)碼管,若為共陰極數(shù)碼管則公共端接地,若為共陽極數(shù)碼管則公共端接電源正極。如圖1:</p><p><b>  圖1</b></p><p>  實際應(yīng)用中是多個LED共同使用,MCU通過一個稱為數(shù)據(jù)口的

20、8位數(shù)據(jù)端口來控制位段而原來8段數(shù)碼管的公共端,原來接到公共電平,現(xiàn)在接MCU的一個引腳,由MCU來控制,通常叫做位選信號,這樣MCU的8個端口就可以控制8連排的數(shù)碼管了。若要控制更多數(shù)碼管則需加一個譯碼芯片。每個時刻只讓一個數(shù)碼管有效,由于人的視覺暫留效應(yīng)(100ms)可以達到同時顯示的效果。</p><p>  圖2是MCU與4排8段數(shù)碼管的連接:</p><p><b> 

21、 圖2</b></p><p>  第三章 系統(tǒng)軟件設(shè)計</p><p><b>  3.1系統(tǒng)流程</b></p><p><b>  圖3</b></p><p>  圖3是系統(tǒng)流程圖,開始時先初始化各個部件,LCD顯示結(jié)束滴灌信息,LED顯示為全零。后每隔五秒采集一次濕度數(shù)據(jù)用LE

22、D顯示濕度。判斷濕度值是否低于設(shè)定值,低于設(shè)定值的話立即啟動滴灌,此時濕度上升,結(jié)束滴灌。若沒有低于設(shè)定值的話,則繼續(xù)監(jiān)測。LED不斷刷新顯示當(dāng)前濕度值。</p><p>  3.2主程序(main.c)</p><p>  #include "includes.h" //包涵總頭文件</p><p>  int main(void)<

23、/p><p><b>  {</b></p><p><b>  work = 0;</b></p><p>  shidu = 75;</p><p>  enter_critical();</p><p>  LEDInit();

24、 //LED初始化</p><p>  LCDInit(); //LCD初始化</p><p>  tpm_init(TPM0,TPM_CLKSRC_PLL,1000); //初始化TPM模塊,1ms中斷一次</p><p>  light_init(LIGHT_

25、PORT, LIGHT_PIN_RED, LIGHT_OFF); </p><p>  light_init(LIGHT_PORT, LIGHT_PIN_GREEN, LIGHT_OFF); </p><p>  tpm_enable_int(0);</p><p>  init_critical();</p><p><b

26、>  for(;;)</b></p><p><b>  {</b></p><p><b>  } </b></p><p><b>  return 0;</b></p><p><b>  }</b></p>&l

27、t;p>  3.2中斷處理程序(isr.c)</p><p>  //================================================================</p><p>  //文件名稱:isr.c</p><p>  //功能概要: 中斷底層驅(qū)動構(gòu)件源文件</p><p>  //版權(quán)所有

28、:蘇州大學(xué)飛思卡爾嵌入式中心(sumcu.suda.edu.cn)</p><p>  //================================================================</p><p>  #include "includes.h"</p><p>  void tpm0_isr(void)&l

29、t;/p><p><b>  {</b></p><p>  static uint_32 TPMCounter = 0; //計時器</p><p>  static uint_8 LEDindex=0; //位選口聲明</p><p>  uint_8 LEDDataBuffer[4];

30、 //LED顯示緩沖區(qū)</p><p>  changeCode(shidu,LEDDataBuffer);//將濕度值轉(zhuǎn)化為對應(yīng)字符輸出</p><p><b>  uint_8 i;</b></p><p>  uint_8 * working;</p><p>  uint_8 * stop; </p>

31、;<p>  working = (uint_8 *)"Drip-irrigation is starting......";</p><p>  stop = (uint_8 *)"Drip-irrigation has ended......";</p><p>  if((TPM_SC_REG(TPM0_BASE_PTR) &am

32、p; TPM_SC_TOF_MASK) == TPM_SC_TOF_MASK)</p><p><b>  {</b></p><p>  TPMCounter++;</p><p><b>  }</b></p><p>  BSET(TPM_SC_TOF_SHIFT,TPM_SC_REG(TP

33、M0_BASE_PTR)); //中斷置標(biāo)志位寫1清0 </p><p>  LEDindex++; //位選位+1</p><p>  if (LEDindex>=4) LEDindex=0; //大于4位選口置0</p><p>  i=LEDchan

34、geCode(LEDDataBuffer[LEDindex]-'0'); //轉(zhuǎn)碼</p><p>  LEDshow1(LEDindex,i); </p><p>  if(TPMCounter>5000)</p><p><b>  {</b></p><p

35、>  shidu = sdmn(shidu);</p><p>  if(shidu <= 65)</p><p><b>  {</b></p><p>  changeState(&work);//改變工作狀態(tài)</p><p><b>  }</b></p>&

36、lt;p>  if(work == 0)</p><p><b>  {</b></p><p>  LCDShow(stop); </p><p>  TPMCounter = 0;</p><p>  light_control(LIGHT_PORT, LIGHT_PIN_RED, LIGHT_ON); <

37、;/p><p>  light_control(LIGHT_PORT, LIGHT_PIN_GREEN, LIGHT_OFF); </p><p><b>  }</b></p><p>  if(work == 1)</p><p><b>  {</b></p><p>  

38、LCDShow(working);</p><p>  TPMCounter = 0;</p><p>  shidu = 80;</p><p>  light_control(LIGHT_PORT, LIGHT_PIN_GREEN, LIGHT_ON);</p><p>  light_control(LIGHT_PORT, LIGHT_

39、PIN_RED, LIGHT_OFF);</p><p>  changeState(&work);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><

40、b>  3.3構(gòu)件組成</b></p><p><b>  1、TPM構(gòu)件:</b></p><p>  //=================================================================</p><p>  //文件名稱:tpm.c</p><p>

41、  //功能概要:tpm底層驅(qū)動構(gòu)件源文件</p><p>  //版權(quán)所有:蘇州大學(xué)飛思卡爾嵌入式中心(sumcu.suda.edu.cn)</p><p>  //====================================================================</p><p>  #include "tpm.h&

42、quot;</p><p>  //定時器模塊0,1,2地址映射</p><p>  Const TPM_MemMapPtr</p><p>  TPM_ARR[]={TPM0_BASE_PTR,TPM1_BASE_PTR,TPM2_BASE_PTR};</p><p>  //================================

43、====================================</p><p>  //函數(shù)名稱:tpm_enable_int </p><p>  //功能概要:使能tpm模塊中斷。

44、 </p><p>  //參數(shù)說明:tpmModule:模塊號:0、1、2 </p><p><b>  //函數(shù)返回:無</b></p><p>  //============

45、========================================================</p><p>  void tpm_enable_int(uint_8 tpmModule)</p><p><b>  {</b></p><p>  enable_irq(tpm0_irq_no + tpmModule);&l

46、t;/p><p><b>  }</b></p><p>  //====================================================================</p><p>  //函數(shù)名稱:tpm_disable_int

47、 </p><p>  //功能概要:禁止tpm模塊初始化。 </p><p>  //參數(shù)說明:tpmModule:模塊號:0、1、2

48、 </p><p><b>  //函數(shù)返回:無</b></p><p>  //====================================================================</p><p>  void tpm_disable_int(uint_8 tpmModule)</p

49、><p><b>  {</b></p><p>  disable_irq(tpm0_irq_no + tpmModule);</p><p><b>  }</b></p><p>  //=======================================================

50、=============</p><p>  //函數(shù)名稱:tpm_init </p><p>  //功能概要:初始化tpm模塊. </p><p>  //參數(shù)說明:tpmModule

51、:模塊號:0、1、2 </p><p>  //clk_src_sel:時鐘源選擇:1:PLL/FLL(推薦)、2:晶振、3:內(nèi)部參考時鐘。1,2可用</p><p>  // int_us:中斷毫秒數(shù),中斷時間間隔,單位為毫秒,10ms=10000</p><p>  //函數(shù)返回:函數(shù)執(zhí)行狀態(tài):0=正常;非0=異常</p><

52、;p>  //====================================================================</p><p>  uint_8 tpm_init (uint_8 tpmModule,uint_8 clk_src_sel,uint_32 int_us)</p><p><b>  {</b></p&g

53、t;<p>  if(tpmModule>2)//防止越界值</p><p><b>  {</b></p><p>  tpmModule=2;</p><p><b>  }</b></p><p>  //開啟SIM時鐘門</p><p>  BSE

54、T(SIM_SCGC6_TPM0_SHIFT+tpmModule,SIM_SCGC6); //使能TPM時鐘</p><p>  //中斷時間計算:(48000/8)*10000/1000=0x7530 10ms中斷一次</p><p>  switch(clk_src_sel)</p><p><b>  {</b></p>

55、<p>  case 1: //MCGPLL/2或者MCGFLL作為時鐘源</p><p>  BSET(SIM_SOPT2_PLLFLLSEL_SHIFT,SIM_SOPT2);//使能PLL為時鐘源</p><p>  int_us=(48000/8)*int_us/1000;</p><p><b>  break; <

56、;/b></p><p>  case 2: //晶振作為時鐘源</p><p>  int_us=(8000/8)*int_us/1000;</p><p>  OSC0_CR|=OSC_CR_ERCLKEN_MASK;//開啟晶振輸出時鐘</p><p><b>  break; </b></p&g

57、t;<p>  case 3: //內(nèi)部參考時鐘,由MCG決定</p><p>  break; </p><p><b>  default:</b></p><p>  return 1; //傳參錯誤,返回</p><p><b>  }</b></p>

58、<p>  SIM_SOPT2 |= SIM_SOPT2_TPMSRC(clk_src_sel);//使能時鐘選擇</p><p>  TPM_ARR[tpmModule]->CNT=0x00;</p><p>  TPM_ARR[tpmModule]->MOD=int_us;</p><p>  //TOF寫1清0,TOIE中斷使能,CM

59、OD選擇每次時鐘加1,PS=0x011 選擇8分頻;</p><p>  TPM_ARR[tpmModule]->SC=TPM_SC_TOF_MASK|TPM_SC_TOIE_MASK|TPM_SC_CMOD(1)|TPM_SC_PS(3);</p><p><b>  return 0;</b></p><p><b>  }

60、</b></p><p>  //====================================================================</p><p>  //函數(shù)名稱:tpm_stop </p><p>  

61、//功能概要:禁止tpm模塊。 </p><p>  //參數(shù)說明:tpmModule:模塊號:0、1、2 </p><p><b>  //函

62、數(shù)返回:無</b></p><p>  //====================================================================</p><p>  void tpm_stop(uint_8 tpmModule)</p><p><b>  {</b></p><

63、;p>  TPM_ARR[tpmModule]->SC&=~TPM_SC_CMOD(3);</p><p><b>  }</b></p><p><b>  Tpm.h</b></p><p>  //==================================================

64、==================</p><p>  //文件名稱:tpm.c</p><p>  //功能概要:tpm底層驅(qū)動構(gòu)件源文件</p><p>  //版權(quán)所有:蘇州大學(xué)飛思卡爾嵌入式中心(sumcu.suda.edu.cn)</p><p>  //======================================

65、==============================</p><p>  #ifndef TPM_H</p><p>  #define TPM_H</p><p>  #include "common.h"</p><p>  #include "sysinit.h"</p>&

66、lt;p><b>  //中斷號</b></p><p>  #define tpm0_irq_no 17</p><p>  #define tpm1_irq_no 18</p><p>  #define tpm2_irq_no 19</p><p><b>  //時鐘選擇</b><

67、;/p><p>  #define TPM_CLKSRC_PLL 1</p><p>  #define TPM_CLKSRC_OSC 2</p><p>  #define TPM_CLKSRC_IRC 3</p><p><b>  //模塊號</b></p><p>  #define T

68、PM0 0</p><p>  #define TPM1 1</p><p>  #define TPM2 2</p><p>  //====================================================================</p><p>  //函數(shù)名稱:tpm_enable_int

69、 </p><p>  //功能概要:使能tpm模塊中斷。 </p><p>  //參數(shù)說明:tpmModule:模塊號:0、1、2

70、 </p><p><b>  //函數(shù)返回:無</b></p><p>  //====================================================================</p><p>  vo

71、id tpm_enable_int(uint_8 tpmModule);</p><p>  //====================================================================</p><p>  //函數(shù)名稱:tpm_disable_int

72、 </p><p>  //功能概要:禁止tpm模塊初始化。 </p><p>  //參數(shù)說明:tpmModule:模塊號:0、1、2

73、 </p><p><b>  //函數(shù)返回:無</b></p><p>  //====================================================================</p><p>  void tpm_disable_int(uint_8 tpmModule);</p>

74、<p>  //====================================================================</p><p>  //函數(shù)名稱:tpm_init </p><p>  //功能概要:初始化tpm模塊.

75、 </p><p>  //參數(shù)說明:tpmModule:模塊號:0、1、2 </p><p>  //clk_src_sel:時鐘源選擇:1:PLL/FLL(推薦)、2:晶振、3:內(nèi)部參考時鐘。1,2可用</p><p>  // int_us:中斷毫秒數(shù),中斷時間間隔,單位為毫秒,10

76、ms=10000</p><p>  //函數(shù)返回:函數(shù)執(zhí)行狀態(tài):0=正常;非0=異常</p><p>  //====================================================================</p><p>  uint_8 tpm_init (uint_8 tpmModule,uint_8 clk_src_

77、sel,uint_32 int_us);</p><p>  //====================================================================</p><p>  //函數(shù)名稱:tpm_stop </p>&

78、lt;p>  //功能概要:禁止tpm模塊。 </p><p>  //參數(shù)說明:tpmModule:模塊號:0、1、2 </p><p><b&g

79、t;  //函數(shù)返回:無</b></p><p>  //====================================================================</p><p>  void tpm_stop(uint_8 tpmModule);</p><p><b>  #endif</b>&l

80、t;/p><p><b>  2、LED構(gòu)件</b></p><p>  //===================================================================</p><p>  // 文件名稱:led.c

81、 </p><p>  // 功能概要:led構(gòu)件源文件</p><p>  // 版權(quán)所有: 蘇州大學(xué)飛思卡爾嵌入式中心(sumcu.suda.edu.cn) </p><p>  //====================================================================</p&g

82、t;<p>  #include "led.h" //led位選端口</p><p>  struct GPIO led_cs[4]=</p><p><b>  {</b></p><p>  {LED_CS0_PORT,LED_CS0},</p><p>  {LED_

83、CS1_PORT,LED_CS1},</p><p>  {LED_CS2_PORT,LED_CS2},</p><p>  {LED_CS3_PORT,LED_CS3},</p><p>  };//led數(shù)據(jù)端口</p><p>  struct GPIO led_d[8]=</p><p><b>  

84、{</b></p><p>  {LED_D1_PORT,LED_D1},</p><p>  {LED_D2_PORT,LED_D2},</p><p>  {LED_D3_PORT,LED_D3},</p><p>  {LED_D4_PORT,LED_D4},</p><p>  {LED_D5_PO

85、RT,LED_D5},</p><p>  {LED_D6_PORT,LED_D6},</p><p>  {LED_D7_PORT,LED_D7},</p><p>  {LED_D8_PORT,LED_D8},</p><p><b>  };</b></p><p>  //========

86、============================================================</p><p>  //函數(shù)名稱:LEDInit</p><p><b>  //函數(shù)返回:無</b></p><p>  //參數(shù)說明:無 </p><p>  //功能概要:LED初始化。<

87、;/p><p>  //====================================================================</p><p>  void LEDInit()</p><p><b>  { </b></p><p>  uint_8 i = 0;</p>&

88、lt;p>  //定義8根數(shù)據(jù)線為輸出 ,初始輸出0</p><p>  for(i = 0;i < 8;i++)</p><p>  gpio_init (led_d[i].gpio_port, led_d[i].gpio_pin, 1, 0);</p><p>  //定義4位選線定義為輸出 ,初始輸出0</p><p>  

89、for(i = 0;i < 4;i++)</p><p>  gpio_init (led_cs[i].gpio_port, led_cs[i].gpio_pin, 1, 0);</p><p><b>  }</b></p><p>  //================================================

90、====================</p><p>  //函數(shù)名稱:LEDshow1</p><p><b>  //函數(shù)返回:無</b></p><p>  //參數(shù)說明:i:指定LED哪一位顯示,c:顯示的內(nèi)容 </p><p>  //功能概要:指定LED的第i位顯示c。</p><p&

91、gt;  //====================================================================</p><p>  void LEDshow1(uint_8 i, uint_8 c)</p><p><b>  {</b></p><p>  uint_8 temp;</p>

92、<p><b>  uint_8 j;</b></p><p>  //位選全部置0 </p><p>  for (j=0;j<=3;j++)</p><p>  gpio_set (led_cs[j].gpio_port, led_cs[j].gpio_pin, 0);</p><p>  //數(shù)

93、據(jù)上線 </p><p>  for (j=0;j<=7;j++)</p><p><b>  { </b></p><p>  temp = (c>>j) & 0x01;</p><p>  gpio_set (led_d[j].gpio_port, led_d[j].g

94、pio_pin, temp);</p><p><b>  }</b></p><p><b>  //選擇的位選置1</b></p><p>  gpio_set (led_cs[i].gpio_port, led_cs[i].gpio_pin, 1); </p><p><b>  

95、}</b></p><p><b>  //顯示碼表</b></p><p>  const uint_8 Dtable[24] =</p><p>  // 0 1 2 3 4 5 6 7 8 9</p><p>  {0x3F,0x06,0x5B

96、,0x4F,0x66, 0x6D,0x7D,0x07,0x7F,0x6F,</p><p>  // 11 12 13 14 15 16 17 18 19 20</p><p>  // 0. 1. 2. 3. 4. 5. 6. 7. 8. 9.</p><p>  0xBF,0x8

97、6,0xDB,0x4F,0x66, 0x6D,0x7D,0x07,0xFF,0x6F,</p><p>  // 21 22 23(全亮)24(全滅) </p><p>  // E F </p><p>  0x79,0x71, 0xFF, 0x00};</p><p>  //==============

98、======================================================</p><p>  //函數(shù)名稱:LEDchangeCode</p><p>  //函數(shù)返回:返回數(shù)據(jù)num對應(yīng)的顯示碼</p><p>  //參數(shù)說明:num:需要轉(zhuǎn)換成顯示碼的數(shù)字</p><p>  //功能概要:數(shù)字轉(zhuǎn)成顯

99、示碼</p><p>  //===================================================================</p><p>  uint_8 LEDchangeCode(uint_8 num)</p><p><b>  {</b></p><p>  retu

100、rn Dtable[num]; </p><p><b>  }</b></p><p><b>  LED.h</b></p><p>  //====================================================================</p><p

101、>  // 文件名稱:led.h </p><p>  // 功能概要:led構(gòu)件頭文件</p><p>  // 版權(quán)所有: 蘇州大學(xué)飛思卡爾嵌入式中心(sumcu.suda.edu.cn)</p><p>  //================

102、====================================================</p><p>  #ifndef led_H //防止重復(fù)定義(開頭)</p><p>  #define led_H</p><p>  #include "GPIOapp.h" </p><p&

103、gt;  //LED數(shù)據(jù)口分別接PORTB的{11,10,9,8,3,2,1,0}引腳</p><p>  #define LED_D1_PORT PORTB </p><p>  #define LED_D1 11 </p><p>  #define LED_D2_PORT PORTB</p><p>  #def

104、ine LED_D2 10</p><p>  #define LED_D3_PORT PORTB</p><p>  #define LED_D3 9</p><p>  #define LED_D4_PORT PORTB</p><p>  #define LED_D4 8</p><p>  #defi

105、ne LED_D5_PORT PORTB</p><p>  #define LED_D5 3</p><p>  #define LED_D6_PORT PORTB</p><p>  #define LED_D6 2</p><p>  #define LED_D7_PORT PORTB</p><p>

106、  #define LED_D7 1</p><p>  #define LED_D8_PORT PORTB</p><p>  #define LED_D8 0</p><p>  //LED位選口分別接PORTB的{19,18,17,16}引腳</p><p>  #define LED_CS0_PORT PORTB

107、</p><p>  #define LED_CS0 19 </p><p>  #define LED_CS1_PORT PORTB</p><p>  #define LED_CS1 18</p><p>  #define LED_CS2_PORT PORTB</p><p

108、>  #define LED_CS2 17</p><p>  #define LED_CS3_PORT PORTB</p><p>  #define LED_CS3 16</p><p>  //====================================================================</p&g

109、t;<p>  //函數(shù)名稱:LEDInit</p><p><b>  //函數(shù)返回:無</b></p><p>  //參數(shù)說明:無 </p><p>  //功能概要:LED初始化。</p><p>  //==============================================

110、======================</p><p>  void LEDInit();</p><p>  //====================================================================</p><p>  //函數(shù)名稱:LEDshow1</p><p><b>

111、;  //函數(shù)返回:無</b></p><p>  //參數(shù)說明:i:指定LED哪一位顯示,c:顯示的內(nèi)容 </p><p>  //功能概要:指定LED的第i位顯示c。</p><p>  //====================================================================</p>

112、<p>  void LEDshow1(uint_8 i, uint_8 c);</p><p>  //====================================================================</p><p>  //函數(shù)名稱:LEDchangeCode</p><p>  //函數(shù)返回:返回數(shù)據(jù)num對應(yīng)

113、的顯示碼</p><p>  //參數(shù)說明:num:需要轉(zhuǎn)換成顯示碼的數(shù)字</p><p>  //功能概要:數(shù)字轉(zhuǎn)成顯示碼</p><p>  //====================================================================</p><p>  uint_8 LEDchangeCo

114、de(uint_8 num);</p><p>  #endif //防止重復(fù)定義(結(jié)尾)</p><p><b>  3、LCD構(gòu)件</b></p><p>  //====================================================================</p><p&

115、gt;  // 文件名稱:lcd.c </p><p>  // 功能概要:lcd構(gòu)件頭文件</p><p>  // 版權(quán)所有: 蘇州大學(xué)飛思卡爾嵌入式中心(sumcu.suda.edu.cn) </p><p>  //==============

116、======================================================</p><p>  #include "lcd.h"//lcd控制位和數(shù)據(jù)位端口及引腳號</p><p>  struct GPIO LCD[11]=</p><p><b>  {</b></p>&

117、lt;p>  {LCD_RS_PORT,LCD_RS},</p><p>  {LCD_RW_PORT,LCD_RW},</p><p>  {LCD_E_PORT,LCD_E},</p><p>  {LCD_D0_PORT,LCD_D0},</p><p>  {LCD_D1_PORT,LCD_D1},</p><

118、;p>  {LCD_D2_PORT,LCD_D2},</p><p>  {LCD_D3_PORT,LCD_D3},</p><p>  {LCD_D4_PORT,LCD_D4},</p><p>  {LCD_D5_PORT,LCD_D5},</p><p>  {LCD_D6_PORT,LCD_D6},</p><

119、;p>  {LCD_D7_PORT,LCD_D7},</p><p>  };//內(nèi)部函數(shù)原型說明</p><p>  extern void LCDCommand(uint_8 cmd);</p><p>  //====================================================================</

120、p><p>  //函數(shù)名稱:LCDInit</p><p><b>  //函數(shù)返回:無</b></p><p><b>  //參數(shù)說明:無</b></p><p>  //功能概要:LCD初始化。</p><p>  //==========================

121、==========================================</p><p>  void LCDInit()</p><p><b>  {</b></p><p>  uint_32 i = 0; //定義數(shù)據(jù)口和控制口為輸出 </p><p>  for(i = 0;i <

122、; 11;i++)</p><p><b>  {</b></p><p>  gpio_init(LCD[i].gpio_port, LCD[i].gpio_pin, 1,0);</p><p><b>  }</b></p><p>  //設(shè)置指令,RS,R/W = 00, 寫指令代碼 <

123、;/p><p>  gpio_set (LCD[0].gpio_port, LCD[0].gpio_pin, 0);</p><p>  gpio_set (LCD[1].gpio_port, LCD[1].gpio_pin, 0); </p><p><b>  //功能設(shè)置- </b></p><p><b>

124、;  //設(shè)置指令</b></p><p>  LCDCommand(0x38); //5*7點陣模式,2行顯示,8位數(shù)據(jù)總線</p><p>  LCDCommand(0x08); //關(guān)顯示,關(guān)光標(biāo)顯示,不閃爍</p><p>  LCDCommand(0x01); //清屏</p><p&g

125、t;  for (i=0; i<40000; i++)asm("NOP"); //延時</p><p>  LCDCommand(0x06);</p><p>  LCDCommand(0x14); //光標(biāo)右移一個字符位,AC自動加1</p><p>  LCDCommand(0x0C); //開顯示,關(guān)光標(biāo)顯示,

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論