打印
[其他ST产品]

求大神!STM32f103控制1602的端口怎么设置?推挽还是开漏输出?需要检测忙状态吗?

[复制链接]
714|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
void  Busy_Wait(void)                       //检测液晶忙状态
{
   Reset_RS();  //rs=0
         Set_RW();    //rw=1   建立高低电平需要延时吗?多久
         Set_E();     //en=1   
        delay_ms(1);  //延时1ms   72Mhz

        while(PCout(11) == 1)   //检测数据口D7,判断忙状态  需要检测数据吗?还是直接延时就可以,原理图里的是5V是3.3V工作?  
        {         Reset_E();          //en=0
                  delay_ms(1);        
                 Set_E();             //en=1  重复使能失能使得D7口为0,不忙(感觉这个不一定需要,试了也不行)
                 delay_ms(1);
        }
            delay_ms(5);
            Reset_E();         //en=0
         
}

void Write_Cmd(uint8_t Cmd)  //写指令
{
   Busy_Wait();     //判断液晶忙状态
   Reset_RS();      
   Reset_RW();
   Reset_E();       //
//下面是数据口的配置,这个数据口配置该怎么写?我写的是类似ODR(BRR)形式
  // GPIO_WriteBit(GPIOC,GPIO_Pin_11,(BitAction)((Cmd&0x80)>>7));//D7
  // GPIO_WriteBit(GPIOC,GPIO_Pin_12,(BitAction)((Cmd&0x40)>>6)); //D6
  // GPIO_WriteBit(GPIOD,GPIO_Pin_2,(BitAction)((Cmd&0x20)>>5)); //D5
   //GPIO_WriteBit(GPIOB,GPIO_Pin_3,(BitAction)((Cmd&0x10)>>4)); //D4
   //GPIO_WriteBit(GPIOB,GPIO_Pin_4,(BitAction)((Cmd&0x08)>>3)); //D3
   //GPIO_WriteBit(GPIOB,GPIO_Pin_5,(BitAction)((Cmd&0x04)>>2)); //D2
   //GPIO_WriteBit(GPIOB,GPIO_Pin_6,(BitAction)((Cmd&0x02)>>1)); //D1
   //GPIO_WriteBit(GPIOB,GPIO_Pin_7,(BitAction)((Cmd&0x01))); //D0
         Set_E();
         delay_ms(1);  //     高脉冲 该延时多久,1ms够不?还是多了?
         Reset_E();  //         
}


使用特权

评论回复
沙发
dongnanxibei| | 2023-11-29 16:02 | 只看该作者
你参考51单片机的。

使用特权

评论回复
板凳
单片小菜| | 2023-11-29 16:02 | 只看该作者
主要是看驱动能力和驱动电流吧

使用特权

评论回复
地板
小夏天的大西瓜| | 2023-11-29 22:42 | 只看该作者
现在驱动能力都有富裕,应该没问题

使用特权

评论回复
5
SantaBunny| | 2023-11-30 09:04 | 只看该作者
看驱动能力和驱动电流

使用特权

评论回复
6
jf101| | 2023-11-30 09:27 | 只看该作者
一般应该不需要检测忙信号吧

使用特权

评论回复
7
laocuo1142| | 2023-11-30 14:51 | 只看该作者
建议参考STM32F103的官方文档和1602 LCD的接口规范来进行设计和编程。

使用特权

评论回复
8
flycamelaaa| | 2023-11-30 14:51 | 只看该作者
是否需要检测忙状态,一般来说是需要检测的。1602 LCD通常会有一个BUSY引脚,用于指示LCD是否正在忙于处理数据或命令。通过检测这个引脚的电平状态,可以避免在LCD忙时进行不必要的读写操作,从而保护LCD不受损坏。

使用特权

评论回复
9
probedog| | 2023-11-30 14:52 | 只看该作者
关于推挽输出和开漏输出,这取决于你的硬件电路设计。推挽输出通常用于需要高电流输出的场合,而开漏输出则适用于需要低电平使能或高电平使能的场合。如果你需要控制1602 LCD的背光亮度或其他需要电流驱动的元件,可能需要使用推挽输出。

使用特权

评论回复
10
Undshing| | 2023-11-30 16:17 | 只看该作者
驱动能力够不

使用特权

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

本版积分规则

418

主题

1539

帖子

4

粉丝