코드를 수정해주십시오 액정이

N

Naumanpak

Guest
안녕 전문가,

내가 edaboard과 좋은 경험이 있는데, 당신들이 많이있어 도움이 나한테.

내가 코드를 모듈에 대한 16x4 액정이있다.그러나 문제는 그것을이다 그 때마다 실행 전에 행 1, 3 상자 오직 얻을 검정.방법은??감사코드 :

#은 <regx51.h> 포함P2_5를 R을 정의 #

#은 P2_6 RW를 정의

#은 P2_7을 활성화 정의

#은 lcd_port의 P0을 정의

XTAL을 11.059200 정의 #

#은 12.0 XDIVIDER 정의#은 164 * (delay_1ms을 정의 XTAL / XDIVIDER)무효 지연 (서명 번째 문자);

무효의 delay_ms (서명 int);

무효의 lcd_display (서명 번째 문자);

Lcd_Ini ()을 무효;

무효의 lcd_command (서명 번째 문자);

() 메인

(

서명되지 않은 int 나;

(나타내고 0x01) lcd_command;

Lcd_Ini ();

(0x80으로) lcd_command;

lcd_display ( '패');

lcd_display ( '나');

lcd_display ( 'N'을);

lcd_display ( '이메일');

lcd_display ('1 ');

(0xC0) lcd_command;

lcd_display ( '패');

lcd_display ( '나');

lcd_display ( 'N'을);

lcd_display ( '이메일');

lcd_display ('2 ');

(0x94) lcd_command;

lcd_display ( '패');

lcd_display ( '나');

lcd_display ( 'N'을);

lcd_display ( '이메일');

lcd_display ('3 ');

(0xd4) lcd_command;

lcd_display ( '패');

lcd_display ( '나');

lcd_display ( 'N'을);

lcd_display ( '이메일');

lcd_display ('4 ');(1) (;) 동안

)(Lcd_Ini을 무효)

(

(0x48) lcd_command;

delay_ms (30);

(0x0c) lcd_command;

delay_ms (10);

(0x06) lcd_command;

delay_ms (10);

(나타내고 0x01) lcd_command;

delay_ms (10);

)무효의 lcd_command (서명 번째 문자 명령)

(

RW는 = 0;

rs = 0;

lcd_port = 명령;

= 1을 활성화;

활성화 = 0;

delay_ms (5);

)무효의 lcd_display (서명 번째 문자 표시)

(

RW는 = 0;

rs = 1;

lcd_port = 디스플레이;

= 1을 활성화;

활성화 = 0;

delay_ms (1);

)무효의 delay_ms (서명 int 1)

((용; 나! = 0x00; 난 -)

(

지연 (delay_1ms);

)

)무효 지연 (서명 메기 일본)

(

(용; 일본! = 0x00; 일본 -)

(

)

)
 
일부 LCD는 일할 필요가 소프트웨어 초기화 하드웨어 초기화되지 않습니다.

올바른 경우 초기화하지 당신은, 그들이 물건을 이상하게됩니다 않습니다.

구글 초기화에 액정 소프트웨어 및 시도해 한번.

또한 삽입 NOP 설정 및 RS RW를 사이에,이 시스템의 속도에 달려 있습니다.그래서보십시오 :

RW는 = 0;
NOP ();
RS = 0;
NOP ();

이것이 정착 신호가로하자.

 
수 일이 뭐냐고의 사진을 게시할 수 있습니까?행 마 네, 행의 시작에 0 또는 1 행?

마치 우리가 배치되어 있습니다 행을 :

Row1
ROW2 행
Row3
Row4

보통 row3 row1 확장 기능입니다.거기에 입력 방법 :

edaboard.com가 조언을하는 친한 척 장소.

그것은 이런 모양이 될

Row1가 : edaboard.com입니다
ROW2 행 :
Row3 : 친근한 장소 t
Row4 :

매트

 
감사 매트 & 제안 daviddlc.전) (NOP을 가지고 노력으나 같은 문제가 아직.

이것은 액정이 무엇 일어 서려고
미안하지만, 당신은 첨부 파일이 필요합니다 보려면 로그인을에

 
이것은이 문제를 초기화.데이터를 보내기 전에 LCD를 초기화해야

Nandhu

 
감사합니다 Nandhu, 난) Lcd_Ini (와 함께했던 초기화; 상단에서 오른쪽을 main ()

수 .. 지금 마시기 바랍니다 말해 무슨 날 정확히?건배

 
게시물에 이전, 나는 초기화 소프트웨어 부탁 액정 구글에, 당신은 거기에 몇 가지 예제를 볼 수 있습니다.등록일 분 후 5 :이것은 무엇 16 곱하기 2는 내가 가지고, 당신은 귀하의 요구에 적응해야합니다 :

(LCD_InitDisplay을 무효)
(
RS = 0; / / RS = 0
RW는 = 0; / / 읽기 / 쓰기 = 0
Delay10KTCYx은 (36); / / aprox 만요.30 밀리초.
PORTB = 0x30; / / 기능 설정 : 8 비트
Delay10KTCYx (6); / / aprox 만요.5 밀리초.
PORTB = 0x30; / / 기능 설정 : 8 비트
Delay1KTCYx (2); / / 100uSec 기다려 aprox.(166 uSec)
LCD_WriteCommand (0x38); / / 기능 설정 : 8 비트, 2 라인, 5x7으로 문자 글꼴
/ 켜짐 / 꺼짐 제어 (0x0C); / LCD_WriteCommand : 디스플레이,
LCD_WriteCommand (나타내고 0x01); / / 지우기 디스플레이
LCD_WriteCommand (0x06); / / 증가, 아니 교대
) / / LCD_InitDisplay

또 속도에 따라 시스템 설정 기억이 NOP을 (RW는 정보와) 후 RS.

 
난 액정 내 라이브러리를 사용 C18를 가지고했다.이것은 최적화된 것이 아니라 그것은 문제가없는 작품.희망은 그것이 도움이됩니다.

코드 :/ *

Biblioteca의 용건은 죽어가 com을 PIC18F4431 액정

저자 : 디에고 사

데이터 : 2010년 7월 3일

* // / - Evitar 설득을 그만둘 헤더 파일은 seja incluído várias은 Programa을 vezes

# ifndef __LCD_CONFIG_H / / Verifica 제가있는 expressão __LCD_CONFIG_H 아니오 nao 졌어요 definida

# __LCD_CONFIG_H / / 정의 expressão __LCD_CONFIG_H을 정의

/ / -#은 PORTBbits.RB2 R을 정의

RW를 정의 # PORTBbits.RB3

엉 PORTBbits.RB4를 정의 #

데이터 PORTD를 정의 #

TRIS_DATA TRISD를 정의 #

NEW_LINE 0x0A를 정의 #

BUSY_FLAG를 PORTDbits.RD7 정의 #무효 configLCD (무효);

) SendCmdLCD을 (서명 번째 문자 cmd_lcd 무효;

WriteCharLCD을 (무효 메기 전자);

) WriteTextLCD를 (char *로 텍스트 무효;

(무효 BusyFlagCheck) 무효;메기 일본 = 0;

메기 라;무효 configLCD (무효)

(

TRISBbits.TRISB2 = 0; / / 피노 RS의 코모 출력

TRISBbits.TRISB3 = 0; / / RW에 피노의 코모 출력

TRISBbits.TRISB4 = 0; / / 엉 피노의 코모 출력엉 = 0;

RS = 0;

RW는 = 0;BusyFlagCheck ();SendCmdLCD (0b00111000); / / 기능 설정 : 8 비트 버스 모드, 2 라인 디스플레이 모드, 5x8 점 형식으로 표시

Delay1KTCYx (10); / / 지연 5ms

SendCmdLCD은 (0b00001111); / / 디스플레이 제어 : 디스플레이, 커서 켜기, 커서 깜박임 켜기

Delay1KTCYx (10); / / 지연 5ms

SendCmdLCD (0b00000001); / / 지우기 디스플레이

Delay1KTCYx (10); / / 지연 5ms

SendCmdLCD은 (0b00000110); 오른쪽에있는 / / 커서가 이동, DDRAM 주소를 1 증가; disply 수행되지 않습니다을 변화

)SendCmdLCD을 (서명 번째 문자 cmd_lcd 무효)

(

TRIS_DATA = 0b00000000;

엉 = 0;

RW는 = 0;

RS = 0;데이터 = cmd_lcd;Delay10TCYx (2); / / Aguarda 20 ciclos (10 uSeg)엉 = 1;Delay1KTCYx (10); / / Aguarda의 5ms

/ /이 = (* TimeDelay을 Ciclos Fosc) / 4

/ /이 = (5ms * 8MHz) / 4 Ciclos

/ /이 = 10,000 Ciclos

엉 = 0;Delay10TCYx (2); / / Aguarda 20 ciclos (10 uSeg)데이터 = 0b00000000;Delay10TCYx (2); / / Aguarda 20 ciclos (10 uSeg)BusyFlagCheck ();

)WriteCharLCD을 (메기 전자) 무효

(

TRIS_DATA = 0b00000000;엉 = 0;

RW는 = 0;

RS = 0;Delay10TCYx (2); / / Aguarda 20 ciclos (10 uSeg)RS = 1;

데이터 = 전자;Delay10TCYx (2); / / Aguarda 20 ciclos (10 uSeg)엉 = 1;Delay1KTCYx (10); / / Aguarda의 5ms엉 = 0;Delay10TCYx (2); / / Aguarda 20 ciclos (10 uSeg)데이터 = 0b00000000;

RS = 0;Delay10TCYx (2); / / Aguarda 20 ciclos (10 uSeg)BusyFlagCheck ();

)WriteTextLCD를 (char *로 텍스트 무효)

(

일본 = 0;(* 텍스트) 동안

(

d 개의 =* 텍스트 내용 ;(라 == NEW_LINE)하는 경우

(

휴식;

)

다른 사람

(

WriteCharLCD (라);

j를 ;

(일본> 16) 어기면;

)

)

)(무효 BusyFlagCheck) 무효

(

TRIS_DATA = 0b11111111;엉 = 0;

RS = 0;

RW는 = 1;

Delay1KTCYx (10); / / 지연 5ms(1) 동안

(

엉 = 1;

Delay10TCYx (1);(해당되는 경우 BUSY_FLAG == 0)

(

휴식;

)

다른 사람

(

엉 = 0;

Delay1KTCYx (10); / / 지연 5ms

)

)엉 = 0;

RW는 = 0;

TRIS_DATA = 0b00000000;

)# endif

 
O는 모두에게 감사를!보통 24 솔루션이 다른!

드디어 초기화있어 0 비트와 함께 일하고 더 지연과 및 RS RW를 설정.

다시 한번 감사를 모두!올린날짜 분 후에 3 :난 문제가 다른하지만 난 다른 주제로 게시물을 것이다.

 

Welcome to EDABoard.com

Sponsor

Back
Top