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

下載本文檔

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

文檔簡介

./專業(yè)資料LCD1602液晶顯示課程設計緒論1.1課題背景當今時候是一個信息化的時代,信息的重要性不言而喻的,獲取手段顯得尤其重要。人們所接受的信息有70%來自于人的視覺,無論用何種方式獲取的信息最終需要有某種顯示方式來表示。在當代顯示技術中,主流的有LED顯示屏和LCD液晶顯示,而在這些顯示技術中,尤其以液晶顯示器LCD〔Liquidcrystaldisplay為代表的平板顯示器發(fā)展最快,應用最廣。LCD是典型的發(fā)光器件,它一材料科學為基礎,綜合利用了精密機械,光電及計算機技術,并正在微機械,微光學,纖維光學等前沿領域研究基礎上,向高集成化,智能化方向發(fā)展。液晶顯示技術發(fā)展迅猛,市場預測表明,液晶顯示平均年銷售呈增長10%~13%,不久的將來有可能取代CRT,成為電子信息產品的主要顯示器件,另外,液晶顯示器對空間電磁輻射的干擾不敏感,且在緊湊的儀器空間不需要專門的屏蔽保護,因而課大大簡化儀器的結構和制造成本,在各種便攜式儀器,儀表將會越來越廣泛的應用。特別是在電池供電的單片機產品中,液晶顯示更是必選的顯示器件。1.2課題設計目標本設計是基于AT89C51芯片單片機為主控芯片,結合1602液晶顯示模板等外圍電路,通過軟件程序,來實現(xiàn)液晶顯示英文字母。本次設計的目的在于利用單片機和IIC技術來顯示英文字母。1.3課程設計的主要工作〔1對系統(tǒng)的各個模塊的各個功能進行深入分析和研究,在對課題所采用的方案進行可行詳細的研究后設計具體功能電路?!?熟悉所選芯片的功能并完成具體電路設計?!?對系統(tǒng)的最終指標進行測試,針對系統(tǒng)的不足,進行分析并提出一些改正方法。1.4設計要求〔1運行IIC總線技術?!?循環(huán)顯示字母。第二章硬件設計2.1LCD1602簡介2.1.1LCD1602引腳如圖2.1所示圖2.1LCD1602引腳圖引腳圖的功能如表2—1所示表2—1引腳功能圖LCD1602顯示模指令集〔1清屏功能:清DDROM值和AC值〔2歸位功能:光標復位,光標返回到地址00H〔3輸入方式設置功能:設置光標,畫面移動方式。其中:I/D=1:數(shù)據(jù)讀寫操作后,AC自加一;I/D=0:數(shù)據(jù)讀寫操作后,AC自減一;S=1:數(shù)據(jù)讀寫操作,畫面平移;S=0:數(shù)據(jù)讀寫操作,畫面不動;〔4顯示開關控制功能:設置顯示、光標和閃爍開關。其中:D表示顯示開關,D=1為開,D=0為關;C表示光標開關,C=1為開,C=0為關;B表示閃爍開關,B=1為開,B=0為關?!?光標、畫面位移功能:光標、畫面移動。其中:S/C=1畫面移動一個字符位;S/C=0光標移動一個字符位;R/L=1:右移;R/L=0左移?!?功能設置功能:工作方式設置〔初始化指令。其中:DL=1,8位數(shù)據(jù)接口;DL=0,4位數(shù)據(jù)接口;N=1,兩行顯示;N=0,一行顯示;F=1,5*10點陣顯示;F=0,5*7點陣顯示?!?CGRAM地址設置功能:設置CGRAM地址,A5~A0=0~3FH?!?DDRAM地址設置功能:設置DDRAM地址。其中:N=0,一行顯示A6~A0=0~4FH;N=1兩行顯示,首行A6~A0=0~2FH,次行A6~A0=40~67H。〔9讀BF及AC值功能:讀忙BF和地址計數(shù)器AC的值。其中:BF=1:忙,BF=0:準備好。此時AC值意義為最近一次地址設置〔CGRAM或DDRAM定義?!?0寫數(shù)據(jù)功能:根據(jù)最近設置的地址性質,數(shù)據(jù)寫入CGRAM或DDRAM中?!?1讀數(shù)據(jù)功能:根據(jù)最近設置的地址性質,從CGRAM或DDRAM數(shù)據(jù)讀出。2.2IIC總線IIC總線是PHILIPS公司推出的兩線式串行總線。用于連接微控制器及其外圍設備。IIC總線產生于在80年代,最初為音頻和視頻設備開發(fā),如今主要在服務器管理中使用,其中包括單個組件狀態(tài)的通信。例如管理員可對各個組件進行查詢,以管理系統(tǒng)的配置或掌握組件的功能狀態(tài),如電源和系統(tǒng)風扇??呻S時監(jiān)控內存、硬盤、網(wǎng)絡、系統(tǒng)溫度等多個參數(shù),增加了系統(tǒng)的安全性,方便了管理。IIC總線的特點<1>只要求兩條總線線路一條串行數(shù)據(jù)線SDA一條串行時鐘線SCL。<2>每個連接到總線的器件都可以通過唯一的地址和一直存在的簡單的主機從機關系軟件設定地址;主機可以作為主發(fā)送器或主機接收器。<3>它是一個真正的多主機總線,如果兩個或更多主機同時初始化數(shù)據(jù)傳輸可以通過沖突檢測和仲裁防止數(shù)據(jù)被破壞。<4>串行的8位雙向數(shù)據(jù)傳輸位速率在標準模式下可達100kbit/s快速模式下可達400kbit/s高速模式下可達4Mbit/s。<5>片上的濾波器可以濾去總線數(shù)據(jù)線上的毛刺波保證數(shù)據(jù)完整。<6>連接到相同總線的IC數(shù)量只受到總線的最大電容400pF限制。IIC協(xié)議總線信號時序〔1數(shù)據(jù)的有效性SDA線上的數(shù)據(jù)必須在時鐘的高電平周期保持穩(wěn)定數(shù)據(jù)線的高或低電平狀態(tài)只有在SCL線的時鐘信號是低電平時才能改變。如圖2.2IIC總線的位傳輸所示。圖2.2IIC總線的為傳輸〔2起始和停止條件在IIC總線中唯一出現(xiàn)的是被定義為起始<S>和停止<P>條件〔見圖2.3的情況。其中一種情況是在SCL線是高電平時,SDA線從高電平向低電平切換,這個情況表示起始條件。當SCL是高電平時SDA線由低電平向高電平切換表示停止條件。起始和停止條件一般由主機產生,總線在起始條件后被認為處于忙的狀態(tài)。在停止條件的某段時間后,總線被認為再次處于空閑狀態(tài)。如果產生重復起始<Sr>條件而不產生停止條件,總線會一直處于忙的狀態(tài),此時的起始條件<S>和重復起始<Sr>條件在功能上是一樣的。因此在本文檔的剩余部分,符號<S>將作為一個通用的術語既表示起始條件又表示重復起始條件,除非有特別聲明的<Sr>。如果連接到總線的器件合并了必要的接口硬件,那么用它們檢測起始和停止條件十分簡便。但是,沒有這種接口的微控制器在每個時鐘周期至少要采樣SDA線兩次來判別有沒有發(fā)生電平切換。圖2.3起始和停止條件〔3總線空閑狀態(tài)SDA和SCL兩條信號線都處于高電平,即總線上所有的器件都釋放總線,兩條信號線各自的上拉電阻把電平拉高?!?數(shù)據(jù)傳輸與應答信號ACK發(fā)送到SDA線上的數(shù)據(jù)必須是8位的。每次傳輸可以發(fā)送的數(shù)據(jù)不受限制。每個字節(jié)后必須在時鐘的第9個脈沖期間釋放數(shù)據(jù)總線〔SDA為高,由接收器發(fā)送一個ACK<把數(shù)據(jù)總線的電平拉低>來表示數(shù)據(jù)成功接收。如圖2.4IIC總線響應。圖2.4IIC總線響應首先傳輸?shù)氖菙?shù)據(jù)的最高位〔MSB。如果從機要完成一些其他功能后〔例如一個內部中斷服務程序才能接收或發(fā)送下一個完整的數(shù)據(jù)字節(jié),可以使時鐘SCL保持低電平迫使主機進入等待狀態(tài)。當從機準備好接收下一個數(shù)據(jù)字節(jié)并釋放時鐘線SCL后,數(shù)據(jù)傳輸繼續(xù)。如圖2.5IIC總線數(shù)據(jù)傳輸所示。圖2.5IIC總線數(shù)據(jù)傳輸IIC總線器件尋址方式IIC總線上的器件是共用總線的,因此,主器件在進行數(shù)據(jù)傳輸前要選擇通信的從器件,即進行總線尋址??偩€上的所有器件都有唯一的地址,由器件地址和引腳地址兩部分構成,共7位。引腳地址由IIC總線外圍器件的地址引腳〔A2、A1、A0決定的。數(shù)據(jù)的傳輸遵循如圖2.6完整的數(shù)據(jù)傳送所示,在起始條件之后,發(fā)送一個7位的從機地址,緊接著第8位是數(shù)據(jù)方向〔R/W,0-表示發(fā)送數(shù)據(jù)〔寫,1-表示接收數(shù)據(jù)〔讀。數(shù)據(jù)傳輸一般由主機產生的停止位〔P終止。但是如果主機仍希望在總線上通訊,它可以產生重復起始條件〔Sr,和尋址另一個從機,而不是首先產生一個停止條件。在這種傳輸中,可能有不同的讀/寫格式結合。如圖2.6IIC總線完整的數(shù)據(jù)傳輸。圖2.6IIC總線的數(shù)據(jù)傳輸2.3系統(tǒng)電路圖系統(tǒng)的電路圖如2.7所示:圖2.7系統(tǒng)電路圖運行狀況如圖2.8:圖2.9運行狀態(tài)第三章軟件設計3.1系統(tǒng)框圖本課題的程序設計是在C語言的基礎之上的,可分為兩大模塊,分別是:〔1IIC協(xié)議;〔2LCD顯示。程序總體框圖如圖3.1所示:圖3.1總程序框圖LCD顯示程序框圖如圖3.2所示:圖3.2LCD顯示程序框圖3.2程序清單〔一#include<reg52.h>#include<stdio.h>#defineuintunsignedint#defineucharunsignedchar ucharcodedisplay_1[]={"goodmorning"};ucharcodedisplay_2[]={"missyou"};sbitlcden=P3^4; sbitlcdrs=P3^5;//sbitlcdrw=P3^6;ucharnum;uinti=0; voiddelayms<uintz>{ uintx,y; for<x=z;x>0;x--> for<y=110;y>0;y-->;}voidwrite_com<ucharcom>{ lcdrs=0; lcden=0; P0=com; delayms<5>; lcden=0; lcden=1; delayms<5>; lcden=0;}voidwrite_data<uchardate> { lcdrs=1; P0=date; delayms<5>; lcden=0; lcden=1; delayms<5>; lcden=0;}voidinit<> { lcden=0; write_com<0x38>; write_com<0x0f>; write_com<0x06>; write_com<0x01>;}voidmain<>{ init<>; //lcdrw=0; write_com<0x80+0x1a>; while<display_1[i]!='\0'> { write_data<display_1[i]>; i++; delayms<5>; } write_com<0x80+0x5f>; for<num=0;num<10;num++> { write_data<display_2[num]>; delayms<5>; } for<num=0;num<16;num++> { write_com<0x18>; delayms<100>; } while<1>;}〔二/*****************************************************************************File:main.c*功能:向LCD輸出HelloWorld****************************************************************************/#include"config.h"#definers<1<<8>#definerw<1<<9>#defineen<1<<10>#definebusy<1<<7>uint8txt[]={"HelloWorld"};/*****************************************************************************名稱:ChkBusy<>*功能:檢查總線是否忙****************************************************************************/voidChkBusy<>{ IODIR=0x700; while<1> { IOCLR=rs; IOSET=rw; IOSET=en; if<!<IOPIN&busy>>break; IOCLR=en; } IODIR=0x7ff;}/*****************************************************************************名稱:WrOp<>*功能:寫函數(shù)****************************************************************************/voidWrOp<uint8dat>{ ChkBusy<>; IOCLR=rs; //全部清零 IOCLR=rw; IOCLR=0xff; //先清零 IOSET=dat; //再送數(shù) IOSET=en; IOCLR=en;}/*****************************************************************************名稱:WrDat<>*功能:寫數(shù)據(jù)函數(shù)****************************************************************************/voidWrDat<uint8dat> { ChkBusy<>; IOSET=rs; IOCLR=rw; IOCLR=0xff; //先清零 IOSET=dat; //再送數(shù) IOSET=en; IOCLR=en;}/*****************************************************************************名稱:lcd_init<>*功能:lcd初始化函數(shù)****************************************************************************/voidlcd_init<void>{ WrOp<0x38>; WrOp<0x06>; //光標加1 WrOp<0x0c>; //開顯示}/*****************************************************************************名稱:DisText<>*功能:顯示文本函數(shù)****************************************************************************/voidDisText<uint8addr,uint8*p>{ WrOp<addr>; while<*p!='\0'>WrDat<*<p++>>;}/*****************************************************************************名稱:main<>*功能:顯示文本****************************************************************************/intmain<void>{lcd_init<>; IODIR=0x7ff; //設置為輸出 IOCLR=0x7ff; DisText<0x86,txt>; while<1>;}/**文件信息**文件名:target.c**描述:lpc210x〔飛利浦的ARM目標板特殊的代碼,包括異常處理程序和目標板初始化程序**每個工程應當具有這個文件的拷貝,用戶根據(jù)程序的需要修改本文件。**注意:本文件必須以ARM〔32位代碼方式編譯,否則,必須更改init.s和vector.s文件**別的C代碼不必使用ARM〔32位代碼方式編譯********************************************************************************************************/#defineIN_TARGET#include"config.h"/***********************************************************************************************************函數(shù)名稱:IRQ_Exception**功能描述:中斷異常處理程序,用戶根據(jù)需要自己改變程序**********************************************************************************************************/void__irqIRQ_Exception<void> {while<1>;//這一句替換為自己的代碼 }/***********************************************************************************************************函數(shù)名稱:FIQ_Exception**功能描述:快速中斷異常處理程序,用戶根據(jù)需要自己改變程序**********************************************************************************************************/voidFIQ_Exception<void>{while<1>;//這一句替換為自己的代碼}/***********************************************************************************************************函數(shù)名稱:TargetInit**功能描述:目標板初始化代碼,在需要的地方調用,根據(jù)需要改變********************************************************************************************************/voidTargetInit<void>{/*添加自己的代碼*/}/***********************************************************************************************************函數(shù)名稱:TargetResetInit**功能描述:調用main函數(shù)前目標板初始化代碼,根據(jù)需要改變,不能刪除********************************************************************************************************/voidTargetResetInit<void>{/*設置系統(tǒng)各部分時鐘*//*PLLCON=1;#if<<Fcclk/4>/Fpclk>==1VPBDIV=0;#endif#if<<Fcclk/4>/Fpclk>==2VPBDIV=2;#endif#if<<Fcclk/4>/Fpclk>==4VPBDIV=1;#endif#if<Fcco/Fcclk>==2PLLCFG=<<Fcclk/Fosc>-1>|<0<<5>;#endif#if<Fcco/Fcclk>==4PLLCFG=<<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>;#endifPLLFEED=0xaa;PLLFEED=0x55;while<<PLLSTAT&<1<<10>>==0>;PLLCON=3;PLLFEED=0xaa;PLLFEED=0x55;*//*設置存儲器加速模塊*/MAMCR=2; //MAMCR8u200-MAM功能被禁止、01-MAM功能部分使能、10-MAM功能完全使能/*MAMTIM8u3000=0-保留001=1-一段時間內只有1個處理器時鐘〔cclk用于MAM取指。010=2-一段時間內只有2個處理器時鐘〔cclk用于MAM取指。011=3-一段時間內只有3個處理器時鐘〔cclk用于MAM取指。100=4-一段時間內只有4個處理器時鐘〔cclk用于MAM取指。101=5-一段時間內只有5個處理器時鐘〔cclk用于MAM取指。110=6-一段時間內只有6個處理器時鐘〔cclk用于MAM取指。111=7-一段時間內只有7個處理器時鐘〔cclk用于MAM取指。*/#ifFcclk<20000000MAMTIM=1;#else#ifFcclk<40000000MAMTIM=2;#elseMAMTIM=3;#endif#endif/*初始化VIC*/VICIntEnClr=0xffffffff;//清所有中斷使能,即關中斷VICVectAddr=0;//默認向量地址寄存器VICIntSelect=0;//1:對應的中斷請求分配為FIQ。0:對應的中斷請求分配為IRQ。/*添加自己的代碼*/}#include"rt_sys.h"#include"stdio.h"#pragmaimport<__use_no_semihosting_swi>#pragmaimport<__use_two_region_memory>int__rt_div0<inta>{a=a;return0;}intfputc<intch,FILE*f>{ch=ch;f=f;return0;}intfgetc<FILE*f>{f=f;return0;}int_sys_close<FILEHANDLEfh>{fh=fh;return0;}int_sys_write<FILEHANDLEfh,constunsignedchar*buf,unsignedlen,intmode>{fh=fh;buf=buf;len=len;mode=mode;return0;}int_sys_read<FILEHANDLEfh,unsignedchar*buf,unsignedlen,intmode>{fh=fh;buf=buf;len=len;mode=mode;return0;}void_ttywrch<intch>{ch=ch;}int_sys_istty<FILEHANDLEfh>{fh=fh;return0;}int_sys_seek<FILEHANDLEfh,longpos>{fh=fh;return0;}int_sys_ensure<FILEHANDLEfh>{fh=fh;return0;}long_sys_flen<FILEHANDLEfh>{fh=fh;return0;}int_sys_tmpnam<char*name,intsig,unsignedm

溫馨提示

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

評論

0/150

提交評論