这个驱动不起来,命令都写不进去啊
- #include "STM32f10x_gpio.h"
- #include "lcd.h"
- GPIO_InitTypeDef GPIO_InitStructure;
- void LCD_PortSet(void)
- {
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
- GPIO_Init(GPIOC,&GPIO_InitStructure);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
- GPIO_Init(GPIOC,&GPIO_InitStructure);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
- GPIO_Init(GPIOC,&GPIO_InitStructure);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
- GPIO_Init(GPIOC,&GPIO_InitStructure);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
- GPIO_Init(GPIOC,&GPIO_InitStructure);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
- GPIO_Init(GPIOA,&GPIO_InitStructure);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
- GPIO_Init(GPIOA,&GPIO_InitStructure);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
- GPIO_Init(GPIOB,&GPIO_InitStructure);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
- GPIO_Init(GPIOB,&GPIO_InitStructure);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
- GPIO_Init(GPIOB,&GPIO_InitStructure);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
- GPIO_Init(GPIOB,&GPIO_InitStructure);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
- GPIO_Init(GPIOB,&GPIO_InitStructure);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
- GPIO_Init(GPIOB,&GPIO_InitStructure);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;
- GPIO_Init(GPIOB,&GPIO_InitStructure);
-
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
- GPIO_Init(GPIOB,&GPIO_InitStructure);
- }
- void LCD_SelectChip1(void)
- {
- GPIO_WriteBit(GPIOA,LCD_CS2,Bit_SET);
- GPIO_WriteBit(GPIOA,LCD_CS3,Bit_SET);
- GPIO_WriteBit(GPIOC,LCD_CS1,Bit_RESET);
- }
- void LCD_SelectChip2(void)
- {
- GPIO_WriteBit(GPIOC,LCD_CS1,Bit_SET);
- GPIO_WriteBit(GPIOA,LCD_CS3,Bit_SET);
- GPIO_WriteBit(GPIOA,LCD_CS2,Bit_RESET);
- }
- void LCD_SelectChip3(void)
- {
- GPIO_WriteBit(GPIOC,LCD_CS1,Bit_SET);
- GPIO_WriteBit(GPIOA,LCD_CS2,Bit_SET);
- GPIO_WriteBit(GPIOA,LCD_CS3,Bit_RESET);
- }
- void LCD_WriteCmd(u8 cmd)
- {
- GPIO_WriteBit(GPIOC,LCD_RS,Bit_RESET);
- GPIO_WriteBit(GPIOC,LCD_RW,Bit_RESET);
- LCD_DATA(cmd);
- GPIO_WriteBit(GPIOC,LCD_EN,Bit_SET);
- delay_ms(100);
- GPIO_WriteBit(GPIOC,LCD_EN,Bit_RESET);
-
- }
- void LCD_WriteData(u8 data)
- {
- GPIO_WriteBit(GPIOC,LCD_RS,Bit_SET);
- GPIO_WriteBit(GPIOC,LCD_RW,Bit_RESET);
- LCD_DATA(data);
- GPIO_WriteBit(GPIOC,LCD_EN,Bit_SET);
- delay_us(100);
- GPIO_WriteBit(GPIOC,LCD_EN,Bit_RESET);
- }
- //ÇåÆÁº¯Êý
- void LCD_Clear(void)
- {
- u16 j = 0;
- u16 k = 0;
- GPIO_WriteBit(GPIOC,LCD_CS1,Bit_RESET);
- GPIO_WriteBit(GPIOA,LCD_CS2,Bit_RESET);
- GPIO_WriteBit(GPIOA,LCD_CS3,Bit_RESET);
- LCD_WriteCmd(LCD_PAGE_ADDR + 0);
- LCD_WriteCmd(LCD_COL_ADDR + 0);
- for(k=0;k<8;k++)
- {
- LCD_WriteCmd(LCD_PAGE_ADDR+k);
- for(j=0;j<64;j++)
- {
- //LCD_WriteCmd(LCD_COL_ADDR + j); ÔÚдÊý¾Ýʱ,ÁÐÊý»á×Ô¶¯Ôö¼Ó¡£
- LCD_WriteData(0x0f);
- }
- }
- GPIO_WriteBit(GPIOC,LCD_CS1,Bit_SET);
- GPIO_WriteBit(GPIOA,LCD_CS2,Bit_SET);
- GPIO_WriteBit(GPIOA,LCD_CS3,Bit_SET);
- }
- void LCD_Init(void)
- {
- GPIO_WriteBit(GPIOC,LCD_RST,Bit_RESET);
- delay_us(20);
- GPIO_WriteBit(GPIOC,LCD_RST,Bit_SET);
- delay_us(5);
- GPIO_WriteBit(GPIOC,LCD_CS1,Bit_RESET);
- GPIO_WriteBit(GPIOA,LCD_CS2,Bit_RESET);
- GPIO_WriteBit(GPIOA,LCD_CS3,Bit_RESET);
- LCD_WriteCmd(0x3f); //Turn on the lcd panel
- //LCD_WriteCmd(0x40);
- LCD_WriteCmd(0xc0); //Specifies RAM diaplay line for C0M0
- LCD_Clear();
- }
- void LCD_WriteChar(u8 pag,u8 col,u8 *chr)
- {
- u8 i = 0;
- u8 j = 0;
- u8 col_t = 0;
- LCD_WriteCmd(0xc0);
- col_t = col;
- for(i=0;i<2;i++)
- {
- for(j=0;j<16;j++)
- {
- switch(col_t&0xc0)
- {
- case 0:
- LCD_SelectChip1();
- LCD_WriteCmd(LCD_PAGE_ADDR + pag + i);
- LCD_WriteCmd(LCD_COL_ADDR + col_t - 0 );
- LCD_WriteData(chr[16*i + j]);
- col_t++;
- break;
- case 0x40:
- LCD_SelectChip2();
- LCD_WriteCmd(LCD_PAGE_ADDR + pag + i);
- LCD_WriteCmd(LCD_COL_ADDR + col_t - 64);
- LCD_WriteData(chr[16*i + j]);
- col_t++;
- break;
- case 0x80:
- LCD_SelectChip3();
- LCD_WriteCmd(LCD_PAGE_ADDR + pag + i);
- LCD_WriteCmd(LCD_COL_ADDR + col_t - 128);
- LCD_WriteData(chr[16*i + j]);
- col_t++;
- break;
- default: break;
- }
- }
- col_t=col_t-16;
- }
- }
- void delay_us(u16 ut)
- {
- u16 i = 0;
- for(;ut > 0;ut--)
- for(;i < ZHUPIN; i++ );
- }
- void delay_ms(u16 mt)
- {
- u16 i = 0;
- for(;i < mt;i++)
- {
- delay_us(1000);
- }
- }
复制代码
0
已退回1积分
|
2个回答
|
|
|