2019-12-20 21:41发布
sfes 发表于 2018-3-16 20:16 单片机驱动595用推挽强上拉
zhiwei 发表于 2018-3-17 07:39 在拍线进入595板子的地方对各个信号加RC滤波试试。
最多设置5个标签!
PB12,13,14直接IO口推挽输出的,现在各加了1K电阻上拉,还是没有改善。
正打算在SCLK输入端加个10nF对地电容试试。
第一个亮,说明是在第一个的等待时间长,原来没出问题不代表软件没问题的.....
- while (1)
- {
- bsp_Lcd_HC595_Display();
-
- }
复制代码bsp_lcd_hc595.c
- /*------------------------------------------------
- 发送字节程序
- ------------------------------------------------*/
- void SendByte(Uint8 dat)
- {
- Uint8 i;
-
- for(i=0;i<8;i++)
- {
- LCD_HC595_CLK_LOW();
- if (dat&0x80)
- {
- LCD_HC595_SER_HIGH();
- }else{
- LCD_HC595_SER_LOW();
- }
- dat<<=1;
- LCD_HC595_CLK_HIGH();
- }
-
- }
- /*------------------------------------------------
- 发送双字节程序
- 595级联,n个595,就需要发送n字节后锁存
- ------------------------------------------------*/
- void Send2Byte(Uint8 dat1,Uint8 dat2)
- {
- SendByte(dat1);
- SendByte(dat2);
- }
- /*------------------------------------------------
- 595锁存程序
- 595级联发送数据后,锁存有效
- ------------------------------------------------*/
- void Out595(void)
- {
- LCD_HC595_ST_HIGH();
- bsp_DelayUS(20); //_nop_();
- LCD_HC595_ST_LOW();
- }
- void bsp_Lcd_HC595_Display(void)
- {
- Send2Byte(WeiMa[3],0x00);
- Out595();
- Send2Byte(WeiMa[2],0x00);
- Out595();
- Send2Byte(WeiMa[1],DuanMa[0]); //O
- Out595();
- Send2Byte(WeiMa[0],DuanMa[22]); //N
- Out595();
- }
复制代码只是简单的显示 ON 字样。
一周热门 更多>