文号
t47239
阅读
15108
回复
26
收藏
19
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 53次下载
实物尽量的小,用了片洞洞板碎片
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
外观
14年6个月前IP:未同步
415102
1楼
貌似有更小的单片机,不过只有8个脚。。。其实lz可以试试贴片的啊,led也贴片,就能装更多led啦,效果更好啦。。。
引用
评论
14年6个月前IP:未同步
415103
2楼
回 1楼(jxs) 的帖子
贴片洞洞板压力大,如果能PCB的话我可以做更精致的.......
+1
科创币
jxs
2012/07/02
热转印啊。。。
引用
评论
14年6个月前IP:未同步
415105
3楼
据说avr单片机有只有六个引脚的,还不需要晶振电路。
引用
评论
14年6个月前IP:未同步
415109
4楼
等等,为啥不加上方向感应器?比如水银开关啥的,这样搞不怕重影?
引用
评论
14年6个月前IP:未同步
415114
5楼
回 4楼(jxs) 的帖子
目有啊
条件太艰苦
引用
评论
14年6个月前IP:未同步
415125
6楼
回 5楼(金坷居士) 的帖子
额,细铜线有吧。。。网线里面那种,焊两根上去代替。。。或者安个开关,往一边摇时按下,另一边别按,同样的效果 。。。
引用
评论
14年6个月前IP:未同步
415160
7楼
程序如何灌到单片机里?
+1
科创币
delete
2012/07/20
编程器 = =。
引用
评论
14年6个月前IP:未同步
415162
8楼
回 7楼(坚持and突破) 的帖子
用串口+STC专用下载程序即可
引用
评论
14年6个月前IP:未同步
415166
9楼
还是比较麻烦[s:274]算了我也不哄女孩子。我还是用几片CD4017做个流水灯哄我女儿玩吧![s:274]
+1
科创币
jxs
2012/07/03
= = 这个更麻烦吧。。。
引用
评论
14年6个月前IP:未同步
415181
10楼
楼主还想送妹子?呵呵呵呵呵呵呵哈哈哈

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

想送的要好好考虑[s:9]
引用
评论
13年3个月前IP:未同步
647047
22楼
布布卡 发表于 2013-9-30 13:39
送给妹子之后。 就没有之后了。。

想送的要好好考虑


好好考虑+65536

已经分了[s:4]
引用
评论
13年2个月前IP:未同步
650391
23楼
借用能量守恒定律:把泡妞动力转化为DIY学习上的典型案例。
引用
评论
13年1个月前IP:未同步
653423
24楼
楼主好想法啊,等我学会了我也做一个。[s:3]
引用
评论
11年9个月前IP:山东
759275
25楼
以前用51做过,比这个大好多。没有用过这个STC11F04E,用这个要实现画面切换应该怎么做啊 ???求解答         还有就是用PCB 的话  电路好像很简单啊 直接把LED和引脚连接就行了吗?
引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的