初级会员

- 积分
- 86
- 金钱
- 86
- 注册时间
- 2019-8-1
- 在线时间
- 27 小时
|
5金钱
/****************12864.c**********************/
#include "stm32f10x.h"
#include "yejing.h"
#include "delay.h"
#include "sys.h"
void gpio_12864_out()
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_DeInit(GPIOA);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
}
void gpio_12864_in()
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitStructure.GPIO_Pin=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_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOC,&GPIO_InitStructure);
}
unsigned char LCD_Busy()
{
unsigned char Result;
gpio_12864_in();
LCD_RS_L;
LCD_RW_H;
LCD_EN_H;
delay_ms(1);
Result=(GPIO_ReadInputData(GPIOG)&0x0080);
LCD_EN_L;
//gpio_12864_out();
return Result;
}
void LCD_WriteCommand(unsigned char cmd)
{
while(LCD_Busy());
LCD_RS_L;
LCD_RW_L;
LCD_EN_L;
delay_ms(1);
// GPIOG->ODR=((GPIOG->ODR&0xff00)|cmd);
GPIOG->ODR=cmd;
delay_ms(1);
LCD_EN_H;
delay_ms(1);
LCD_EN_L;
}
void LCD_WriteData(unsigned char dat)
{
while(LCD_Busy());
LCD_RS_H;
LCD_RW_L;
LCD_EN_L;
delay_ms(1);
// GPIOG->ODR=((GPIOG->ODR&0xff00)|dat);
GPIOG->ODR=dat;
delay_ms(1);
LCD_EN_H;
delay_ms(1);
LCD_EN_L;
}
void LCD_Init()
{
LCD_RST_L;
delay_ms(3);
LCD_RST_H;
delay_ms(3);
LCD_WriteCommand(0x34);
delay_ms(5);
LCD_WriteCommand(0x30);
delay_ms(5);
LCD_WriteCommand(0x0c);
delay_ms(5);
LCD_WriteCommand(0x01);
delay_ms(5);
}
void LCD_Position(unsigned char X,unsigned char Y)
{
unsigned char Pos;
if(X==1)
X=0x80;
else if(X==2)
X=0x90;
else if(X==3)
X=0x88;
else if(X==4)
X=0x98;
Pos=X+Y;
LCD_WriteCommand(Pos);
}
void LCD_Flash()
{
LCD_WriteCommand(0x80);
delay_ms(400);
LCD_WriteCommand(0x0c);
delay_ms(400);
LCD_WriteCommand(0x80);
delay_ms(400);
LCD_WriteCommand(0x0c);
delay_ms(400);
LCD_WriteCommand(0x80);
delay_ms(200);
LCD_WriteCommand(0x0c);
delay_ms(5);
LCD_WriteCommand(0x01);
delay_ms(5);
}
void LCD_Char_Display()
{
unsigned char s;
LCD_Clear_Screen();
LCD_WriteCommand(0x80);
for(s=0;s<16;s++)
{
delay_ms(2);
LCD_WriteData(0X30+s);
}
LCD_WriteCommand(0x90);
for(s=0;s<16;s++)
{
delay_ms(2);
LCD_WriteData(0x40+s);
}
LCD_WriteCommand(0x88);
for(s=0;s<16;s++)
{
delay_ms(2);
LCD_WriteData(0x50+s);
}
LCD_WriteCommand(0x90);
for(s=0;s<16;s++)
{
delay_ms(2);
LCD_WriteData(0x60+s);
}
}
void LCD_Clear_Screen()
{
LCD_WriteCommand(0x34);
delay_ms(5);
LCD_WriteCommand(0x30);
delay_ms(5);
LCD_WriteCommand(0x01);
delay_ms(5);
}
/**************main.c******************/
#include "stm32f10x.h"
#include "delay.h"
#include "yejing.h"
unsigned char LCD_Frist_Line[]={"STM3212864"};
unsigned char LCD_Second_Line[]={"战舰开发板"};
unsigned char LCD_Third_Line[]={"147258369"};
unsigned char LCD_For_Line[]={" "};
int main()
{
u8 i;
delay_init();
gpio_12864_out();
LCD_Init();
while(1)
{
LCD_Position(0,0);
for(i=0;i<12;i++)
{
LCD_WriteData(LCD_Frist_Line[i]);
delay_ms(30);
}
LCD_Position(1,0);
for(i=0;i<8;i++)
{
LCD_WriteData(LCD_Second_Line[i]);
delay_ms(30);
}
LCD_Position(2,0);
for(i=0;i<16;i++)
{
LCD_WriteData(LCD_Third_Line[i]);
delay_ms(30);
}
LCD_Position(3,0);
for(i=0;i<16;i++)
{
LCD_WriteData(LCD_For_Line[i]);
delay_ms(30);
}
delay_ms(100);
LCD_Clear_Screen();
LCD_Char_Display();
delay_ms(100);
LCD_Clear_Screen();
}
}
|
|