文档详情

51单片机12864液晶显示.doc

发布:2018-04-18约1.92千字共4页下载文档
文本预览下载声明
//本程序使用带中文字库的液晶显示器LCD12864 #include reg52.h #include intrins.h //定义引脚连接 #define LCD_DATA P0 //数据口 sbit RS = P3^5; //并行的指令/数据选择信号, H数据, L命令 sbit RW = P3^6; //并行读写选择信号, H读, L写 sbit E = P3^4; //并行使能端, H有效, L无效 sbit PSB = P3^7; //串并行选择端,H选择并行,L选择串行 sbit ff=P1^7; //忙碌标志 //待显示的内容 unsigned char code Tab1[]={机会总是留给准备}; unsigned char code Tab2[]={梅州搜搜网 }; unsigned char code Tab3[]={ 211工作室 }; unsigned char code Tab4[]={TEL: 07532114432}; //延时子程序 void Delay1mS(unsigned int tt) //延时tt毫秒 { unsigned char i; while(tt--) for(i=113;i0;i--); ; } bit CheckBusy() //读BF标志位,检查LCD是否就绪 { RS=0; _nop_(); RW=1; _nop_(); E=1; _nop_(); if(LCD_DATA0x80) return 1; else return 0; } void Wait() //等待LCD就绪 { while(CheckBusy()==1)ff=0; ff=1; } /*unsigned char Read_Data() //读数据 { Wait(); RS=1; RW=1; E=1; _nop_(); return LCD_DATA; } */ Write_Data(unsigned char dat) //写一个字节数据 { Wait(); RS=1; RW=0; E=1; _nop_(); LCD_DATA=dat; E=0; _nop_(); } Write_Command(unsigned char dat) //写命令 { Wait(); RS=0; RW=0; E=1; _nop_(); LCD_DATA=dat; E=0; _nop_(); } Write_String(unsigned char *p) //写字符串 { char cnt=0; while(*(p+cnt)!=\0) { Write_Data(*(p+cnt)); cnt++; } } void LCD_Init() //LCD初始化 { Write_Command(0x30);//基本指令, 扩充指令为34H Delay1mS(1); Write_Command(0x0c);//显示开, 关光标 .开光标0X0E Delay1mS(1); Write_Command(0x01);//清屏 Delay1mS(1); } void Set_Position(unsigned char x, unsigned char y) //设置待显示的位置 { unsigned char p; switch(x%4) { case 0: p = 0x80; break; //第一行开始地址 case 1: p = 0x90; break; //第二行 case 2: p = 0x88; break; //第三行 case 3: p = 0x98; break; //第四行 } p += y; Write_Command(p); } main() { PSB=1; //并行 LCD_Init(); Set_Position(0,0); Write_String(Tab1); Set_Position(1,0); Write_String(Tab2); Set_Position(2,0); Write_String(Tab3); Set_Position(3,0); Write_String(Tab4); while(1); }
显示全部
相似文档