介紹
名字含義
LCD1602名字中16代表一行中最多16個字符,2代表兩行。
引腳說明
以我的這塊LCD1602為例。
VSS: S=series 表示公共連接的意思,通常指電路公共接地端電壓。
VDD:D=device 表示器件的意思, 即器件內部的工作電壓。
VO:液晶顯示器對比度調整端,接正電源時對比度最弱,接地電源時對比度最高,使用時可以通過一個10K的電位器調整對比度,電壓越低對比度越高。(自己接線的話需要解決VO口外接電阻的問題,不能直接接地,因為直接接地導致顯示不正常)
RS:寄存器選擇輸入端
RS=1:指向數據寄存器
RS=0:指向指令寄存器
LCD1602看到 RS為高時,就明白要給我傳送數據了;看到RS為低時,就知道要給我指令了.RW:讀寫控制端,
RW=0: 寫操作
RW=1:讀操作
當RW為低的時候,液晶模塊就知道了,單片機要給我“寫”了;當RW為高的時候,液晶模塊也知道了,單片機要“讀”了。E:使能信號輸入端
讀操作時,高電平有效;
寫操作時,下降沿有效;
E給個一定寬度的脈沖,LCD1602才開始執行讀或者寫操作。D0~D7:8位雙向數據端。
通過D0-D7這8根線來傳輸(比如都放在P1口),比如我要傳送的指令為x022,那么就把這個數據0x22放到P2端口,當LCD1602看到“寫”和“指令”的時候,就知道把P1端口上的0x22這個指令拿過來了。這樣就達到了“寫”“指令”“0x22”的目的。A和K:空腳或背燈電源。A引腳背光正極,K引腳背光負極。
RS | RW | 操作 |
---|---|---|
0 | 0 | 寫命令操作(初始化、光標定位等) |
0 | 1 | 讀狀態操作(讀忙標志) |
1 | 0 | 寫數據操作(要顯示的內容) |
1 | 1 | 讀數據操作(可以把顯示存儲區中的數據反讀出來) |
特性
3.3V或5V工作電壓,對比度可調
內含復位電路
提供各種控制命令,如:清屏、字符閃爍、光標閃爍、顯示移位等多種功能
有80字節顯示數據存儲器DDRAM
內建有192個5X7點陣的字型的字符發生器CGROM
8個可由用戶自定義的5X7的字符發生器CGRAM
字符集
在51單片機編程中還可以用字符型常量或變量賦值,如’B’。因為CGROM儲存的字符代碼與我們PC中的字符代碼是基本一致的,因此我們在向DDRAM寫C51字符代碼程序時甚至可以直接用P1='B’這樣的方法。PC在編譯時就把’B’先轉換為42H代碼了。
字符代碼0x00~0x0F為用戶自定義的字符圖形RAM(對于5X8點陣的字符,可以存放8組,5X10點陣的字符,存放4組),就是CGRAM了。
0x20~ 0x7F為標準的ASCII碼,0xA0~ 0xFF為日文字符和希臘文字符,其余字符碼(0x10 ~ 0x1F及0x80~0x9F)沒有定義。
初始化:LCD上電時,都必須按照一定的時序對LCD進行初始化操作,主要任務是設置LCD的工作方式、顯示狀態、清屏、輸入方式、光標位置等。
例子(顯示兩行內容)
#include #include /*對于延時很短的,要求在us級的,采用“_nop_”函數, 這個函數相當匯編NOP指令,延時幾微秒。NOP指令為單周期指令, 可由晶振頻率算出延時時間,對于12M晶振,延時1uS。*/ #define uchar unsigned char #define uint unsigned int sbit RS=P2^6; //定義數據命令選擇端 sbit RW=P2^5; //定義讀寫選擇端 sbit E=P2^7; //定義使能端 //注意:具體為哪一個IO口由你自己板子的接線來定。 uchar text1[]="bahu yang "; //第一行要顯示的字符 uchar text2[]="zhenlihai "; //第二行要顯示的字符 void delay_ms(uint z) //毫秒級延時函數 { uint i,j; for(i=z;i>0;i--) for(j=110;j>0;j--); } //為什么要判忙? /*因為LCD1602控制芯片也是一個CPU, 它在處理上位機發來的某些指令的時候,耗時較長。 如復位命令,全屏清除命令等。 另外,LCD1602的CPU速度較慢,上位機較快時, LCD1602CPU來不及完成上條命令,會對后續命令不予理睬, 這樣就造成了命令序列不能正確完整地到達LCD1602CPU,以至于顯示不正常。*/ uchar Lcd1602_ReadBusy() //判斷lcd1602是否處于忙的狀態,即讀忙 { uchar temp; RS=0; RW=1; _nop_(); P0=0xff; //讀某IO口數據前,先將該口置為1 /*原因:電路中存在的一個普遍的現象: 高電平很容易被低電平拉低,而低電平一般不可能被高電平拉高。 所以在讀數據之前將單片機IO口拉高才不會影響原來數據線上的數據!*/ _nop_(); E=1; _nop_(); temp=P0; //讀取此時lcd1602的狀態字 _nop_(); E=0; return (temp&0x80); /*狀態字為temp(8位2進制數)的最高位,最高位為1表示禁止讀寫,為0表示允許讀寫,即temp&0x80 得1表示忙 , 得0表示不忙*/ } void Lcd1602_WriteCom(uchar com) //寫命令 { while(Lcd1602_ReadBusy()); //判忙 RS=0; //命令 RW=0; //寫 _nop_(); P0=com; //準備發送命令 _nop_(); E=1; //由時序圖知,使能端為高電平時才允許數據交換 _nop_(); _nop_(); E=0; //由時序圖知,使能端在完成數據交換后要拉低 _nop_(); _nop_(); } void Lcd1602_WriteData(uchar dat) //寫數據 { while(Lcd1602_ReadBusy()); //判忙 RS=1; //數據 RW=0; //寫 _nop_(); P0=dat; _nop_(); E=1; _nop_(); _nop_(); E=0; _nop_(); _nop_(); } void Lcd1602_init() //初始化函數 { delay_ms(15); Lcd1602_WriteCom(0x38); //顯示模式設置 delay_ms(5); Lcd1602_WriteCom(0x38); delay_ms(5); Lcd1602_WriteCom(0x38); Lcd1602_WriteCom(0x0c); //顯示開 Lcd1602_WriteCom(0x01); //顯示清屏 Lcd1602_WriteCom(0x06); //顯示光標,寫一個字符數據后,地址指針后移 } void main() { uchar i,j; Lcd1602_init(); Lcd1602_WriteCom(0x80); //0x80是第一行的第一個字符的地址 for(i=0;i<10;i++) Lcd1602_WriteData(text1[i]); Lcd1602_WriteCom(0x80+0x40); //0xc0是第二行的第一個字符的地址 /*表示的方法有很多,可以用0xc0,0x80+0x40,0x80|0x40等等*/ for(j=0;j<10;j++) Lcd1602_WriteData(text2[j]); } 效果圖
上一篇:51單片機矩陣鍵盤掃描和顯示
下一篇:51單片機開發之動態數碼管
推薦閱讀
史海拾趣
ESS的創始人陳兆良是一位具有遠見卓識的領導者。他不僅帶領公司成功轉型,專注于個人電腦音頻技術,還推動了公司向更廣泛的半導體芯片領域發展。陳兆良憑借其在半導體語音芯片領域的深厚造詣,一度奪得了全球80%的市場份額,被譽為“數碼音頻和視頻之父”。他的領導才能和對市場的敏銳洞察力為ESS的成功奠定了堅實基礎。
“未來電子”深知人才是企業發展的第一資源。因此,公司高度重視人才培養和團隊建設工作。通過建立完善的培訓體系、激勵機制和晉升通道,公司吸引并留住了一大批優秀的研發、生產和銷售人才。這些人才在各自的崗位上發揮出色,為公司的快速發展提供了有力保障。同時,“未來電子”還注重團隊合作和跨部門協作,通過組織豐富多彩的團隊建設活動,增強了員工的歸屬感和凝聚力。
背景:進入21世紀后,霍尼韋爾繼續秉承多元化發展戰略,不斷拓展新的業務領域。
發展:公司通過一系列并購和投資活動,進入了石油化工、高性能材料、醫療、安防等多個領域。其中,2005年收購環球油品公司(UOP)和2007年收購碼捷科技(Metrologic Instruments)是公司多元化戰略的重要里程碑。
關鍵事件:這些并購不僅增強了霍尼韋爾的技術實力和市場競爭力,還為公司帶來了新的增長點和發展機遇。
背景:霍尼韋爾公司的歷史可以追溯到1885年,由發明家艾伯特·布茲在美國明尼阿波利斯創立布茲電子溫度調節器公司。
發展:布茲成功研發出了一種名為“風門擋板”的裝置,該裝置能夠自動調節室內溫度,這是當時的一大技術突破。隨著業務的不斷發展,布茲電子溫度調節器公司被統一溫度控制公司收購,并在1893年更名為電子供熱調節器公司。
關鍵事件:1898年,電子供熱調節器公司被W.R. Sweatt收購,并于1916年更名為明尼阿波利斯熱調節器公司。這一系列的更名和收購奠定了霍尼韋爾在恒溫器領域的基礎。
高通(Qualcomm)在移動通信領域的迅猛發展也離不開CMOS技術的支持。高通在CMOS技術研發方面投入了大量資源,成功地將CMOS技術應用于其移動通信芯片產品中。這些芯片產品以其卓越的性能和出色的功耗控制而廣受手機制造商的青睞。隨著移動通信技術的不斷進步,高通在CMOS技術方面的創新也不斷推動著移動通信產業的發展。
隨著新能源汽車產業的快速發展,富芯森美敏銳地捕捉到了這一市場機遇。公司投入大量資源研發車規級功率半導體器件,產品設計遵循APQP標準,制造管理符合IATF 16949要求,質量檢驗則嚴格遵循AEC-Q101標準。這些舉措使得富芯森美的車規級產品能夠滿足汽車行業的嚴苛要求,成功打入新能源汽車供應鏈體系,為公司帶來了新的增長點。
二極管基本電路及其分析方法 在電子技術中,二極管電路得到廣泛的應用。本節只介紹幾種基本的電路,如限幅電路、開關電路、低電壓穩壓電路等。 二極管是一種非線性器件,因而二極管電路一般要采用非線性電路的分析方 ...… 查看全部問答∨ |
分享給大家,想看那個研討會的詳細內容,去那個網站看看吧! http://www.eepw.com.cn/event/action/rigol2008/index.html 獎品 特等獎(1名):NOKIA 3500 C 手機 1部 一等獎(1名):iPod shuffle 二等獎(15名):精美U盤(1G) 三等獎(50 ...… 查看全部問答∨ |
在第十屆高交會上電子展上,一大亮點是來自全球的測試機構紛紛登陸中國,例如瑞士SGS、德國萊茵、法國國際檢測局等在高交會上大力宣傳各自的服務特色,不過,本土測試機構并未示弱,它們也在高交會上宣傳自己的特色,并與這些外國測試機構同臺競技 ...… 查看全部問答∨ |
|
開發過wince dhcp的請進:如何強制使wince客戶端發起dhcp請求 如題,也就是說如何通過程序控制實現wince客戶端發起wince請求, 也就是說實現如圖所示的“更新”按鈕的作用。 用wince上可用的API函數實現也可以,能告訴wince源碼中“更新”按鈕是如何實現的最好了,哈哈 … 查看全部問答∨ |
關于這個軟件的詳細資料。這個軟件是做什么的,我想做它的界面,應該怎么入手?用c/c++做難嗎?(c,我是菜鳥)。用JAVA呢?需要多久? 關于這個軟件的詳細資料。這個軟件是做什么的,我想做它的界面,應該怎么入手?用c/c++做難嗎?(c,我是菜鳥)。用JAVA呢?需要多久? 感謝大俠給我好的建議。謝謝。lifelongstar@sina.com F:\\a.bmp… 查看全部問答∨ |
我之前安裝開發環境的時候,發現PB中Device Driver中的SD選項沒有,后來把Updates全裝上了,就出現了SD選項。 前幾天系統崩潰了,重新裝上所有東西后發現就是SD選項沒有,各位有沒有遇到過這種情況啊????急 … 查看全部問答∨ |