|
本帖最后由 w625419875 于 2012-5-16 20:22 编辑
最近没事,用0805贴片二级管,做了个小玩意,发给大家看看,高手绕过,没什么技术含量,
单片机用的是STC15F104E(51系列8脚) 用的内部晶振,电路图也比较简单,发光二级管全部并联
本人比较穷,没钱做板子,就用洞洞板焊了个也没原理图,用的是三级管驱动的。
下面是设计的参考图
随便弄了个流水灯效果,并且蜂鸣器播放生日快乐音乐
下面是录制的视频
h t t p : / / v.youku.com/v_show/id_XMzk3NTgyOTY0.html(删除空格)
下面是程序文件,用定时器0延时,这是就是讨厌增强型51单片机可恨之处了!
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define uint8 unsigned char
#define uint16 unsigned int
#define HIBYTE(v1) ((uint8)((v1)>>8))
#define LOBYTE(v1) ((uint8)((v1)&0xff))
#define CLOSE 0
#define OPEN !CLOSE
sbit beep=P3^4;
sbit L4=P3^0;
sbit L3=P3^1;
sbit L2=P3^2;
sbit L1=P3^3;
uint code song_tone[] ={1730,1730,1550,1730,1300,1390,1730,1730,1550,1730,1170,1300,
1730,1730,890,1060,1300,1390,1550,980,980,1060,1300,1170,1300,0};
uchar code song_long[]={9,3,12,12,12,24,9,3,12,12,12,24,
9,3,12,12,12,12,12,9,3,12,12,12,24,0};
void time0_init()
{
TH0=TL0=0;
TMOD=0x01; //定时器0方式1
ET0=1;
// EA=1;
TR0=0;
}
void delay (uint x)
{
uchar t;
while(x--)for(t=0;t<250;t++);
}
void timer_delay(uint16 time)
{
TH0 = HIBYTE(time);
TL0 = LOBYTE(time);
TR0 = OPEN;
while(!TF0);
TR0 = CLOSE;
TF0 = 0;
}
void led(uchar temp)
{
if(temp==0)
{
L1=0;
delay(450);
L1=1;
delay(50);
}
if(temp==1)
{
L2=0;
delay(450);
L2=1;
delay(50);
}
if(temp==2)
{
L3=0;
delay(450);
L3=1;
delay(50);
}
if(temp==3)
{
L4=0;
delay(450);
L4=1;
delay(50);
}
if(temp==4)
{
L1=0;
L2=0;
L3=0;
L4=0;
delay(450);
L1=1;
L2=1;
L3=1;
L4=1;
delay(50);
}
}
void play()
{
uint i=0;
uint j;
for(i=0;i<=25;i++)
{
for (j=0;j<song_long*20;j++)
{
beep=~beep;
timer_delay(65535-song_tone);
}
led(i%5);
}
}
void main()
{
beep=0;
time0_init();
while(1)
{
play();
}
}
我以前账号wishtoyou登陆不上去了,有一段时间没来论坛了,不知道发生什么事,请阿莫帮我把账号密码重置下了,谢谢了!
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|