本帖最后由 吴鉴鹰 于 2016-7-18 21:30 编辑
对应的程序设计
/*******************************************************
* 程序名称:main.c
* 程序功能:主程序文件
* 创建时间:2016-7-18
* 修改时间:
* 程序版本:V0.1
******************************************************/
#include
***it HC595_SDI = P0^7;
***it HC595_RCK = P0^6;
***it HC595_SCK = P0^5;
code unsigned short Move_LED[16] = {0x0100,0x0200,0x0400,0x0800,0x1000,0x2000,0x4000,0x8000,
0x0001,0x0002,0x0004,0x0008,0x0010,0x0020,0x0040,0x0080};
code unsigned short Stable_LED[16] = {0x0000,0x0080,0x00c0,0x00e0,0x00f0,0x00f8,0x00fc,0x00fe,
0x00ff,0x80ff,0xc0ff,0xe0ff,0xf0ff,0xf8ff,0xfcff,0xfeff};
void main(void)
{
unsigned int t,h;
unsigned char i,n,k;
unsigned short C_LED;
while(1)
{
for(i=0;i<16;i++)
{
for(n=0;n<(16-i);n++)
{
C_LED = Move_LED[n] | Stable_LED;
HC595_RCK = 0;
for(k=0;k<16;k++)
{
HC595_SCK = 0;
if((C_LED&0x8000)!=0)
HC595_SDI = 1;
else
HC595_SDI = 0;
HC595_SCK = 1;
C_LED <<= 1;
}
HC595_RCK = 1;
for(t=60;t>0;t--)
for(h=600;h>0;h--);
}
}
}
}
3
评分
-
查看全部评分
|
|
|
头像被屏蔽
· 2016-7-20 01:18:30
|
|
|
|
|
头像被屏蔽
· 2016-7-20 22:10:16
|
|
|
|
|
原理很简单,单片机无非就是一条条指令执行,轮番操作寄存器,可是这里面的算法不简单,有的人用几句就可写好,有的人却几十句写好,最有技术含量的是这句 C_LED = Move_LED[n] | Stable_LED;
|
|
|
|
|
程序有问题
C_LED = Move_LED[n] | Stable_LED;
应该改为: C_LED = Move_LED[n] | Stable_LED[i];
|
|
|
|
|