LCD1602液晶顯示器設計_第1頁
LCD1602液晶顯示器設計_第2頁
LCD1602液晶顯示器設計_第3頁
LCD1602液晶顯示器設計_第4頁
LCD1602液晶顯示器設計_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、LCD1602 液晶顯示課程設計第一章 緒論1.1 課題背景當今時候是一個信息化的時代, 信息的重要性不言而喻的, 獲取手段顯得尤其重要。人們所接受的信息有 70%來自于人的視覺,無論用何種方式獲取的信息最終需要有某種顯示方式來表示。 在當代顯示技術中, 主流的有 LED顯示屏和 LCD 液晶顯示,而在這些顯示技術中,尤其以液晶顯示器LCD(Liquid crystal display )為代表的平板顯示器發(fā)展最快,應用最廣。LCD 是典型的發(fā)光器件,它一材料科學為基礎,綜合利用了精密機械,光電及計算機技術,并正在微機械,微光學,纖維光學等前沿領域研究基礎上,向高集成化,智能化方向發(fā)展。液晶

2、顯示技術 發(fā)展迅猛 ,市 場預測表 明,液晶 顯示 平均年銷 售呈增長10%13%,不久的將來有可能取代 CRT,成為電子信息產品的主要顯示器件,另外,液晶顯示器對空間電磁輻射的干擾不敏感,且在緊湊的儀器空間不需要專門的屏蔽保護,因而課大大簡化儀器的結構和制造成本,在各種便攜式儀器, 儀表將會越來越廣泛的應用。特別是在電池供電的單片機產品中,液晶顯示更是必選的顯示器件。1.2 課題設計目標本設計是基于 AT89C51 芯片單片機為主控芯片, 結合 1602 液晶顯示模板等外圍電路,通過軟件程序, 來實現(xiàn)液晶顯示英文字母。 本次設計的目的在于利用單片機和 IIC 技術來顯示英文字母。1.3 課程

3、設計的主要工作( 1)對系統(tǒng)的各個模塊的各個功能進行深入分析和研究,在對課題所采用的方案進行可行詳細的研究后設計具體功能電路。( 2)熟悉所選芯片的功能并完成具體電路設計。( 3)對系統(tǒng)的最終指標進行測試,針對系統(tǒng)的不足,進行分析并提出一些改正方法。1.4 設計要求( 1)運行 IIC 總線技術。( 2)循環(huán)顯示字母。第二章硬件設計2.1 LCD1602 簡介2.1.1LCD1602引腳功能LCD1602 引腳如圖 2.1 所示圖 2.1 LCD1602 引腳圖引腳圖的功能如表21 所示2表 引腳功能圖2.1.2LCD1602 顯示模指令集(1)清屏功能:清 DDROM 值和 AC 值(2)歸

4、位功能:光標復位,光標返回到地址00H(3)輸入方式設置功能:設置光標,畫面移動方式。其中: I/D=1 :數據讀寫操作后, AC 自加一;I/D=0 :數據讀寫操作后, AC 自減一;S=1:數據讀寫操作,畫面平移;S=0:數據讀寫操作,畫面不動;(4)顯示開關控制3功能:設置顯示、光標和閃爍開關。其中: D 表示顯示開關, D=1 為開, D=0 為關; C 表示光標開關, C=1 為開, C=0 為關; B 表示閃爍開關, B=1 為開, B=0 為關。(5)光標、畫面位移功能:光標、畫面移動。其中: S/C=1 畫面移動一個字符位;S/C=0 光標移動一個字符位;R/L=1 :右移;

5、R/L=0 左移。(6)功能設置功能:工作方式設置(初始化指令)。其中: DL=1 ,8 位數據接口;DL=0 ,4 位數據接口 ;N=1,兩行顯示; N=0,一行顯示;F=1,5*10 點陣顯示; F=0,5*7 點陣顯示。(7)CGRAM 地址設置功能:設置 CGRAM 地址, A5A0=0 3FH。(8)DDRAM地址設置功能:設置 DDRAM地址。4其中: N=0,一行顯示 A6A0=04FH ;N=1 兩行顯示,首行 A6A0=02FH ,次行 A6A0=4067H 。(9)讀 BF 及 AC值功能:讀忙 BF 和地址計數器 AC 的值。其中:BF=1:忙,BF=0:準備好。此時 A

6、C 值意義為最近一次地址設置 (CGRAM或 DDRAM )定義。(10)寫數據功能:根據最近設置的地址性質,數據寫入CGRAM 或 DDRAM中。(11)讀數據功能:根據最近設置的地址性質,從CGRAM 或 DDRAM數據讀出。2.2 IIC 總線IIC 總線是 PHILIPS 公司推出的兩線式串行總線。用于連接微控制器及其外圍設備。 IIC 總線產生于在 80 年代,最初為音頻和視頻設備開發(fā),如今主要在服務器管理中使用,其中包括單個組件狀態(tài)的通信。 例如管理員可對各個組件進行查詢,以管理系統(tǒng)的配置或掌握組件的功能狀態(tài), 如電源和系統(tǒng)風扇。 可隨時監(jiān)控內存、 硬盤、網絡、系統(tǒng)溫度等多個參數,

7、增加了系統(tǒng)的安全性,方便了管理。2.2.1IIC 總線的特點(1) 只要求兩條總線線路 一條串行數據線 SDA 一條串行時鐘線 SCL。(2) 每個連接到總線的器件都可以通過唯一的地址和一直存在的簡單的主機從機關系軟件設定地址;主機可以作為主發(fā)送器或主機接收器。(3) 它是一個真正的多主機總線,如果兩個或更多主機同時初始化數據5傳輸可以通過沖突檢測和仲裁防止數據被破壞。(4) 串行的 8 位雙向數據傳輸位速率在標準模式下可達100kbit/s 快速模式下可達 400kbit/s 高速模式下可達 4Mbit/s 。(5) 片上的濾波器可以濾去總線數據線上的毛刺波保證數據完整。(6) 連接到相同總

8、線的 IC 數量只受到總線的最大電容 400pF 限制。2.2.2IIC 協(xié)議總線信號時序( 1)數據的有效性SDA 線上的數據必須在時鐘的高電平周期保持穩(wěn)定數據線的高或低電平狀態(tài)只有在 SCL 線的時鐘信號是低電平時才能改變。如圖2.2 IIC 總線的位傳輸所示。圖 2.2IIC 總線的為傳輸( 2)起始和停止條件在 IIC 總線中 唯一出現(xiàn)的是被定義為起始 (S)和停止 (P )條件(見圖 2.3)的情況。其中一種情況是在 SCL 線是高電平時, SDA 線從高電平向低電平切換,這個情況表示起始條件。當 SCL 是高電平時 SDA 線由低電平向高電平切換表示停止條件。起始和停止條件一般由主

9、機產生, 總線在起始條件后被認為處于忙的狀態(tài)。 在停止條件的某段時間后,總線被認為再次處于空閑狀態(tài)。如果產生重復起始(Sr)條件而不產生停止條件, 總線會一直處于忙的狀態(tài), 此時的起始條件 (S)和重復起始 (Sr)條件在功能上是一樣的。因此在本文檔的剩余部分,符號 (S)將作為一個通用的術語既表示起始條件又表示重復起始條件,除非有特別聲明的 (Sr)。6如果連接到總線的器件合并了必要的接口硬件,那么用它們檢測起始和停止條件十分簡便。但是,沒有這種接口的微控制器在每個時鐘周期至少要采樣 SDA 線兩次來判別有沒有發(fā)生電平切換。圖 2.3 起始和停止條件( 3)總線空閑狀態(tài)SDA 和 SCL 兩

10、條信號線都處于高電平,即總線上所有的器件都釋放總線,兩條信號線各自的上拉電阻把電平拉高。( 4)數據傳輸與應答信號ACK發(fā)送到 SDA 線上的數據必須是 8 位的。每次傳輸可以發(fā)送的數據不受限制。每個字節(jié)后必須在時鐘的第 9 個脈沖期間釋放數據總線( SDA 為高),由接收器發(fā)送一個 ACK (把數據總線的電平拉低 )來表示數據成功接收。如圖 2.4 IIC 總線響應。圖 2.4 IIC 總線響應首先傳輸的是數據的最高位(MSB )。如果從機要完成一些其他功能后(例如一個內部中斷服務程序) 才能接收或發(fā)送下一個完整的數據字節(jié),可以使時鐘 SCL保持低電平迫使主機進入等待狀態(tài)。 當從機準備好接收

11、下一個數據字節(jié)并釋放時鐘線SCL 后,數據傳輸繼續(xù)。如圖2.5 IIC 總線數據傳輸所示。7圖 2.5 IIC 總線數據傳輸2.2.3IIC 總線器件尋址方式IIC 總線上的器件是共用總線的,因此,主器件在進行數據傳輸前要選擇通信的從器件,即進行總線尋址。 總線上的所有器件都有唯一的地址, 由器件地址和引腳地址兩部分構成,共 7 位。引腳地址由 IIC 總線外圍器件的地址引腳 (A2 、A1、 A0 )決定的。數據的傳輸遵循如圖2.6 完整的數據傳送所示,在起始條件之后,發(fā)送一個 7 位的從機地址,緊接著第8 位是數據方向 (R/ W),0-表示發(fā)送數據(寫), 1-表示接收數據(讀)。數據傳

12、輸一般由主機產生的停止位(P)終止。但是如果主機仍希望在總線上通訊,它可以產生重復起始條件(Sr),和尋址另一個從機,而不是首先產生一個停止條件。在這種傳輸中,可能有不同的讀/寫格式結合。如圖2.6 IIC 總線完整的數據傳輸。圖 2.6IIC 總線的數據傳輸2.3 系統(tǒng)電路圖系統(tǒng)的電路圖如2.7 所示 :8圖 2.7系統(tǒng)電路圖運行狀況如圖 2.8 :圖 2.9運行狀態(tài)9第三章軟件設計3.1 系統(tǒng)框圖本課題的程序設計是在C 語言的基礎之上的,可分為兩大模塊,分別是:(1)IIC 協(xié)議; (2)LCD 顯示。程序總體框圖如圖3.1 所示:10圖 3.1 總程序框圖LCD 顯示程序框圖如圖3.2

13、所示:11圖 3.2LCD 顯示程序框圖3.2 程序清單(一)#include#include#define uint unsigned int#define uchar unsigned charuchar code display_1=good morning;uchar code display_2=miss you;sbit lcden=P34;sbit lcdrs=P35;/sbit lcdrw=P36;uchar num;12uint i=0;void delayms(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void write

14、_com(uchar com)lcdrs=0;lcden=0;P0=com;delayms(5);lcden=0;lcden=1;delayms(5);lcden=0;void write_data(uchar date)lcdrs=1;P0=date;delayms(5);lcden=0;lcden=1;delayms(5);lcden=0;void init()lcden=0;13write_com(0x38);write_com(0x0f);write_com(0x06);write_com(0x01);void main()init();/lcdrw=0;write_com(0x80+

15、0x1a);while(display_1i!=0)write_data(display_1i);i+;delayms(5);write_com(0x80+0x5f);for(num=0;num10;num+)write_data(display_2num);delayms(5);for(num=0;num16;num+)write_com(0x18);delayms(100);while(1);(二)14/* * File: main.c* 功能:向 LCD 輸出 HelloWorld*/#includeconfig.h#define rs (18)#define rw (19)#defin

16、e en (110)#define busy (17)uint8 txt=HelloWorld;/* 名稱: ChkBusy()* 功能:檢查總線是否忙*/void ChkBusy()IODIR=0x700;while(1)IOCLR=rs;IOSET=rw;IOSET=en;if(!(IOPIN & busy)break;IOCLR=en;15IODIR=0x7ff;/* 名稱: WrOp()* 功能:寫函數*/void WrOp(uint8 dat)ChkBusy();IOCLR=rs;/全部清零IOCLR=rw;IOCLR=0xff;/先清零IOSET=dat;/再送數IOSET=en;

17、IOCLR=en;/* 名稱: WrDat()* 功能:寫數據函數*/void WrDat(uint8 dat)ChkBusy();IOSET=rs;IOCLR=rw;IOCLR=0xff;/先清零IOSET=dat;/再送數16IOSET=en;IOCLR=en;/* 名稱: lcd_init()* 功能: lcd 初始化函數*/void lcd_init(void)WrOp(0x38);WrOp(0x06);/光標加 1WrOp(0x0c);/開顯示/* 名稱: DisText()* 功能:顯示文本函數*/void DisText(uint8 addr,uint8 *p)WrOp(addr

18、);while(*p !=0)WrDat(*(p+);/* * 名稱: main()* 功能:顯示文本17* */intmain(void)lcd_init();IODIR=0x7ff;/設置為輸出IOCLR=0x7ff;DisText(0x86,txt);while(1);/*-文件信息-* 文件名: target.c* 描 述: lpc210x(飛利浦的 ARM )目標板特殊的代碼, 包括異常處理程序和目標板初始化程序*每個工程應當具有這個文件的拷貝,用戶根據程序的需要修改本文件。* 注 意:本文件必須以 ARM (32 位代碼)方式編譯,否則,必須更改 init.s 和 vector.s

19、 文件*別的 C 代碼不必使用 ARM (32 位代碼)方式編譯* */#define IN_TARGET#include config.h/*函數名稱 : IRQ_Exception18* 功能描述 : 中斷異常處理程序,用戶根據需要自己改變程序*/void _irq IRQ_Exception(void)while(1);/ 這一句替換為自己的代碼/* * 函數名稱 : FIQ_Exception* 功能描述 : 快速中斷異常處理程序,用戶根據需要自己改變程序*/void FIQ_Exception(void)while(1);/ 這一句替換為自己的代碼/* * 函數名稱 : Target

20、Init* 功能描述 : 目標板初始化代碼, 在需要的地方調用, 根據需要改變*/void TargetInit(void)/* 添加自己的代碼*/19/* * 函數名稱 : TargetResetInit* 功能描述 : 調用 main 函數前目標板初始化代碼,根據需要改變,不能刪除*/void TargetResetInit(void)/* 設置系統(tǒng)各部分時鐘*/*PLLCON = 1;#if (Fcclk / 4) / Fpclk) = 1VPBDIV = 0;#endif#if (Fcclk / 4) / Fpclk) = 2VPBDIV = 2;#endif#if (Fcclk /

21、4) / Fpclk) = 4VPBDIV = 1;#endif#if (Fcco / Fcclk) = 2PLLCFG = (Fcclk / Fosc) - 1) | (0 5); #endif#if (Fcco / Fcclk) = 420PLLCFG = (Fcclk / Fosc) - 1) | (1 5); #endif#if (Fcco / Fcclk) = 8PLLCFG = (Fcclk / Fosc) - 1) | (2 5); #endif#if (Fcco / Fcclk) = 16PLLCFG = (Fcclk / Fosc) - 1) | (3 5); #endifP

22、LLFEED = 0xaa;PLLFEED = 0x55;while(PLLSTAT & (1 10) = 0);PLLCON = 3;PLLFEED = 0xaa;PLLFEED = 0x55;*/* 設置存儲器加速模塊*/MAMCR = 2; /MAMCR 8u2 00 MAM 功能被禁止、 01 MAM 功能部分使能、 10MAM 功能完全使能/* MAMTIM 8u30000保留0011一段時間內只有1 個處理器時鐘(cclk)用于 MAM取指。0102一段時間內只有2 個處理器時鐘( cclk)用于 MAM 取指。0113一段時間內只有3 個處理器時鐘(cclk)用于 MAM取指。1

23、004一段時間內只有4 個處理器時鐘 (cclk)用于 MAM取指。1015一段時間內只有5 個處理器時鐘(cclk)用于 MAM取指。211106一段時間內只有6 個處理器時鐘(cclk)用于 MAM取指。1117一段時間內只有7 個處理器時鐘 (cclk)用于 MAM取指。*/#if Fcclk 20000000MAMTIM = 1;#else#if Fcclk 40000000MAMTIM = 2;#elseMAMTIM = 3;#endif#endif/* 初始化 VIC */VICIntEnClr = 0xffffffff;/ 清所有中斷使能,即關中斷 VICVectAddr = 0

24、;/ 默認向量地址寄存器VICIntSelect = 0;/1:對應的中斷請求分配為 FIQ。0:對應的中斷請求分配為 IRQ。/* 添加自己的代碼*/#include rt_sys.h#include stdio.h#pragma import(_use_no_semihosting_swi)#pragma import(_use_two_region_memory)int _rt_div0(int a)22a = a;return 0;int fputc(int ch,FILE *f)ch = ch;f = f;return 0;int fgetc(FILE *f)f = f;return

25、 0;int _sys_close(FILEHANDLE fh)fh = fh;return 0;int _sys_write(FILEHANDLE fh, const unsigned char * buf,unsigned len, int mode)fh = fh;buf = buf;len =len;23mode = mode;return 0;int _sys_read(FILEHANDLE fh, unsigned char * buf, unsigned len, int mode)fh = fh;buf = buf;len =len;mode = mode;return 0;void _ttywrch(int ch)ch = ch;int _sys_istty(FILEHANDLE fh)fh = fh;return 0;int _sys_seek(FILEHANDLE fh, long pos)fh = fh;return 0;int _sys_ensure(FILEHANDLE fh)24fh = fh;return 0;long _sys_flen(FILEHANDLE fh)fh = fh;return 0;int _sys_tmpnam(char * name, int sig, unsigned maxlen)n

溫馨提示

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

評論

0/150

提交評論