⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 6963c(090511).c

📁 STM32 cortex_M3 内核arm 控制T6963c的LCD(240*64) 关于控制线部分
💻 C
📖 第 1 页 / 共 2 页
字号:
void DisplayDots(uchar DotByte,uchar n)
{
     uchar i,j;
     LocateXY(0,0,Graphic);
     LcmWriteCommand(0xB0);                  //进入自动写
     for(i=0;i<LcmWidthDots/n;i++)
     {
           for(j=0;j<LcmLengthDots/8*n;j++)
           {
                 CheckAutoWrite();
                 LcmWriteData(DotByte);
           }
           DotByte=~DotByte;
     }
     LcmWriteCommand(0xB2);                  //退出自动写
}

//显示点阵子函数
void DisplayDots2(uchar DotByte)
{
     uchar i,j;
     LocateXY(0,0,Graphic);
     LcmWriteCommand(0xB0);                  //进入自动写
     for(i=0;i<LcmWidthDots/8;i++) //64/8=8LcmWidthDots
     {
           for(j=0;j<LcmLengthDots/8;j++) //240/8=30LcmLengthDots
           {
                 CheckAutoWrite();
                 LcmWriteData(DotByte);
           }
     }
     LcmWriteCommand(0xB2);                  //退出自动写
}

//显示一副图片函数
void DisplayOneBmp(const unsigned char *puts)
{
     unsigned char i,j;
     unsigned int  X=0;
     LocateXY(0,0,Graphic);
     LcmWriteCommand(0xB0);                  //进入自动写
     for(i=0;i<40;i++)  //LcmWidthDots->30
     {
           for(j=0;j<64;j++)
           {
                 CheckAutoWrite();
                 LcmWriteData(puts[X]);
                 X++;
           }
     }
     LcmWriteCommand(0xB2);                  //退出自动写
}
//反显一副图片函数
void ReverseOneBmp( void )
{                              //利用数据一次读写操作
     unsigned char i,j,X;            //只能对一段RAM取反
     LocateXY(0,0,Graphic);
     for(i=0;i<40;i++)   //LcmWidthDots ->30//30
     {
           for(j=0;j<64;j++)//LcmLengthDots/8
           {
                 LcmWriteCommand(0xC5);      //读数据,地址不变
                 CheckRWCD();
                 X = LcmReadData();
                 X = ~X;
                 LcmWriteCommandWith1Par(X,0xC0);
           }
     }
}
void ShowChar(unsigned char lin,unsigned char column,unsigned int hzcode)   //图形方式显示1个英文字符
{
unsigned char i;
unsigned int StartAddr;
StartAddr=0x800+lin*LineChar + column; //图形显示RAM区为0800开始
for(i=0;i<16;i++)
{
LcmWriteCommandWith2Par( (unsigned char)(StartAddr), (unsigned char)(StartAddr>>8), 0x24);
LcmWriteCommandWith1Par( CharTable[hzcode][i], 0xc4); //数据写地址不变
StartAddr=StartAddr + LineChar;     
}
}
   //  GPIO_WriteBit(GPIOG,GPIO_Pin_12,(BitAction)(0));  // CS=0;
    
/*******************************************************************************
* Function Name  : STM3210E_LCD_Init
* Description    : Initializes the LCD.
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void STM3210E_LCD_Init(void)
{ 
/* 配置LCD控制线 --------------------------------------------*/
  LCD_CtrlLinesConfig();
/* 测试 control/data 的正确性  -------------------------————————------------*/

  
/* 配置FSMC外设 -------------------------————————------------*/
    LCD_FSMCConfig();

 
/* 开始初始化LCD ----------------------------------------------------*/
    LcmInit();
}





/*******************************************************************************
* Function Name  : LCD_CtrlLinesConfig
* Description    : Configures LCD Control lines (FSMC Pins) in alternate function
                   Push-Pull mode.
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void LCD_CtrlLinesConfig(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;

  /* 使能 FSMC, GPIOD, GPIOE, GPIOF, GPIOG 和 AFIO 时钟 */
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE |
                         RCC_APB2Periph_GPIOF | RCC_APB2Periph_GPIOG |
                         RCC_APB2Periph_AFIO, ENABLE);

  /* 设置 PD.00(D2), PD.01(D3) , PD.14(D0), PD.15(D1) 复用推挽输出 */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_14 | GPIO_Pin_15;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	 // PD4--NOE  PD5--NWE
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //  复用推挽输出	 GPIO_Mode_AF/Out_PP; 
  GPIO_Init(GPIOD, &GPIO_InitStructure);
  
  /* 设置  PD.04(FSMC_NOE), PD.05(FSMC_NWE),  推挽输出 */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4| GPIO_Pin_5 ;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	 // PD4--NOE  PD5--NWE
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //  复用推挽输出	 GPIO_Mode_AF/Out_PP; 
  GPIO_Init(GPIOD, &GPIO_InitStructure);

  /* Set PE.07(D4), PE.08(D5), PE.09(D6), PE.10(D7) as alternate function push pull */
  GPIO_InitStructure.GPIO_Pin =   GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 ; 
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	 //
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //  复用推挽输出	 GPIO_Mode_AF/Out_PP; 										 
  GPIO_Init(GPIOE, &GPIO_InitStructure);	 

   
  GPIO_InitStructure.GPIO_Pin =   GPIO_Pin_6 ; //PE6 软件复位
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	 //
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //  复用推挽输出	 GPIO_Mode_AF/Out_PP; 										 
  GPIO_Init(GPIOE, &GPIO_InitStructure);	 //PE6 软件复位
											
											
  /* Set PF.00(FSMC_A0 (RS)) as alt ernate function push pull */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;	   //PF0 数据/指令选择
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //  复用推挽输出	 GPIO_Mode_AF/Out_PP; 
  GPIO_Init(GPIOF, &GPIO_InitStructure);

  /* Set PG.12(FSMC_NE4 (LCD/CS)) as alternate function push pull - CE3(LCD /CS) */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;   //PG12 片选
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	 // 
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //  复用推挽输出	 GPIO_Mode_AF/Out_PP; 
  GPIO_Init(GPIOG, &GPIO_InitStructure);
   
  /* Set PE.5((LCD/FS)) as alternate function push pull */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;   //PE5 字体选择
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	 // 
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //  复用推挽输出	 GPIO_Mode_AF/Out_PP; 
  GPIO_Init(GPIOE, &GPIO_InitStructure);
}

/*******************************************************************************
* Function Name  : LCD_FSMCConfig
* Description    : Configures the Parallel interface (FSMC) for LCD(Parallel mode)
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void LCD_FSMCConfig(void)
{
  FSMC_NORSRAMInitTypeDef  FSMC_NORSRAMInitStructure;
  FSMC_NORSRAMTimingInitTypeDef  p;

/*-- FSMC Configuration ------------------------------------------------------*/
  /* FSMC_Bank1_NORSRAM4 timing configuration */
  p.FSMC_AddressSetupTime = 1;
  p.FSMC_AddressHoldTime = 0;
  p.FSMC_DataSetupTime = 5;
  p.FSMC_BusTurnAroundDuration = 0;
  p.FSMC_CLKDivision = 0;
  p.FSMC_DataLatency = 0;
  p.FSMC_AccessMode = FSMC_AccessMode_B;

  /* FSMC_Bank1_NORSRAM4 configured as follows:
        - Data/Address MUX = Disable
        - Memory Type = SRAM
        - Data Width = 8bit
        - Write Operation = Enable
        - Extended Mode = Disable
        - Asynchronous Wait = Disable */
  FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM4;	 //bank1_4
  FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;	
  FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM;
  FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_8b;	//8位数据线
  FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;//禁止成组读取
  FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
  FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;
  FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
  FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;
  FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
  FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Enable;  //
  FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
  FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p;
  FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p;

  FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);  

  /* Enable FSMC_Bank1_NORSRAM4 */
  FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM4, ENABLE);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -