DIY一个超小型单片机摇摇棒
金坷居士2012/07/02电子技术 IP:陕西
单片机摇摇棒是吸引女性的极佳物品(我把这个当礼物送给某同学)下面就讲述下原理和我是如何制作的

摇摇棒的原理很简单,就是利用人眼的视觉暂留效应,在任意时刻图形只有一部分显示,但是晃动起来后就可以看到完整图形
比如我要显示心型(大家懂得),就把心型呈现在11*8的屏幕上,按纵向分解,可以得到11列,我们要做的就是用8个led显示一列再延时然后推进到下一列
每一列由8个led组成,我们用0和1(1代表亮0代表灭)每个led的工作状态,这样就可以用1个8位的二进制数表示一列,为了方便储存,我们把二进制换算成十六进制(用Windows自带的计算器即可实现)
heart.png
为了保证效果,实际使用时我们在最左边和最右边各加一个空白列,这样就有13列,最两边的都是0x00,即轮到最边上时什么都不现实,防止图形重叠
程序思路也不难,我这个很简单,只显示一个图形,因此用一个定时器在一定时间给led改变状态即可.
程序思路有了,开始选择硬件.
由于是礼物,所以要精致,要求单片机必须要小,啥AT89S52就直接否了,AT89c2051也嫌太大
我选用了STC11F04E,说来凑巧,半年前我在淘宝上买东西错买了它,本来是要买STC12C5410AD的,这次竟然派上用场了
STC11F04E.png
这可是我目前见过的最小的单片机,样子和3525一个德行,还带内部rc,这样连晶振都能省了(摇摇棒对单片机的时钟精度没有要求)
对于这个单片机,连复位的电容都能省略,这样除了单片机外,电路只有1个100欧电阻和8个LED了,8个led分别对应:
sbit p7=P1^7;
sbit p6=P1^6;
sbit p5=P1^5;
sbit p4=P1^2;
sbit p3=P1^1;
sbit p2=P1^0;
sbit p1=P3^7;
sbit p0=P3^4;
所有LED的阴极连在一起,经100欧电阻接地(电路图太简单就不画了)
大家可能看出来了,这东西有个比较迥的缺点是没有一个完整的8位IO口,连P1都不是完整的,因此像P1=0x08这种语句不能直接用
因此我加了一个函数用来设定一列的状态:
void setport(BYTE dat){
    dat <<= 1;
    p7=CY;
    dat <<= 1;
    p6=CY;
    dat <<= 1;
    p5=CY;
    dat <<= 1;
    p4=CY;
    dat <<= 1;
    p3=CY;
    dat <<= 1;
    p2=CY;
    dat <<= 1;
    p1=CY;
    dat <<= 1;
    p0=CY;
}
使用1个定时器对图形进行显示(更换列的操作,c>7的7可调,用于调到最佳显示效果):
void timer0() interrupt 1{
    TH0=0xFC;
    TL0=0x18;
    c++;
    if (c>7){
        c=0;
        setport(*(cur_char+x));
        x++;
        if (x>num_bit)
            x=0;
    }
}
初始化定时器:
//初始化定时器   1ms周期
TMOD=0x01;
AUXR=0X80;
TH0=0xFC;
TL0=0x18;
EA=1;    
ET0=1;
TR0=1
初始化端口(所有LED共地,高电平有效,因此需要强上拉模式,STC的专用模式):
P1M0=0xFF;         //P1全部强上拉
P1M1=0x00;
P3M0=0x90;         //P3.7和P3.4强上拉,P3.3普通留做按钮
P3M1=0x00;
主程序循环就很简单了,可以在这里加入延时和判断来显示多个变换的图形,我这里只显示心型就满足了:
while(1){
    cur_char=love;        
}

程序真的是很简单啊,分享下:
attachment icon LED.zip 22.02KB ZIP 47次下载
实物尽量的小,用了片洞洞板碎片
IMG_0583.jpg
超小体积:
IMG_0584.jpg
变态的芯片安装方式(主要是因为1-6脚用不上),这样空着还能下程序
IMG_0588.jpg
效果:
   IMG_0582.jpg
+35  科创币    delete    2012/07/02 外观啊&#39;&#39;&#39;&#39;
+20  科创币    向钱看向厚赚    2012/07/02 加个外观就更完美了
+5  科创币    CodyChen    2012/07/02 用更小封装的单片机+贴片led+纽扣电磁就能更小哦
+20  科创币    听我说瞎话    2012/07/02 不错!送给女女她肯定喜欢
+25  科创币    科学人    2012/07/02
+10  科创币    坚持and突破    2012/07/02 小周的作品总是原理讲的很清除! 这外观......改进的空间还很大......
+150  科创币    天易    2012/07/27 外观
来自:电子信息 / 电子技术
26
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
jxs
12年7个月前 IP:未同步
415102
貌似有更小的单片机,不过只有8个脚。。。其实lz可以试试贴片的啊,led也贴片,就能装更多led啦,效果更好啦。。。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
金坷居士作者
12年7个月前 IP:未同步
415103
回 1楼(jxs) 的帖子
贴片洞洞板压力大,如果能PCB的话我可以做更精致的.......
+1
科创币
jxs
2012-07-02
热转印啊。。。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
pl_014
12年7个月前 IP:未同步
415105
据说avr单片机有只有六个引脚的,还不需要晶振电路。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jxs
12年7个月前 IP:未同步
415109
等等,为啥不加上方向感应器?比如水银开关啥的,这样搞不怕重影?
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
金坷居士作者
12年7个月前 IP:未同步
415114
回 4楼(jxs) 的帖子
目有啊
条件太艰苦
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jxs
12年7个月前 IP:未同步
415125
回 5楼(金坷居士) 的帖子
额,细铜线有吧。。。网线里面那种,焊两根上去代替。。。或者安个开关,往一边摇时按下,另一边别按,同样的效果 。。。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
坚持and突破
12年7个月前 IP:未同步
415160
程序如何灌到单片机里?
+1
科创币
delete
2012-07-20
编程器 = =。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
金坷居士作者
12年7个月前 IP:未同步
415162
回 7楼(坚持and突破) 的帖子
用串口+STC专用下载程序即可
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
坚持and突破
12年7个月前 IP:未同步
415166
还是比较麻烦[s:274]算了我也不哄女孩子。我还是用几片CD4017做个流水灯哄我女儿玩吧![s:274]
+1
科创币
jxs
2012-07-03
= = 这个更麻烦吧。。。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
AsyncMaster
12年7个月前 IP:未同步
415181
楼主还想送妹子?呵呵呵呵呵呵呵哈哈哈

看看前人的教训吧。
XXXXXXXXXXXXXXXXXXXXX/XXXXXXXXp?mod=viewthread&tid=4719495
-1
科创币
金坷居士
2012-07-03
手痒痒 抱歉~~~
+1
科创币
猎鹰
2012-07-03
送基友
+1
科创币
布布卡
2012-07-27
。。。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
金坷居士作者
12年7个月前 IP:未同步
415215
回 10楼(-绘梦-) 的帖子
我倒是没这么惨,我把这个东西送给她让她自己研究如何使用...........
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
lvre
12年7个月前 IP:未同步
428112
原来对时钟要求不高啊。。我还以为要求很高了。。准备用51做个24灯的。。。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
vagabondzzz
12年6个月前 IP:未同步
431625
32灯的多好呀,40脚的单片机正好IO口用完,汉字能显示两排。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
美味的氰化钾
12年6个月前 IP:未同步
431857
有没有考虑加入震动电机?
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
q81919119
12年6个月前 IP:未同步
431860
回 14楼(美味的氰化钾) 的帖子
想歪了?!
+1
科创币
张静茹
2013-09-17
你这个治疗方法不佳,我只要选择禁止接受此.
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
yanli12321
12年6个月前 IP:未同步
431868
回 9楼(坚持and突破) 的帖子
啊,话说我在接触单片机之前居然用一大堆74芯片和几个数码管做出了一个电子钟......用了整整六块面包板,线乱的一塌糊涂
+1
科创币
布布卡
2013-08-24
分频 译码。 一开始我也想这样做个钟 后来知道有个东西叫51单片机。 我这有份全硬件的数码管频率计电路
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
zhongjiezhet
11年5个月前 IP:未同步
563369
不用水银开关吗[s:275]
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
xusixteen
11年5个月前 IP:未同步
563402
还是杜洋的思路好,单片机引脚间距中间焊接贴片led,单片机本身就是骨架。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
蓝色雷电
11年5个月前 IP:未同步
642883
[s:8][s:101][s:102][s:105]
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
ywcffc
11年4个月前 IP:未同步
646070
这个不错  
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
布布卡
11年4个月前 IP:未同步
646619
送给妹子之后。 就没有之后了。。

想送的要好好考虑[s:9]
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
金坷居士作者
11年4个月前 IP:未同步
647047
布布卡 发表于 2013-9-30 13:39
送给妹子之后。 就没有之后了。。

想送的要好好考虑


好好考虑+65536

已经分了[s:4]
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
liy
11年3个月前 IP:未同步
650391
借用能量守恒定律:把泡妞动力转化为DIY学习上的典型案例。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
amplepassion
11年3个月前 IP:未同步
653423
楼主好想法啊,等我学会了我也做一个。[s:3]
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
哦DIY
9年10个月前 IP:山东
759275
以前用51做过,比这个大好多。没有用过这个STC11F04E,用这个要实现画面切换应该怎么做啊 ???求解答         还有就是用PCB 的话  电路好像很简单啊 直接把LED和引脚连接就行了吗?
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
所属分类
上级专业
同级专业
金坷居士
学者 机友 笔友
文章
170
回复
1711
学术分
11
2011/09/23注册,4个月6天前活动

怪哉!灵异的三极管电流流向! 这素一个在仿真的RCC电路,示波器上绿色的是集电极电流红色的是发射极电流。窝萌都知道发射姬电流素集电极电流和基极电流之和,所以讲道理发射极电流一定比集电极略大。可仿真结果刷了三观,Q1集电极电流一部分流经基极,然后流经Q2的C->E。

主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}