完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
#include<STM32f4xx.h> #define uchar unsigned char #define uint unsigned int void delay(uint z); /*端口定义*/ #define LCD_RS GPIO_Pin_8 #define LCD_RW GPIO_Pin_9 #define LCD_EN GPIO_Pin_10 #define LCD_PSB GPIO_Pin_11 uchar dis1[10]; uchar dis2[]={"www"}; uchar dis3[]={"呵呵呵呵"}; uchar dis4[]={"--------"}; void RCC_Configuration(void) //推挽输出模式 ,管脚配置,不多解释,库函数有 { RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin =LCD_RS|LCD_RW|LCD_EN|LCD_PSB|GPIO_Pin_0|GPIO_Pin_1| GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOD, &GPIO_InitStructure); } /*写指令到LCD*/ void LCD_cmd(uchar cmd) { GPIO_ResetBits(GPIOD,LCD_RS); GPIO_ResetBits(GPIOD,LCD_RW); GPIO_ResetBits(GPIOD,LCD_EN); GPIO_Write(GPIOD,cmd); delay(5); GPIO_SetBits(GPIOD,LCD_EN); delay(5); GPIO_ResetBits(GPIOD,LCD_EN); } /*写数据到LCD*/ void LCD_dat(uchar dat) { GPIO_SetBits(GPIOD,LCD_RS); GPIO_ResetBits(GPIOD,LCD_RW); GPIO_ResetBits(GPIOD,LCD_EN); GPIO_Write(GPIOD,dat); delay(5); GPIO_SetBits(GPIOD,LCD_EN); delay(5); GPIO_ResetBits(GPIOD,LCD_EN); } void LCD_init() //液晶初始化 { GPIO_SetBits(GPIOD,LCD_PSB); //PSB拉高,表示是并行,拉低则是串行 LCD_cmd(0x30); //8位数据传输 delay(5); LCD_cmd(0x0c); //显示开,游标关 delay(5); LCD_cmd(0x01); //清屏 delay(5); } /*设定显示位置*/ void LCD_pos(uchar X,uchar Y) { uchar pos; if(X==0) X=0x80; else if(X==1) X=0x90; else if(X==2) X=0x88; else if(X==3) X=0x98; pos=X+Y; LCD_cmd(pos); } void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void main() { while(1) { RCC_Configuration(); LCD_init(); uchar i; LCD_pos(1,0); i=0; while(dis2[i]!=' |