LCD1602 從八位數(shù)據(jù)輸出轉(zhuǎn)四位數(shù)據(jù)輸出 要做哪些改變
-
C編寫,具體是哪些函數(shù)需要改變?我就改了初始化函數(shù)和寫命令、寫數(shù)據(jù)函數(shù),但是輸出屏幕空白代碼如下voidLCD_Init(void)//初始化的{LCD_CTRL_DIR=0x00;//LCD控制用寄存器置為輸出LCD... C編寫,具體是哪些函數(shù)需要改變?我就改了初始化函數(shù)和寫命令、寫數(shù)據(jù)函數(shù),但是輸出屏幕空白
代碼如下
void LCD_Init(void) //初始化的
{
LCD_CTRL_DIR = 0x00; // LCD控制用寄存器置為輸出
LCD_DATA_DIR = 0x00; //LCD數(shù)據(jù)用寄存器也置為輸出
LCD_DATA = 0x00; //清數(shù)據(jù)寄存器
DelayMS(5); //數(shù)據(jù)手冊要求大于4.1ms
// 開始輸出軟件復(fù)位序列
LCD_Write_CMD(0x28);
DelayMS(1); //數(shù)據(jù)手冊要求等待時間大于100us
LCD_Write_CMD(0x28);
DelayMS(1); //數(shù)據(jù)手冊要求等待時間大于40us
LCD_Write_CMD(0x28);
DelayMS(1); //數(shù)據(jù)手冊要求查忙信號或者等待時間超過40us
LCD_E = 1 ;
NOP();
NOP();
LCD_E = 0 ;
LCD_Write_CMD(0x28); //顯示模式設(shè)為2行,8位數(shù)據(jù)模式
DelayMS(1); //數(shù)據(jù)手冊要求查忙信號或者等待時間超過40us
LCD_Write_CMD(DISP_OFF); // 關(guān)顯示
DelayMS(1); //數(shù)據(jù)手冊要求查忙信號或者等待時間超過40us
LCD_Write_CMD(ENTRY_INC); //設(shè)定輸入方式為地址增量
DelayMS(1); //數(shù)據(jù)手冊要求查忙信號或者等待時間超過40us
LCD_Write_CMD(CLR_DISP); // 清空屏幕顯示
DelayMS(1) ; //數(shù)據(jù)手冊要求查忙信號或者等待時間超過40us
// 復(fù)位序列結(jié)束
LCD_Write_CMD(DISP_ON); // 開啟LCD顯示
DelayMS(1);
} //向LCD寫指令 void LCD_Write_CMD( unsigned char LCD_CMD) {DelayMS(1);
LCD_RS=0;
LCD_DATA &= 0x0F;
LCD_DATA |= (LCD_CMD&0xF0);
LCD_E = 1 ;
NOP();
NOP();
LCD_E = 0 ;
DelayMS(1) ;
LCD_CMD=LCD_CMD<<4;
LCD_DATA &= 0x0F;
LCD_DATA |= LCD_CMD&0xF0;
LCD_E = 1 ;
NOP();
NOP();
LCD_E = 0 ;
DelayMS(1) ;
} //向LCD寫數(shù)據(jù) void LCD_Write_Data( unsigned char LCD_CMD) { DelayMS(1); LCD_RS=0; LCD_DATA &= 0x0F; LCD_DATA |= (LCD_CMD&0xF0); LCD_E = 1 ; NOP(); NOP(); LCD_E = 0 ; DelayMS(1) ; LCD_CMD=LCD_CMD<<4; LCD_DATA &= 0x0F; LCD_DATA |= LCD_CMD&0xF0; LCD_E = 1 ; NOP(); NOP(); LCD_E = 0 ; DelayMS(1) ; } 展開
全部評論(3條)
-
- 芮芮190 2012-07-06 00:00:00
- 寫入COM的函數(shù),要有兩個:8位總線、4位總線。 1.硬件連接時選擇高4位線; 2.初始化的diyi步,要按照8位線來寫入; 寫入的命令字的高四位,即把LCD初始化成為4位總線; 3.后續(xù)的初始化、以及以后再寫入數(shù)據(jù),都按照4位總線來寫入; 即:先送原來一個字節(jié)的高4位,再送低4位。 關(guān)鍵是diyi步,必須按照8位總線寫入。
-
贊(11)
回復(fù)(0)
-
- dianchi2017 2016-02-13 00:00:00
- Initial Program Code Example For 8051 MPU(8 Bit Interface): ;--------------------------------------------------------------------------------- INITIAL_START: CALL DELAY40mS MOV A,#38H ;FUNCTION SET CALL WRINS_NOCHK ;8 bit,N=1,5*7dot CALL DELAY37uS MOV A,#38H ;FUNCTION SET CALL WRINS_NOCHK ;8 bit,N=1,5*7dot CALL DELAY37uS MOV A,#0FH ;DISPLAY ON CALL WRINS_CHK CALL DELAY37uS MOV A,#01H ;CLEAR DISPLAY CALL WRINS_CHK CALL DELAY1.52mS MOV A,#06H ;ENTRY MODE SET CALL WRINS_CHK ;CURSOR MOVES TO RIGHT CALL DELAY37uS ;--------------------------------------------------------------------------------- MAIN_START: XXXX XXXX XXXX XXXX . . . . ;--------------------------------------------------------------------------------- WRINS_CHK: CALL CHK_BUSY WRINS_NOCHK: CLR RS ;EX:Port 3.0 CLR RW ;EX:Port 3.1 SETB E ;EX:Port 3.2 MOV P1,A ;EX:Port 1=Data Bus CLR E MOV P1,#FFH ;For Check Busy Flag RET ;--------------------------------------------------------------------------------- CHK_BUSY: ;Check Busy Flag CLR RS SETB RW SETB E JB P1.7,$ CLR E RET Initial Program Code Example For 8051 MPU(4 Bit Interface): ; ------------------------------------------------------------------- INITIAL_START: CALL DELAY40mS MOV A,#38H ;FUNCTION SET CALL WRINS_ONCE ;8 bit,N=1,5*7dot CALL DELAY37uS MOV A,#28H ;FUNCTION SET CALL WRINS_NOCHK ;4 bit,N=1,5*7dot CALL DELAY37uS MOV A,#28H ;FUNCTION SET CALL WRINS_NOCHK ;4 bit,N=1,5*7dot CALL DELAY37uS MOV A,#0FH ;DISPLAY ON CALL WRINS_CHK CALL DELAY37uS MOV A,#01H ;CLEAR DISPLAY CALL WRINS_CHK CALL DELAY1.52mS MOV A,#06H ;ENTRY MODE SET CALL WRINS_CHK CALL DELAY37uS ;------------------------------------------------------------------- MAIN_START: XXXX XXXX XXXX XXXX . . . . . . . . . . ;------------------------------------------------------------------- WRINS_CHK: CALL CHK_BUSY WRINS_NOCHK: PUSH A ANL A,#F0H CLR RS ;EX:Port 3.0 CLR RW ;EX:Port 3.1 SETB E ;EX:Port 3.2 MOV P1,A ;EX:Port1=Data Bus CLR E POP A SWAP A WRINS_ONCE: ANL A,#F0H CLR RS CLR RW SETB E MOV P1,A CLR E MOV P1,#FFH ;For Check Bus Flag RET ;------------------------------------------------------------------- CHK_BUSY: ;Check Busy Flag PUSH A MOV P1,#FFH $1 CLR RS SETB RW SETB E MOV A,P1 CLR E MOV P1,#FFH CLR RS SETB RW SETB E NOP CLR E JB A.7,$1 POP A RET 你好像沒寫check busy這一段,4bits傳輸需要更多的時間,寫延時有可能時間沒達到,
-
贊(20)
回復(fù)(0)
-
- 天空空留 2016-10-08 00:00:00
- 可以寫入COM的函數(shù),要有兩個:8位總線、4位總線。 1.硬件連接時選擇高4位線。 2.初始化的diyi步,要按照8位線來寫入;寫入的命令字的高四位,即把LCD初始化成為4位總線。 3.后續(xù)的初始化、以及以后再寫入數(shù)據(jù),都按照4位總線來寫入;即:先送原來一個字節(jié)的高4位,再送低4位。 工業(yè)字符型液晶,能夠同時顯示16x02即32個字符。注:為了表示的方便 ,后文皆以1表示高電平,0表示低電平。1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊。它由若干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因為如此所以它不能很好地顯示圖形(用自定義CGRAM,顯示效果也不好)。
-
贊(12)
回復(fù)(0)
熱門問答
- LCD1602 從八位數(shù)據(jù)輸出轉(zhuǎn)四位數(shù)據(jù)輸出 要做哪些改變
- C編寫,具體是哪些函數(shù)需要改變?我就改了初始化函數(shù)和寫命令、寫數(shù)據(jù)函數(shù),但是輸出屏幕空白代碼如下voidLCD_Init(void)//初始化的{LCD_CTRL_DIR=0x00;//LCD控制用寄存器置為輸出LCD... C編寫,具體是哪些函數(shù)需要改變?我就改了初始化函數(shù)和寫命令、寫數(shù)據(jù)函數(shù),但是輸出屏幕空白
代碼如下
void LCD_Init(void) //初始化的
{
LCD_CTRL_DIR = 0x00; // LCD控制用寄存器置為輸出
LCD_DATA_DIR = 0x00; //LCD數(shù)據(jù)用寄存器也置為輸出
LCD_DATA = 0x00; //清數(shù)據(jù)寄存器
DelayMS(5); //數(shù)據(jù)手冊要求大于4.1ms
// 開始輸出軟件復(fù)位序列
LCD_Write_CMD(0x28);
DelayMS(1); //數(shù)據(jù)手冊要求等待時間大于100us
LCD_Write_CMD(0x28);
DelayMS(1); //數(shù)據(jù)手冊要求等待時間大于40us
LCD_Write_CMD(0x28);
DelayMS(1); //數(shù)據(jù)手冊要求查忙信號或者等待時間超過40us
LCD_E = 1 ;
NOP();
NOP();
LCD_E = 0 ;
LCD_Write_CMD(0x28); //顯示模式設(shè)為2行,8位數(shù)據(jù)模式
DelayMS(1); //數(shù)據(jù)手冊要求查忙信號或者等待時間超過40us
LCD_Write_CMD(DISP_OFF); // 關(guān)顯示
DelayMS(1); //數(shù)據(jù)手冊要求查忙信號或者等待時間超過40us
LCD_Write_CMD(ENTRY_INC); //設(shè)定輸入方式為地址增量
DelayMS(1); //數(shù)據(jù)手冊要求查忙信號或者等待時間超過40us
LCD_Write_CMD(CLR_DISP); // 清空屏幕顯示
DelayMS(1) ; //數(shù)據(jù)手冊要求查忙信號或者等待時間超過40us
// 復(fù)位序列結(jié)束
LCD_Write_CMD(DISP_ON); // 開啟LCD顯示
DelayMS(1);
} //向LCD寫指令 void LCD_Write_CMD( unsigned char LCD_CMD) {DelayMS(1);
LCD_RS=0;
LCD_DATA &= 0x0F;
LCD_DATA |= (LCD_CMD&0xF0);
LCD_E = 1 ;
NOP();
NOP();
LCD_E = 0 ;
DelayMS(1) ;
LCD_CMD=LCD_CMD<<4;
LCD_DATA &= 0x0F;
LCD_DATA |= LCD_CMD&0xF0;
LCD_E = 1 ;
NOP();
NOP();
LCD_E = 0 ;
DelayMS(1) ;
} //向LCD寫數(shù)據(jù) void LCD_Write_Data( unsigned char LCD_CMD) { DelayMS(1); LCD_RS=0; LCD_DATA &= 0x0F; LCD_DATA |= (LCD_CMD&0xF0); LCD_E = 1 ; NOP(); NOP(); LCD_E = 0 ; DelayMS(1) ; LCD_CMD=LCD_CMD<<4; LCD_DATA &= 0x0F; LCD_DATA |= LCD_CMD&0xF0; LCD_E = 1 ; NOP(); NOP(); LCD_E = 0 ; DelayMS(1) ; } 展開
- 數(shù)顯游標卡尺數(shù)據(jù)輸出格式
- 想做一個數(shù)顯測量裝置但不知道數(shù)顯游標卡尺的數(shù)據(jù)輸出格式,廠家拒絕提供 請問有哪位知道啊? 急!
- 有沒有帶數(shù)據(jù)輸出接口的數(shù)字式壓力表???
- 我需要提取液壓系統(tǒng)實時變化的壓力做分析!... 我需要提取液壓系統(tǒng)實時變化的壓力做分析! 展開
- 西門子PLC可以和位移傳感器相接,并做出數(shù)據(jù)輸出么?
- 做礦井提升機閘瓦間隙的設(shè)計,要求用位移傳感器檢測位移,然后數(shù)字屏顯示。并且當位移超過一定距離后提示報警。用PLC做處理器可以么?可以給個類似的教案到我郵箱里么?huoshanluyi@h... 做礦井提升機閘瓦間隙的設(shè)計,要求用位移傳感器檢測位移,然后數(shù)字屏顯示。并且當位移超過一定距離后提示報警。用PLC做處理器可以么?可以給個類似的教案到我郵箱里么?huoshanluyi@hotmail.com 展開
- 誰能推薦一款激光測距儀,范圍10M 精度0.1mm 帶數(shù)據(jù)輸出串口
- 誰能推薦個支持數(shù)據(jù)輸出的測距儀?能跟plc想連的
- 不要太貴
- 數(shù)據(jù)采集器的輸入和輸出通道數(shù)不同是怎么實現(xiàn)數(shù)據(jù)輸出的
- 例如一個數(shù)據(jù)采集器模擬輸入單端32路(出廠默認),差分16路,但是模擬輸出通道數(shù)為4路,若有10個信號模擬輸入,那這10路信號模擬輸出怎么實現(xiàn)?分時復(fù)用嗎?怎么知道輸出的各是哪路?... 例如一個數(shù)據(jù)采集器模擬輸入單端32路(出廠默認),差分16路,但是模擬輸出通道數(shù)為4路,若有10個信號模擬輸入,那這10路信號模擬輸出怎么實現(xiàn)? 分時復(fù)用嗎? 怎么知道輸出的各是哪路? 展開
- 從化學發(fā)光轉(zhuǎn)換到熒光檢測知多少
- lcd1602怎么使用?
- 程序?... 程序? 展開
- 福祿克八位半數(shù)字多用表使用注意事項
八位半數(shù)字多用表是市面上常見的高精度數(shù)字多用表,一臺八位半的數(shù)字多用表價格也是不菲的,今天安泰測試就給大家提供幾點使用小貼士,希望大家在使用它時要多多注意。
DY,對于精密儀器來說,為了使儀器達到規(guī)定指標,預(yù)熱是必要的。Fluke 8588A/8558A的預(yù)熱時間是最多3小時或關(guān)機時間的兩倍。使用儀器時,您需要保持實驗室環(huán)境溫濕度適宜。
第二,在未接入被測樣品之前,您可能會發(fā)現(xiàn)數(shù)字表上會顯示一些數(shù)值,這是正?,F(xiàn)象。使用前,校零可消除數(shù)字表內(nèi)部放大器的零漂和失調(diào)。按下ZERO鍵進入校零菜單,電壓和電阻使用隨機附帶的四線短路片校零,這款四線短路片使用了特殊合金,時間常數(shù)小,專為校零設(shè)計。電流使接線端子開路校零。
第二,測試線有助于獲得理想的測試結(jié)果,應(yīng)選擇低熱電勢和有屏蔽的測試線。測試線的影響在低電流、高頻率和大電阻尤為明顯。
第四,福祿克的八位半數(shù)表提供了多種電阻測量模式,包含2W標準——適合大電阻測量、4W標準——適合小電阻測量、4W Tru——消除引線接觸點熱電勢、2W HV/4W HV ——適合高阻測量(不可測合成電阻源)、LO I啟用——低激勵電流。您可以依據(jù)實際測量情況選擇。
以上就是安泰測試為大家分享的福祿克八位半數(shù)字多用表使用小貼士,正確的使用儀器不僅能延長儀器使用壽命,也能讓你的工作事半功倍,希望大家在使用儀器時嚴格按照使用說明,如果您在使用儀器過程中有什么問題,歡迎訪問安泰測試網(wǎng)。
- LCD1602如何接單片機?
- 希望是您本身就做過這個實驗,因為我LED-接單片機的地,LED+接單片機的電源VCC,三個(E,RW,RS)控制引腳接P2口,8個數(shù)據(jù)信號接P1口。VSS接單片機地,VCC接單片機的電源VCC,還有一個... 希望是您本身就做過這個實驗,因為我LED-接單片機的地,LED+接單片機的電源VCC,三個(E,RW,RS)控制引腳接P2口,8個數(shù)據(jù)信號接P1口。VSS接單片機地,VCC接單片機的電源VCC,還有一個好像是液晶驅(qū)動(液晶第3腳)接單片機電源VCC,結(jié)果亮,但程序不能顯示。(程序沒問題的) 大都說的都很好,只能投票了 展開
- 四位半數(shù)字電壓表是什么
- 斷路器需要做哪些實驗
- 新斷路器投運時需要做的實驗項目? 還有投運的斷路器日常運行維護中需要做哪些實驗項目?
- 試驗設(shè)備需要做哪些檢測?
- 冠心病需要做哪些檢查
- 裝修哪些材料要做輻射檢測?
- 廈門市這一塊,哪些材料是要做輻射檢測,哪些環(huán)保材料要做檢測。
- 送檢報審要做哪些資料
- 送檢報審要做哪些資料... 送檢報審要做哪些資料 展開
- 12864和LCD1602的區(qū)別是什么?各自的優(yōu)勢是哪些?
4月突出貢獻榜
推薦主頁
最新話題





參與評論
登錄后參與評論