|
發布時間: 2022-6-26 15:23
正文摘要:本帖最后由 3花木城 于 2022-6-27 19:38 編輯 之前有用到一個1602的數據并口倒接,今天焊一個LCD19264屏幕,走線的話,DB0接P07是最方便的走線,于是想到用1602的那個單片機代碼,稍微修改了一下,仿真通過了,接 ... |
frank_tw 發表于 2022-7-3 13:26 還可以這樣任意io組合,長見識了 |
|
你可以作為參考,可以任意,只要下方對應定義 //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); |
Hephaestus 發表于 2022-6-26 22:38 一個數組搞定了,這種沒什么難 |
by64214 發表于 2022-6-27 10:38 已上傳,請查閱 |
| 謝謝樓主分享 能分享一下程序嗎 謝謝 |
| LCD數據并口不僅可以倒序接,任意接、不同組IO口接都行。只要軟件與其對應即可。 |
| 這又不是RAM的地址線可以隨便接。數據線如果交換順序,單片機軟件也要把數據轉換,更麻煩! |