基于lcd1602液晶顯示系統(tǒng)課程設計_第1頁
已閱讀1頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課程設計(論文)</b></p><p>  題 目 名 稱 基于89C51的液晶顯示系統(tǒng)設計 </p><p>  課 程 名 稱 單片機原理及應在電氣測控學科中的應用 </p><p>  學 生 姓 名 <

2、/p><p>  學 號 </p><p>  系 、專 業(yè) 電氣工程系電氣工程及其自動化專業(yè) </p><p>  指 導 教 師 </p><p>  2013年6月14日</p>

3、<p>  課程設計(論文)任務書</p><p>  注:1.此表由指導教師填寫,經(jīng)系、教研室審批,指導教師、學生簽字后生效;</p><p>  2.此表1式3份,學生、指導教師、教研室各1份。</p><p>  指導教師(簽字): 學生(簽字):</p><p><b>

4、;  目錄</b></p><p>  一、摘要·····························

5、3;····································&#

6、183;·········(6)</p><p>  二、緒論······················

7、····································

8、3;·················(7)</p><p>  2.1課題設計目標·············

9、83;····································&

10、#183;········(7)</p><p>  2.2課程設計的主要工作·····················

11、83;····························(7)</p><p>  2.3設計要求··

12、3;····································&#

13、183;·························(7)</p><p>  三、硬件設計·····

14、3;····································&#

15、183;···························(8)</p><p>  3.1系統(tǒng)電路圖···&#

16、183;····································

17、·······················(8)</p><p>  3.2 LCD1602 簡介·······

18、····································

19、3;··············(9)</p><p>  四、軟件設計·················

20、····································

21、3;···············(13)</p><p>  4.1系統(tǒng)框圖···············

22、3;····································&#

23、183;···········(13)</p><p>  4.2參考程序···················&#

24、183;····································

25、········(15)</p><p>  五、程序調試·······················&

26、#183;····································

27、;·········(22)</p><p>  六、課程總結······················

28、····································

29、3;··········(23)</p><p>  七、致謝·····················&

30、#183;····································

31、;·················(24)</p><p>  八、參考文獻··············

32、····································

33、3;··················(25)</p><p><b>  摘要</b></p><p>  液晶顯示在中國已有二十余年的歷史,幾乎已經(jīng)運用與生產生活的各個領域,液晶顯示是

34、集單片機技術、微電子技術、信息處理于一體的新型顯示方式。LED液晶顯示器具有低壓低功耗、顯示信息量大、已于彩色化、無電磁輻射、使用壽命長和無污染等優(yōu)點,是目前顯示器中一個理想的選擇。</p><p>  液晶顯示技術發(fā)展迅猛,市場預測表明,液晶顯示平均年銷售呈增長10%~13%,不久的將來有可能取代CRT,成為電子信息產品的主要顯示器件,液晶顯示器對空間電磁輻射的干擾不敏感,且在緊湊的儀器空間不需要專門的屏蔽保護

35、,因而可大大簡化儀器的結構和降低制造成本,在各種便攜式儀器,儀表將會越來越廣泛的應用。特別是在電池供電的單片機產品中,液晶顯示更是必選的顯示器件。</p><p>  關鍵字:新型顯示方式,LCD液晶顯示器,抗干擾,便攜</p><p><b>  2、緒論</b></p><p><b>  2.1課題設計目標</b>&

36、lt;/p><p>  課程設計是在校學生素質教育的重要環(huán)節(jié),是理論與實踐相結合的橋梁和紐帶。單片機課程設計,要求學生更多的完成軟硬結合的動手實踐方案,解決目前學生課程設計過程中普遍存在的缺乏動手能力的現(xiàn)象。《單片機課程設計》是繼《電子技術》、和《單片機原理與應用》課程之后開出的實踐環(huán)節(jié)課程,其目的和任務是訓練學生綜合運用已學課程“電子技術基礎”、“單片機原理及應用”的基本知識,獨立進行單片機應用技術和開發(fā)工作,掌握

37、單片機程序設計、調試和應用電路設計、分析及調試檢測。</p><p>  2.2課程設計的主要工作</p><p>  (1)對系統(tǒng)的各個模塊的各個功能進行深入分析和研究,在對課題所采用的方案進行可行詳細的研究后設計具體功能電路。</p><p> ?。?)熟悉所選芯片的功能并完成具體電路設計。</p><p> ?。?)對系統(tǒng)的最終指標進行

38、測試,針對系統(tǒng)的不足,進行分析并提出一些改正方法。</p><p><b>  2.3設計要求</b></p><p>  利用89C51驅動液晶顯示器工作,液晶顯示器的型號自己確定(可以用1602或者12864)要求顯示出自己的基本信息。</p><p>  1、要求設計出硬件系統(tǒng)的電氣原理圖;</p><p>  2

39、、要求設計出程序流程圖和程序;</p><p>  3、要求設計出實物或者仿真調試。</p><p><b>  3、硬件設計</b></p><p><b>  3.1系統(tǒng)電路圖</b></p><p>  整個電路系統(tǒng)由外部顯示電路系統(tǒng)和最小系統(tǒng)兩個部分組成。</p><p&

40、gt;  液晶顯示系統(tǒng)原理圖如下所示:</p><p><b>  液晶顯示系統(tǒng)原理圖</b></p><p>  在外部顯示電路系統(tǒng)中,由于我們使用的LCD液晶顯示屏尺寸較大,所以我們使用了8個10千歐姆的上拉電阻,使LCD液晶顯示屏能夠驅動;同時我們還使用了10千歐姆的定位器。</p><p>  最小系統(tǒng)包括晶振電路和復位電路兩個部分,復

41、位電路中接入了一個復位按鈕。</p><p>  單片機最小系統(tǒng)圖如下所示:</p><p><b>  單片機最小系統(tǒng)圖</b></p><p>  3.2 LCD1602 簡介</p><p>  3.2.1 LCD1602 引腳功能</p><p>  LCD1602引腳如圖3.1所示<

42、;/p><p>  圖3.2 LCD1602引腳圖</p><p>  引腳圖的功能如表3—2所示</p><p><b>  表3—2引腳功能圖</b></p><p>  3.2.2 LCD1602顯示模指令集</p><p><b> ?。?)清屏</b></p&g

43、t;<p>  功能:清DDROM值和AC值</p><p><b> ?。?)歸位</b></p><p>  功能:光標復位,光標返回到地址00H</p><p><b> ?。?)輸入方式設置</b></p><p>  功能:設置光標,畫面移動方式。</p>&l

44、t;p>  其中:I/D=1:數(shù)據(jù)讀寫操作后,AC 自加一;</p><p>  I/D=0:數(shù)據(jù)讀寫操作后,AC 自減一;</p><p>  S=1:數(shù)據(jù)讀寫操作,畫面平移;</p><p>  S=0:數(shù)據(jù)讀寫操作,畫面不動;</p><p><b>  (4)顯示開關控制</b></p>&l

45、t;p>  功能:設置顯示、光標和閃爍開關。</p><p>  其中:D 表示顯示開關,D=1 為開,D=0 為關;</p><p>  C表示光標開關,C=1 為開,C=0 為關;</p><p>  B表示閃爍開關,B=1 為開,B=0 為關。</p><p> ?。?)光標、畫面位移</p><p>  

46、功能:光標、畫面移動。</p><p>  其中:S/C=1 畫面移動一個字符位;</p><p>  S/C=0 光標移動一個字符位;</p><p>  R/L=1:右移;R/L=0 左移。</p><p><b>  (6)功能設置</b></p><p>  功能:工作方式設置(初始化指令

47、)。</p><p>  其中:DL=1,8 位數(shù)據(jù)接口;</p><p>  DL=0,4 位數(shù)據(jù)接口;</p><p>  N=1,兩行顯示;N=0,一行顯示;</p><p>  F=1,5*10 點陣顯示;F=0,5*7 點陣顯示。</p><p> ?。?)CGRAM 地址設置</p><

48、p>  功能:設置CGRAM 地址,A5~A0=0~3FH。</p><p> ?。?)DDRAM 地址設置</p><p>  功能:設置DDRAM 地址。</p><p>  其中:N=0,一行顯示A6~A0=0~4FH;</p><p>  N=1 兩行顯示,首行A6~A0=0~2FH,次行A6~A0=40~67H。</p&

49、gt;<p> ?。?)讀BF 及AC 值</p><p>  功能:讀忙BF 和地址計數(shù)器AC 的值。</p><p>  其中:BF=1:忙,BF=0:準備好。此時AC 值意義為最近一次地址設置(CGRAM 或DDRAM)定義。</p><p><b> ?。?0)寫數(shù)據(jù)</b></p><p>  功

50、能:根據(jù)最近設置的地址性質,數(shù)據(jù)寫入CGRAM或DDRAM中。</p><p><b> ?。?1)讀數(shù)據(jù)</b></p><p>  功能:根據(jù)最近設置的地址性質,從CGRAM或DDRAM數(shù)據(jù)讀出。</p><p><b>  4、軟件設計</b></p><p><b>  4.1系統(tǒng)

51、框圖</b></p><p>  本課題的程序設計是在C語言的基礎之上的,可分為兩大模塊,分別是:</p><p><b>  (1)IIC協(xié)議;</b></p><p><b> ?。?)LCD顯示。</b></p><p>  (3)程序總體框圖如圖4.1 所示:</p>

52、<p>  圖4.1 總程序框圖</p><p>  LCD 顯示程序框圖如圖4.2 所示:</p><p>  程序編寫的基本思路:</p><p>  開始→初始化→延時程序→寫入指令→寫入地址→讀取地址→寫入數(shù)據(jù)→讀取數(shù)據(jù)→返回</p><p>  圖4.2LCD顯示程序框圖</p><p><

53、;b>  4.2 參考程序</b></p><p>  #include <reg51.h></p><p>  #include <intrins.h></p><p>  typedef unsigned char BYTE;</p><p>  typedef bit BOOL;</p&g

54、t;<p>  sbit LCD_RS = P2^6; //定義引腳功能</p><p>  sbit LCD_RW = P2^5;</p><p>  sbit LCD_EP = P2^7;</p><p>  BYTE code dis1[] = {" Welcome to "};</p><p

55、>  BYTE code dis2[] = {"Shaoyang College"};</p><p>  BYTE code dis3[] = {" This is my "};</p><p>  BYTE code dis4[] = {"project design"};</p><p>  B

56、YTE code dis5[] = {" Liu Chen "};</p><p>  BYTE code dis6[] = {" 1992 10 08 "};</p><p>  void delay(int ms)</p><p><b>  {</b></p><p

57、><b>  int i;</b></p><p>  while(ms--) //延時</p><p><b>  {</b></p><p>  for(i = 0; i< 250; i++)</p><p><b>  {</b></p>&l

58、t;p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  }&

59、lt;/b></p><p><b>  }</b></p><p><b>  }</b></p><p>  BOOL lcd_bz()</p><p><b>  {</b></p><p>  BOOL result;</p>

60、<p>  LCD_RS = 0;</p><p>  LCD_RW = 1;</p><p>  LCD_EP = 1;</p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>

61、;  _nop_();</b></p><p><b>  _nop_();</b></p><p>  result = (BOOL)(P0 & 0x80);//判斷狀態(tài)字最高位STA7,確保STA7為0</p><p>  LCD_EP = 0;</p><p>  return result;&

62、lt;/p><p><b>  }</b></p><p>  void lcd_wcmd(BYTE cmd)// 寫入指令數(shù)據(jù)到LCD</p><p><b>  {</b></p><p>  while(lcd_bz()); //為1不能進行讀寫操作</p><p>

63、  LCD_RS = 0; //寫指令</p><p>  LCD_RW = 0; </p><p>  LCD_EP = 0;</p><p><b>  _nop_();</b></p><p><b>  _nop_(); </b></p><p>  P0 = cm

64、d; //將指令寫到P0口</p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p

65、><p>  LCD_EP = 1;</p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();&l

66、t;/b></p><p>  LCD_EP = 0; //產生下降沿,將指令寫入LCD </p><p><b>  }</b></p><p>  void lcd_pos(BYTE pos)</p><p><b>  {</b></p><p>  lcd_

67、wcmd(pos | 0x80); //LCD數(shù)據(jù)指針格式80H+地址</p><p><b>  }</b></p><p>  void lcd_wdat(BYTE dat) </p><p><b>  {</b></p><p>  while(lcd_bz()); //LCD忙檢測,

68、為1不能進行讀寫,為0可以讀寫</p><p>  LCD_RS = 1; </p><p>  LCD_RW = 0; </p><p>  LCD_EP = 0;</p><p>  P0 = dat; //數(shù)據(jù)送入P0口</p><p><b>  _nop_();</b></p&

69、gt;<p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p>  LCD_EP = 1; //使能端拉高。為產生下降沿做準備</p><p><

70、;b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p>  LCD_EP = 0; //使能端拉低,

71、將數(shù)據(jù)寫入LCD </p><p><b>  }</b></p><p>  void lcd_init() //LCD初始化設定</p><p><b>  {</b></p><p>  lcd_wcmd(0x38); </p><p>  delay(1);

72、</p><p>  lcd_wcmd(0x0c); //顯示開,關光標</p><p><b>  delay(1);</b></p><p>  lcd_wcmd(0x06); //移動光標,當讀或寫一個字符后地址指針加1且光標加1</p><p><b>  delay(1);</b>&l

73、t;/p><p>  lcd_wcmd(0x01); </p><p><b>  delay(1);</b></p><p><b>  }</b></p><p>  void flash()</p><p><b>  {</b></p>

74、<p>  delay(300);</p><p>  lcd_wcmd(0x08);</p><p>  delay(100);</p><p>  lcd_wcmd(0x0c);</p><p>  delay(100);</p><p>  lcd_wcmd(0x08);</p>&l

75、t;p>  delay(100);</p><p>  lcd_wcmd(0x0c);</p><p>  delay(100);</p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p&g

76、t;<p>  BYTE i,j; //定義uisigned char型變量i,j</p><p>  lcd_init(); // 初始化LCD</p><p>  delay(10); //延時10ms</p><p><b>  while(1)</b></p><p><b>  {

77、 </b></p><p>  lcd_wcmd(0x06); //向右移動光標</p><p>  lcd_pos(0x10); //設置顯示位置為第一行的第17個字符</p><p><b>  i = 0;</b></p><p>  while(dis1[ i ] != '\0')

78、</p><p><b>  { </b></p><p>  lcd_wdat(dis1[ i ]);</p><p><b>  i++;</b></p><p>  // delay(30); //控制兩字之間顯示速度</p><p><b>  }<

79、/b></p><p>  lcd_pos(0x50); //設置顯示位置為第二行第17個字符</p><p><b>  i = 0;</b></p><p>  while(dis2[ i ] != '\0')</p><p><b>  {</b></p>

80、<p>  lcd_wdat(dis2[ i ]);</p><p><b>  i++;</b></p><p>  //delay(30); //控制兩字之間顯示速度</p><p><b>  }</b></p><p>  for(j=0;j<16;j++)</p&

81、gt;<p><b>  {</b></p><p>  lcd_wcmd(0x18); //字符同時左移一格</p><p>  delay(80);</p><p><b>  } </b></p><p>  flash(); //閃動二次</p><p&

82、gt;  delay(800); //控制停留時間</p><p>  lcd_wcmd(0x01); //清除LCD的顯示內容 </p><p><b>  delay(1);</b></p><p>  lcd_wcmd(0x06); </p><p>  lcd_pos(0); //設置顯示位置為第一行的

83、第1個字符</p><p><b>  i = 0;</b></p><p>  while(dis3[ i ] != '\0')</p><p><b>  { </b></p><p>  lcd_wdat(dis3[ i ]);</p><p><

84、;b>  i++;</b></p><p>  delay(30); //控制兩字之間顯示速度</p><p><b>  }</b></p><p>  lcd_pos(0x40); //設置顯示位置為第二行的第16個字符</p><p><b>  i = 0;</b>&l

85、t;/p><p>  while(dis4[ i ] != '\0')</p><p><b>  {</b></p><p>  lcd_wdat(dis4[ i ]); </p><p><b>  i++;</b></p><p>  delay(30);

86、 //控制兩字之間顯示速度</p><p><b>  }</b></p><p><b>  flash();</b></p><p>  delay(800); //控制停留時間</p><p>  lcd_wcmd(0x01); </p><p><b&g

87、t;  delay(1);</b></p><p>  lcd_wcmd(0x06); </p><p>  lcd_pos(0); //設置顯示位置為第一行的第1個字符</p><p><b>  i = 0;</b></p><p>  while(dis5[ i ] != '\0')&

88、lt;/p><p><b>  {</b></p><p>  lcd_wdat(dis5[ i ]);</p><p><b>  i++;</b></p><p>  delay(30); //控制兩字之間顯示速度</p><p><b>  }</b>

89、;</p><p>  lcd_pos(0x40); //設置顯示位置為第二行的第16個字符</p><p><b>  i = 0;</b></p><p>  while(dis6[ i ] != '\0')</p><p><b>  {</b></p><

90、;p>  lcd_wdat(dis6[ i ]);</p><p><b>  i++;</b></p><p>  delay(30); //控制兩字之間顯示速度</p><p><b>  }</b></p><p><b>  flash();</b></p

91、><p>  delay(800);</p><p>  lcd_wcmd(0x01);</p><p>  delay(200); //控制兩屏轉換時間</p><p><b>  }</b></p><p><b>  }</b></p><p>&

92、lt;b>  5、程序調試</b></p><p>  程序的調試。調試后的效果圖如5.1 所示:</p><p>  5.1 調試后的效果圖</p><p>  程序能夠達到預定目標,能夠動態(tài)顯示且循環(huán)顯示以下內容:</p><p>  Welcome to </p><p>  Shaoyang

93、 college</p><p>  This is my</p><p>  Project design</p><p><b>  Liu Chen</b></p><p>  1992 10 08</p><p><b>  6、課程總結</b></p>

94、<p>  本次的課程設計已經(jīng)基本完成,基本也達到了預期的目的與要求,但是在系統(tǒng)的調試方面還不夠健全,對漢字與圖片的顯示方面無法實現(xiàn)。</p><p>  從選題到現(xiàn)在已有近半個月的時間,這個程序的設計主要經(jīng)歷了以下幾個過程:廣泛查閱資料、總體思路確定、方案具體化及討論修改、方案的確定、程序編寫、軟件調試,當讓還有論文的定稿。</p><p>  課程設計是一個非常緊密的過程,

95、前期的結果是為后期奠定基礎。在這過程中,我不僅對LED控制系統(tǒng)有了一定的了解,也掌握了更多的專業(yè)知識,熟悉了單片機開發(fā)軟件Keil和仿真軟件Proteus的使用,更學會了系統(tǒng)模塊設計的基本思想。</p><p>  總之,通過本次課程設計,我在理論、實踐與思想方面都有很大的收獲。</p><p><b>  7、致謝</b></p><p> 

96、 這次課程設計,凝結了很多人的心血,在此我表示由衷的感謝。沒有他們的幫助,我將無法順利完成這次設計。 首先,要感謝老師的耐心細致的指導,作為一個初次做課程設計的學生,由于經(jīng)驗的匱乏,難免有許多考慮不周全的地方,如果沒有導師的督促指導,想要完成這個設計是難以想象的。其次,學校在這方面也給我們提供了很大的支持和幫助,每個設計小組配有專門的指導老師,幫助我們能順利完成整個設計。最后,還要感謝同學這半個月來對我的關心與支持,感謝各位老師

97、在此期間對我的嚴格要求。同時也要感謝身邊朋友的熱心幫助,沒有你們的關心與支持,我不可能這么快完成我的此次課程設計!這半個月是我學習過程中很有價值的一段時光,也將會成為我以后的美好回憶。</p><p><b>  8、參考文獻</b></p><p>  李朝青.單片機原理及接口技術(第三版)[M].北京:北京航空航天大學出版社,2006.12:P194-P296&l

溫馨提示

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

評論

0/150

提交評論