单片机一个 IO口可以控制一串LED作流水实验吗
答案:5 悬赏:70 手机版
解决时间 2021-03-21 06:24
- 提问者网友:夢醒日落
- 2021-03-20 09:39
单片机一个 IO口可以控制一串LED作流水实验吗
最佳答案
- 五星知识达人网友:毛毛
- 2021-03-20 10:03
程序和电路都已经帮你弄好了,功能可以实现,如果觉得对你有用,请选最佳答案。用两个74hc138(三八译码器)一个74hc139(二四译码器)就可以实现,电路如图,成为如下:#include
#include
#define uchar unsigned char
sbit ctrl1=P3^0;
sbit ctrl2=P3^1;
sbit ctrl3=P3^2;
uchar t,i,g;
void init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;//开总中断
ET0=1;//开定时器中断0
TR0=1;
t=0;
}
void main()
{
init();
while(1)
{
ctrl1=1;
ctrl2=0;
ctrl3=1;
P2=0x00;
g=P2;
for(i=0;i<8;i++)
{
P2=g;
while(t!=20);
t=0;
g=g+1;
}
ctrl2=1;
ctrl1=0;
g=0x00;
for(i=0;i<8;i++)
{
P2=(g+i<<3)+0x07;
while(t!=20);
t=0;
}
ctrl1=0;
ctrl2=0;
ctrl3=0;
g=0x00;
for(i=0;i<4;i++)
{
P2=(g+i<<6)+0x3f;
while(t!=20);
t=0;
}
}
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t++;
}
#include
#define uchar unsigned char
sbit ctrl1=P3^0;
sbit ctrl2=P3^1;
sbit ctrl3=P3^2;
uchar t,i,g;
void init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;//开总中断
ET0=1;//开定时器中断0
TR0=1;
t=0;
}
void main()
{
init();
while(1)
{
ctrl1=1;
ctrl2=0;
ctrl3=1;
P2=0x00;
g=P2;
for(i=0;i<8;i++)
{
P2=g;
while(t!=20);
t=0;
g=g+1;
}
ctrl2=1;
ctrl1=0;
g=0x00;
for(i=0;i<8;i++)
{
P2=(g+i<<3)+0x07;
while(t!=20);
t=0;
}
ctrl1=0;
ctrl2=0;
ctrl3=0;
g=0x00;
for(i=0;i<4;i++)
{
P2=(g+i<<6)+0x3f;
while(t!=20);
t=0;
}
}
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t++;
}
全部回答
- 1楼网友:上分大魔王
- 2021-03-20 13:32
不可能的任务。
- 2楼网友:话散在刀尖上
- 2021-03-20 13:09
同时亮,同时灭可以,流水灯完成不了。
- 3楼网友:千杯敬自由
- 2021-03-20 12:04
………………
把那个IO口设置成串口输出吧
把那个IO口设置成串口输出吧
- 4楼网友:孤老序
- 2021-03-20 10:47
20颗串联的无法流水。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯