[原创] 看看这个是为什么?我调试了几天了
我想用ZLG7289做4位7段LED显示,按照周立功网站提供的资料,我用89C51,其中P0.0接
CS,P0.1接CLK,P0.2接DATA,P0.3接KEY,因为没有键盘,我的8只10K电阻和8只100K下拉电
阻均没有用,我测试了晶振工作正常,可就是没有显示信号,用示波器测试:89C51信号传
输正常,可7289的SG-SA均为低电压,DIG0—DIG3均为高电压,为什么不工作?程序如下:
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit CS = 0x80; //P0.0
sbit CLK = 0x81; //P0.1
sbit DIO = 0x82; //P0.2
sbit KEY = 0x83; //P0.3
void delay(uint times); //延时
void initialize(void); //初始化
void display(void); //LED显示
void Send(int number);
bit flag;
void Count_int0() interrupt 0 using 2
{
flag = 1;
delay(10);
}
void Send(int number)
{
int i;
for(i=0;i <=7;i++)
{
_nop_();
_nop_();
CLK = 1;
if((number&0x80)==0x80)
DIO = 1;
else
DIO = 0;
_nop_();
// CLK = 1;
_nop_();
_nop_();
CLK = 0;
number = number < <1;
_nop_();
}
}
void initialize(void) //初始化程序
{
Motor = 0;
Elect = 0;
CS = 1;
DIO = 1;
KEY = 1;
CLK = 0;
CS = 0;
Send(0xA4); //复位
CS = 1;
CS = 0;
Send(0xBF); //测试
CS = 1;
delay(500);
CS = 0;
Send(0xC8); //下载数据且按方式1执行,为0数据
delay(5);
Send(0x00);
CS = 1;
}
void delay(uint times) //延时子程序
{
uint i,j;
for(i=times;i> 0;i--)
for(j=times;j> 0;j--){}
}
void main(void)
{
initialize();
delay(1000);
CS = 0;
Send(0xC8);
delay(4);
Send(0x01);
CS = 1;
_nop_();
_nop_();
CS = 0;
delay(500);
Send(0xC8);
delay(4);
Send(0x03);
CS = 1;
for(;;)
{
}
}
发表时间:2003年4月17日20:05:39