打印

stm32并行驱动12864程序

[复制链接]
楼主: nishispm
手机看帖
扫描二维码
随时随地手机跟帖
21
看下数据口的驱动波形吧

使用特权

评论回复
22
figo20042005| | 2013-6-4 10:41 | 只看该作者
还有时序波形对不对

使用特权

评论回复
23
logokfu| | 2013-6-4 10:58 | 只看该作者
nishispm 发表于 2013-6-4 10:36
先说硬件连接:
加不加上拉电阻都行(实验证明),加上拉时io要设置成开漏输出,不加时要设置成推挽输出! ...

#define LcdData(x) GPIOB->ODR=(GPIOB->ODR&0xc03f)|(xUL&0x3fc0)
试试这样行不行。

使用特权

评论回复
24
nishispm|  楼主 | 2013-6-4 11:21 | 只看该作者
**kfu 发表于 2013-6-4 10:58
#define LcdData(x) GPIOB->ODR=(GPIOB->ODR&0xc03f)|(xUL&0x3fc0)
试试这样行不行。

不行!有错误:identifier “xUL” is undefined

改成#define LcdData(x) GPIOB->ODR=(GPIOB->ODR&0xc03f)|((x<<6)&0x3fc0)就可以了!!
:handshake

使用特权

评论回复
25
nishispm|  楼主 | 2013-6-4 11:22 | 只看该作者
太厉害了!!一眼就看到错误了

@**kfu

使用特权

评论回复
26
logokfu| | 2013-6-4 11:39 | 只看该作者
nishispm 发表于 2013-6-4 11:21
不行!有错误:identifier “xUL” is undefined

改成#define LcdData(x) GPIOB->ODR=(GPIOB->ODR&0xc03 ...

不改也行,你把X命令码直接写成16位的长度也行。也省的移位了。不过命令码需要加长下

使用特权

评论回复
27
nishispm|  楼主 | 2013-6-4 14:15 | 只看该作者
感谢各位!!啥也不说了,说好的上图!!



谢谢两位@**kfu @lcdi



使用特权

评论回复
28
lcdi| | 2013-6-4 14:25 | 只看该作者
nishispm 发表于 2013-6-4 14:15
感谢各位!!啥也不说了,说好的上图!!

哈哈,恭喜解决了问题

使用特权

评论回复
29
duzhongliang| | 2014-4-18 01:43 | 只看该作者
本帖最后由 duzhongliang 于 2014-4-18 01:46 编辑

楼主 帮忙看看为什么不显示呢
/* Includes ------------------------------------------------------------------*/
#include "stm32f10x.h"

void delay(unsigned int ms)
{
unsigned int x,y;
for(x=0;x<ms;x++)
for(y=0;y<8000;y++);
}
#define BF 0x80
unsigned char mingzi[]={"我非常喜欢大闸蟹"};
uint8_t number =8;
void RDBF(void){
    uint8_t temp;
    //GPIO_Write(GPIOE,0x0008);
    GPIO_ResetBits(GPIOE,GPIO_Pin_7);
    GPIO_SetBits(GPIOE, GPIO_Pin_8);
    while(1){
      GPIO_SetBits(GPIOC, GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
      //GPIO_Write(GPIOC,0xFF00);
      GPIO_SetBits(GPIOE, GPIO_Pin_9);
      temp=GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_15);
      GPIO_ResetBits(GPIOE,GPIO_Pin_9);
      if( (temp&BF)== 0 ) break;
    }
}
void WRCommand(uint16_t temp){
  RDBF();
  GPIO_ResetBits(GPIOE, GPIO_Pin_7|GPIO_Pin_8);
  GPIO_Write(GPIOC,temp);
  GPIO_SetBits(GPIOE, GPIO_Pin_9);
  delay(10);
  GPIO_ResetBits(GPIOE, GPIO_Pin_9);
}
void WRData(uint8_t temp){
  RDBF();
  GPIO_SetBits(GPIOE, GPIO_Pin_7);
  GPIO_ResetBits(GPIOE,GPIO_Pin_8);
  GPIO_Write(GPIOC,temp<<8);
  GPIO_SetBits(GPIOE, GPIO_Pin_9);
  delay(10);
  GPIO_ResetBits(GPIOE, GPIO_Pin_9);
}
void  LCDInit(void){
  delay(10);
// GPIO_SetBits(GPIOE, GPIO_Pin_10);
  GPIO_ResetBits(GPIOE, GPIO_Pin_10);
  delay(10);
  GPIO_SetBits(GPIOE, GPIO_Pin_10);

  WRCommand(0x3000);
// WRCommand(0x0600);
  WRCommand(0x0100);
  WRCommand(0x0C00);
// WRCommand(0x0200);
}
void ShowQQChar(uint16_t addr,uint8_t *english,uint8_t count){
  uint8_t i;
  WRCommand(addr);
  for(i=0;i<count;){
    WRData(english[i*2]);
    WRData(english[i*2+1]);
    i++;
  }
}
void ShowNUMChar(uint16_t addr,uint8_t i,uint8_t count){
  uint8_t j;
  for(j=0;j<count;){
    WRCommand(addr);
    WRData(i+j);
    j++;
    WRData(i+j);
    addr++;
    j++;
  }
}
int main(void)
{
  GPIO_InitTypeDef GPIOD_InitStructure;//定义GPIO的结构体
  GPIO_InitTypeDef GPIOC_InitStructure;
  GPIO_InitTypeDef GPIOE_InitStructure;
  
  SystemInit();
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);//打开GPIOA时钟   
  
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);
  
  //GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
   GPIOD_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;
  GPIOD_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIOD_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  
  GPIOC_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;
  GPIOC_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIOC_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  
  GPIOE_InitStructure.GPIO_Pin = GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10;
  GPIOE_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIOE_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  
  
  GPIO_Init(GPIOD, &GPIOD_InitStructure);  //初始化IO口                                       
  GPIO_Init(GPIOC, &GPIOC_InitStructure);  //初始化IO口
  GPIO_Init(GPIOE, &GPIOE_InitStructure);  //初始化IO口
  LCDInit();
  ShowQQChar(0x8000,mingzi,number);
// ShowNUMChar(0x9000,0x01,0x0F);
  GPIO_SetBits(GPIOD, 0x80<<7);
  while (1);

}

使用特权

评论回复
30
一般首席| | 2014-5-4 17:54 | 只看该作者
学习了

使用特权

评论回复
31
yaoyuanytu| | 2014-5-19 15:39 | 只看该作者
写数据库函数 你写的是第7位到14位(PB7-PB14) 所以左移6位

使用特权

评论回复
32
huier0228| | 2014-12-24 23:55 | 只看该作者
怎么解决的?能把代码贴出来参考一下吗?

使用特权

评论回复
33
huier0228| | 2014-12-24 23:57 | 只看该作者
nishispm 发表于 2013-6-4 14:15
感谢各位!!啥也不说了,说好的上图!!

兄弟,能把代码发给我参考一下吗?
115636124@qq.com

使用特权

评论回复
34
elecintop| | 2014-12-28 19:46 | 只看该作者
支持一下

使用特权

评论回复
35
白丁野老| | 2014-12-30 21:17 | 只看该作者
学习一下

使用特权

评论回复
36
yjzengli| | 2015-1-28 09:28 | 只看该作者
学习学习

使用特权

评论回复
37
simpleyoume| | 2015-5-19 14:02 | 只看该作者
求源代码

使用特权

评论回复
38
Thor9| | 2015-5-21 20:29 | 只看该作者

使用特权

评论回复
39
进击的生菜| | 2015-7-26 20:51 | 只看该作者
求源代码  1097671128@qq.com  不知道楼主还有没有

使用特权

评论回复
40
书的那页| | 2015-9-18 11:04 | 只看该作者
本帖最后由 书的那页 于 2015-9-18 11:05 编辑

必须点赞  我遇到和楼主一样的情况 大概也是输出类型 搞错了  呵呵  今晚回去再试一试  另外 你对硬件描述的很好  我感觉我自己的是硬件和端口输出配置错了 太感谢 哈

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则