微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > stm32驱动19264的问题

stm32驱动19264的问题

时间:10-02 整理:3721RD 点击:
这个驱动不起来,命令都写不进去啊

  1. #include "stm32f10x_gpio.h"
  2. #include "lcd.h"

  3. GPIO_InitTypeDef GPIO_InitStructure;

  4. void LCD_PortSet(void)
  5. {
  6.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
  7.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  8.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
  9.         GPIO_Init(GPIOC,&GPIO_InitStructure);
  10.         
  11.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
  12.         GPIO_Init(GPIOC,&GPIO_InitStructure);
  13.         
  14.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
  15.         GPIO_Init(GPIOC,&GPIO_InitStructure);
  16.         
  17.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
  18.         GPIO_Init(GPIOC,&GPIO_InitStructure);
  19.         
  20.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
  21.         GPIO_Init(GPIOC,&GPIO_InitStructure);
  22.         
  23.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
  24.         GPIO_Init(GPIOA,&GPIO_InitStructure);
  25.         
  26.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
  27.         GPIO_Init(GPIOA,&GPIO_InitStructure);
  28.         
  29.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
  30.         GPIO_Init(GPIOB,&GPIO_InitStructure);
  31.                
  32.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
  33.         GPIO_Init(GPIOB,&GPIO_InitStructure);
  34.                
  35.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
  36.         GPIO_Init(GPIOB,&GPIO_InitStructure);
  37.                
  38.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
  39.         GPIO_Init(GPIOB,&GPIO_InitStructure);
  40.                
  41.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
  42.         GPIO_Init(GPIOB,&GPIO_InitStructure);
  43.                
  44.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
  45.         GPIO_Init(GPIOB,&GPIO_InitStructure);
  46.                
  47.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;
  48.         GPIO_Init(GPIOB,&GPIO_InitStructure);
  49.         
  50.                
  51.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
  52.         GPIO_Init(GPIOB,&GPIO_InitStructure);

  53. }

  54. void LCD_SelectChip1(void)
  55. {
  56.         GPIO_WriteBit(GPIOA,LCD_CS2,Bit_SET);
  57.         GPIO_WriteBit(GPIOA,LCD_CS3,Bit_SET);
  58.         GPIO_WriteBit(GPIOC,LCD_CS1,Bit_RESET);
  59. }


  60. void LCD_SelectChip2(void)
  61. {
  62.         GPIO_WriteBit(GPIOC,LCD_CS1,Bit_SET);
  63.         GPIO_WriteBit(GPIOA,LCD_CS3,Bit_SET);
  64.         GPIO_WriteBit(GPIOA,LCD_CS2,Bit_RESET);
  65. }

  66. void LCD_SelectChip3(void)
  67. {
  68.         GPIO_WriteBit(GPIOC,LCD_CS1,Bit_SET);
  69.         GPIO_WriteBit(GPIOA,LCD_CS2,Bit_SET);
  70.         GPIO_WriteBit(GPIOA,LCD_CS3,Bit_RESET);
  71. }

  72. void LCD_WriteCmd(u8 cmd)
  73. {
  74.         GPIO_WriteBit(GPIOC,LCD_RS,Bit_RESET);
  75.         GPIO_WriteBit(GPIOC,LCD_RW,Bit_RESET);
  76.         LCD_DATA(cmd);
  77.         GPIO_WriteBit(GPIOC,LCD_EN,Bit_SET);
  78.         delay_ms(100);
  79.         GPIO_WriteBit(GPIOC,LCD_EN,Bit_RESET);
  80.         
  81. }
  82. void LCD_WriteData(u8 data)
  83. {
  84.         GPIO_WriteBit(GPIOC,LCD_RS,Bit_SET);
  85.         GPIO_WriteBit(GPIOC,LCD_RW,Bit_RESET);
  86.         LCD_DATA(data);
  87.         GPIO_WriteBit(GPIOC,LCD_EN,Bit_SET);
  88.         delay_us(100);
  89.         GPIO_WriteBit(GPIOC,LCD_EN,Bit_RESET);
  90. }


  91. //???áoˉêy
  92. void LCD_Clear(void)
  93. {

  94.         u16  j = 0;
  95.         u16  k = 0;
  96.         GPIO_WriteBit(GPIOC,LCD_CS1,Bit_RESET);
  97.         GPIO_WriteBit(GPIOA,LCD_CS2,Bit_RESET);
  98.         GPIO_WriteBit(GPIOA,LCD_CS3,Bit_RESET);
  99.         LCD_WriteCmd(LCD_PAGE_ADDR + 0);
  100.         LCD_WriteCmd(LCD_COL_ADDR  + 0);
  101.         for(k=0;k<8;k++)
  102.         {
  103.                         LCD_WriteCmd(LCD_PAGE_ADDR+k);
  104.                         for(j=0;j<64;j++)  
  105.                         {
  106.                                 //LCD_WriteCmd(LCD_COL_ADDR  + j);  ?úD′êy?Yê±,áDêy?á×??ˉ???ó?£
  107.                                 LCD_WriteData(0x0f);
  108.                         }
  109.         }
  110.         GPIO_WriteBit(GPIOC,LCD_CS1,Bit_SET);
  111.         GPIO_WriteBit(GPIOA,LCD_CS2,Bit_SET);
  112.         GPIO_WriteBit(GPIOA,LCD_CS3,Bit_SET);
  113. }

  114. void LCD_Init(void)
  115. {
  116.         GPIO_WriteBit(GPIOC,LCD_RST,Bit_RESET);
  117.         delay_us(20);
  118.         GPIO_WriteBit(GPIOC,LCD_RST,Bit_SET);
  119.         delay_us(5);
  120.         GPIO_WriteBit(GPIOC,LCD_CS1,Bit_RESET);
  121.         GPIO_WriteBit(GPIOA,LCD_CS2,Bit_RESET);
  122.         GPIO_WriteBit(GPIOA,LCD_CS3,Bit_RESET);
  123.         LCD_WriteCmd(0x3f);  //Turn on the lcd panel
  124.         //LCD_WriteCmd(0x40);
  125.         LCD_WriteCmd(0xc0);  //Specifies RAM diaplay line for C0M0
  126.         LCD_Clear();
  127. }

  128. void LCD_WriteChar(u8 pag,u8 col,u8 *chr)
  129. {
  130.         u8 i = 0;
  131.         u8 j = 0;
  132.         u8 col_t = 0;
  133.         LCD_WriteCmd(0xc0);
  134.         col_t = col;
  135.         for(i=0;i<2;i++)
  136.         {
  137.                 for(j=0;j<16;j++)
  138.                 {
  139.                                 switch(col_t&0xc0)
  140.                                 {
  141.                                         case 0:
  142.                                                 LCD_SelectChip1();
  143.                                                 LCD_WriteCmd(LCD_PAGE_ADDR + pag + i);
  144.                                                 LCD_WriteCmd(LCD_COL_ADDR  + col_t - 0 );
  145.                                                 LCD_WriteData(chr[16*i + j]);
  146.                                                 col_t++;
  147.                                                 break;
  148.                                         case 0x40:
  149.                                                 LCD_SelectChip2();
  150.                                                 LCD_WriteCmd(LCD_PAGE_ADDR + pag + i);
  151.                                                 LCD_WriteCmd(LCD_COL_ADDR  + col_t - 64);
  152.                                                 LCD_WriteData(chr[16*i + j]);
  153.                                                 col_t++;
  154.                                                 break;
  155.                                         case 0x80:
  156.                                                 LCD_SelectChip3();
  157.                                                 LCD_WriteCmd(LCD_PAGE_ADDR + pag + i);
  158.                                                 LCD_WriteCmd(LCD_COL_ADDR  + col_t - 128);
  159.                                                 LCD_WriteData(chr[16*i + j]);
  160.                                                 col_t++;
  161.                                                 break;
  162.                                         default:  break;
  163.                                 }
  164.          }
  165.          col_t=col_t-16;
  166.         }
  167. }


  168. void delay_us(u16 ut)
  169. {
  170.         u16 i = 0;
  171.         for(;ut > 0;ut--)
  172.                 for(;i < ZHUPIN; i++ );
  173. }

  174. void delay_ms(u16 mt)
  175. {
  176.         u16 i = 0;
  177.         for(;i < mt;i++)
  178.         {
  179.                 delay_us(1000);
  180.         }
  181. }

复制代码




这个驱动不起来,命令都写不进去啊

刚粗略看了,程序不完整

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top