LCD12864液晶屏测试程序

  • 格式:pdf
  • 大小:119.73 KB
  • 文档页数:5

/////LCD12864液晶屏测试程序(已通过)//////

////////液晶屏型号:HJ12864M-1//////////

#include #define uchar unsigned char #define uint unsigned int

//8bit数据接入IO口

#define Part P0 //P0接8位数据线

//控制数据端

sbit LCD_RS=P2^5; //定义12864液晶RS端,寄存器选择信号 H:数据

寄存器 L:指令寄存器

sbit LCD_RW=P2^6; //定义12864液晶RW端,读/写信号 H:读 L:写

sbit LCD_EN=P2^7; //定义12864液晶LCDEN端, 片选信号 下降沿

触发,锁存数据

sbit LCD_PSB=P3^2; //定义12864液晶PSB端, H:并行 L:串行

sbit LCD_RST=P3^4; //定义12864液晶RST端, H:不复位 L:复位

uchar code dis1[]={"床前明月光"};

uchar code dis2[]={"疑是地上霜"};

uchar code dis3[]={"举头望明月"};

uchar code dis4[]={"低头思故乡"};

//毫秒延时函数 void delay(uint xms) {

uint i,j;

for(j=0;i

for(i=0;i<110;i++);

}

//LCD忙检测函数 bit lcd_busy() {

bit result;

LCD_RS=0;

LCD_RW=1;

LCD_EN= 1; result=(bit)(Part & 0x80);

LCD_EN=0; return result;

}

//液晶写命令函数

void lcd_write_cmd(uchar com)

{

while(lcd_busy());

LCD_RS=0; //选择指令寄存器

LCD_RW=0; //写

LCD_EN=0;

Part=com; //指令值赋给P0口

delay(5); LCD_EN=1;

delay(5);

LCD_EN=0; }

//液晶写一个字符数据函数

void lcd_write_dat(uchar date) {

while(lcd_busy());

LCD_RS=1; //选择数据寄存器

LCD_RW=0; //写

LCD_EN=0;

P0=date; //数据值赋给P0口

delay(5);

LCD_EN=1;

delay(5);

LCD_EN=0;

}

//液晶写一个字符串函数

void lcd_write_string(uchar *str) {

while(*str!='\0') //未结束 {

lcd_write_dat(*str++);

delay(5); }

}

//液晶显示位置函数

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); }

//液晶初始化函数 void lcd_init()

{

LCD_PSB=1; //并行方式

LCD_RST=1; //不复位 lcd_write_cmd(0x30); delay(5);

lcd_write_cmd(0x0c); //开显示,不显示光标 delay(5);

lcd_write_cmd(0x06); //写一个字符后地址指针自动加1 delay(5);

lcd_write_cmd(0x01); //清屏 delay(5);

}

//主函数函数

void main() {

// uchar i; lcd_init();

while(1)

{

lcd_pos(1,1); // lcd_write_string(dis1);

lcd_write_string("床前明月光");

delay(5);

lcd_pos(2,1); // lcd_write_string(dis2);

lcd_write_string("疑是地上霜");

delay(5); lcd_pos(3,1);

// lcd_write_string(dis3);

lcd_write_string("举头望明月");

delay(5); lcd_pos(4,1);

// lcd_write_string(dis4); lcd_write_string("低头思故乡");

delay(500);

}

}