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

下載本文檔

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

文檔簡介

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

2、表明,液晶顯示平均年銷售呈增長10%13%,不久的將來有可能取代CRT,成為電子信息產(chǎn)品的主要顯示器件,另外,液晶顯示器對空間電磁輻射的干擾不敏感,且在緊湊的儀器空間不需要專門的屏蔽保護(hù),因而課大大簡化儀器的結(jié)構(gòu)和制造成本,在各種便攜式儀器,儀表將會越來越廣泛的應(yīng)用。特別是在電池供電的單片機(jī)產(chǎn)品中,液晶顯示更是必選的顯示器件。1.2課題設(shè)計目標(biāo)本設(shè)計是基于AT89C51芯片單片機(jī)為主控芯片,結(jié)合1602液晶顯示模板等外圍電路,通過軟件程序,來實現(xiàn)液晶顯示英文字母。本次設(shè)計的目的在于利用單片機(jī)和IIC技術(shù)來顯示英文字母。1.3課程設(shè)計的主要工作(1)對系統(tǒng)的各個模塊的各個功能進(jìn)行深入分析和研究,

3、在對課題所采用的方案進(jìn)行可行詳細(xì)的研究后設(shè)計具體功能電路。(2)熟悉所選芯片的功能并完成具體電路設(shè)計。(3)對系統(tǒng)的最終指標(biāo)進(jìn)行測試,針對系統(tǒng)的不足,進(jìn)行分析并提出一些改正方法。1.4 設(shè)計要求(1)運行IIC總線技術(shù)。(2)循環(huán)顯示字母。第二章 硬件設(shè)計2.1 LCD1602 簡介2.1.1 LCD1602引腳功能LCD1602引腳如圖2.1所示圖2.1 LCD1602引腳圖引腳圖的功能如表21所示表引腳功能圖2.1.2 LCD1602顯示模指令集(1)清屏功能:清DDROM值和AC值(2)歸位功能:光標(biāo)復(fù)位,光標(biāo)返回到地址00H(3)輸入方式設(shè)置功能:設(shè)置光標(biāo),畫面移動方式。其中:I/D=

4、1:數(shù)據(jù)讀寫操作后,AC 自加一;I/D=0:數(shù)據(jù)讀寫操作后,AC 自減一;S=1:數(shù)據(jù)讀寫操作,畫面平移;S=0:數(shù)據(jù)讀寫操作,畫面不動;(4)顯示開關(guān)控制功能:設(shè)置顯示、光標(biāo)和閃爍開關(guān)。其中:D 表示顯示開關(guān),D=1 為開,D=0 為關(guān);C 表示光標(biāo)開關(guān),C=1 為開,C=0 為關(guān);B 表示閃爍開關(guān),B=1 為開,B=0 為關(guān)。(5)光標(biāo)、畫面位移功能:光標(biāo)、畫面移動。其中:S/C=1 畫面移動一個字符位;S/C=0 光標(biāo)移動一個字符位;R/L=1:右移;R/L=0 左移。(6)功能設(shè)置功能:工作方式設(shè)置(初始化指令)。其中:DL=1,8 位數(shù)據(jù)接口;DL=0,4 位數(shù)據(jù)接口;N=1,兩行

5、顯示;N=0,一行顯示;F=1,5*10 點陣顯示;F=0,5*7 點陣顯示。(7)CGRAM 地址設(shè)置功能:設(shè)置CGRAM 地址,A5A0=03FH。(8)DDRAM 地址設(shè)置功能:設(shè)置DDRAM 地址。其中:N=0,一行顯示A6A0=04FH;N=1 兩行顯示,首行A6A0=02FH,次行A6A0=4067H。(9)讀BF 及AC 值功能:讀忙BF 和地址計數(shù)器AC 的值。其中:BF=1:忙,BF=0:準(zhǔn)備好。此時AC 值意義為最近一次地址設(shè)置(CGRAM 或DDRAM)定義。(10)寫數(shù)據(jù)功能:根據(jù)最近設(shè)置的地址性質(zhì),數(shù)據(jù)寫入CGRAM 或DDRAM 中。(11)讀數(shù)據(jù)功能:根據(jù)最近設(shè)置

6、的地址性質(zhì),從CGRAM 或DDRAM 數(shù)據(jù)讀出。2.2 IIC 總線IIC 總線是PHILIPS 公司推出的兩線式串行總線。用于連接微控制器及其外圍設(shè)備。IIC 總線產(chǎn)生于在80 年代,最初為音頻和視頻設(shè)備開發(fā),如今主要在服務(wù)器管理中使用,其中包括單個組件狀態(tài)的通信。例如管理員可對各個組件進(jìn)行查詢,以管理系統(tǒng)的配置或掌握組件的功能狀態(tài),如電源和系統(tǒng)風(fēng)扇??呻S時監(jiān)控內(nèi)存、硬盤、網(wǎng)絡(luò)、系統(tǒng)溫度等多個參數(shù),增加了系統(tǒng)的安全性,方便了管理。2.2.1 IIC 總線的特點(1) 只要求兩條總線線路 一條串行數(shù)據(jù)線 SDA 一條串行時鐘線SCL。 (2) 每個連接到總線的器件都可以通過唯一的地址和一直存

7、在的簡單的主機(jī)從機(jī)關(guān)系軟件設(shè)定地址;主機(jī)可以作為主發(fā)送器或主機(jī)接收器。(3) 它是一個真正的多主機(jī)總線,如果兩個或更多主機(jī)同時初始化數(shù)據(jù)傳輸可以通過沖突檢測和仲裁防止數(shù)據(jù)被破壞。(4) 串行的 8 位雙向數(shù)據(jù)傳輸位速率在標(biāo)準(zhǔn)模式下可達(dá) 100kbit/s 快速模式下可達(dá) 400kbit/s 高速模式下可達(dá)4Mbit/s 。(5) 片上的濾波器可以濾去總線數(shù)據(jù)線上的毛刺波保證數(shù)據(jù)完整。(6) 連接到相同總線的IC 數(shù)量只受到總線的最大電容400pF 限制。2.2.2 IIC 協(xié)議總線信號時序(1)數(shù)據(jù)的有效性SDA 線上的數(shù)據(jù)必須在時鐘的高電平周期保持穩(wěn)定數(shù)據(jù)線的高或低電平狀態(tài)只有在 SCL 線

8、的時鐘信號是低電平時才能改變。如圖2.2 IIC 總線的位傳輸所示。圖2.2 IIC總線的為傳輸(2)起始和停止條件在 IIC 總線中 唯一出現(xiàn)的是被定義為起始(S)和停止(P )條件(見圖2.3)的情況。其中一種情況是在 SCL 線是高電平時,SDA 線從高電平向低電平切換,這個情況表示起始條件。當(dāng) SCL 是高電平時 SDA 線由低電平向高電平切換表示停止條件。起始和停止條件一般由主機(jī)產(chǎn)生,總線在起始條件后被認(rèn)為處于忙的狀態(tài)。在停止條件的某段時間后,總線被認(rèn)為再次處于空閑狀態(tài)。如果產(chǎn)生重復(fù)起始(Sr)條件而不產(chǎn)生停止條件,總線會一直處于忙的狀態(tài),此時的起始條件(S)和重復(fù)起始(Sr)條件在

9、功能上是一樣的。因此在本文檔的剩余部分,符號(S)將作為一個通用的術(shù)語既表示起始條件又表示重復(fù)起始條件,除非有特別聲明的(Sr)。如果連接到總線的器件合并了必要的接口硬件,那么用它們檢測起始和停止條件十分簡便。但是,沒有這種接口的微控制器在每個時鐘周期至少要采樣 SDA 線兩次來判別有沒有發(fā)生電平切換。圖2.3起始和停止條件(3)總線空閑狀態(tài)SDA 和SCL 兩條信號線都處于高電平,即總線上所有的器件都釋放總線,兩條信號線各自的上拉電阻把電平拉高。(4)數(shù)據(jù)傳輸與應(yīng)答信號ACK發(fā)送到SDA 線上的數(shù)據(jù)必須是8 位的。每次傳輸可以發(fā)送的數(shù)據(jù)不受限制。每個字節(jié)后必須在時鐘的第9 個脈沖期間釋放數(shù)據(jù)

10、總線(SDA 為高),由接收器發(fā)送一個ACK(把數(shù)據(jù)總線的電平拉低)來表示數(shù)據(jù)成功接收。如圖2.4 IIC 總線響應(yīng)。圖2.4IIC總線響應(yīng) 首先傳輸?shù)氖菙?shù)據(jù)的最高位(MSB)。如果從機(jī)要完成一些其他功能后(例如一個內(nèi)部中斷服務(wù)程序)才能接收或發(fā)送下一個完整的數(shù)據(jù)字節(jié),可以使時鐘SCL 保持低電平迫使主機(jī)進(jìn)入等待狀態(tài)。當(dāng)從機(jī)準(zhǔn)備好接收下一個數(shù)據(jù)字節(jié)并釋放時鐘線SCL 后,數(shù)據(jù)傳輸繼續(xù)。如圖2.5 IIC 總線數(shù)據(jù)傳輸所示。圖2.5IIC總線數(shù)據(jù)傳輸2.2.3 IIC 總線器件尋址方式IIC 總線上的器件是共用總線的,因此,主器件在進(jìn)行數(shù)據(jù)傳輸前要選擇通信的從器件,即進(jìn)行總線尋址??偩€上的所有器

11、件都有唯一的地址,由器件地址和引腳地址兩部分構(gòu)成,共7 位。引腳地址由IIC 總線外圍器件的地址引腳(A2、A1、A0)決定的。數(shù)據(jù)的傳輸遵循如圖2.6 完整的數(shù)據(jù)傳送所示,在起始條件之后,發(fā)送一個7 位的從機(jī)地址,緊接著第8 位是數(shù)據(jù)方向(R/ W),0-表示發(fā)送數(shù)據(jù)(寫),1-表示接收數(shù)據(jù)(讀)。數(shù)據(jù)傳輸一般由主機(jī)產(chǎn)生的停止位(P)終止。但是如果主機(jī)仍希望在總線上通訊,它可以產(chǎn)生重復(fù)起始條件(Sr),和尋址另一個從機(jī),而不是首先產(chǎn)生一個停止條件。在這種傳輸中,可能有不同的讀/寫格式結(jié)合。如圖2.6 IIC 總線完整的數(shù)據(jù)傳輸。圖2.6 IIC總線的數(shù)據(jù)傳輸2.3 系統(tǒng)電路圖系統(tǒng)的電路圖如2

12、.7 所示: 圖2.7 系統(tǒng)電路圖運行狀況如圖2.8:圖2.9 運行狀態(tài)第三章 軟件設(shè)計3.1系統(tǒng)框圖本課題的程序設(shè)計是在C 語言的基礎(chǔ)之上的,可分為兩大模塊,分別是:(1)IIC 協(xié)議;(2)LCD 顯示。程序總體框圖如圖3.1 所示:圖3.1 總程序框圖LCD 顯示程序框圖如圖3.2 所示:圖3.2LCD顯示程序框圖3.2 程序清單(一)#include #include#define uint unsigned int #define uchar unsigned charuchar code display_1=good morning; uchar code display_2=mi

13、ss you;sbit lcden=P34;sbit lcdrs=P35; /sbit lcdrw=P36;uchar num;uint i=0; void delayms(uint z) uint x,y;for(x=z;x0;x-) for(y=110;y0;y-);void write_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=

14、1; delayms(5);lcden=0;void init()lcden=0;write_com(0x38); write_com(0x0f); write_com(0x06);write_com(0x01);void main()init();/lcdrw=0;write_com(0x80+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=

15、0;num16;num+) write_com(0x18);delayms(100); while(1);(二)/* File: main.c* 功能:向LCD輸出HelloWorld*/#include config.h#define rs (18)#define rw (19)#define en (110)#define busy (17)uint8 txt=HelloWorld;/* 名稱:ChkBusy()* 功能:檢查總線是否忙*/void ChkBusy()IODIR=0x700;while(1)IOCLR=rs;IOSET=rw;IOSET=en;if(!(IOPIN & bu

16、sy)break;IOCLR=en;IODIR=0x7ff;/* 名稱:WrOp()* 功能:寫函數(shù)*/void WrOp(uint8 dat)ChkBusy();IOCLR=rs;/全部清零IOCLR=rw;IOCLR=0xff;/先清零IOSET=dat;/再送數(shù)IOSET=en;IOCLR=en;/* 名稱:WrDat()* 功能:寫數(shù)據(jù)函數(shù)*/void WrDat(uint8 dat)ChkBusy();IOSET=rs;IOCLR=rw;IOCLR=0xff;/先清零IOSET=dat;/再送數(shù)IOSET=en;IOCLR=en;/* 名稱:lcd_init()* 功能:lcd初始化

17、函數(shù)*/void lcd_init(void)WrOp(0x38);WrOp(0x06);/光標(biāo)加1WrOp(0x0c);/開顯示/* 名稱:DisText()* 功能:顯示文本函數(shù)*/void DisText(uint8 addr,uint8 *p)WrOp(addr);while(*p !=0)WrDat(*(p+);/* 名稱:main()* 功能:顯示文本*/int main(void) lcd_init();IODIR=0x7ff;/設(shè)置為輸出IOCLR=0x7ff;DisText(0x86,txt);while(1);/*-文件信息-*文 件 名: target.c*描 述: lp

18、c210x(飛利浦的ARM)目標(biāo)板特殊的代碼,包括異常處理程序和目標(biāo)板初始化程序* 每個工程應(yīng)當(dāng)具有這個文件的拷貝,用戶根據(jù)程序的需要修改本文件。*注 意:本文件必須以ARM(32位代碼)方式編譯,否則,必須更改init.s和vector.s文件* 別的C代碼不必使用ARM(32位代碼)方式編譯*/#define IN_TARGET#include config.h/* 函數(shù)名稱: IRQ_Exception* 功能描述: 中斷異常處理程序,用戶根據(jù)需要自己改變程序*/void _irq IRQ_Exception(void) while(1); / 這一句替換為自己的代碼/* 函數(shù)名稱: F

19、IQ_Exception* 功能描述: 快速中斷異常處理程序,用戶根據(jù)需要自己改變程序* */ void FIQ_Exception(void) while(1); / 這一句替換為自己的代碼/* 函數(shù)名稱: TargetInit* 功能描述: 目標(biāo)板初始化代碼,在需要的地方調(diào)用,根據(jù)需要改變*/ void TargetInit(void) /* 添加自己的代碼 */* 函數(shù)名稱: TargetResetInit* 功能描述: 調(diào)用main函數(shù)前目標(biāo)板初始化代碼,根據(jù)需要改變,不能刪除*/ void TargetResetInit(void) /* 設(shè)置系統(tǒng)各部分時鐘 */* PLLCON =

20、 1;#if (Fcclk / 4) / Fpclk) = 1 VPBDIV = 0;#endif#if (Fcclk / 4) / Fpclk) = 2 VPBDIV = 2;#endif#if (Fcclk / 4) / Fpclk) = 4 VPBDIV = 1;#endif#if (Fcco / Fcclk) = 2 PLLCFG = (Fcclk / Fosc) - 1) | (0 5);#endif#if (Fcco / Fcclk) = 4 PLLCFG = (Fcclk / Fosc) - 1) | (1 5);#endif#if (Fcco / Fcclk) = 8 PLLC

21、FG = (Fcclk / Fosc) - 1) | (2 5);#endif#if (Fcco / Fcclk) = 16 PLLCFG = (Fcclk / Fosc) - 1) | (3 5);#endif PLLFEED = 0xaa; PLLFEED = 0x55; while(PLLSTAT & (1 10) = 0); PLLCON = 3; PLLFEED = 0xaa; PLLFEED = 0x55;*/ /* 設(shè)置存儲器加速模塊 */ MAMCR = 2;/MAMCR 8u2 00MAM 功能被禁止、01MAM功能部分使能、10MAM功能完全使能 /* MAMTIM 8u3

22、 0000保留 0011一段時間內(nèi)只有 1 個處理器時鐘(cclk)用于 MAM 取指。 0102一段時間內(nèi)只有2個處理器時鐘(cclk)用于MAM取指。 0113一段時間內(nèi)只有 3 個處理器時鐘(cclk)用于 MAM 取指。 1004一段時間內(nèi)只有4個處理器時鐘(cclk)用于 MAM 取指。 1015一段時間內(nèi)只有5 個處理器時鐘(cclk)用于 MAM 取指。 1106一段時間內(nèi)只有 6 個處理器時鐘(cclk)用于 MAM 取指。 1117一段時間內(nèi)只有7個處理器時鐘(cclk)用于 MAM 取指。 */#if Fcclk 20000000 MAMTIM = 1;#else#if F

23、cclk 40000000 MAMTIM = 2;#else MAMTIM = 3;#endif#endif /* 初始化VIC */ VICIntEnClr = 0xffffffff;/清所有中斷使能,即關(guān)中斷 VICVectAddr = 0;/默認(rèn)向量地址寄存器 VICIntSelect = 0;/1:對應(yīng)的中斷請求分配為FIQ。0:對應(yīng)的中斷請求分配為IRQ。 /* 添加自己的代碼 */#include rt_sys.h#include stdio.h#pragma import(_use_no_semihosting_swi)#pragma import(_use_two_region

24、_memory) int _rt_div0(int a) a = a; return 0; int fputc(int ch,FILE *f) ch = ch; f = f; return 0; int fgetc(FILE *f) f = f; return 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; mode =

25、 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) fh = fh; return 0; long _sys_flen(FILEHANDLE fh) fh = fh; return 0; int _sys_tmpnam(char * name, int sig, unsigned maxlen) name = nam

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論