关于3个595驱动8*8双 {MOD}点阵的问题

2019-07-16 04:18发布

本帖最后由 si蜀 于 2012-10-17 17:21 编辑

#include<reg52.h>
#define u8 unsigned char
#define u16 unsigned int
/*ser0、rclk0、srclk0对应IC3,控制绿 {MOD}二极管。*/
sbit ser0 = P0^2;      //595第14脚   数据口  控制绿 {MOD}led阴极 高8位绿 {MOD},底8位红 {MOD}   
sbit rclk0 = P0^1;     //595第12脚,上升沿时数据从位移寄存器输入到存储寄存器中,下降沿时存储寄存器数据不变。
sbit  srclk0  = P0^0;   //595第11脚,上升沿时数据寄存器的数据移位。  绿 {MOD}: 5~12 红 {MOD}:12~20
sbit ser1 = P1^7;      //     数据口  控制led阳极  共8位   
sbit rclk1 = P1^6;  //上升沿时数据从位移寄存器输入到存储寄存器中,下降沿时存储寄存器数据不变。      
sbit  srclk1  = P2^3;   //上升沿时数据寄存器的数据移位。  由锁存器控制   共阴极
sbit  LE  =P3^7;   //锁存器锁存端,高电平时打开,低电平锁定               

void daley (void)
{
;;
}
//数据date输入595位移存储器中
void in0 (u8 date)
{
u8 tame,i;
tame=date;
for(i=8;i>0;i-- )
  {
   if((tame&0x80)==1)
   ser0 = 1;
   else ser0 = 0;
   srclk0 = 0;
   daley( ) ;
   srclk0 = 1;
   tame=tame<<1;
  }
}
//595输出数据
void put0 ()
{
rclk0 = 0;
daley( ) ;
rclk0 = 1;
}
void in1 (u8 date)
{
u8 tame,i;
tame=date;
for(i=8;i>0;i-- )
  {
   if((tame&0x80)==1)
   ser1 = 1;
   else ser1 = 0;
   srclk1 = 0;
   daley( ) ;
   srclk1 = 1;
   tame=tame<<1;
  }
}
void put1()
{
rclk1 = 0;
daley( ) ;
rclk1 = 1;
}
void main()
{   
u8 a,i,j;
LE=1;    //打开锁存器
a=0x7F;       //最后一个红灯
i = 0xff;
j = 0xff;
in0 (a);
in0 (i);
put0();
in1 (j);
put1();
while(1);
}  
我想点亮模块,但完全没反应,不知道问题是出在哪里?
8x8原理图.jpg
2012-S52图纸.pdf 下载积分: 积分 -1 分
110.2 KB, 下载次数: 33, 下载积分: 积分 -1 分
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。