缘由51单片机变量进阶与点阵LED-嵌入式-CSDN问答 大佬们 求解单片机点亮点阵程序 被困3天了一直想不明白 - 24小时必答区
#include<reg52.h>//头文件sbit shcp=P1^2;//数据输入时钟线 595的11脚
sbit stcp=P1^1;//输出存储器锁存时钟线 595的12脚
sbit ds=P1^0;//数据线 595的14脚
sbit mr=P1^3;//数据清零
sbit oe=P1^4;//锁存使能unsigned char code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned char code shuju[]={
0x00,0x38,0x44,0x54,0x44,0x38,0x00,0x00,0x00,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x00,0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00,
0x00,0x00,0x0c,0x14,0x24,0x7f,0x04,0x00,0x00,0x82,0x82,0xFE,0x82,0x82,0x00,0x00,0x18,0x24,0x12,0x12,0x12,0x24,0x18,0x00,
0x00,0x7C,0x02,0x02,0x02,0x7C,0x00,0x00
};//数据
unsigned char code sjwei[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//位,用移位函数,移位运算符,数字void QuDong595(unsigned char sj)
{unsigned char aa=8;while(aa--){ds=sj>>7;sj<<=1;//十六进制数据发送
// ds=QY(sj,2);sj/=2;//十进制数据发送shcp=1;//上升沿发生移位 上升沿时数据寄存器的数据锁存。shcp=0;}stcp=0; stcp=1;//上升沿将数据送到输出锁存器 stcp=0;
}
void main() //主函数
{unsigned char b=0, j=0, xd=0, h=0, aa=0, sj=0, ls=1;unsigned int ys=0;oe=0;//锁存使能while(1){P3=~smgduan[j/10];P2=~smgduan[j%10];P0=ls;
// QuDong595(shuju[b+j]);aa=8;sj=shuju[b+j];while(aa--){ds=sj>>7;sj<<=1;//十六进制数据发送shcp=1;//上升沿发生移位 上升沿时数据寄存器的数据锁存。shcp=0;}stcp=0; stcp=1;//上升沿将数据送到输出锁存器 stcp=0;QuDong595(sjwei[b]);while(++xd);//显示延时mr=0;mr=1;if(++b>7)b=0;if(++h==0){ls*=2;if(!ls)++ls;//切换数据延时+显示延时if((++j)>=8*6)j=0;}}
}