|

楼主 |
发表于 2016-3-2 16:30:03
|
显示全部楼层
本帖最后由 YMC 于 2016-4-5 16:46 编辑
在各位网友的帮助下 ,写出一个无论用哪一组,用几组IO,IO乱序控制,都直接控制并口lcd的方法,抽出时间把部分代码发出来给大家看一下 ,引脚定义,这里8位的并口用了;两组io ,分别是F3 : F2,D15 : D11。
[mw_shl_code=c,true]uint8_t ReadByteFromLCD(void)
{
uint8_t res=0;
res=(LCD_D0_IN<<0)|(LCD_D1_IN<<1)
|(LCD_D2_IN<<2)|(LCD_D3_IN<<3)
|(LCD_D4_IN<<4)|(LCD_D5_IN<<5)
|(LCD_D6_IN<<6)|(LCD_D7_IN<<7);
//SEGGER_RTT_printf(0, "read res: 0X%4.4x \n", res);
return res;
}
void WriteByteToLCD(uint8_t byte)
{
LCD_D0_OUT((byte&0x01)>>0);
LCD_D1_OUT((byte&0x02)>>1);
LCD_D2_OUT((byte&0x04)>>2);
LCD_D3_OUT((byte&0x08)>>3);
LCD_D4_OUT((byte&0x10)>>4);
LCD_D5_OUT((byte&0x20)>>5);
LCD_D6_OUT((byte&0x40)>>6);
LCD_D7_OUT((byte&0x80)>>7);
//SEGGER_RTT_printf(0,"write byte: 0X%4.4x \n", byte);
}
#define LCD_RS(x) x ? HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET) : HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET)
#define LCD_RST(x) x ? HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_SET) : HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET)
#define LCD_RW(x) x ? HAL_GPIO_WritePin(GPIOC, GPIO_PIN_12, GPIO_PIN_SET) : HAL_GPIO_WritePin(GPIOC, GPIO_PIN_12, GPIO_PIN_RESET)
#define LCD_EN(x) x ? HAL_GPIO_WritePin(GPIOC, GPIO_PIN_10, GPIO_PIN_SET) : HAL_GPIO_WritePin(GPIOC, GPIO_PIN_10, GPIO_PIN_RESET)
#define LCD_PSB(x) x ? HAL_GPIO_WritePin(GPIOF, GPIO_PIN_6, GPIO_PIN_SET) : HAL_GPIO_WritePin(GPIOF, GPIO_PIN_6, GPIO_PIN_RESET)
#define LCD_D0_OUT(x) x ? HAL_GPIO_WritePin(GPIOF, GPIO_PIN_3, GPIO_PIN_SET) : HAL_GPIO_WritePin(GPIOF, GPIO_PIN_3, GPIO_PIN_RESET)
#define LCD_D1_OUT(x) x ? HAL_GPIO_WritePin(GPIOF, GPIO_PIN_2, GPIO_PIN_SET) : HAL_GPIO_WritePin(GPIOF, GPIO_PIN_2, GPIO_PIN_RESET)
#define LCD_D2_OUT(x) x ? HAL_GPIO_WritePin(GPIOD, GPIO_PIN_15, GPIO_PIN_SET) : HAL_GPIO_WritePin(GPIOD, GPIO_PIN_15, GPIO_PIN_RESET)
#define LCD_D3_OUT(x) x ? HAL_GPIO_WritePin(GPIOD, GPIO_PIN_14, GPIO_PIN_SET) : HAL_GPIO_WritePin(GPIOD, GPIO_PIN_14, GPIO_PIN_RESET)
#define LCD_D4_OUT(x) x ? HAL_GPIO_WritePin(GPIOD, GPIO_PIN_13, GPIO_PIN_SET) : HAL_GPIO_WritePin(GPIOD, GPIO_PIN_13, GPIO_PIN_RESET)
#define LCD_D5_OUT(x) x ? HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12, GPIO_PIN_SET) : HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12, GPIO_PIN_RESET)
#define LCD_D6_OUT(x) x ? HAL_GPIO_WritePin(GPIOD, GPIO_PIN_11, GPIO_PIN_SET) : HAL_GPIO_WritePin(GPIOD, GPIO_PIN_11, GPIO_PIN_RESET)
#define LCD_D7_OUT(x) x ? HAL_GPIO_WritePin(GPIOD, GPIO_PIN_10, GPIO_PIN_SET) : HAL_GPIO_WritePin(GPIOD, GPIO_PIN_10, GPIO_PIN_RESET)
#define LCD_D0_IN HAL_GPIO_ReadPin(GPIOF, GPIO_PIN_3)
#define LCD_D1_IN HAL_GPIO_ReadPin(GPIOF, GPIO_PIN_2)
#define LCD_D2_IN HAL_GPIO_ReadPin(GPIOD, GPIO_PIN_15)
#define LCD_D3_IN HAL_GPIO_ReadPin(GPIOD, GPIO_PIN_14)
#define LCD_D4_IN HAL_GPIO_ReadPin(GPIOD, GPIO_PIN_13)
#define LCD_D5_IN HAL_GPIO_ReadPin(GPIOD, GPIO_PIN_12)
#define LCD_D6_IN HAL_GPIO_ReadPin(GPIOD, GPIO_PIN_11)
#define LCD_D7_IN HAL_GPIO_ReadPin(GPIOD, GPIO_PIN_10) [/mw_shl_code]
|
|