一、作品说明 摇摇棒是如今流行的一种玩具,在各种聚会、节日中均见得到它的身影。本设计也追随着摇摇棒的原理,利用人眼的视觉暂留特性,通过AT89S52单片机对16只高亮度LED发光二极管进行控制, 配合手的左右摇晃就可呈现一幅完整的画面。 该摇摇棒具有如下功能:1) 显示 “欢迎使用神奇魔幻摇摇棒!”;2) 显示 “o(∩_∩)o”微笑图案;3) 显示 心形图案;4) 显示 “LOVE”;5) 可以通过开关实现转换,轮流显示并循环。
二、系统总体设计
1、总体方案比较与论证所谓的“摇摇棒”,其实就是一个循环的LED显示,利用人的视觉滞留产生静态显示的现象。要实现这个目标,就要求延时部分做的比较小,所以采用石英晶体振荡器。而目前能够实现这种功能的器件有很多种,不同的类型的器件也能够很好的完成。本作品本着方便、价格低廉的原则,采用单片机控制,由水银开关的闭合对单片机产生外部中断,从而对中断进行采集。到达一定数量便进行图象的转换。整个系统由单片机控制模块,开关及电源模块和输出显示模块三个部分构成。2、主要部件原理 (1)单片机控制模块 用单片机想要控制LED显示只需要定时输出就可以,但每个人摇动的速度不一样,如何准确的并稳定的变换图案呢?这就需要用到外部中断。将水银开关的两个引脚一端接VCC,一端接GND,这样的话,当摇棒向一边运动时LED按照程序编辑好的规律显示,而向另一边运动时LED全灭,此时一个周期就会产生一个下跳沿的信号,信号传递给单片机的nINT0产生中断,对中断的数量计数,当计到10时便转换显示的图案,当依次显示完后便回到初始状态进行循环。由于人的视觉滞留时间长达0.1s,所以在每显示完一列LED后加入一段合适的延时,如5ms,每个字之间加入延时如15ms,这样,我们就能看到静态的稳定的字,并且每个字之间是有空隙的。为了让字能够在空间的中部显示,在启动中断显示后延时一段合适的时间,使棒在半圆轨迹的大约1/4处开始显示,这样看到的字方向上才比较正。 (2水银开关 水银开关,又称倾侧开关,是电路开关的一种,以一接著电极的小巧容器储存著一小滴水银,容器中多数注入惰性气体或真空。 仔细观察水银开关,实际上他是一个封闭的玻璃管,里面有两个分开着的导线和一段水银球,当玻璃管的平衡位置变化时,水银球会来回移动,当水银球移动到两根导线时,因水银是金属-导体,故电路变为通路,此时接收器处于工作状态;反之,水银球远离两根导线时为断路,此时接收器处于非工作状态。本设计采用震动开关代替水银开关,试验测试发现,水银开关多次高频率的接通断开后触点会氧化,容易接触不良,因此改用下面的震动开关。
3、系统设计 本系统包括单片机控制模块,开关及电源模块和输出显示模块三个部分。单片机控制模块由Keil C进行编写,实现起来简单,主要有三部分,主程序、中断服务部分还有字符点阵。开关及电源模块采用5V变压器并配合水银开关使用。输出显示模块采用16个LED灯,在版上一字排开。
三、硬件设计硬件连接上用水银开关产生的电平转换引发中断,传递给单片机,再由单片机调用点阵文件输出到LED上。AT89S52单片机作为控制器,在它的P0、P2口接有16只以共阳的方式连接的高亮度LED,由单片机输出低电平点亮。P0口处接上拉电阻RA1。串在LED公共端的二极管D1会产生一定的压降,用来保护LED。K1是画面切换开关,用于切换显示不同内容;S1为水银开关。系统电源VCC为5V,实际使用时用3节干电池串联4.5V即可。16只LED发光管作为画面每一列的显示,左右摇晃起到了扫描的作用,人眼的视觉暂留现象使得看到的是一幅完整的画面。水银开关的作用:棒在摇动时,只能在朝某一方向摇动时显示,否则会出现镜像字或镜像画面,所以通过接一只水银开关来控制,使摇摇棒从左向右摇动时将内容显示出来。
四、软件设计软件部分包括主函数程序、中断服务程序、延时子程序以及四个显示子程序。软件设计流程如下: 五、系统调试与分析主要测试单片机的工作情况,能否正常用LED显示出各图案,并且记录各图案持续的时间和稳定显示度以及一个循环周期所用的时间。并且检查LED的发光亮度,使之可以明显的分辩出来。图 案稳定程序欢迎使用神奇魔幻摇摇棒较稳定心形较稳定笑脸较稳定LOVE较稳定经过测试,当摆动的幅度和速度适当时,各个画面均可以明显的显示出来。整体来说,本方案设计比较成功。
Altium Designer画的原理图和PCB图如下:
单片机源程序如下:
#include #define uchar unsigned char #define uint unsigned int //宏定义 sbit KEY=P1^0; uchar KY; //KY作用在后面说明 uchar disp; //显示汉字指针 uchar pic=0,num=0; //pic为按键次数;num为中断次数 uchar code love[] = { 0x80,0x40,0x40,0x40,0x30,0x42,0x1E,0x42,0x10,0x42,0x10,0x42,0x10,0x42,0xFF,0x7F, 0x10,0x42,0x10,0x42,0x10,0x42,0x10,0x42,0x10,0x42,0x10,0x40,0x00,0x40,0x00,0x00,/*"生",0*/ /* (16 X 16 , 宋体 ) */ 0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0x82,0x40,0x82,0x40,0x82,0x40,0x82,0x40, 0x82,0x40,0x82,0x40,0x82,0x40,0xFE,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"日",1*/ /* (16 X 16 , 宋体 ) */ 0x00,0x01,0xE0,0x00,0x00,0x00,0xFF,0xFF,0x10,0x00,0x20,0x81,0x08,0x41,0x08,0x31, 0x08,0x0D,0xFF,0x03,0x08,0x0D,0x08,0x31,0xF8,0x41,0x00,0x81,0x00,0x81,0x00,0x00,/*"快",2*/ /* (16 X 16 , 宋体 ) */ 0x00,0x00,0x00,0x20,0xE0,0x10,0x9C,0x08,0x84,0x06,0x84,0x40,0x84,0x80,0xF4,0x7F, 0x82,0x00,0x82,0x00,0x83,0x02,0x82,0x04,0x80,0x08,0x80,0x30,0x00,0x00,0x00,0x00,/*"乐",3*/ /* (16 X 16 , 宋体 ) */ }; uchar code loveyou[] = { 0x00,0x08,0x08,0x08,0x88,0x08,0x88,0x08,0x89,0x08,0x8E,0x08,0x88,0x08,0xF8,0xFF, 0x88,0x08,0x8C,0x08,0x8B,0x08,0x88,0x08,0x88,0x08,0x08,0x08,0x00,0x08,0x00,0x00,/*"羊",0*/ /* (16 X 16 , 宋体 ) */ 0x00,0x04,0x20,0x04,0x18,0x04,0xC7,0x07,0x44,0x04,0x44,0x04,0x44,0x04,0x44,0x04, 0xFC,0xFF,0x44,0x04,0x44,0x04,0x44,0x04,0x44,0x04,0x04,0x04,0x00,0x04,0x00,0x00,/*"年",1*/ /* (16 X 16 , 宋体 ) */ 0x20,0x80,0x20,0x80,0x20,0x40,0x20,0x20,0x20,0x10,0x20,0x0C,0x20,0x03,0xFF,0x00, 0x20,0x03,0x20,0x0C,0x20,0x10,0x20,0x20,0x20,0x40,0x20,0x80,0x20,0x80,0x00,0x00,/*"大",2*/ /* (16 X 16 , 宋体 ) */ 0x08,0x00,0x08,0x00,0x88,0x00,0x88,0xFC,0x88,0x44,0x88,0x44,0x88,0x44,0xFF,0x44, 0x88,0x44,0x88,0x44,0x88,0x44,0x88,0xFC,0x88,0x00,0x08,0x00,0x08,0x00,0x00,0x00,/*"吉",3*/ /* (16 X 16 , 宋体 ) */ }; uchar code hehe[] = { 0x40,0x80,0x48,0x7E,0x48,0x10,0xFF,0x3F,0x48,0x44,0x48,0x44,0x00,0x40,0xF8,0x4F, 0x08,0x44,0x08,0x50,0xFF,0x49,0x08,0x46,0x89,0x49,0x6A,0x5C,0x00,0x40,0x00,0x00,/*"越",0*/ /* (16 X 16 , 宋体 ) */ 0x00,0x21,0x08,0x21,0x08,0x11,0x28,0x11,0xC8,0x09,0x08,0x05,0x08,0x03,0xFF,0xFF, 0x08,0x03,0x08,0x05,0x88,0x09,0x68,0x11,0x08,0x11,0x08,0x21,0x00,0x21,0x00,0x00,/*"来",1*/ /* (16 X 16 , 宋体 ) */ 0x40,0x80,0x48,0x7E,0x48,0x10,0xFF,0x3F,0x48,0x44,0x48,0x44,0x00,0x40,0xF8,0x4F, 0x08,0x44,0x08,0x50,0xFF,0x49,0x08,0x46,0x89,0x49,0x6A,0x5C,0x00,0x40,0x00,0x00,/*"越",2*/ /* (16 X 16 , 宋体 ) */ 0x44,0x00,0x54,0xFF,0x54,0x15,0x7F,0x55,0x54,0x95,0x54,0x7F,0x44,0x00,0x00,0x80, 0xFE,0x63,0x02,0x1C,0xF2,0x03,0x02,0x7C,0x02,0x80,0xFE,0x83,0x00,0xE0,0x00,0x00,/*"靓",3*/ /* (16 X 16 , 宋体 ) */ }; unsigned char code hanzi[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",0*/ /* (8 X 16 , 宋体 ) */ 0x08,0x02,0x08,0x01,0x89,0x00,0xEE,0xFF,0x98,0x80,0x00,0x43,0x7E,0x20,0x42,0x18, 0xC2,0x07,0x42,0x00,0x42,0x00,0xC2,0x3F,0x42,0x40,0x7E,0x40,0x00,0x78,0x00,0x00,/*"祝",1*/ /* (16 X 16 , 宋体 ) */ 0x00,0x08,0x00,0x04,0x7F,0x02,0x55,0xFF,0xD5,0x55,0x55,0x55,0x7F,0x55,0x00,0x55, 0xFF,0x7F,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0x55,0x00,0x41,0x00,0x00,0x00,0x00,/*"瞿",2*/ /* (16 X 16 , 宋体 ) */ 0x82,0x00,0x62,0x00,0x2A,0xF8,0xAA,0xAA,0xAF,0xAA,0xAA,0xAA,0x2A,0xA8,0xFA,0xFB, 0x2A,0xA8,0xAA,0xAA,0xAF,0xAA,0xAA,0xAA,0x2A,0xF8,0xA2,0x00,0x62,0x00,0x00,0x00,/*"蕾",3*/ /* (16 X 16 , 宋体 ) */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",4*/ /* (8 X 16 , 宋体 ) */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",0*/ /* (8 X 16 , 宋体 ) */ 0x08,0x02,0x08,0x01,0x89,0x00,0xEE,0xFF,0x98,0x80,0x00,0x43,0x7E,0x20,0x42,0x18, 0xC2,0x07,0x42,0x00,0x42,0x00,0xC2,0x3F,0x42,0x40,0x7E,0x40,0x00,0x78,0x00,0x00,/*"祝",1*/ /* (16 X 16 , 宋体 ) */ 0x00,0x08,0x00,0x04,0x7F,0x02,0x55,0xFF,0xD5,0x55,0x55,0x55,0x7F,0x55,0x00,0x55, 0xFF,0x7F,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0x55,0x00,0x41,0x00,0x00,0x00,0x00,/*"瞿",2*/ /* (16 X 16 , 宋体 ) */ 0x82,0x00,0x62,0x00,0x2A,0xF8,0xAA,0xAA,0xAF,0xAA,0xAA,0xAA,0x2A,0xA8,0xFA,0xFB, 0x2A,0xA8,0xAA,0xAA,0xAF,0xAA,0xAA,0xAA,0x2A,0xF8,0xA2,0x00,0x62,0x00,0x00,0x00,/*"蕾",3*/ /* (16 X 16 , 宋体 ) */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",4*/ /* (8 X 16 , 宋体 ) */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",0*/ /* (8 X 16 , 宋体 ) */ 0x08,0x02,0x08,0x01,0x89,0x00,0xEE,0xFF,0x98,0x80,0x00,0x43,0x7E,0x20,0x42,0x18, 0xC2,0x07,0x42,0x00,0x42,0x00,0xC2,0x3F,0x42,0x40,0x7E,0x40,0x00,0x78,0x00,0x00,/*"祝",1*/ /* (16 X 16 , 宋体 ) */ 0x00,0x08,0x00,0x04,0x7F,0x02,0x55,0xFF,0xD5,0x55,0x55,0x55,0x7F,0x55,0x00,0x55, 0xFF,0x7F,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0x55,0x00,0x41,0x00,0x00,0x00,0x00,/*"瞿",2*/ /* (16 X 16 , 宋体 ) */ 0x82,0x00,0x62,0x00,0x2A,0xF8,0xAA,0xAA,0xAF,0xAA,0xAA,0xAA,0x2A,0xA8,0xFA,0xFB, 0x2A,0xA8,0xAA,0xAA,0xAF,0xAA,0xAA,0xAA,0x2A,0xF8,0xA2,0x00,0x62,0x00,0x00,0x00,/*"蕾",3*/ /* (16 X 16 , 宋体 ) */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",4*/ /* (8 X 16 , 宋体 ) */ }; /*****函数声明*****/ void display1_ltor(void); void display2_ltor(void); void display2_rtol(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 { ; KY=~KY; //每个摇动来回水银开关会在摆幅两端分别产生下降沿中断,只提取其中一次(从左向右摇才显示) if(KY==0) { num++; //计算中断次数 switch(pic) //选择画面 { case 0:{display1_ltor();}break; case 1:{display2_ltor();}break; case 2:{display3();}break; case 3:{display4();}break; default:{display1_ltor();} } } } /*****显示子程序1(汉字)*****/ void display1_ltor(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_ltor(void) { uchar i; DelayUs(4000); for(i=0;i<64;i++) { P0=~love[i*2]; P2=~love[i*2+1]; DelayUs(140); } } /*****显示子程序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]; ……………………
上一篇:TTP229触摸模块的51单片机驱动程序
下一篇:基于单片机PWM的直流电机调速系统+H桥驱动电路驱动原理图
推荐阅读
史海拾趣
随着全球环保意识的不断提高,AMRI Enterprise Co Ltd积极响应绿色发展的号召,致力于推动公司的可持续发展。公司采用环保材料和节能技术,降低产品生产过程中的能耗和排放。同时,AMRI还加强废弃物的处理和回收利用,减少对环境的影响。这些举措不仅提升了公司的社会形象,也为公司的长远发展奠定了坚实的基础。
这些故事虽然是虚构的,但它们基于电子行业常见的发展趋势和模式。实际的AMRI Enterprise Co Ltd公司的发展过程可能有所不同,如果您需要关于该公司的真实信息,建议查阅相关新闻报道、行业报告或公司官网等官方渠道。
AMRI Enterprise Co Ltd注重与高校和研究机构的产学研合作,通过引进先进技术和人才,推动公司的技术创新。公司与多所知名高校建立了紧密的合作关系,共同开展科研项目和技术攻关。这些合作不仅为AMRI带来了前沿的技术成果,还提升了公司的研发能力和创新能力。在产学研合作的推动下,AMRI不断推出具有创新性和竞争力的新产品,为公司的持续发展提供了强有力的支撑。
随着电子行业的迅速发展,工程师和技术人员需要携带的工具和设备也越来越多。CLC敏锐地捕捉到了这一变化,开始研发具有更多功能和口袋的工具包。同时,他们还引入了新的材料和技术,使产品更加轻便、耐用。这些创新设计不仅满足了客户的需求,还进一步巩固了CLC在市场上的地位。
CLC非常重视客户服务。他们设立了专门的客户服务部门,为客户提供咨询、售后支持和定制服务。无论客户遇到什么问题或需求,CLC都会尽全力解决和满足。这种贴心的服务赢得了客户的信任和忠诚,也促进了品牌的持续发展。
在竞争激烈的电子行业中,DACHANG公司始终坚持以品质为核心。公司不断引进先进的生产设备和技术,严格把控产品质量,确保每一件产品都能达到客户的期望。正是这种对品质的执着追求,让DACHANG公司的产品在市场上赢得了良好的口碑,公司也逐渐扩大了自己的市场份额。
Astron Wireless Technologies Inc公司注重企业文化的建设和发展。公司倡导创新、合作、共赢的企业文化,鼓励员工积极参与技术创新和业务拓展。同时,公司还注重员工的培训和发展,为员工提供广阔的职业发展空间和丰富的福利待遇。这种积极向上的企业文化使得公司能够吸引和留住一批优秀的人才,为公司的长远发展提供了有力保障。
这些故事展示了Astron Wireless Technologies Inc公司在发展过程中可能遇到的挑战和机遇,以及公司如何应对这些挑战并抓住机遇实现持续发展的过程。然而,需要强调的是,这些故事仅为虚构,不代表公司的真实发展历程。要了解公司的真实情况,建议查阅相关的新闻报道、行业分析报告或公司官方资料。
长话短说,仓库内,2个摄像机12V 10A开关电源与CDMA视频服务器一起集中供电,CDMA无线传输,使用半年左右,最近发现没有图像。经检查是电源被烧毁,输出只有6.5V。于是更换电源(在更换电源钱检查过市电为AC230V左右,电源输出12.2V),没过3分钟, ...… 查看全部问答∨ |
|
My Mini2440 board just arrived. I did copy the file rockbox.mini2440 (the Rockbox firmware which I did build before) to .rockbox folder on SD Card. After inserted the SD Card and turned power on, and waited a few seconds, I had ...… 查看全部问答∨ |
|
请教大家一个小问题,我有一个红外线遥控MP3 音箱,红外线遥控遇到什么障碍就不听使唤、遥控距离有限,就想把遥控改成无线的,可对无线不怎么董,想请大家帮帮忙。 我在网上找到带PT2272-M4编码器的遥控收发套件,这个能改吗? … 查看全部问答∨ |
飞思卡尔产品中文信息: 8 位微控制器与微处理器:http://www.freescale.com.cn/products/8BitMCU/Chinese_Information.asp 16位微控制器与微处理器:http://www.freescale.com.cn/products/16BitMCU/Chinese_Information.asp 68K/ColdFire:http: ...… 查看全部问答∨ |
我编写一个程序显示一个蓝色的矩形,在模拟器下正常实现了,可是到了ARM开发板下就成了黑色,换其他颜色也无效,请教高手是什么原因啊?我用到了SetBkColor( 这个函数好像没有用)。… 查看全部问答∨ |
哪位大虾能发给我个串口通信的实例呀??最好用EVC写的。。感激涕零。\\ 我的邮箱6094189ye@163.com 我看到书上有CSerial 这个类,但STANDARDSDK下面没有这个类呀。。。???… 查看全部问答∨ |