摇摇棒制作

合集下载

摇摇棒的制作流程(附带程序和原件清单)

摇摇棒的制作流程(附带程序和原件清单)

摇摇棒的制作大家知道,人的眼睛存在视觉暂留现象,正因为眼睛的反应迟钝,才丰富了人的视觉感受。

LED摇摇棒很好地利用了人眼的视觉暂留特性。

下图是基于51单片机控制、16只高亮度LED发光二极管构成的摇摇棒,配合手的左右摇晃就可呈现一幅完整的画面,可以显示字符、图片等。

实物外形图:基本原理与硬件电路设计:16只LED发光管作为画面每一列的显示,左右摇晃起到了扫描的作用,人眼的视觉暂留现象使得看到的是一幅完整的画面。

与LED点阵的显示有几分相仿。

硬件电路如下图(点击可放大)。

系统电源VCC为5V,下载程序和调试时一定要保证5V电压,实际使用时用3节干电池串联4.5V即可。

AT89S52单片机作为控制器,在它的P0、P2口接有16只以共阳的方式连接的高亮度LED,由单片机输出低电平点亮。

P0口的上拉电阻RA1不能少。

串在LED公共端的二极管D1会产生一定的压降,用来保护LED,经实测LED点亮时两端电压为3V左右,在LED的安全承受范围内。

K1是画面切换开关,用于切换显示不同内容;S1为水银开关。

水银开关的作用:棒在摇动时,只能在朝某一方向摇动时显示,否则会出现镜像字或镜像画面,所以通过接一只水银开关来控制,使摇摇棒从左向右摇动时将内容显示出来。

硬件制作:使用的是直径5mm的红色高亮LED,感觉太大了些,远看效果很好但近看时字不够连贯。

建议使用直径为3mm的高亮LED,颜色可根据个人喜好选择。

水银开关里的水银珠很活跃,导致在接通时容易产生抖动,所以将水银开关斜向上放置(尖尖朝斜上方45°角),靠水银珠自身重力的作用减少抖动:IC座里面隐藏元件,既美观又能保护元件:软件设计:/**********************************************************程序名称:LED摇摇棒显示64*16像素简要说明:外部中断方式INT0显示;取模方式:纵向取模、字节倒序编写:最后更新:08/11/15晚**********************************************************/#include <AT89X52.h>#define uchar unsigned char#define uint unsigned int //宏定义#define KEY P3_0 //定义画面切换按键uchar KY; //KY作用在后面说明uchar disp; //显示汉字指针uchar pic=0,num=0; //pic为按键次数;num为中断次数uchar code love[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x3F,0x00,0x20,0x00,0x20 ,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00 ,0xF8,0x0F,0x04,0x10,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x04,0x10,0xF8,0x0F ,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x07,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x20 ,0x00,0x10,0x00,0x08,0xFE,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x3F,0x82,0x20 ,0x82,0x20,0x82,0x20,0x82,0x20,0x82,0x20,0x82,0x20,0x82,0x20,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,/*LOVE*/};uchar code loveyou[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x78,0x00,0xFC,0x00,0xFE,0x01,0xFE,0x03,0xFE,0x07,0xFE,0x0F,0xFE,0x1F ,0xFC,0x3F,0xF8,0x7F,0xFC,0x3F,0xFE,0x1F,0xFE,0x0F,0xFE,0x07,0xFE,0x03,0xFE,0x01 ,0xFC,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,/*心形图案*/};uchar code hehe[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x01,0x40,0x01,0xC0,0x01,0x00,0x00 ,0x00,0x00,0xF0,0x0F,0x08,0x10,0x04,0x20,0x00,0x00,0x00,0x00,0xF0,0x3F,0x08,0x00 ,0x04,0x00,0x04,0x00,0x04,0x00,0x08,0x00,0xF0,0x3F,0x00,0x00,0x00,0x00,0x00,0x20 ,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0xF0,0x3F,0x08,0x00 ,0x04,0x00,0x04,0x00,0x04,0x00,0x08,0x00,0xF0,0x3F,0x00,0x00,0x00,0x00,0x04,0x20 ,0x08,0x10,0xF0,0x0F,0x00,0x00,0x00,0x00,0xC0,0x01,0x40,0x01,0xC0,0x01,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,/*呵呵o(∩_∩)o图案*/};unsigned char code hanzi[] = {//-- 欢 --0x04,0x10,0x34,0x08,0xC4,0x06,0x04,0x01,0xC4,0x82,0x3C,0x8C,0x20,0x40,0x10,0x30, 0x0F,0x0C,0xE8,0x03,0x08,0x0C,0x08,0x10, 0x28,0x60,0x18,0xC0,0x00,0x40,0x00,0x00, //-- 迎 --0x40,0x00,0x42,0x40,0x44,0x20,0xC8,0x1F, 0x00,0x20,0xFC,0x47,0x04,0x42,0x02,0x41, 0x82,0x40,0xFC,0x7F,0x04,0x40,0x04,0x42, 0x04,0x44,0xFE,0x63,0x04,0x20,0x00,0x00, //-- 使 --0x40,0x00,0x20,0x00,0xF8,0xFF,0x07,0x00, 0x04,0x80,0xF4,0x43,0x14,0x45,0x14,0x29, 0x14,0x19,0xFF,0x17,0x14,0x21,0x14,0x21, 0x14,0x41,0xF6,0xC3,0x04,0x40,0x00,0x00, //-- 用 --0x00,0x80,0x00,0x60,0xFE,0x1F,0x22,0x02, 0x22,0x02,0x22,0x02,0x22,0x02,0xFE,0x7F, 0x22,0x02,0x22,0x02,0x22,0x42,0x22,0x82, 0xFF,0x7F,0x02,0x00,0x00,0x00,0x00,0x00, //-- 神 --0x08,0x01,0x88,0x00,0x49,0x00,0xEE,0xFF, 0x58,0x00,0x88,0x00,0x00,0x00,0xF8,0x1F, 0x88,0x08,0x88,0x08,0xFF,0xFF,0x88,0x08, 0x88,0x08,0xFC,0x1F,0x08,0x00,0x00,0x00, //-- 奇 --0x40,0x00,0x40,0x00,0x44,0x00,0x44,0x3E, 0x64,0x12,0x54,0x12,0x4C,0x12,0x47,0x12, 0x4C,0x3F,0x54,0x42,0x74,0x80,0xC6,0x7F, 0x44,0x00,0x60,0x00,0x40,0x00,0x00,0x00, //-- 魔 --0x00,0x40,0x00,0x30,0xFE,0x8F,0x4A,0x80, 0xAA,0x5F,0x9A,0x4A,0xFE,0x2A,0xAA,0x1A, 0xCB,0x0F,0xAA,0x7A,0xFE,0x8A,0x9A,0xAA, 0xAA,0x8F,0x6B,0x80,0x22,0xE0,0x00,0x00, //-- 幻 --0x80,0x20,0xC0,0x30,0xA0,0x28,0x98,0x24, 0x87,0x22,0x80,0x21,0xC4,0x30,0x04,0x60, 0x04,0x00,0x04,0x20,0x04,0x40,0x04,0x80, 0x04,0x40,0xFE,0x3F,0x04,0x00,0x00,0x00, //-- 摇 --0x10,0x02,0x10,0x42,0x10,0x81,0xFF,0x7F, 0x90,0x04,0x54,0x05,0xCC,0xF4,0xB4,0x44, 0x84,0x44,0xBC,0x7F,0x82,0x44,0xA2,0x44, 0x9B,0xF4,0x82,0x06,0x00,0x04,0x00,0x00, //-- 摇 --0x10,0x02,0x10,0x42,0x10,0x81,0xFF,0x7F,0x90,0x04,0x54,0x05,0xCC,0xF4,0xB4,0x44,0x84,0x44,0xBC,0x7F,0x82,0x44,0xA2,0x44,0x9B,0xF4,0x82,0x06,0x00,0x04,0x00,0x00,//-- 棒 --0x10,0x04,0x10,0x03,0xD0,0x00,0xFF,0xFF,0x90,0x00,0x54,0x05,0x44,0x12,0xD4,0x15,0x74,0x14,0x5F,0xFF,0xD4,0x14,0x54,0x15,0x56,0x12,0x44,0x06,0x40,0x02,0x00,0x00,//-- ! --0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x10,0xFE,0x3B,0xFE,0x3B,0x7C,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};/*****函数声明*****/void display1(void);void display2(void);void display3(void);void display4(void);/*****n(us)延时子程序*****/void DelayUs(uint N){uint x;for(x=0; x<=N;x++);}/*****中断服务程序*****/void intersvr0(void) interrupt 0 using 1{KY=~KY; //每个摇动来回水银开关会在摆幅两端分别产生下降沿中断,只提取其中一次(从左向右摇才显示)if(KY==0){num++; //计算中断次数switch(pic) //选择画面{case 0:{display1();}break;case 1:{display2();}break;case 2:{display3();}break;case 3:{display4();}break;default:{display1();}}}}/*****显示子程序1(汉字)*****/void display1(void){uchar i;if(num>10){disp++;num=0;} //12个汉字分为3次显示完(每次显示4个),每中断10次切换if(disp>2)disp=0;DelayUs(5200); //此处延时时间依各硬件差别而各不相同,试着调整使得显示内容居中即可for(i=0;i<64;i++){P0=~hanzi[disp*128+i*2];P2=~hanzi[disp*128+i*2+1];DelayUs(100);}}/*****显示子程序2(LOVE)*****/void display2(void){uchar i;DelayUs(4000);for(i=0;i<64;i++){P0=~love[i*2];P2=~love[i*2+1];DelayUs(120);}}/*****显示子程序3(心形图案)*****/void display3(void){uchar i;DelayUs(4000);for(i=0;i<64;i++){P0=~loveyou[i*2];P2=~loveyou[i*2+1];DelayUs(120);}}/*****显示子程序4(呵呵o(∩_∩)o图案)*****/void display4(void){uchar i;DelayUs(4000);for(i=0;i<64;i++){P0=~hehe[i*2];P2=~hehe[i*2+1];DelayUs(120);}}/*****主函数*****/void main(void){IT0=1;EX0=1;EA=1; //开中断,下降沿中断KY=0;while(1) //主程序中只检测按键{if(KEY==0) //画面切换键按下{DelayUs(10000); //按键去抖if(KEY==0);pic++;}if(pic>3)pic=0;}}/*****END*****/51最小系统制作材料规格数目价格/带串口万用板 1 10 stc89C52 1 7 按键开关 1 0.2常开按钮开关 2 1 发光二极管(红 5mm)(蓝色 3mm)红色10个,蓝色3个0.1电解电容10uF 2电阻220、417K、1K 20 0.0排阻 4.7K*9P 1 0.3瓷片电容104/30 10 0.0三极管8550 1 0.15V蜂鸣器 1 0.5一位数码管共阴 2 2 单排针 2 0.3 USB-A加配套的USB线 1 1 MAX232 1 2紧锁座40P 1 0.2芯片座IC-16P 1 0.4晶振12M 1 0.8蜂鸣器 1串口线 18550 1 红外编码芯片5104 2DA转换器DAC0832 1单股线5M摇摇棒制作芯片座AT89s52或stc型万用板5mm高亮发光二极管16晶振12M 0.8 130p瓷片电容0.05 10电阻10K 0.01 10电解电容10uF 1二极管IN4007 0.1 1按键开关0.2 1水银开关 1 1排阻10k*8 0.3 1导线(最好为排线)40PZUO电阻1k电解电容 220u40p座。

旋转型摇摇棒的制作

旋转型摇摇棒的制作
得看到的是一幅完整 的画面。与 L D点阵的显示 有几分相仿 。 E 系统 电源 V C为 5 C V,下载程序 和调试 时一 定要保 证 5 V 电压 ,实际使用时用 3节干 电池 串联 4 V即可 。A 8 S 2单 . 5 T95
个小而完善 的计算机系统 。 本设 计就是通过 A 8S 2 1 单 片机机 内的 I T 9 5 6 / O端 口、定 时/ 计数器 1 、定时/ 计数器 2 E R M存储器 、模拟 比较 器 、 、E P O
2 单片机
单 片机是一种集 成 的电路 芯片 ,是采用超 大规模 集成 电 路 技术 把具 有数 据处 理能 力 的 中央处理 器 C U随 机存 储器 P R M、只读存储 器 R M、多种 I A O / O口和 中断 系统 、定时器计 时器 等功能 ( 可能还包括 显示驱动 电路 、脉宽 调制 电路 、模 拟多路转换器 、AD转换器等电路)集成 到一块硅片上构成 的 /
Y U o Ta
(c o l f e l ig ighn, en nPn dn sa 6 0 1 Sh o ahPn dn sa H 'a igigh n4 70 ) oH t
Ab t a t h s p p rd sg e o S C 9 5 i ge c i e t r u i g c mb n t n C ln u g n s e l a g a e b sr c :T i a e e in d t T 8 S 2 sn l — hp c n e , sn o i a i a g a e a d a s mb y l n u g , y o E P 2 ROMAT 4 01 s ra o 2 C e ilc mmu ia in c iv x en l d t tr g u c in h o g h n c t ,a h e e e t r a aa so a e f n t ,tr u h t e MAX7 9 d gtl t b rv o o 2 1 ii u e d i e a c i c iv AN c mmu i ai n a d d s l y s se hpa he eC o n c t n ip a y t m. o

单片机创意摇摇棒制作word资料5页

单片机创意摇摇棒制作word资料5页

# 创新设计16个LED灯的摇摇棒,可显示英文、图形及汉字# 仅需5种元器件(单片机、LED、导线、电池和塑料壳),让DIY简单、快速# 往返双程扫描,慢速摇动也可清晰显示# 敲击字幕切换功能,无需按键操作# 在软件上有很大的升级空间(包括双色显示、LED测光等)-----------------------------------------------------------------------[注意事项]-----------------------------------------------------------------------# HEX文件烧写时需选择“内部RC时钟”# 本制作采用STC12C5A60S2单片机,不可以用其他型号单片机替代# 惯性开关在制作时注意静止时开关柄到左右触点间的距离应尽量相等# 本制作无开关,不用时需取下电池或在电池间塞入绝缘纸片单片机采用STC12C5A60S2(1pcs)- 0805型贴片式LED灯(16pcs)- CR2032钮扣电池(2pcs)- 具有一定弹性的导线和废弃的元器件引脚- 用来包装DIP40脚单片机的塑料壳(1pcs)- 确保单片机可以放入并有较大余地- 用钳子将P0、P2接口所在一侧的引脚全部向外弯折- 目的是保证将单片机放入塑料壳时不会左右乱窜- 弯折时尽量不断放入塑料壳中比对- 擦拭弯折后的引脚表面确保无污物可以顺利上锡- 用摄子取出贴片LED灯并焊接在单片机引脚上- 从P2.0引脚开始焊接左边焊LED负极(P2.0负极、P2.1正极)- 依次焊接16个LED灯到P0.2引脚为止- 将一支废弃元器件引脚对折并焊接在弹性导线上- 弹性导线的另一端焊接在单片机的第20脚上(GND)注意掌握导线长度- 将P1.3引脚弯折至芯片底部再用废弃元器件引脚向上延长P1.2引脚- 使之形成惯性开关的两个触点再把P1.4引脚略向内弯曲形成侧撞触点- 把一支废弃的元器件引脚焊接在单片机的第40脚上(VCC)- 再取一段导线将一端焊接在单片机的第20脚上(GND)- 导线另一端的接头处挂大量的锡- 用胶带固定导线使之在摇动时不易乱窜- 此时在单片机一侧形成了电源的正、负极接口将钮扣电池重叠后放入正、负极接口处- 最后将单片机连同电池一并塞进塑料壳中- 用透明胶带把开口处包好 - 因摇动时的离心力向上所以单片机及电池不会向下滑落无需设计下方固定希望以上资料对你有所帮助,附励志名言3条:1、常自认为是福薄的人,任何不好的事情发生都合情合理,有这样平常心态,将会战胜很多困难。

摇摇棒制作教程

摇摇棒制作教程

摇摇棒制作教程
 本摇摇棒设计所用的软件是proteus8.3 很多原件都没有都是自己画出来的所以做出来的板子不是太理想主要就是焊盘量身定做没有画的稍大点导致焊接很不爽别的貌似没啥了如果你们感觉我哪里做的不好欢迎批评(o゚v゚)ノ
 这些都是电脑上设计的图。

无奈proteus 只能输出cam文件去给人家打板。


 反正最后是吧板子做出来了一共十一张板子每张板子2套体积大约是2*10*1cm
 很小吧~( ̄▽ ̄~)(~ ̄▽ ̄)~
 下面就是制作过程咯~~ 一张大板子。

还得自己切开
 一个摇摇棒分为两个板子一个是摇摇棒本身的主要电路另一个是电池以及充电电路开关神马的。

摇摇棒的制作汇总

摇摇棒的制作汇总

指导教师填阅指导教师评语:实习报告成绩:指导教师签名:时间:年月日【前言】大家都知道,人的眼睛存在视觉暂留现象,而正因为眼睛的反应迟钝,才丰富了人的视觉感受。

16LED摇摇棒正是很好地利用了人眼的视觉暂留特性,而产生了奇妙的效果!本次试验通过掌握单片机及其开发流程,综合模拟电子技术和数字电子技术,掌握以单片机为核心的电子系统体系,从而更熟悉单片机在实际生活中的应用。

并且摇摇棒的制作成本低,扩展性好,为以后做个小东西打下基础,而且通过编写程序,控制在摇摆的时侯显示设计的内容,1实习目的1.1非常重要的实践教学环节1.2培养理论知识与生产实际相结合的能力1.3了解单片技术1.4锻炼实际动手能力,掌握电子线路焊接、装配的基本技能1.5了解并掌握本专业软硬件设计的一些基本问题2实习时间及进程安排周次:19-21周每天:早上:8:30-11:00下午:15:00-17:303实习单位部门地点西安工业大学六号教学楼电子实验4实验内容4.1 视觉暂留原理人眼在观察景物时,光信号传入大脑神经,需经过一段短暂的时间,光的作用结束后,视觉形象并不立即消失,这种残留的视觉称“后像”,视觉的这一现象则被称为“视觉暂留”。

是光对视网膜所产生的视觉在光停止作用后,仍保留一段时间的现象,其具体应用是电影的拍摄和放映。

原因是由视神经的反应速度造成的.其值是二十四分之一秒。

是动画、电影等视觉媒体形成和传播的根据。

视觉实际上是靠眼睛的晶状体成像,感光细胞感光,并且将光信号转换为神经电流,传回大脑引起人体视觉。

感光细胞的感光是靠一些感光色素,感光色素的形成是需要一定时间的,这就形成了视觉暂停的机理。

16只LED发光管作为画面每一列的显示,快速左右摇晃起到了扫描的作用,视觉暂留会使影像在人眼视觉中保留一段时间,因而人眼可以看到一幅完整的画面。

4.2 89C51单片机介绍89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压、高性能CMOS8位微处理器,俗称单片机。

LED摇摇棒实际制作图文教程【含汇编程序】

LED摇摇棒实际制作图文教程【含汇编程序】

LED摇摇棒实际制作图文教程【含汇编程序】LED摇摇棒实际制作图文教程【含汇编程序】总体介绍:大家知道,人的眼睛存在视觉暂留现象,正因为眼睛的反应迟钝,才丰富了人的视觉感受。

意思是时间小于1/24秒人就分辨不出了,LED摇摇棒很好地利用了人眼的视觉暂留特性。

配合手的左右摇晃就可呈现一幅完整的画面,可以显示字符、图片等。

讲白了就和点阵的显示没什么去别,只是你的手摇晃的过程代替了点阵的片选。

下面是总体的设计电路图:D1是电源指示灯,习惯性做法,是为了更好的了解你电路的物理现象。

下面是摇摇棒的效果图:硬件模块:总体电路图有了我就说一下,焊接步骤及需要注意的细节,第一步:焊好16个LED灯,当然个数随喜好而定,LED颜色也随喜好,但最好不要用白光。

(正面) (背面)第二步:焊单片机最小系统元件放在里面一是为了保护元器件;二是为了美观、好看。

这里注意一下:我们可以在单片机的TXD和RXD及地那里接出来三根排针,接到单片机开发板上的TXD、RXD和地。

是为了烧程序方便,不用每烧一次程序就把它取出来,这样既减少了操作也减少了对单片机的损坏。

第三步:接线(正面)反面第四步:完成,还有按键和水银开关没接,等会会介绍。

总体以焊好下面介绍切换按键和水银开关的接发和作用。

1、水银开关在这里起的是防止镜像文字,深沉点给单片机一个下降沿的触发。

镜像文字通俗点讲是希望当文字向左晃动显示,向右晃动时不让其显示。

但如果没有水银开关给个中断的话,文字会一直显示,造成两排文字重叠在一起。

使人看不清。

当然我们要避免这种情况就接了个水银开关。

水银开关的安放最好是与LED成45度角,既容易触发、减少抖动也是为了安全,当装好后,可以用胶把它封起来,这样就避免了水银开关的破碎。

2、按键开关主要是为了切换模式,这个比较简单,端口随便接哪都可以,我接的是P0.2,软件模块:;===================================================== ;=====程序名称:摇摇棒================================ ;=====硬件说明:16个LED分别接P1、P2口,水银开关接P3.2,;===============按键开关接P0.2======================== ;=====软件说明:采用查表方式,外部中断0===============;=====程序编辑时间:2010-11-14-11-15================== ;=====程序编辑人:李阳辉============================== ;=====所用芯片:STC89C52============================== ;=====所用晶振:12MHz================================= ;=====版本:V1.0====================================== ;=====当前进度:完成================================== ;=====程序完成时间:2010-11-16-10-20================== ;================================================== === ;=====分配单元地址==================================== OUTPUT1 EQU 31H ;P2口查表的暂存器OUTPUT2 EQU 30H ;P1口查表的暂存器COUNT1 EQU 32HC1 EQU 33HC2 EQU 34HC3 EQU 35H C4 EQU 36H C5 EQU 37H C6 EQU 38H C7 EQU 39H C8 EQU 3AH C9 EQU 3BH C10 EQU 3CH KEY BIT P0.2ORG 0000H ;起始地址JMP RESETORG 0003H ;外部中断入口地址JMP INTORG 0030H/*===========================================复位程序===========================================*/RESET:MOV C1,#00H ;偏移量MOV C2,#00HMOV C3,#00HMOV C4,#00H/*MOV C5,#00HMOV C6,#00HMOV C7,#00HMOV C8,#00HMOV C9,#00HMOV C10,#00H */MOV OUTPUT1,#00HMOV OUTPUT2,#00HSETB KEY ;把P0.2置高,作为输入口MOV COUNT1,#00HSETB EX0 ;分中断SETB EA ;总中断SETB IT0 ;启动/*========================================== 主程序==========================================*/ MAIN:CALL KEY_SCANCALL NOADLJMP MAIN/*========================================= 按键处理程序只做了两种模式,大家可以再加=========================================*/ KEY_SCAN:JB KEY,KEY_RETLCALL DELAYJB KEY,KEY_RETINC COUNT1INC COUNT1MOV A,COUNT1CJNE A,#4,KEY_DMOV COUNT1,#00HKEY_D:JNB KEY,$KEY_RET:RET/*========================================== 散转程序==========================================*/ NOAD:MOV DPTR,#TAB_B ;设置散转表地址MOV A,COUNT1JMP @A+DPTRTAB_B: ;散转表AJMP OPR_0AJMP OPR_2OPR_0:MOV DPTR,#TAB1MOV A,C1MOVC A,@A+DPTRMOV OUTPUT1,AMOV DPTR,#TAB2MOV A,C2MOVC A,@A+DPTRMOV OUTPUT2,AMOV P2,OUTPUT1 MOV P1,OUTPUT2 CALL DELAYINC C1INC C2MOV A,C2CJNE A,#64,OPR_0 MOV C1,#00H MOV C2,#00H LJMP OPR_RET OPR_2:MOV DPTR,#TAB3 MOV A,C3MOVC A,@A+DPTR MOV OUTPUT1,A MOV DPTR,#TAB4 MOV A,C4MOVC A,@A+DPTR MOV OUTPUT2,A MOV P2,OUTPUT1 MOV P1,OUTPUT2 CALL DELAYINC C3INC C4MOV A,C4CJNE A,#64,OPR_2MOV C3,#00HMOV C4,#00HLJMP OPR_RETOPR_RET:RET/*===========================================中断处理程序===========================================*/ INT:MOV P1,#0FFHMOV P2,#0FFHCALL DELAYRETI/*===========================================延时程序===========================================*/ DELAY:MOV R7,#3D1: MOV R6,#0E0HDJNZ R6,$DJNZ R7,D1RET;===========================真心爱你========================== TAB1: DB0FFH,0F7H,0F3H,0F7H,0F7H,0F7H,0F0H,0F7H,0C7H,0E7H,0B7H,0CBH,0EFH,0 F0H,0FBH,0FDHDB0FFH,0F9H,0F8H,0ABH,0AH,0B2H,0BAH,0A2H,0DBH,0DAH,0C2H,0DAH,0DBH,0E8H ,0F9H,0FFHDB0FFH,0E1H,0DEH,0BFH,0BFH,0BFH,0DFH,0EFH,0EFH,0DFH,0BFH,0BFH,0BFH,0DE H,0E1H,0FFHDB0FFH,0FFH,0DFH,0DFH,0DFH,0D0H,0D5H,0A5H,95H,0D5H,0A5H,0D0H,0DFH,0DFH ,0FFH,0FFHTAB2:DB0FFH,0FFH,0CFH,0BFH,7FH,0FFH,03H,0F7H,0EFH,7FH,0BFH,0DFH,0FFH,03H,0F FH,0FFHDB0FFH,0FFH,0FCH,0FCH,0CCH,0CBH,0C7H,0CBH,5CH,9FH,0EFH,0F7H,0FBH,0FDH, 0FFH,0FFHDB0FFH,0FFH,0FFH,7FH,0BFH,0DFH,0EFH,0F7H,0F7H,0E7H,0DFH,0BFH,7FH,0FFH, 0FFH,0FFHDB0FFH,0DFH,0DFH,0DDH,0DBH,17H,4FH,5FH,5FH,5FH,4FH,07H,0DBH,0DDH,0DFH, 0FFH;=========================新年快乐============================TAB3:DB0FFH,0FFH,0FEH,0FEH,0BEH,0BEH,0DEH,0DEH,0D8H,0DEH,0DEH,0EEH,0EEH,0E0 H,0FFH,0FFHDB0FFH,0FFH,0FFH,0F8H,0FBH,0FBH,0E0H,0FBH,0FBH,0FEH,0FDH,0FBH,80H,0 FFH,0F8H,0FFHDB0FFH,0FFH,0FFH,0F7H,0F7H,0F5H,0F5H,0F0H,0F5H,0F5H,0F5H,0D4H,0E7H,0F7 H,0F8H,0FFHDB0DEH,0DEH,0DEH,0DEH,0EEH,0EEH,0E0H,0FFH,0EEH,0E6H,0EAH,0ECH,0CCH,0AA H,0E6H,0EEHTAB4:DB0FFH,0FFH,0F7H,0EFH,0DFH,0BFH,0FFH,0FFH,01H,0FBH,0F7H,0BFH,0DFH,0EFH ,0F7H,0FFHDB0BFH,0BFH,0BBH,37H,0AFH,9FH,3FH,9FH,0AFH,0B7H,0BBH,0FFH,01H,0FFH,0FF H,0FFHDB0DFH,0DFH,0DFH,0DFH,0DFH,0DFH,0DFH,01H,0DFH,0DFH,0DFH,1FH,0DFH,0DFH, 0DFH,0FFHDB0FFH,0FFH,0FFH,01H,0FFH,0FFH,0FH,0F1H,0FFH,0EFH,8FH,0B0H,03H,0B7H,9F H,0EFH;=======================================================END ;结束。

摇摇棒的设计

摇摇棒的设计

系 别: 电 子 信 息 系专 业: 电 子 信 息 工 程 班 级: B110301 学 号: B1030114 姓 名: 刘云飞 指导教师: 张妮 实习题目: 摇摇棒的设计 实习地点: 电子实验室教务处印制2014 年 7 月 9 日生产实习报告指导教师填阅摇摇棒的设计制作及调试一前言:今年暑假学校给我们安排了很多的实习和课程设计。

这次生产实习摇摇棒的制作就是其中一个,本次实习介绍了一种新型的LED彩灯控制系统的设计方法,以单片机作为主控核心,与按键、水银开关等较少的辅助硬件电路相结合,利用软件实现对LED彩灯进行控制。

本系统具有体积小、硬件少、电路结构简单及容易操作等优点。

摇摇棒就是基于人的视觉暂留原理的,通过分时刷新16个发光二极管来显示输出文字或图案等信息的显示装置。

基本原理与硬件电路设计:16只LED发光管作为画面每一列的显示,左右摇晃起到了扫描的作用,人眼的视觉暂留现象使得看到的是一幅完整的画面。

与LED点阵的显示有几分相仿。

本次设计要求制作完成一个LED灯显示的摇摇棒,16个LED灯一字纵向排列,通过摇动时形成的亮灯扇形区域来显示预先设定的汉字或图案,且可以用按键对所显示内容进行切换。

2、水银开关的作用:棒在摇动时,只能在朝某一方向摇动时显示,否则会出现镜像字或镜像画面,所以通过接一只水银开关来控制,使摇摇棒从左向右摇动时将内容显示出来。

3、硬件制作:使用的是直径3mm的红色LED,颜色可根据个人喜好选择。

水银开关里的水银珠很活跃,导致在接通时容易产生抖动,所以将水银开关斜向上放置(尖尖朝斜上方45°角),靠水银珠自身重力的作用减少抖动。

二实习目的1.非常重要的实践教学环节2.培养理论知识与生产实际相结合的能力3.了解单片技术4.锻炼实际动手能力,掌握电子线路焊接、装配的基本技能5.了解并掌握本专业软硬件设计的一些基本问题三实习时间,及进程安排6月28日至6月29日:理论学习及讲座阶段,上午讲座下午及课外时间进行资料收集,查找及学习。

摇摇棒原理

摇摇棒原理

摇摇棒原理摇摇棒是一种常见的玩具,在儿童中非常受欢迎。

它的原理是通过摇动手柄,使内部的小球滚动,并且发出清脆的声音,给人一种愉悦的感觉。

那么,摇摇棒的原理是什么呢?摇摇棒的主要构成部分是手柄和内部的小球。

手柄通常由塑料或木材制成,形状多样,可以根据个人喜好选择。

而内部的小球则通常由金属或塑料制成,大小适中,使得摇动时能够滚动起来。

当我们摇动手柄时,手柄会带动内部的小球进行旋转。

这是因为手柄与小球之间通过一个轴连接,当手柄摇动时,轴会带动小球一起旋转。

而小球的旋转会产生离心力,使得小球向外移动。

当小球向外移动时,它会撞击到摇摇棒的壁面上。

这时,小球的动能会转化为声能,产生清脆的声音。

这个声音往往会让人感到愉悦和满足,增加了摇摇棒的趣味性。

除了声音,摇摇棒的运动还会产生其他一些效果。

例如,当小球撞击到摇摇棒的壁面上时,摇摇棒本身也会受到一定的冲击力。

这个冲击力可以传递给手柄和手部,给人一种触觉上的反馈。

同时,摇摇棒的运动也可以让人产生一种视觉上的快感,特别是当小球旋转速度较快时,会形成一条连续的轨迹线,给人一种动感的视觉效果。

可以说,摇摇棒的原理是通过手动摇动手柄,使内部的小球旋转,并通过撞击产生声音和其他一些效果,从而增加了玩具的趣味性。

除了娱乐用途,摇摇棒的原理还可以应用到一些实际的领域中。

例如,在一些机械设备中,摇摇棒的原理可以用于传递力量或信号。

通过将摇摇棒的结构进行改进,可以使其具有更强的承载能力或更稳定的运动性能,从而满足不同的需求。

摇摇棒是一种简单但有趣的玩具,其原理是通过手动摇动手柄,使内部的小球旋转,并通过撞击产生声音和其他一些效果。

摇摇棒的原理不仅适用于娱乐领域,还可以应用到一些实际的工程中。

无论是在儿童玩耍还是在工程设计中,摇摇棒都有着广泛的应用前景。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

图片显示子程序



/*********图片显示子程序**********/ void display_pic(unsigned char code *pic) 显示16*16点阵图 { unsigned char i; for(i=0;i<16;i++) { P1=~pic[i*2]; P2=~pic[i*2+1]; delay(1); } }
外部中断0 服务程序



void intersvr0(void) interrupt 0 using 1 //使用外部中断0 { KY=~KY; if(KY==0) { num++; //计算中断次数 } if(TimeCount<800) return; //中断去抖4500 data1=0xff; //清显示 data2=0xff; DelayTime=TimeCount/200;//设定每次延时时钟周期数=总时间/(16列*2组 *1个字)640 TimeCount=0; //延时周期计数清零 delay(70); //延时20列 display(); data1=0xff; data2=0xff; while(P32==1);//每个摇动来回水银开关会在摆幅两端分别产生下降沿中断, //只提取其中一次(从左向右摇才显示),根据自己的硬件结 构调整是等于0或1 }

水银开关里的水银珠很活跃,导致在接通时 容易产生抖动,所以将水银开关斜向上放置 (尖尖朝斜上方45°角),靠水银珠自身 重力的作用减少抖动
IC座里面隐藏元件,既美观又能保护元件
软件设计

控制方式简介:外部中断方式INT0显示; 取模方式:从上到下从左到右,纵向8点下 高位



/********************************************************** 名称:LED摇摇棒64*16像素 说明:外中断方式INT0显示;取模方式:从上到下从左到右,纵向8点下高位 **********************************************************/ #include"STC89.h" #define uchar unsigned char #define uint unsigned int //宏定义 /*********外部接口定义**********/ #define data1 P1 //16位数据低8位 #define data2 P2 //16位数据高8位 #define KEY P34 //定义画面切换按键
显示内容选择子程序





/*********显示内容选择子程序**********/ void display(void) { switch(pic) //选择画面 { case 0:{display_yry();}break; case 1:{display2();}break; case 2:{display3();}break; case 3:{display4();}break; case 4:{display_lzd();}break; case 5:{display1();}break; case 6:{display_dzxxgc();}break; //case 7:{display_hllow();}break; default:{display1();} } }


/*********全局变量定义**********/ unsigned long int TimeCount=0; //定时器单位时间计数 unsigned int DelayN=80; //延时临时计数 unsigned int DelayTime=80; //每次延时的周期个数 unsigned unsigned unsigned unsigned char char char char KY; //计数开关 disp; //显示汉字指针 pic=0; //按键次数; num=0; //中断次数
定时器0 中断服务程序


/***定时器0 中断服务程序****/ void timer0(void) interrupt 1 using 2 时器1中断子程序 { if(TimeCount < 65536) TimeCount++; if (DelayN!=0) DelayN--; }
基本原理与硬件电路设计


16只LED发光管作为画面每一列的显示, 左右摇晃起到了扫描的作用,人眼的视觉 暂留现象使得看到的是一幅完整的画面。 与LED点阵的显示有几分相似。 硬件电路如下图

系统电源VCC为5V,下载程序和调试时一 定要保证5V电压,实际使用时用4节南孚电 池串联4.8V即可。AT89S52单片机作为控 制器,在它的P0、P2口接有16只以共阳的 方式连接的高亮度LED,由单片机输出低电 平点亮。P0口的上拉电阻RA1(4.7k)不 能少。串在LED公共端的二极管D1会产生 一定的压降,用来保护LED,经实测LED点 亮时两端电压为3V左右,在LED的安全承 受范围内。K1是画面切换开关,用于切换 显示不同内容;S1为水银*子程序声明**********/ /*****函数声明*****/ void SysInit(void);
void void void void void void void void void void display1(void); display2(void); display3(void); display4(void); DelayUs(uint N); delay(unsigned char n); display_lzd(void); display_yry(void); display_dzxxgc(void); display_hllow(void); //显示16*16点阵图
//
显示(汉字)

/*****显示(汉字)*****/ void display_lzd(void) { uchar i; if(num>10){disp++;num=0;} //12个汉字分为3次显示完(每 次显示4个),每中断10次切换 if(disp>2)disp=0; for(i=0;i<64;i++) { P1=~GB_16[disp*128+i*2]; P2=~GB_16[disp*128+i*2+1]; delay(1); }

水银开关的作用:棒在摇动时,只能在朝 某一方向摇动时显示,否则会出现镜像字 或镜像画面,所以通过接一只水银开关来 控制,使摇摇棒从左向右摇动时将内容显 示出来
硬件制作

使用的是直径5mm的红色高亮LED,感觉 太大了些,远看效果很好但近看时字不够 连贯。建议使用直径为3mm的高亮LED, 颜色可根据个人喜好选择。
//定
初始化程序

void SysInit(void) { IT0=1; EX0=1; //下降沿中断 IP=0x02; //设置中断优先级,T0高优先级 TMOD=0x02; //定时器0方式2,8位重装载 TH0=0x80; //设定定时器初值 TL0=0x80; ET0=1; //定时器0中断允许 TR0=1; //启动定时器0,开始计时 EA=1; KY=0; //开中断

}
完了

做完这些,你只需要把程序下载,就行啦!





}
n(us)延时子程序



/*****n(us)延时子程序*****/ void DelayUs(uint N) { uint x; for(x=0; x<=N;x++); }
自适应延时子程序

/*********自适应延时子程序**********/ void delay(unsigned char n) { for(;n>0;n--) { DelayN=DelayTime; while (DelayN); } }



void display(void); void display_pic(unsigned char code *pic);
主函数



/*****主函数*****/ void main(void) { SysInit(); display_pic(GB_16); while(1) //主程序中只检测按键 { if(KEY==0) //画面切换键按下 { DelayUs(5000); //按键去抖处理 if(KEY==0) { pic++; if(pic > 6) {pic = 0;} while(KEY == 0);//等待按键释放 } } }; }
LED摇摇棒制作
电信09 李正东 2012.10.12
简介


大家知道,人的眼睛存在视觉暂留现象, 正因为眼睛的反应迟钝,才丰富了人的视 觉感受。 LED摇摇棒很好地利用了人眼的视觉暂留 特性。下图是基于51单片机控制、16只高 亮度LED发光二极管构成的摇摇棒,配合 手的左右摇晃就可呈现一幅完整的画面, 可以显示字符、图片等。
相关文档
最新文档