1楼:流水灯与数码管
3楼:AD采集、DA调光
5楼:独立按键调节实时时钟+温度显示+简单闹钟
7楼:步进机
8楼:音乐盒
9楼:24C02-记忆秒表
10楼:红外解码
11楼:PS2键盘
12楼:电子琴
除了电池和电池座,别的都齐了。
前几天发现板子有些问题,今天把已发现的问题都解决了,并编写了流水灯+数码管的测试程序。
程序说明:首先从左往右逐个点亮LED,再倒回来,然后全亮,接着数码管依次显示0-7,再全部点亮,一个周期结束。
代码如下:
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
unsigned char const seg_num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay_ms(uint x)
{
uchar j;
while(x--)
{
for(j=125;j>0;j--)
{;}
}
}
void led()
{
uchar i,j,a;
P1 = 0xff;
delay_ms(1000);
a = 0x01;
for(i=0;i<8;i++)
{
P1 = ~(a<<i);
delay_ms(300);
a = 0x01;
}
for(j=8;j>0;j--)
{
P1 = ~(a<<(j-1));
delay_ms(300);
a = 0x01;
}
}
void seg()
{
uchar i;
uint k = 60000;
for(i=0;i<8;i++)
{
P2 = i;
P0 = seg_num[i];
delay_ms(500);
}
while(k)
{
for(i=0;i<8;i++)
{
P2 = i;
P0 = 0xff;
}
k--;
}
}
void main()
{
P0 = 0;
P2 = 0;
while(1)
{
led();
P1 = 0;
delay_ms(1000);
seg();
P0 = 0;
}
}
视频: