找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1132|回复: 3
打印 上一主题 下一主题
收起左侧

单片机液晶显示有错误,求指导如何修改?

[复制链接]
跳转到指定楼层
楼主

#include <REG51.H>
#include <INTRINS.H>
sbit RS=0xb0;
sbit RW=0xb1;
sbit E=0xb2;
void lcd_w_cmd(unsigned char com);
void lcd_w_dat(unsigned char dat);
unsigned char lcd_r_start();
void int1();  
void delay(unsigned char t);
void delay1();
void main()
{
unsigned char lcd[]="SHEN ZHEN";
unsigned char i;
P1=0xff;    //
int1();  //3?ê??ˉlcd
delay(255);
lcd_w_cmd(0x83);  
delay(255);
for(i=0;i<9;i++)
{
lcd_w_dat(lcd[ i]);   // write data shen zhen
delay(200);
}
while(1);     //?-μ?ì¤2?
}
void delay(unsigned char t)  
{
unsigned char j,i;
for(i=0;i<t;i++)
for(j=0;j<50;j++);
}
void delay1()   
{
_nop_();
_nop_();
_nop_();
}
void int1()
{
lcd_w_cmd(0x3c);  
lcd_w_cmd(0x0e);
lcd_w_cmd(0x01);
lcd_w_cmd(0x06);  
lcd_w_cmd(0x80);  
}
unsigned char lcd_r_start()   //r zhuangtai
{
unsigned char s;
RW=1;   
delay1();
RS=0;
delay1();
E=1;
delay1();
s=P1;
delay1();
E=0;
delay1();
        RW=0;     //RS=1;
        delay1();
return(s);
}
void lcd_w_cmd(unsigned char com)
{
unsigned char i;
do{
i=lcd_r_start();
i=i&0x80;  
delay(2);
}
while(i!=0);
RW=0;
delay1();
RS=0;
delay1();
E=1;
delay1();
P1=com;
delay1();
E=0;
delay1();
RW=1;
delay(255);
}
void lcd_w_dat(unsigned char dat)
{
unsigned char i;
do{
i=lcd_r_start();
i=i&0x80;
delay(2);
}while(i!=0);
RW=0;
delay1();
RS=1;
delay1();
E=1;
delay1();
P1=dat;
delay1();
E=0;
delay1();
RW=1;
delay(255);
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:969664 发表于 2021-10-16 14:45 | 只看该作者
可以帮忙看看哪里错了吗
回复

使用道具 举报

板凳
ID:480510 发表于 2021-10-16 22:29 | 只看该作者
本帖最后由 ByanouQ 于 2021-10-16 22:33 编辑

sbit RS=0xb0;
sbit RW=0xb1;
sbit E=0xb2;
这是什么意思?没这样定义的
应该是
sbit RS=P3^0;
sbit RW=P3^1;
sbit E=P3^2;
回复

使用道具 举报

地板
ID:480510 发表于 2021-10-16 22:32 | 只看该作者
应该是
sbit RS=P3^0;
sbit RW=P3^1;
sbit EN=P3^2;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表