找回密码
 立即注册

QQ登录

只需一步,快速开始

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

大佬们,这个是LCD1602的显示的函数,GPIO_Write查了一下,STM32驱动写指令/数据时...

[复制链接]
跳转到指定楼层
楼主
ID:1021488 发表于 2022-4-26 11:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void LCD_Write_Com(unsigned char com)
{                             
LCD1602_RS0;        //RS置0,指令寄存器
delay_us(1);
LCD1602_RW0;        //RW0,写操作
delay_us(1);        //延时1微妙
LCD1602_EN1;         //EN置1
delay_us(1);
com = BitReversed(com);
GPIO_Write(GPIOA,(GPIO_ReadOutputData(GPIOA)&0XFF00)+com);           
delay_us(100);
LCD1602_EN0;//结束后拉低
}

大佬们,这个是LCD1602的显示的函数,GPIO_Write查了一下,STM32驱动写指令/数据时,先读取电平,然后再写入。
那个为什么要与上0XFF00呢??
还有com为什么要按位逆序啊???
求求大佬们的解答!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:161164 发表于 2022-4-26 11:59 | 只看该作者
没有原理图,只能从现有代码分析

先读再与上0XFF00是因为LCD 的D0~D7 只接上GPIOA的P0~P7
而GPIOA的P8~P15(如有)有其他用途
与上0XFF00就可以清零P0~P7

按位逆序就可能是方便布线
把LCD 的D0~D7 接到GPIOA的P7~P0
回复

使用道具 举报

板凳
ID:123289 发表于 2022-4-26 14:26 | 只看该作者
单片机软件是为硬件服务的,必须结合硬件原理图软件才有精准。
1、读通原理图。
2、读通LCD手册。
这样你的问题才能真正地解决。
回复

使用道具 举报

地板
ID:1021488 发表于 2022-4-26 15:45 | 只看该作者
lkc8210 发表于 2022-4-26 11:59
没有原理图,只能从现有代码分析

先读再与上0XFF00是因为LCD 的D0~D7 只接上GPIOA的P0~P7

果然是!我看了下原理图,是为了方便布线,是LCD的D0-D7和GPIOA的P7-P0相接!

前边的与好像也明白了。使LCD只和GPIOA的0-7引脚相接,只改变这8位,而其他位数不变,所以先读取GPIOA的值,再与上0xff00,把P0-P7清零,然后再加com,也就是把要写入的数据写入P0-P7,这是个意思吗?
回复

使用道具 举报

5#
ID:1021488 发表于 2022-4-26 15:48 | 只看该作者
yzwzfyz 发表于 2022-4-26 14:26
单片机软件是为硬件服务的,必须结合硬件原理图软件才有精准。
1、读通原理图。
2、读通LCD手册。

恩恩知道了,确实是我不咋会操作,以后注意!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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