기금넷 공식사이트 - 주식 시세 - 51 마이크로컨트롤러 12864 프로그램에 대한 질문

51 마이크로컨트롤러 12864 프로그램에 대한 질문

이것을 사용하세요.

이전에 사용했습니다

#include lt;reg52.hgt;

#includelt;intrins.hgt;

#include lt;string.hgt;

p>

#define uchar unsigned char

#define uint unsigned int

//8비트 데이터 액세스 IO 포트

#define P0 부분 // P0은 8비트 데이터 라인에 연결됩니다

//제어 데이터 단자

sbit LCD_RS=P3^2; //12864 액정 RS 단자를 정의하고, 레지스터 선택 신호 H: 데이터 레지스터 L: 명령 레지스터

sbit LCD_RW=P1^1; //12864 LCD RW 정의 끝, 읽기/쓰기 신호 H: 읽기 L: 쓰기

sbit LCD_EN=P1^2; //정의 12864 LCD LCDEN 터미널, 칩 선택 신호 하강 에지 트리거, 래치된 데이터

//sbit LCD_PSB=P3^2; //12864 LCD PSB 터미널 정의, H : 병렬 L: 직렬

sbit LCD_RST=P3^6; //12864 LCD RST 단자 정의, H: 재설정되지 않음 L: 재설정

sbit AD_ST=P1^6; AD 정의

sbit AD_OE=P3^7;

sbit AD_A=P1^3;

sbit AD_B=P1^4;

sbit AD_C=P1^5;

sbit AD_EOC=P1^7;

sfr T2MOD=0XC9;

uchar 코드 dis1[]={"speed "};

uchar code dis2[]={"가속 x 방향"};

uchar code dis3[]={"가속 y 방향"};

uchar code dis4[]={ "가속 z 방향"};

uchar code Text[]={"환영합니다"}

uint i; >

uchar 코드 dat[] ;

int jishu;

int sudu1;

int sudu2;

int maichong1;

int maichong2 ;

//밀리초 지연 함수

void Delayms(uint x) //Nms 지연

{

단위 i ;

while(x--)

{

for(i=0; ilt; 125; i )

{; }

}

}

지연 무효(단위 xms)

{

uint i, j;

for(j=0;ilt;xms;j)

for(i=0;ilt;110;i);

}

//LCD 통화중 감지 기능

bit lcd_busy()

{

비트 결과;

LCD_RS=0;

LCD_RW=1

LCD_EN= 1;

ult=(비트)(부분 앰프; 0x80);

LCD_EN=0

결과 반환

}

// LCD 쓰기 명령 기능

void lcd_write_cmd(uchar com)

{

while(lcd_busy());

LCD_RS=0; //명령 레지스터 선택

LCD_RW=0; //쓰기

LCD_EN=0

Part=com; /p>

지연(5);

LCD_EN=1;

지연(5)

LCD_EN=0; p>}

//LCD는 문자 데이터 함수를 씁니다.

void lcd_write_dat(uchar date)

{

while(lcd_busy( ));

LCD_RS=1; //데이터 레지스터 선택

LCD_RW=0; //쓰기

LCD_EN=0; > P0=date; //P0 포트에 데이터 값 할당

지연(5);

LCD_EN=1;

지연(5);

p>

LCD_EN=0;

}

//LCD는 문자열 함수를 씁니다.

void lcd_write_string(uchar *str)

{

while(*str!='\0') //끝나지 않음

{

lcd_write_dat(*str ) ;

지연(5);

}

}

//LCD 위치 기능

void lcd_pos (uchar x , uchar y) //X 라인의 Y 위치부터 표시 시작

{

uchar pos;

if(x==1 ) // 첫 번째 줄

{x=0x80;}

else if(x==2) //두 번째 줄

{x=0x90;}

else if(x==3) //세 번째 줄

{x=0x88;}

else if(x==4) // 세 번째 줄 네 줄

{x=0x98;}

pos=x y-1; //첫 번째 주소는 0X80

lcd_write_cmd(pos) ;

}

//LCD 초기화 함수

void lcd_init()

{

// LCD_PSB =1; /병렬 모드

LCD_RST=1; //재설정하지 않음

lcd_write_cmd(0x30)

지연(5); >

lcd_write_cmd (0x0c); //디스플레이를 열고 커서를 표시하지 않습니다.

Delay(5);

lcd_write_cmd(0x06) //주소 포인터가 자동으로 증가합니다. 1 문자를 쓴 후

Delay(5);

lcd_write_cmd(0x01) //화면 지우기

de

누워(5);

}