下面是我写的一个1602显示第一行第一个字母“A”的程序和电路图,一直出不来,希望各位热心人花一点点时间指导一下。先谢谢了!
//************************************************************// #include <REGX51.H> #define uchar unsigned char #define uint unsigned int uchar com; //LCD指令寄存器 uchar dat; //LCD数据寄存器 sbit RS=P2^1; sbit RW=P2^2; sbit E=P2^3; sbit L7=P0^7;
//****************延时程序******************// void delay(uchar n) { uint i,j; for(i=0;i<n;i++) for(j=0;j<200;j++); }
//**************写指令代码子程序************// void write_com(uchar com) { //首先读忙 RS=0; //设置读忙控制方式 RW=1; do { P0=0xff; E=0; delay(2); E=1; } while(L7==1); //循环判断lcd是否忙? RS=0; RW=0; P0=com; E=0; delay(2); E=1; }
//***************写数据子程序****************// void write_dat(uchar dat) { //首先读忙 RS=0; //设置读忙控制方式 RW=1; do { P0=0xff; E=0; delay(2); E=1; } while(L7==1); //循环判断lcd是否忙? RS=1; RW=0; P0=dat; E=0; delay(2); E=1; }
//**********************主程序**********************// void main() { //首先lcd初始化 delay(10); com=0x38; //设定lcd为16x2显示,5x7点阵,8位数据接口 write_com(com); com=0x01; //清显示 write_com(com); com=0x08; //开显示,有光标,光标闪烁 write_com(com); com=0x06; //光标右移 write_com(com); com=0x80; //第一行第一个字符地址 write_com(com); dat=0x41; //显示“A” write_dat(dat); while(1); }
|