本帖最后由 张衍波 于 2014-9-21 14:55 编辑
我实在是不知道怎么弄了,下面是我写的点阵程序,它只显示1/4块区域亮,我就搞不懂了,,保证接线没错,可以正常显示,用其他程序已测试过,兄弟们帮我看看,该怎么办???
/******************************************************
*程序功能:点阵显示固定图形
*硬件连接:4个595芯片,P1口接595,JP18接JP27;JP20接JP26;
*作 者:张衍波
*日 期:2014/9/21
******************************************************/
#include<stc15f2k60s2.h>
sbit RCLK1=P0^0;
sbit SRCLK1=P0^1;
sbit SER1=P0^2;
sbit RCLK3=P0^3;
sbit SRCLK3=P0^4;
sbit SER3=P0^5;
#define uchar unsigned char
#define uint unsigned int
uchar data1[]={0x17FF,0x1DFB,0x1C03,0x1C93,
0x1DCB,0x1C8B,0x1C13,0x1C03,
0x1DFB,0x1FFF,0x1800,0x1800,
0x1800,0x1800,0x1800,0x0000};
uchar wei1[]={0x7fff, 0xbfff, 0xdfff, 0xefff,
0xf7ff, 0xfbff, 0xfdff, 0xfeff,
0xff7f, 0xffbf, 0xffdf, 0xffef,
0xfff7, 0xfffb, 0xfffd, 0xfffe};
uchar j=0;
/******************************
函数功能: 595程序
******************************/
void send_data1(uchar data1)
{ unsigned int i;
for(i=0;i<16;i++)
{
SRCLK1=0;
SER1=data1&0x0001;
SRCLK1=1;
data1=data1>>1;
}
}
void send_wei1(uchar wei1)
{
unsigned int i;
for(i=0;i<16;i++)
{
SRCLK3=0;
SER3=wei1&0x0001;
SRCLK3=1;
wei1=wei1>>1;
}
}
/******************************
函数功能:点阵显示
******************************/
void display()
{
RCLK1=0;
send_data1(data1[j]);
RCLK1=1;
RCLK3=0;
send_wei1(wei1[j]);
RCLK3=1;
}
/******************************
函数功能:中断函数
******************************/
void timer1() interrupt 3
{
display();
j++;
if(j==16)
j=0;
}
/****************************
函数功能:主函数
****************************/
void main()
{
P0M1 =0x00;
P0M0 =0xff;
TMOD=0X00;
TH1=(65536-1500)>>8;
TL1=(65536-1500);
TR1=1;
ET1=1;
EA=1;
while(1);
}
|