STM32F103系列读写LCD1604显示屏 问题,STM32F103的IO口都是单独操作的,做为并口与LCD1604通讯需要怎么操作?看到网上有很多人问这个问题,刚好前段时间做了一个小程序,所以贴出来和大家分享。 首先配置LCD的接口 //---------------------------------------------------------------------------------- //STM32 CONNECT TO BOARD GPIO INIT //--------------------------------------------------------------------------------- void BoardGPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE|RCC_APB2Periph_GPIOG,ENABLE); GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IPU; GPIO_InitStruct.GPIO_Pin=GPIO_Pin_All; GPIO_InitStruct.GPIO_Speed=GPIO_Speed_10MHz; GPIO_Init(GPIOE,&GPIO_InitStruct); GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IPU; GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2; GPIO_Init(GPIOG,&GPIO_InitStruct); } 其他的就是接口函数了 bool LCD1604A_BusyCheck(void) { u8 BusyStatus; GPIO_Write(GPIOD,0xff); RS_CLR;//CLR RS; RW_SET;//SETB RW; delay_ms(1); EN_SET;//SETB EN; delay_ms(5); BusyStatus=GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_7); EN_CLR;//CLR EN; if(BusyStatus==0) return false; else return true; } 然后是初始化LCD void LCD1604A_init(void) { GPIO_InitTypeDef GPIO_InitStruct; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOC,ENABLE); GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStruct.GPIO_Pin=GPIO_Pin_All; GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOD,&GPIO_InitStruct); //GPIO_Write(GPIOD, 0XFF); //GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN_FLOATING; //GPIO_Init(GPIOE,&GPIO_InitStruct); GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2; GPIO_Init(GPIOC,&GPIO_InitStruct); //2 line 5*8 LCD1604A_riteCMD(0x38);//38 06 0E 01 delay_ms(10); LCD1604A_WriteCMD(0x01); delay_ms(10); LCD1604A_WriteCMD(0x06);//6); LCD1604A_WriteCMD(0x0C); } void LCD1604A_WriteCMD(u8 cmd) { //while(LCD1604A_BusyCheck()); RS_CLR; RW_CLR; GPIO_Write(GPIOD,cmd);//cmd<<8); EN_SET; delay_ms(10); EN_CLR; } void LCD1604A_WriteData(u8 data) { while(LCD1604A_BusyCheck()); RS_SET; RW_CLR; GPIO_Write(GPIOD,data); EN_SET; delay_ms(10); EN_CLR; } 好了,到这里就初始化完成了,接下来就是使用了 while(1) { LED1(1); delay_ms(1); LCD1604A_WriteCMD(0xC0); //LCD1604A_WriteCMD(0x0E); for(i=1;i<10;i++) { delay_ms(10); LCD1604A_WriteCMD(0xC0+i); delay_ms(10); LCD1604A_WriteData(0x30+i); } LED1(0) delay_ms(500); } 源代码下载链接,内容注释。 http://download.csdn.net/detail/u011518659/9864858 |
STM32F103系列读写LCD1604显示屏
最新推荐文章于 2024-04-17 21:46:00 发布