我也来个旋转LED【恢复】
旋转LED挺好玩,简单的电路就能获得不错的显示效果,看到论坛有不少旋转LED的帖子,就参考做了一个,效果还不错。下面是硬件的照片:
http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_469992.JPG
(原文件名:旋转LED硬件照片.JPG)
能转的部分被架在一个小直流电动机轴上,万用板上面放了一个最小89S52系统和16个发光二极管。单片机通过电动机轴和简易电刷供电,因为配重不很平衡会震动,有时会瞬间掉电,为了稳定加了一个1000uF的电容。在万用板上的89S52引出了MISO,MOSI,SCLK,RST四个引脚通过插针引脚和我的89S52实验板的对应引脚相连,以便ISP编程(要拔掉实验板上的89S52芯片)。另外单片机的电源也是通过引线来自于实验板。电动机是用1节5号电池供电。
程序设定为显示电动机转过的总圈数。
http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_469995.JPG
(原文件名:AT89S52板子照片-上传版.JPG)
转起来之后显示的效果如下:
http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_469993.JPG
(原文件名:旋转LED效果照片1.JPG)
http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_469994.JPG
(原文件名:旋转LED效果照片.JPG)
补充以下源代码:
#include"at89x52.h"
/*
P2口连接外侧8个led
P0口连接内侧8个led
MISO,MOSI,SCLK,RST通过插针引出
旋转LED显示当前电机转过的圈数
*/
//0-9数字编码库8*8数字的编码库
code unsigned char NumTable=
{
{0x00,0xFF,0x81,0x81,0x81,0xFF,0x00,0x00},/*"0"*/
{0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00},/*"1"*/
{0x00,0xF1,0x91,0x91,0x91,0x9F,0x00,0x00},/*"2"*/
{0x00,0x91,0x91,0x91,0x91,0xFF,0x00,0x00},/*"3"*/
{0x00,0x1F,0x10,0x10,0x10,0xFF,0x00,0x00},/*"4"*/
{0x00,0xCF,0x89,0x89,0x89,0xF9,0x00,0x00},/*"5"*/
{0x00,0xFF,0x89,0x89,0x89,0xF9,0x00,0x00},/*"6"*/
{0x00,0x01,0x01,0x01,0x01,0xFF,0x00,0x00},/*"7"*/
{0x00,0xFF,0x89,0x89,0x89,0xFF,0x00,0x00},/*"8"*/
{0x00,0x8F,0x89,0x89,0x89,0xFF,0x00,0x00} /*"9"*/
};
unsigned char DisplayBuffer;
unsigned char counter=0;
unsigned char index=0; //180份之一的指针
unsigned char old_th1,old_tl1;
unsigned char Round=0;
unsigned long RoundCounter=0;
void int0Svr(void) interrupt 0
{
unsigned long temp32;
unsigned char orderOfNum=0;
unsigned char temp,i,j;
temp32 = counter;
temp32 = temp32<<16;
temp32 = temp32+TH0*256+TL0;
temp32 = temp32/180;
temp32 = 0xffff - temp32;
TL1 = temp32 & 0xff;
old_tl1 = TL1;
TH1 = (temp32>>8)&0xff;
old_th1 = TH1;
RoundCounter++;//圈数加1
//取出圈数的对应位(个位、十位、百位、千位,万位,十万位)
//从个位取起
orderOfNum = 0;
temp32 = RoundCounter;
for(i=0;i<6;i++)
{
temp = temp32 %10;
for(j=0;j<8;j++)
{
DisplayBuffer[(5-i)*8+j] = NumTable;//数字
}
temp32 = temp32/10;
}
index = 0;
P0++;//修改P0口内容,增强显示效果
if(Round==0)
{
TR0 = 1;
Round++;
}else
{
TR1 = 1;
TR0 = 1;
}
counter = 0;
TH0 =0;
TL0 =0;
}
void temer0Svr(void) interrupt 1
{
counter++;
}
void timer1Svr(void) interrupt 3
{
TR1 = 0;
TL1 = old_tl1+8;
TH1 = old_th1;
TR1 = 1;
if(index<90)
{
P2 = ~DisplayBuffer;
}else
{
P2 = ~DisplayBuffer;
}
index++;
//达到180说明原定速度下一周已经完成
//如果还没有重新被归零说明没有经过磁铁,可能减速或者要停下来了
if(index==180)//
{
TR1 = 0;
P2 = 0xff;
P0 = 0xff;
}
}
void main(void)
{
EA=1;
IT0=1;
EX0=1;
SP=128;
P0=0;
P2=0;
TMOD=0x11;//定时器T0工作于方式1由TR0开启,定时器T1工作于方式1由TR1开启
TCON=1;//INT0边沿触发方式
IE=0x8b;
TR0 = 1;
while(1)
{
if(counter>30) //30*定时器1溢出周期,30*64ms=1.9s,这么久没有归零一般电机停下来了
{
P2 = 0xff;
P0 = 0xff;
counter = 0;
TR0 = 0; //关闭2个定时器
TR1 = 0;
PCON = PCON & 0x02;//进入掉电模式,节能;由中断重新激活
}
}
}
本贴被 hithyy 编辑过,最后修改时间:2008-10-27,12:53:32. 不错 用什么设备转动的,貌似速度挺高,电扇?
做的不错! 看到了,小直流电机 不錯啊! 用什么传感器检测的转速阿 ? 顶头起的那个“三极管”? 看起效果还不错 一头那个应该是霍尔传感器,作者在底板子上贴了一个小磁铁 转速其实不高,大概1秒钟10转左右,如果2节5号电池会转的快点。
7楼说的对,顶头的是一个霍尔传感器,白胶布底下是一个小磁铁。 程序研究一下 不错 把它放直着转效果上会不会更好,
至少字不会变形,,
顶了~~~ mark~ 记号拉 mark! Mark 有意思! 好像数字显示的效果不是很好。。 你们做得都太小,我们做得是个大的.
分辨率是560*128. mark 越看越美好。楼主可不可以分享下原理图啊。 有没有人尝试在遥控直升飞机的扇叶上用高亮的LED做旋转呢?我突发想到的……那样晚上多么美! 有意思! 记号。。 mark 慢慢研究 做的太好了,mark下 mark 支持原创 额,先收藏,再慢慢研究
膜拜一下 回复【21楼】cgc_good
有没有人尝试在遥控直升飞机的扇叶上用高亮的LED做旋转呢?我突发想到的……那样晚上多么美!
-----------------------------------------------------------------------
有创意啊~~~~呵呵 你是怎么供电的? 漂亮啊! mark mark 不错,LZ有创意 记号 mark 怎么供电的啊 mark Mark MARK ` 求教,连接上下两部分的地方是怎么做的呢?是怎么给上板供电啊?求上图细解~~~ 给上面供电一个5v一个gnd。采用的是一个空心金属管套一个空心小金属管,之间用热缩管隔离开。一个金属管接5v,另一个接gnd。通过自制的电刷(有弹性的导线摩擦金属管)连接5v,另一个通过固定触电连接在电路板上。详细资料,到网上搜下,有可借鉴的。 你们做得都太小,我们做得是个大的.
分辨率是560*128.
我们专业做这个的一个网站:
http://www.xzfeida.com/
有兴趣的朋友也可以与我联系
http://cache.amobbs.com/bbs_upload782111/files_32/ourdev_579713SZ82DV.jpg
(原文件名:001.jpg)
http://cache.amobbs.com/bbs_upload782111/files_32/ourdev_579714TSABJ0.jpg
(原文件名:002.jpg) 另外,44楼说的那种供电方式,是一种落后的方式.目前我们全系列采用的都是无线供电. 无线供电是个啥东西~~~强悍~~膜拜~~能不能讲下呢? 回复【44楼】hithyy 老实人
-----------------------------------------------------------------------
谢谢了·我想尝试做一下 呵呵 回复【12楼】barrie_xie
-----------------------------------------------------------------------
兄弟,你的头像让我以为是我屏幕上有虫,擦了好几遍。 回复【12楼】barrie_xie
-----------------------------------------------------------------------
兄弟,你的头像让我以为是我屏幕上有虫,擦了好几遍。
这图像就是逼真啊、 mark~学习一下 MARK ` 回复【21楼】cgc_good
有没有人尝试在遥控直升飞机的扇叶上用高亮的led做旋转呢?我突发想到的……那样晚上多么美!
-----------------------------------------------------------------------
貌似已经有人实现了、我前段时间就看到表演,晚上固定翼和直升机 用LED发出的光在夜空真的不错 好东西,顶一个! LZ能给发份相关资料吗?最近有老师让弄个和这相关的必须弄出来,可以考虑金钱上的交换也行。期待楼主回复,QQ;276794247 zhangchaofan118@163.com 万分感谢 学习了! 准备材料 呵呵 mark 楼主能给点详细资料吗?,谢谢楼主。初学者,我想研究一下 额。。。邮箱sk_single@163.com。。忘记打了。多谢楼主 mark 漂亮 学习了。。。。。。 mark!!!1 mark,3q! 楼主厉害,向楼主学习 我也做! mark mark 学习了 。。。。 我还以为用了2快单片机,原来只是用来下载程序用。 旋转LED挺好玩,但供电用电刷,不好。用无线的。 回复【7楼】erxun老孟
-----------------------------------------------------------------------
正确 楼主很有才 在下学习了 以前做过一个用手摇的“摇摇棒棒钟”。 mark mark!!! 回复【45楼】wenming 老王
-----------------------------------------------------------------------
顶羡慕 可以用无线供电方式,在淘宝搜 无线供电模块 即可 不错,支持 mark MARK 太漂亮了。。。我也想做 学习了!!! cgc_good 发表于 2010-1-16 10:54 static/image/common/back.gif
有没有人尝试在遥控直升飞机的扇叶上用高亮的LED做旋转呢?我突发想到的……那样晚上多么美! ...
想法不错,若是遥控飞机的话还没地方固定这个LED的{:tongue:} 之前见过有人供电部分采用线圈感应模式供电的,不用电刷 楼主求详细点的资料啊 发给我啊邮箱7509545902@qq.com谢谢啦
不错,学习了!!!!!!!! 不错。学习了
页:
[1]