AT89S52驱动1602液晶,8条数据线反着接的解决方法?

2020-02-05 09:15发布

1.用AT89S52驱动1602液晶,单片机的P0.0-0.7分别连液晶的DB7-DB0,原定义为 #define databus P0 ,改为 #define databus ~P0 这样可以吗,如果不行,是否要把程序里的每处P0 都改为~P0呢?
2.如果MCU连接1602的8位数据线不连续,比如P0.1 P0.3 P0.8 P0.9 P1.5 ...分别连DB0-DB7,用什么指令能解决?
刚开始学51,菜鸟一个,望大家支持,谢谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
skystalker
1楼-- · 2020-02-05 12:38
楼上的朋友,对一个字节取反跟数据高低位反转不是一码事
myqiang1990
2楼-- · 2020-02-05 15:28
1.取反不可以
  unchar temp,i;
for(i=0;i<8;i++)
  {
    if(date&0x80)//date就是你要写的数据
    temp|=0x80;
    temp>>=1;//最后temp赋给IO口可以了
    date<<=1;
  }
2.你可以分别定义这8个口啊,然后把要写的数据一位一位的取出来,然后按照高低位分别赋给这几个口就OK拉!!
上面是的我解决方法,楼下朋友有更好的,让大家分享一下。。呵呵
mcucow
3楼-- · 2020-02-05 20:12
软件当然可以解决, 不过影响速度, 最好还是硬件改过来
wangfei
4楼-- · 2020-02-06 02:12
 精彩回答 2  元偷偷看……
NJ8888
5楼-- · 2020-02-06 07:00
有个51具有扩展指令,位倒序,写入REG D7--D0,读出D0--D7
gxustudent
6楼-- · 2020-02-06 10:26
楼上的,51有这么个指令吗?

一周热门 更多>