标题:
单片机LED点阵程序看不明白了
[打印本页]
作者:
黄油蝴蝶
时间:
2024-1-27 10:00
标题:
单片机LED点阵程序看不明白了
如图的4个8*8拼成的16*16点阵,我想让这个点阵的箭头从左下角向左上角移动,但不知为什么,最上面一排LED会跟随着亮,求解答
#include<reg51.h>
sbit LE1=P3^6;
sbit LE2=P3^7;
typedef unsigned char uint8_t;
typedef unsigned char bool;
typedef unsigned short int uint16_t;
typedef unsigned int uint32_t;
typedef unsigned long int uint64_t;
uint64_t pattern[]={
0x7f000000,0x3f000000,0x1f000000,0x3f000000,
0x7f000000,0xfb000000,0x71000000,0x20000000
};
void delay(uint16_t n)
{
while(n--);
}
int main (void)
{
char Startpos,Endpos;
char abovesign;
uint8_t loop;
uint8_t times;
uint16_t dat;
while(1)
{
for(abovesign=-1;abovesign<=22;abovesign++)
{
Startpos=0x10-(uint8_t)abovesign;
Endpos=Startpos+7;
for(times=0;times<=50;times++)
{
for(loop=0x00;loop<=0x0f;loop++)
{
if(loop>=Startpos&&loop<=Endpos)
{
dat=(pattern[loop-Startpos]>>abovesign)>>8;
}
else
{
dat=0x0000;
}
P2&=0x00;
P3&=0xf0;
delay(2);
P3|=loop;
P2&=0x00;
LE1=1;
P2|=(uint8_t)(dat);
delay(3);
LE1=0;
delay(2);
P2&=0x00;
LE2=1;
P2|=(uint8_t)(dat>>8);
delay(3);
LE2=0;
delay(2);
}
}
delay(10);
}
}
return 0;
}
复制代码
作者:
joyb
时间:
2024-1-28 08:46
abovesign=-1;时,
(uint8_t)abovesign是多少?
作者:
cedtek
时间:
2024-1-28 20:46
图片在哪里?硬件连线图麻烦补一个呗
作者:
黄油蝴蝶
时间:
2024-1-30 12:29
不好意思,忘贴硬件图了
屏幕截图 2024-01-27 095458.png
(55.06 KB, 下载次数: 67)
下载附件
2024-1-30 12:27 上传
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1