wosshzhb 发表于 2012-3-27 19:57:53

求解:89c52 用三个IO口加上3片74hc595 控制16位的8段数码管

      好像一般在网上搜的资料都是两个595级联,而很少3个级联。有三个级联的也好像没发现只用三个IO口控制的。之前在论坛里看到有一个是将整个P1口做位选控制24位数码管。于是我弄了一下不用P1做位选,而是两个595作位选,一个595作段选来显示实时时钟。但是显示是一堆乱乱的东西。求解释。

    主程序如下:
#include "reg51.h"       
#include "intrins.h"
#include "ds1302.h"
#include "hc595.h"


/*---------------------------------------------*/


void main(void)

{

unsigned char i;
unsigned char time ;
ds1302_init(); /*DS302初始化函数*/
ds1302_write_time(); //若用纽扣电池供电,则不需要没每次上电写入,此代码应该屏蔽
delay2ms(15);

while(1)
{
ds1302_read_time();//读取时钟信息
for(i=1;i<8;i++)
{
time=(time_buf&0x70)>>4;
time=time_buf&0x0f;
}
for(i=0;i<16;i++)   //有八位数码管,八位依次扫描

{
          if(i<8)
          {
       hc595_in(wei);   //先传位码

           hc595_in(wei);                       //再传位码

       hc595_in(duan]);   //再传段码

      
           }
           else
           {
              hc595_in(wei);
                  hc595_in(wei);
                  hc595_in(duan]);   //再传段码
           }
           hc595_out();
       delay2ms(1);            //延迟时间2ms以内

}
}
}




不知道是哪里错了。

wosshzhb 发表于 2012-3-28 10:50:52

哪位可以看一下哪里出了问题啊
页: [1]
查看完整版本: 求解:89c52 用三个IO口加上3片74hc595 控制16位的8段数码管