그래픽 LCD 도서관

A

abbas1707

Guest
안녕,
Any1 날 어디로 ks0108 기반의 그래픽 LCD를 라이브러리 및 기타 유용한 자료 또는 소프트웨어를 다운로드할 수있는 링크를 제공할 수 있습니까???

 
만약에 당신이 serdisplib 등과 같은 많은 프로젝트를 볼 수있습니다 sourceforge 봐, 그들은 또한이 정보를 LCD 디스플레이에 관한 풍부한 포함

코드 :'************************************************* ***********************

KS0108와 함께 사용하기 위해 'GLIPICW.BAS 그래픽 응용 프로그램 (또는 호환)

'그래픽 LCD 컨트롤러에 연결되어있는 마이크 로칩 (TM)는의 PIC 16F877

'MELabs PicBasicPro (TM)는 버전 3.32의 글

'베타 버전 0.8.0

'==================하지 상업적 사용에 대한 =========================== ==

'

'작성자 : Ranjit Diol - COMPSys LLC는 2000 년 3 월

'(C) 저작권 Ranjit Diol, 2001

'

'면책 조항 :이 파일은 비 출시되고있습니다 - commericial

'프리웨어.
그것은 "있는 그대로", 두 작가 사망, 제공되고있다

'도 COMPSys LLC의 손해 발생에 대한 책임을지지하여야한다

'의 사용에 의해.

'

'라이센스 : 전체 또는 사용할 수있는이 응용 프로그램은

'부품 이외의 일부만큼 상용 응용 프로그램 내에서

'로 저자 이러한 부품 사용에 대한 크레딧을 부여합니다.

'

'연락처 : 자세한 내용은 (시) compsys1.com rsdiol

'

'************************************************* ***********************

'중요 내용은 다음 참고

'이것은 응용 프로그램 64KBit 외부 EEPROM이 연결되어 있다고 가정합니다

'가능한 I2C를 통해.
당신만이 직접 이미지를 보낼 수있을 것입없이

'LCD 디스플레이 및 저장할 수없습니다 -은 Readme.txt보기

'윈도우 GLiPIC 인터페이스.

'

'귀하의 프로토 타입을 필요로 PIN을 할당을 조정합니다

만약 당신이 다른 OSC의 속도를 사용하여 '이것은 20MHz의 xtal를 사용하여 테스트했다

'당신이 서브루틴'적진 '에 adjustement 수 있도록 할 수있습니다.

'************************************************* ***********************ISP를 사용하여 정의하는 경우에는 필수 1 'ONINT_USED

정의할 OSC 20 OSC 속도, 당신은 '섬광'쟁이에 '할 수있습니다

'의 루틴을 e_pause 다른 속도에 대한 지속적인

ADCON1 = 7, 당신을 조정할 수있습니다 필요한 모든 핀이 디지털 만들기 'SPBRG = 0 '************ 참고 ***********

만약 당신이 사용하는 RCSTA = 0 '이 필요합니다

TXSTA = 2 '셰인 Tolmie의 부트 로더 (PICLoader)

'*****************************나타나서 VAR PORTD 'LCD는 버스 핀 7-14 LSB-MSB

SCL VAR PORTC.3 '가능한 I2C SCL, 내선 EEPROM이에 대한

sda를 VAR PORTC.4 '가능한 I2C EEPROM은 SDA는 내선 번호를

in_pin VAR PORTC.7 '직렬 입력 핀

out_pin VAR PORTC.6 '직렬 출력 핀

LCD에 전자 VAR PORTC.0 '활성화 핀

CD를 VAR PORTC.1 '데이터 / 명령 핀 4 LCD에

RW를 VAR PORTC.2 '읽기 / 쓰기 핀 5 LCD에

CS1 VAR PORTB.1 'ChipSelect1 핀 15 LCD에

CS2는 VAR PORTB.2 'ChipSelect2 핀 16 LCD에

세 계 최 초의 VAR PORTC.5 '리셋 핀 17 LCD에출력 '설정 핀

TRISB.0 = 0

TRISB.1 = 0

TRISB.2 = 0

TRISD = 0

TRISC.0 = 0

TRISC.1 = 0

TRISC.2 = 0

TRISC.3 = 0

TRISC.4 = 0

TRISC.5 = 0'상수 사용

CON 32 '19200 보오 serout ser_baud / 카나리아

CON ctl $ A0 'EEPROM은 제어 코드

$ B8 'LCD는 페이지를 0 0 CON 행

$ CON last_row bf 'LCD는 7 페이지

열 CON $ 40 '라인 바이트 위치를 0 0

last_col CON 63 '마지막 열 (1-64)

first_col CON 0 '첫 번째 열

max_col CON 128 '마지막 열 (1-127)

CON 8 '8 호선 (1-8 기준) max_line

max_pos CON 64 '열 사이드 (1-64) 당 64의 위치

serout에 대한 이러다 CON 13 'CR

serout에 대한면 CON 10 'LF에 대하여

$ 층 'LCD 디스플레이에 CON disp_on

$ 3e 'LCD 디스플레이 꺼짐 CON disp_off

$ c0 '램 표시 0 CON disp_ram 화면 상단 (페이지 0)에서

빈 CON 00달러 '공백 문자

스트로보 CON 10 'Pauseus 6 e_pause 루틴'Word에서 변수 사용

eepaddr VAR 말을

addr VAR 말을'배열 사용

in_array VAR 바이트 [32]

in_ctl VAR 바이트 [8]'바이트 변수 사용

buff_count VAR 바이트 '버퍼 개수

카나리아에서 hex_nibble VAR 바이트 '진수 한입

카나리아에서 in_ascii VAR 바이트 '아스키 숯불

buf_cnt VAR 바이트 '버퍼 카운터

byte_pos VAR 바이트 '바이트의 위치 추적을 유지하려면

in_byte VAR 바이트 '수신 바이트

VAR tmp를 바이트 '임시 var

배열에 대한 인덱스 VAR 바이트 '색인

일본 VAR 바이트 '일반 카운터

케이 VAR 바이트 '일반 카운터

라인 VAR 바이트 'LCD를 행

VAR 바이트 '실행 지연'과 일시 중지 '를 사용 지연'초기화 변수

hex_nibble = 0

byte_pos = 0

지연 = 10

in_byte = 0

tmp        = 0
색인 = 0'재설정 액정

나타나서 = 0 '삭제 PORTD

CD를 = 0

RW를 = 0

전자 = 0

CS1 = 1

CS2는 = 0

세 계 최 초의 = 1

일시 100 '것들을 안정화하자

세 계 최 초의 = 0

일시 10 'LCD를 재설정

세 계 최 초의 = 1

일시 500메인 프로그램을 서브루틴에 '점프

메인 고토'**** (GO) 하위 루틴 ****스트로보 :

전자 = 1

pauseus e_pause

전자 = 0

돌아가기clearall :

CD를 = 0 '명령 모드

나타나서 = disp_off '디스플레이 끄기

gosub 스트로보

CS1 = 1

CS2는 = 0

색인 = 1 2

일본 = 행에 대한 last_row에

CD를 = 0 '명령 모드

gosub 스트로보 '쓰기 데이터

나타나서 = 열 '칼럼 주소 = 0

gosub 스트로보

나타나서 = j를

gosub 스트로보

CD를 = 1 '을 쓰기 모드로

k가 = first_col last_col에

나타나서 = 빈

gosub 스트로보

다음

다음

스왑 CS1, CS2를

다음CS1 = 0

CS2는 = 1

CD를 = 0

나타나서 = 행

gosub 스트로보

나타나서 = disp_ram '램 라인 0

gosub 스트로보

나타나서 = 열

gosub 스트로보

나타나서 = disp_on '전시

gosub 스트로보

CS1 = 1

CS2는 = 0

나타나서 = 행

gosub 스트로보

나타나서 = disp_ram '램 라인 0

gosub 스트로보

나타나서 = 열

gosub 스트로보

나타나서 = disp_on '전시

gosub 스트로보

CD를 = 1 '로 설정 데이터 명령을

CS1 = 1 '왼쪽 측면 활성

CS2는 = 0돌아가기초기화 : '초기화CD를 = 0 '으로 설정 명령 모드

CS1 = 1 '왼쪽에있는

CS2는 = 0 '오른쪽에서

색인 = 1 2

나타나서 = disp_off '디스플레이 끄기

나타나서 = disp_ram '램 라인 0

gosub 스트로보 '쓰기 데이터

나타나서 = 열 'Y라는 address = 0

gosub 스트로보

나타나서 = 행 '페이지 = 0

gosub 스트로보

나타나서 = disp_on '디스플레이

gosub 스트로보

스왑 CS1, CS2를

다음

CS1 = 1

CS2는 = 0돌아가기'**** LCD는 정기에 일어난 숯불 *****

LCD에 데이터의 '장소 바이트 in_byte byte_pos 및 라인 (라인) 가정

액정 byte_pos에 '문자의 위치 = 0-127 (Horiz), 행 0-7 (초록)putbyte :

나타나서 = in_byte '표시 바이트

gosub 스트로보

byte_pos = byte_pos 1 '증가 순위'지금은 어떤 LCD를 집 청소도 할 및 카운터 조정

만약 byte_pos = 다음 max_pos

CS1 = 0

CS2는 = 1

CD를 = 0

나타나서 = 열

gosub 스트로보

나타나서 = disp_ram

gosub 스트로보

나타나서 = 행 라인

gosub 스트로보

CD를 = 1

endif

만약 byte_pos = max_col을 선택한 다음 '확인

라인 = 선 1 '새 라인

만약 라인 = max_line 다음

라인 = 0

endif

byte_pos = 0 '재설정 byte_pos

CS1 = 1

CS2는 = 0

CD를 = 0

나타나서 = 열

gosub 스트로보

나타나서 = 행 라인

gosub 스트로보

나타나서 = disp_ram

gosub 스트로보

CD를 = 1

endif돌아가기'***** 변환 아스키 바이트 수신 루틴 16 진수로 *****

찾기 :

Lookdown in_array [지수], [ "0123456789abcdef"], hex_nibble

돌아가기'===============================

'메인 프로그램에 BEGIN **** ******

'===============================주 :

gosub 초기화 '초기화 액정

gosub clearall '지우기 모든 페이지

serout2 out_pin, ser_baud, [ "로드 이미지 ..."]

고토 용어로고 : gosub 초기화 '초기화 액정

gosub clearall '지우기 모든 페이지
'**** 이미지 표시 64KBit 외부 EEPROM은 비아 가능한 I2C IN *****EEPROM이에서 '로드 시작 화면 64KBit EEPROM이 가정byte_pos = 0

라인 = 0

addr = 0-8192하기

I2CREAD sda를, SCL, ctl, addr, [in_byte]

gosub putbyte만약 (addr = 1024) 또는 (addr = 2048) 또는 (addr = 3072) 또는 (addr = 4096) 또는 (addr = 5120) 또는 (addr = 6144) 또는 (addr = 7168) 또는 (addr = 8192) 다음

일시 4000gosub 초기화

gosub clearall

endif

다음

일시 4000

gosub 초기화

gosub clearall'고토 로고'계속 반복 inifitum!'********************************************'터미널 서브루틴

검색어 : '홈 포지션 가정합니다'설정 변수

일본 = 0

색인 = 0

케이 = 0

'라인 = 0

addr = 0

in_ascii = 0

buff_count = 32

지연 = 10

'addr = 0

'byte_pos = 0'초기 매개 변수를 잡아

get_param :

addr = 0

byte_pos = 0

라인 = 0

serin2 in_pin, ser_baud, [("*"), STR in_ctl 기다려 \ 9]

색인 = 0 8

Lookdown in_ctl [지수], [ "0123456789abcdef"], hex_nibble

in_ctl [인덱스] = hex_nibble

다음

지연 = (in_ctl [7] ""4) | in_ctl [8]

buff_count = (in_ctl [1] ""4) | in_ctl [2]

addr.byte1 = (in_ctl [3] ""4) | in_ctl [4]

addr.byte0 = (in_ctl [5] ""4) | in_ctl [6]

buf_cnt = (buff_count - 1)

eepaddr = addr

일본 = in_ctl [0]

만약 일본 = 3 다음 lcd_loop '디스플레이 LCD에 직접

만약 일본 = 1 다음 eep_loop '로드 내선 EEPROM이

만약 일본 = 2 다음 로고 '표시 이미지 루프

고토 get_param

eep_loop :serin2 in_pin, ser_baud, 5000, get_param, [("]"), STR in_array 기다려 \ buff_count] '에 대한 잠깐 만요]와 부하 in_array에 대한 인덱스 = 0 (buff_count - 1)

gosub '를 찾을 배열에 숯불과 장소 타

in_array [인덱스] = hex_nibble

다음에 대한 인덱스 = 0 (buff_count - 1) 2 단계

in_byte = (in_array [인덱스] ""4) | (in_array [색인 1]) '양식을 16 진수 숫자 - MSB는 LSB가

sda를, SCL, ctl, addr, I2CWRITE [in_byte]

일시 5

addr = addr 1

다음

고토 eep_looplcd_loop :

serin2 in_pin, ser_baud, 5000, get_param, [("]"), STR in_array 기다려 \ buff_count] '에 대한 잠깐 만요]와 부하 in_array에 대한 인덱스 = 0 (buff_count - 1)

gosub find         'Get char and place in array
in_array [인덱스] = hex_nibble

다음에 대한 인덱스 = 0 (buff_count - 1) 2 단계

in_byte = (in_array [인덱스] ""4) | (in_array [색인 1]) '양식을 16 진수 숫자 - MSB는 LSB가

gosub putbyte다음고토 lcd_loop'*********** 최종 ************



'최종 **** **** 메인 프로그램의

 
http://www.edaboard.com/viewtopic.php?t=276658&highlight=cv12864b

여기서도 보이는 것!

 

Welcome to EDABoard.com

Sponsor

Back
Top