기금넷 공식사이트 - 주식 시세 - 51 마이크로컨트롤러 12864 프로그램에 대한 질문
51 마이크로컨트롤러 12864 프로그램에 대한 질문
이것을 사용하세요.
이전에 사용했습니다
#include lt;reg52.hgt;
#includelt;intrins.hgt;
#include lt;string.hgt; p>
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>
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);
}