OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5082|回复: 2

stm32f103rbt6驱动ocm12864-9

[复制链接]

1

主题

1

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2013-12-22
在线时间
2 小时
发表于 2013-12-22 20:13:18 | 显示全部楼层 |阅读模式
原子大哥、各位大神。。小弟买了STM32 mini板。现想用控制ocm12864的液晶,程序烧进去,不显示,求指教啊!!!
程序如下(含主要程序):
  #define LCD_RS  Bout(8)
#define LCD_RW  Bout(9)   
#define LCD_E   PBout(10)
#define LCD_CS  Bout(11)  

void send_cmd(u8 cmd) 
{
  //check_busy();
  LCD_RS=0;
  LCD_RW=0;               
  LCD_CS=0;              
  GPIOB->ODR=((GPIOB->ODR*0XFF00)|cmd);
  LCD_E=1;
  delay_us(300);
 delay_us(300);
  LCD_E=0;
 delay_us(300);
 delay_us(300);
  LCD_CS=1;              
}

void send_dat(u8 dat) 
{
  //check_busy();
  LCD_RS=1;
  LCD_RW=0;             
  LCD_CS=0;            
  GPIOB->ODR=((GPIOB->ODR*0XFF00)|dat);
  LCD_E=1;
 delay_us(300);    
  LCD_E=0;
 delay_us(300);    
  LCD_CS=1;             
LCD_CS=1;
}

void LCD_Init(void)
{
RCC->APB2ENR|=1<<3;        
GPIOB->CRL&=0X00000000;
  GPIOB->CRL|=0X88888888;
GPIOB->ODR|=1<<0;
GPIOB->ODR|=1<<1;
GPIOB->ODR|=1<<2;
GPIOB->ODR|=1<<3;
GPIOB->ODR|=1<<4;
GPIOB->ODR|=1<<5;
GPIOB->ODR|=1<<6;
GPIOB->ODR|=1<<7;

GPIOB->CRH&=0XFFFF0000;
  GPIOB->CRH|=0X00003333;
GPIOB->ODR|=1<<8;
GPIOB->ODR|=1<<9;
GPIOB->ODR|=1<<10;
GPIOB->ODR|=1<<11;

send_cmd(0xE2);
delay_us(1000);
send_cmd(0xA3);
delay_us(1000);
send_cmd(0xA0);
delay_us(1000);
send_cmd(0xC8);
delay_us(1000);
send_cmd(0x24);
delay_us(1000);
send_cmd(0x81);
delay_us(1000);
send_cmd(0x14);
delay_us(1000);
send_cmd(0x2C);
delay_us(1000);
send_cmd(0x2E);
delay_us(1000);
send_cmd(0x2F);
delay_us(1000);
send_cmd(0x40);
delay_us(1000);
send_cmd(0xB0);
delay_us(1000);
send_cmd(0x10);
delay_us(1000);
send_cmd(0x00);
delay_us(1000);
send_cmd(0xAF);
send_cmd(0x81);
send_cmd(0x1b);
}

void Set_Page_Address(unsigned char dat)
{
    send_cmd(0xb0|(dat&0x0f));
}

void Set_Colume_Address(unsigned char dat)
{
    unsigned char tmp;
        tmp=dat>>4;
    send_cmd(0x10|tmp);  
        tmp=0x0f&dat; 
    send_cmd(tmp);       
}

void Display_Grid(u8 data1,u8 data2)
{
  u8 i,j;
  for(i=0;i<8;i++)
  {
    Set_Page_Address(i);
    Set_Colume_Address(0x00);
    for(j=0;j<64;j++)
    {
      send_dat(data1);
      send_dat(data2);
    }
  }
}

void hengxian(uchar k)
{
 u8 i;
 for(i=0;i<128;i++)
 {
  point(k,i);

 }
}

void shuxian(uchar n)
{
 uint i;
 for(i=3;i<5;i++)
 {
 set_page_address(i);
 set_colume_address(n);
 write_data(0xff);
 }
}


int main(void)
{
  Stm32_Clock_Init(9); 
delay_init(72);      
uart_init(72,9600);       
LCD_Init();
    while (1) 
      { 
             hengxian(2);
  hengxian(4);
  shuxian(0);
  shuxian(127);
  for(j=0;j<128;j++)
  {
   shuxian(j);
delay_us(1000);
  }
            
      }


只想显示点东西,没有任何反应,求指教啊!!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-22 20:29:17 | 显示全部楼层
论坛有网友发过代码,搜搜参考下吧。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

9

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2013-10-24
在线时间
10 小时
发表于 2014-1-4 12:47:08 | 显示全部楼层
回复【楼主位】zhoudeng:
---------------------------------
敢问楼主调试好了吗?我也正用STM32RBT6驱动OCM12864-9,也是不显示。能否看一下你如何写的啊?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-7 13:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表