标题: 单片机+LCD19264液晶屏并口数据倒接 [打印本页]

作者: 3花木城    时间: 2022-6-26 15:23
标题: 单片机+LCD19264液晶屏并口数据倒接
本帖最后由 3花木城 于 2022-6-27 19:38 编辑

之前有用到一个1602的数据并口倒接,今天焊一个LCD19264屏幕,走线的话,DB0接P07是最方便的走线,于是想到用1602的那个单片机代码,稍微修改了一下,仿真通过了,接下来焊实物。
以后再焊实物的时候,不用纠结DB0一定要接PX.0了,怎么顺怎么接。

数据倒接.png (79.93 KB, 下载次数: 84)

数据倒接.png

(反接)仿真 代码 测试用.rar

120.33 KB, 下载次数: 15


作者: Hephaestus    时间: 2022-6-26 22:38
这又不是RAM的地址线可以随便接。数据线如果交换顺序,单片机软件也要把数据转换,更麻烦!
作者: wulin    时间: 2022-6-27 07:21
LCD数据并口不仅可以倒序接,任意接、不同组IO口接都行。只要软件与其对应即可。
作者: by64214    时间: 2022-6-27 10:38
谢谢楼主分享  能分享一下程序吗  谢谢
作者: 3花木城    时间: 2022-6-27 19:38
by64214 发表于 2022-6-27 10:38
谢谢楼主分享  能分享一下程序吗  谢谢

已上传,请查阅

作者: xiaoyuxinke    时间: 2022-7-3 12:01
Hephaestus 发表于 2022-6-26 22:38
这又不是RAM的地址线可以随便接。数据线如果交换顺序,单片机软件也要把数据转换,更麻烦!

一个数组搞定了,这种没什么难

作者: frank_tw    时间: 2022-7-3 13:26
你可以作为参考,可以任意,只要下方对应定义
//MCU : STM32F0
//X=Portt 0=Pin number
#define LCD_D0            X, 0
#define LCD_D1            X, 0
#define LCD_D2            X, 0
#define LCD_D3            X, 0
#define LCD_D4            X, 0
#define LCD_D5            X, 0
#define LCD_D6            X, 0
#define LCD_D7            X, 0

#define LCD_WR            C, 1 //<---PC1 example

#define STM_F0_GPIO_SET_(a, b)      GPIO ## a ->BSRR = 1 << b
#define STM_F0_GPIO_SET(a)          STM_F0_GPIO_SET_(a)

#define STM_F0_GPIO_CLR_(a, b)      GPIO ## a ->BSRR = 1 << (b + 16)
#define STM_F0_GPIO_CLR(a)          STM_F0_GPIO_CLR_(a)



#define LCD_WRITE(data) {;                                   \
  if(data & 0x01) STM_F0_GPIO_SET(LCD_D0); else STM_F0_GPIO_CLR(LCD_D0); \
  if(data & 0x02) STM_F0_GPIO_SET(LCD_D1); else STM_F0_GPIO_CLR(LCD_D1); \
  if(data & 0x04) STM_F0_GPIO_SET(LCD_D2); else STM_F0_GPIO_CLR(LCD_D2); \
  if(data & 0x08) STM_F0_GPIO_SET(LCD_D3); else STM_F0_GPIO_CLR(LCD_D3); \
  if(data & 0x10) STM_F0_GPIO_SET(LCD_D4); else STM_F0_GPIO_CLR(LCD_D4); \
  if(data & 0x20) STM_F0_GPIO_SET(LCD_D5); else STM_F0_GPIO_CLR(LCD_D5); \
  if(data & 0x40) STM_F0_GPIO_SET(LCD_D6); else STM_F0_GPIO_CLR(LCD_D6); \
  if(data & 0x80) STM_F0_GPIO_SET(LCD_D7); else STM_F0_GPIO_CLR(LCD_D7); }
#endif



#define LCD_DATA8BITS_WRITE(data)   { lcd_data8 = data; LCD_WRITE(lcd_data8); STM_F0_GPIO_CLR(LCD_WR); LCD_DELAY; STM_F0_GPIO_CLR(LCD_WR); }

Example:

LCD_DATA8BITS_WRITE(*pOutData);

作者: 3花木城    时间: 2022-7-3 22:18
frank_tw 发表于 2022-7-3 13:26
你可以作为参考,可以任意,只要下方对应定义
//MCU : STM32F0
//X=Portt 0=Pin number

还可以这样任意io组合,长见识了




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1