LCD1602_RS=0; LCD1602_RW=0; LCD1602_EN=0; LCD1602_EN=1; delay_nms(10); }
/***************************************************/ /****************写数据函数************************/ void LCD_write_dat(unsigned char dat) {
LCDIO=dat; LCD1602_RS=1; LCD1602_RW=0; LCD1602_EN=0; delay_nms(1); LCD1602_EN=1; }
/****************************************************/ /***************设置显示位置**************************/ void LCD_set_xy( unsigned char x, unsigned char y ) {
unsigned char address; if (y == 1)
address = 0x80 + x; else
address =0xc0+ x; LCD_write_command(address); }
/***************************************************/ /****************显示一个字符**********************/
void LCD_dsp_char( unsigned x,unsigned char y,unsigned char dat) {
LCD_set_xy( x, y ); LCD_write_dat(dat); }
/**********************************************/ /***************显示字符串函数***************/
void LCD_dsp_string(unsigned char X,unsigned char Y,unsigned char *s) {
LCD_set_xy( X, Y ); while (*s) {
LCD_write_dat(*s); s ++;
} }
/***********************************************/ /********** 延时**********************/ void delay_nms(unsigned int n) {
unsigned int i=0,j=0; for (i=n;i>0;i--) for (j=0;j<10;j++); }
/**************************************/ /***********主函数**************/ void main(void) {
unsigned char i,j,k,tmp; LCD_init(); delay_nms(100);
tmp=0x40;//设置CGRAM地址的格式字 k=0;
for(j=0;j<8;j++) {
for(i=0;i<8;i++) {
LCD_write_command(tmp+i); // 设置自定义字符的 CGRAM 地址 delay_nms(2);
LCD_write_dat(table1[k]); // 向CGRAM写入自定义字符表的数据 k++;
delay_nms(2); }
tmp=tmp+8; }
LCD_dsp_string(1,1,\在第一行第一列显示“LCD TEST” LCD_dsp_string(1,2,\在第二行第一列显示“SUCCESSFUL” for (i=0;i<4;i++) {
LCD_dsp_char( 12+i,1,i);//在第一行第12列位置显示心图案的上半部 delay_nms(1); }
for (i=4;i<8;i++) {
LCD_dsp_char( 12+i-4,2,i);在第二行第12列位置显示心图案的下半部 delay_nms(1); }
while (1);
}
/********************************************************************/ 实际效果如图: