|
整体效果 平常在盒子里面工作 安全放心 制作过程 STC单片机引脚驱动能力有限 只能加三级管放大 三极管用这种排列可以在不另行飞线的前提下最大限度的减小占用空间
反面很简洁吧 上面的一排焊点接反面的排阻 被压扁的排阻 单片机的P0和P2口正好和三极管一一对应
每根漆包线的长度都是正好的 线头用两个排阻夹住 降低故障率 这个需要点耐心 ~~~~ 最恶心的就是配重了 因为旋转部分太小了而且不规则 旋转重心很难找 牺牲了很多实验盘
为了找重心 铁丝都是有余量的 后面的铜铸是配重用的 哈哈 底座的走线 方便调速的电阻 为了美观 走线部分采用了铝箔 方便拆装而且美观 虽然有点电阻 我忍了....
电刷的特写 曾经将被刷部分设计在旋转的光盘下面 后来因为阻力噪音都比较大就改在这里了 现在效果很理想 导电顺序 底座VCC---铜柱---铝箔----电机体 --电机主轴---旋转部分的小弹簧----单片机 底座GND---铜柱---电刷---主轴上面的铜套----压紧弹簧----铝箔---旋转部分铝箔--短铜柱---铁丝----单片机和LED
转盘下面的细节 沿用了光盘夹的磁铁固定方式 拆卸安装都非常简单 这样的设计很方便下载程序和调整 耳机线正好16根丝 呵呵
干簧管 曾经考虑过霍尔元件 觉得还是干簧管的原理简单 而且便宜易用 GND 连接细节 支架部分 俯视图 晶振和小电容在芯片座里面 哈哈 铁丝支架连在排阻的公共端 担负供电任务 电容保证在电刷不接触不良时的供电 效果不错
为了稳定显示 用这种方式确定每圈的起始点 字有轻微晃动 效果还可以
改为102的排阻 白天也很亮
开灯的效果 关灯的效果 实际很亮 这是相机调节后的结果
有朋友问时钟芯片的问题 呵呵 其实这也是我下一步的想法 现在走时是用定时器模拟的 想先看一看效果 不是真正意义上的时钟 等加上了时钟芯片可以让它实现更多的功能 比如日期星期和时间滚动显示 问好等等之类的功能 现在比较头疼备用电源的问题 多放一块电池很困难 而且可能破坏已有的平衡 正在研究中.... 电源不错 一次买了4个 至于淘宝地址吗......呵呵 大家自己找吧 ... 坛里有人拆过这款电源了 我看过拆解后才买的..事实证明很不错~~~
电源小板 可以插普通电线 可以插杜邦线 可以接USB公口 断开跳冒可以测电流 有电源指示灯和输出指示灯······自己做的用着就爽 哈哈!! 咱们的LOGO
遥控视频
flash: http://player.youku.com/player.php/sid/XMTgyNjcwNTk2/v.swf
原理和摇摇棒是一样的 大家可以自己找一下原理 很好理解的 稳定显示就是在每圈设置一个起始点 到达这一点就发生一次中断 让单片机重新“播放”显示内容 这样每圈显示的内容就一样了 制作方法上面已经说的很详细了 大家可以清楚的看见每一个细节 我毫无保留 有坛友要源程序的 为了不浪费大家M 直接粘贴到下面了 其实程序真的很简单 在这里给大家发一个最基本的框架吧 这样激励大家创新 大家可以自己加更多的功能的 记住 它只是一个显示屏........
基本稳定显示
#include<reg52.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int
uint t=0;
uchar code a[22][8]= {
{0xFF,0xF7,0xF7,0x03,0x03,0xFF,0xFF,0xFF}, {0xFF,0xFF,0xFF,0xC0,0xC0,0xFF,0xFF,0xFF},/*"1",0*/
{0xE7,0xE3,0xFB,0xFB,0x7B,0x03,0x87,0xFF}, {0xC7,0xC3,0xD9,0xDC,0xDE,0xDF,0xDF,0xFF},/*"2",1*/
{0xE7,0x63,0x7B,0x7B,0x7B,0x03,0x87,0xFF}, {0xE7,0xC7,0xDF,0xDF,0xDF,0xC0,0xE0,0xFF},/*"3",2*/
{0xFF,0xFF,0x3F,0x0F,0xC3,0x03,0x03,0xFF}, {0xFB,0xF8,0xF8,0xFB,0xFB,0xC0,0xC0,0xFB},/*"4",3*/
{0x03,0x03,0xBB,0xBB,0xBB,0x3B,0x7B,0xFF}, {0xE7,0xC7,0xDF,0xDF,0xDF,0xC0,0xE0,0xFF},/*"5",4*/
{0x07,0x03,0x7B,0x7B,0x7B,0x63,0xE7,0xFF}, {0xE0,0xC0,0xDF,0xDF,0xDF,0xC0,0xE0,0xFF},/*"6",5*/
{0xFB,0xFB,0xFB,0x3B,0x0B,0xC3,0xF3,0xFF}, {0xFF,0xFF,0xC1,0xC0,0xFE,0xFF,0xFF,0xFF},/*"7",6*/
{0x87,0x03,0x7B,0x7B,0x7B,0x03,0x87,0xFF}, {0xE0,0xC0,0xDF,0xDF,0xDF,0xC0,0xE0,0xFF},/*"8",7*/
{0x07,0x03,0xFB,0xFB,0xFB,0x03,0x07,0xFF}, {0xE7,0xC6,0xDE,0xDE,0xDE,0xC0,0xE0,0xFF},/*"9",8*/
{0x0F,0x07,0xF3,0xFB,0xFB,0xF3,0x07,0x0F}, {0xF0,0xE0,0xCF,0xDF,0xDF,0xCF,0xE0,0xF0},/*"0",9*/
{0xFF,0xFF,0xCF,0xCF,0xFF,0xFF,0xFF,0xFF}, {0xFF,0xFF,0xF3,0xF3,0xFF,0xFF,0xFF,0xFF},/*":",10*/
};
void main() {
IT0=0; PX0=1; TMOD=0x01; TH0=(65536-1200)/256; TL0=(65536-1200)%256; EX0=1; ET0=1; TR0=1; EA=1; while(1) {
} } void zhongduan0() interrupt 0 { t=0; } void timer0() interrupt 1 { TH0=(65536-400)/256; TL0=(65536-400)%256; t++; P0=a[2*(t/8)][t%8]; P2=a[2*(t/8)+1][t%8]; }
遥控的时钟显示部分因为增加了从上至下擦除效果(视频中秒的显示效果)比较难理解 给大家发一下核心部分研究吧 呵呵 4个中断全用上了
void zhongduan0() interrupt 0 { t=0; } void timer0() interrupt 1 { TH0=(65536-400)/256; TL0=(65536-400)%256; t++; if((t<20)||(t>=36)) { P0=0x00; P2=0x00; } if((t>=20)&&(t<28)) //显示时的十位 { P0=a[2*(shi/10)][t-20]; P2=a[2*(shi/10)+1][t-20]; } if((t>=28)&&(t<36)) //显示时的个位 { P0=a[2*(shi%10)][t-28]; P2=a[2*(shi%10)+1][t-28]; } }
void IR_IN(void) interrupt 2 //红外解码部分 { unsigned char j,k,N=0; EA = 0; delay(15); if (IRIN==1) { EA =1; return; } //确认IR信号出现 while (!IRIN) //等IR变为高电平,跳过9ms的前导低电平信号。 {delay(1);}
for (j=0;j<4;j++) //收集四组数据 { for (k=0;k<8;k++) //每组数据有8位 { while (IRIN) //等 IR 变为低电平,跳过4.5ms的前导高电平信号。 {delay(1);} while (!IRIN) //等 IR 变为高电平 {delay(1);} while (IRIN) //计算IR高电平时长 { delay(1); N++; if (N>=30) { EA=1; return;} //0.14ms计数过长自动离开。 } //高电平计数完毕 IRCOM[j]=IRCOM[j] >> 1; //数据最高位补“0” if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;} //数据最高位补“1” N=0; }//end for k }//end for j if (IRCOM[2]!=~IRCOM[3]) { EA=1; return; } switch(IRCOM[2]) { case 0x0F: shi++; break; case 0x0D: fen++; break; case 0x10: miao++; break; }
EA = 1; }
void timer1() interrupt 3 { TH1=(65536-25000)/256; TL1=(65536-25000)%256; count++; if(count==48) { count=0; miao++; if(miao>=60) { miao=0; fen++; if(fen>=60) { fen=0; shi++; if(shi>=24) { shi=0; }
}
}
} }
[ 此帖被shawyao在2010-06-20 07:42重新编辑 ]
|