求助关于74HC595的级联动态显示问题

[复制链接]
 楼主| jaijai9898 发表于 2013-7-24 18:19 | 显示全部楼层 |阅读模式
最近在做2片74hc595的级联 动态显示5位数码管电路图如下:
其中主要的数据传输函数是这样的:                  
/****************发送位码和段码给HC595******************* /
void HC595_In(uint8_t data)
{
uint8_t i;
for(i = 0; i < 8; i++)                                 // 循环8次,刚好移完8位
{                        
  LPC_GPIO1->FIOCLR = HC595_SCLK;                    // 先将移位寄存器时钟控制引脚置0  
  if(((data << i) & 0x80))
   LPC_GPIO1->FIOSET = HC595_SI;                  // 最高位与data左移的最高位进行逻辑运算,为1则发送1,否则发送0
  else
   LPC_GPIO1->FIOCLR = HC595_SI;           
  LPC_GPIO1->FIOSET = HC595_SCLK;                    // 再将时钟置为1,产生移位时钟上升沿,使移位寄存器的数据移位(左移)
  NOP();
}
}
/****************HC595的并行输出***************/
void HC595_Out(void)
{
LPC_GPIO1->FIOCLR = HC595_PD;
LPC_GPIO1->FIOCLR = HC595_CS;
NOP();

LPC_GPIO1->FIOSET = HC595_PD;
LPC_GPIO1->FIOSET = HC595_CS;
NOP();  
}
/****************数据显示*******************************************/
void HC595_Display(uint8_t num)   //只显示两位
{
uint8_t shi,ge;
shi = num /10;
ge = num % 10;

HC595_In(wei[0]);      //对应的位选码
HC595_In(duan[shi]); //对应的段选码
HC595_Out();
Delay_ms(5);

HC595_In(wei[1]);
HC595_In(duan[ge]);
HC595_Out();
Delay_ms(5);
}

问题是:数字显示没问题,也就是段选都是对的。然而,位选是明显的错误。显示的位置根本不对应啊。
第一次发帖求助,希望大家多多帮忙。
                                       

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
解博 发表于 2014-2-14 23:12 | 显示全部楼层
最后解决了吗?,我的也是同样的问题,你的是共阴的数码管吧
明月小厨 发表于 2014-2-15 12:42 | 显示全部楼层
1.位选是不能错的;
2.要注意点(dp,H)对应的段位,
3.其余的随便,当然最好是按标准排;
明月小厨 发表于 2014-2-15 12:45 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
明月小厨 发表于 2014-2-15 12:51 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
明月小厨 发表于 2014-2-15 13:10 | 显示全部楼层
本帖最后由 明月小厨 于 2014-2-15 13:13 编辑

正好我在整理这个库,顺便图传上来,这个也许更清楚些.
因为以前不够重视,DP引脚夹在中间了,编码的时候很烦.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
明月小厨 发表于 2014-2-15 13:14 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
liang5319 发表于 2014-2-15 17:11 | 显示全部楼层
595级联,程序对吗?有点儿怀疑。。而且貌似公共端直接接595,595 IO承受的了吗?加个三极管还是比较靠谱的。
zaiming 发表于 2014-2-15 22:23 | 显示全部楼层
段选都对了,程序结构应该没什么大问题,再仔细检查位选与你的想法对应,你说的位选是错的,说不定给你位选是高还是低你弄反了,导致写的位选数据错误。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

18

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部