液晶显示模块编程(编辑修改稿)内容摘要:

X80, 0X40, 0X3F, 0X0, 0XFF, 0X0, 0X3F, 0X40, 0X40, 0X70, 0X0 //流 }; //系统各口的输入输出状态初始化子程序 void INITIAL() { ADCON1=0X87; //设置 PORTA 口和 PORTE 口为数字 I/O 口 TRISA3=0; TRISB0=0; TRISE=0X00; //设置液晶的 4 个控制脚为输出 } //读液晶显示器状 态子程序 void LCDSTA1() { while(1){ TRISD=0XFF; //设置 D 口为输入 RB0=1; //E1=1 RA3=0; //E2=0 RE0=1; //R/W=1 RE1=0; //A0=0 if(RD7==0) break; //为忙状态 , 则继续等待其为空闲 } } //对液晶显示器发指令子程序(指令保存在 TRANS 寄存器中 ) void TRANS1() { LCDSTA1(); //判断液晶是否为忙 TRISD=0X00; //D 口为输出 223 RB0=1; //E1=1 RA3=0; //E2=0 RE0=0; //R/W=0 RE1=0; //A0=0 PORTD=TRANS; //需要写入的命令字送入数据线 RB0=0; //E1=0 写入指令 RE0=1; //R/W=1 } //对液晶显示器写数据子程序(数据保存在 WRITE 寄存器中) void WRITE1() { TRANS=CLMADD; //设置列地址 TRANS1(); LCDSTA1(); //查询液晶是否为空闲 TRISD=0X00; //D 口为输出 RB0=1; //E1=1 RA3=0; //E2=0 RE0=0; //R/W=0 RE1=1; //A0=1 PORTD=WRITE; //需要写入的数据放入 D 口 RB0=0; //E1=0, 写入数据 CLMADD++; //列地址加 1 RE0=1; //R/W=1 } //开 E1 显示子程序 void DISP1() { while(1) { TRANS=0XAF; TRANS1(); //送出控制命令 LCDSTA1(); //判断液晶是否为空闲 TRISD=0XFF; //设置 D 口为输入 RB0=1; //E1=1 RA3=0; //E2=0 RE0=1; //R/W=1 RE1=0; //A0=0 if(RD5==0) break; //如果液晶没被关闭 , 则继续关 } } //E1 边清屏子程序 224 void CLEAR1() { PAGEADD=0xB8; //设置页地址代码 for(PAGENUM=0X04; PAGENUM0; PAGENUM){ TRANS=PAGEADD; TRANS1(); CLMADD=0x00; //设置起始列 for(CLMSUM=0X50; CLMSUM0; CLMSUM) { LCDSTA1(); //判断液晶是否为空闲 WRITE=0X00; WRITE1(); //写入 00H 以清屏 } PAGEADD++; //页号增 1 } } //关 E1 显示子程序 void DISOFF1() { while(1) { TRANS=0XAE; TRANS1(); //发出控制命令 LCDSTA1(); //判断液晶是否为空闲 TRISD=0XFF; //D 口设置为输入 RB0=1; //E1=1 RA3=0; //E2=0 RE0=1; //R/W=1 RE1=0; //A0=0 if(RD5==1) break; //如果液晶没被关闭 , 则继续关 } } //E1 边初始化 void lcd1() { DISOFF1(); //关显示 E1 TRANS=0XA4; //静态显示驱动 TRANS1(); //发出控制命令 TRANS=0XA9; //占空比为 1/32 TRANS1(); //发出控制命令 TRANS=0XE2; //复位 TRANS1(); //发出控制命令 225 TRANS=0XA0; //ADC 选择正常输出 TRANS1(); //。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。