你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F103用SPI驱动12864屏  

[复制链接]
xnmc2013 发布时间:2015-1-11 14:14
本帖最后由 xnmc2013 于 2015-4-20 21:58 编辑

      以前用51时,驱动12864屏用并口,但是感觉显示速度还是挺慢,现在用STM32F103ZE的SPI驱动,感觉还很快,而且很稳定。我试了金鹏OCMJ4*8C的,还试了刚买的一个杂牌的12864屏,显示都蛮快蛮好。我是用的V2版库文件,这里面关键是设置好SPI的一些参数,我都标住了中文解释。具体其他一些IO等的设置这里就不具体讲了,大家应该都会的哦~~好了,下面附上我的一部分代码供大家参考:

     void SPI_Configuration(void)
{
  SPI_InitTypeDef   SPI_InitStructure;

  SPI_InitStructure.SPI_Direction =SPI_Direction_2Lines_FullDuplex;
  SPI_InitStructure.SPI_Mode = SPI_Mode_Master;                //主设备
  SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;        //位数据一帧
  SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;                //时钟级性 SCK空闲时为1
  SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;                //数据采样从第2个时钟边沿开始
  SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
  SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16;        //波特率控制 fclk/4
  SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;                //先发送MSB                                         
  SPI_Init(SPI1, &SPI_InitStructure);
  SPI_Cmd(SPI1, ENABLE);

}

void LCD_wr(u8 lcd_com,u8 lcd_data)                                         //写入LCD数据或命令
{
        u8 lcd_data_msb,lcd_data_lsb;
        lcd_data_msb=0xf0&lcd_data;
        lcd_data_lsb=(0x0f&lcd_data)<<4;
        if(lcd_com==0)                                        //写命令
        {
                while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE)==RESET);        //等待 SPI1 发送缓冲空
            SPI_I2S_SendData(SPI1, 0xf8);                        // SPI1 发送数据--命令指令--
        }
        if(lcd_com==1)                                        //写数据
        {
                while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE)==RESET);                //等待 SPI1 发送缓冲空
            SPI_I2S_SendData(SPI1, 0xfa);                    //SPI1 发送数据--数据指令--
        }
        delay(100);
        while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE)==RESET);                //等待 SPI1 接收数据完毕
        SPI_I2S_SendData(SPI1, lcd_data_msb);                   //SPI1 发送高4位数据
        delay(100);
        while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE)==RESET);                //Wait for SPI1 Tx buffer empty
        SPI_I2S_SendData(SPI1, lcd_data_lsb);            // SPI1 发送低4位数据
        delay(100);
}        
void initlcd(void)                          //LCD初始化
{
  LCD_wr(0,0x30);                  //30---基本指令动作
  delay (100);
  LCD_wr(0,0x01);                  //清屏,地址指针指向00H
  delay (100);
  LCD_wr(0,0x06);                  //光标的移动方向
  delay (100);
  LCD_wr(0,0x0c);                  //开显示,关游标
  delay (100);        
}
void delay (u16 ms)
{
  u16 i,j;
  for(i=0;i<ms;i++)
  for(j=0;j<100;j++) {;}
}
void lcddisp(u8 *chn)                          
{
  u8 i,j;
  LCD_wr(0,0x30);
  delay (100);
  LCD_wr(0,0x80);
  delay (100);
  for (j=0;j<4;j++)
  {
    for (i=0;i<16;i++)
            LCD_wr(1,chn[j*16+i]);
                delay (100);
  }
}



希望能帮助需要用到的人哦,我也是花了很长时间才搞好的

可能有的人不会接线,我上传下我的接线,这里片选直接接了VCC,数据线只接了时钟-R/W和数据命令发送-E。就是图中的STD和SCLK。仅供参考
有图有真相哦

IMG_20150111_151609.jpg

IMG_20150111_151622.jpg



12864屏SPI接线

12864屏SPI接线
1 收藏 14 评论55 发布时间:2015-1-11 14:14

举报

55个回答
黄小狼 回答时间:2015-1-11 15:02:55
楼主是好人呀,嘿嘿,我的屏也是12864,不过驱动是别人写好的
wambob 回答时间:2015-1-11 15:48:11
本帖最后由 wambob 于 2015-1-11 15:54 编辑

看到你的液晶焊的软线,我后悔焊插针了
焊了20个脚
xnmc2013 回答时间:2015-1-11 15:52:16
wambob 发表于 2015-1-11 15:48
看到你的液晶焊的软线,我后悔焊插针了

,这个只能用于平时测试
kevin0129 回答时间:2015-1-11 16:01:54
我也准备用SPI驱动12864,不过我的板子是072的!
xnmc2013 回答时间:2015-1-11 16:40:35
kevin0129 发表于 2015-1-11 16:01
我也准备用SPI驱动12864,不过我的板子是072的!

我也刚买了030的板子,过2个月也想把F1的移植到F0上面,不过固件库好像差别比较大
huaxi90 回答时间:2015-1-11 16:58:30
楼主好人,代码可以参考下,哈哈
manxueqian 回答时间:2015-1-11 17:05:24
谢谢分享!
zfz0122 回答时间:2015-1-11 17:19:18
学习了啊
大秦正声 回答时间:2015-1-11 17:57:55
不错的
discovery与nucleo库函数有区别
hal硬件抽象层函数库

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版