基于单片机的摇摇棒设计.docx
《基于单片机的摇摇棒设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的摇摇棒设计.docx(14页珍藏版)》请在冰豆网上搜索。
基于单片机的摇摇棒设计
单片机课程设计
题目基于单片机的摇摇棒设计
1课程设计的目的1
2课程设计的任务与要求1
2.1设计任务1
2.2设计要求2
3设计单元对比与选择2
3.1LED灯的对比与选择2
3.2外部中断信号产生方式的对比与选择2
3.3抗重影方案的对比与选择3
4电路的基本模块4
4.1按键模块4
4.2LED显示模块4
4.3振动传感模块5
5设计原理流程及仿真6
5.1设计原理6
5.2主程序流程7
5.3电路仿真图9
6调试与焊接9
6.1硬软件调试9
6.2实物焊接10
7结论12
参考文献13
附录1:
总体电路原理图14
附录2:
源程序15
附录3:
实物图17
1课程设计的目的
随着科技的不断发展,社会的不断进步,供人们娱乐休闲的工具越来越多,“摇摇棒”也随之成为一个热点产品。
本课程设计以AT89S51单片机控制为主控芯片,再配合高亮度LED灯以及震动开关构成简易摇摇棒的设计过程,通过分时刷新16只发光二极管并配合手的左右摇晃来显示输出文字及图案等信息。
最后显示出预先设计制作的效果。
摇摇棒,一种利用视觉暂留效应制作的“高科技”玩具。
所谓“静如处子,动如脱兔”。
也就是说,不去摇动,它只是几个LED而已;当进行摇动时,由于人眼的视觉暂留现象,此时会在发光二极管摇动区域产生一个视觉平面,从而达到在该视觉平面上传达信息的作用。
通过16只高亮发光二极管不同的组合方式,配合手的左右摇晃,可以显示出不同的图案及文字。
可以说这种显示的效果很适合作为节日或宴会时活动气氛的良好工具。
本设计就是利用以上原理,用8051单片机实现上述任务书中所描述的摇摇棒的功能。
2课程设计的任务与要求
2.1设计任务
本次设计制作的是一个显示棒,采用51系列的单片机通过控制16个LED灯的亮灭,使得电路在摇动过程中,由于人的视觉暂留效应,从而显示出字模内容。
另外通过水银开关检测摇动规律。
2.2设计要求
设计一个16只高亮度LED发光二极管构成的摇摇棒,通过单片机编程配合手的左右摇晃就可呈现一幅完整的画面,可以显示字符、图片。
3设计单元对比与选择
3.1LED灯的对比与选择
方案一:
传统LED发光二极管。
颜色多样,在可以同样显示图案的前提下使用它更为经济,但是颜色较为黯淡,不鲜亮。
方案二:
高亮LED发光二极管。
正如其名,它的亮度比传统二极管要亮,而且同样也有很多颜色,但是高亮LED的工作电流也要大于传统二极管。
对比与选择:
为了使显示的图案清晰、明了,我们选择方案二,经过比较,使用红色的LED使得显示画面更为明显、突出,使用两节南孚电池为其供电,提供足够的电流。
3.2外部中断信号产生方式的对比与选择
方案一:
使用水银开关。
通过摇晃使得水银开关与焊接的左右两个触点接触,利用这种接触产生的电平变化来触发中断,结合软件控制显示,制作简单,使用方便。
方案二:
使用光遮断器。
在棒上装一个可以摆动的用来遮挡光遮断器光线的细杆,细杆每左右摆动一次这个杆就会通过一次光遮断器,发生电平变化。
同样通过这种电平变化,结合软件控制显示。
对比与选择:
通过外部中断可以控制数据开始传输的时刻;选择好外部中断来源是本次制作的难点及重点。
本次设计中产生的中断是为了实现数据的单程传输。
如果使用光遮断器,其触发单片机的时刻处于正中间,不能解决画面因为返回与原来图片重叠的现象。
而使用水银开关,因为在左右都有触点,所以很容易的在往返途中产生两次中断,方便指令控制,所以选择使用方案一。
3.3抗重影方案的对比与选择
方案一:
使用外部中断控制数据传输时刻。
外部中断信号由惯性开关产生,触发方式为下降沿触发。
水银开关左右两边的触点分别与单片机两个外部中断接口相连,默认为高电平,摇动的摆杆接地。
水银开关处于不同位置进入不同的中断,从而决定何时送数据。
该方案简单易行,可以保证数据是单程传输的,避免了重影。
惯性开关左右两边的触点分别与单片机两个外部中断接口相连,默认为高电平,摇动的摆杆接地。
惯性开关处于不同位置进入不同的中断,从而决定何时送数据。
该方案简单易行,可以保证数据是单程传输的,避免了重影。
不摇动时把惯性开关处在左边就可以使LED棒熄灭,可以达到省电的效果。
方案二:
使用定时器与外部中断。
当我们在摆动手臂的时候,短时间内摆动位置和左右幅度不会有太大变化,利用我们手臂的这个运动规律,只要能得到棒从一侧摆动到另一侧的时间,然后把这个时间分成N份,在每一份的时间里显示不同的花样就能实现图形的显示。
设计中摇动的摆子与左右两个触点接触各一次的时间可以通过外部中断和定时器计算出来,然后用单片机的另一个定时器T1,其定时时间是T0的N分之一,每次中断依次显示一列,就可以得到预期显示的图案了。
该方法可以控制摇动频率低的时候不显示图形。
但程序的稳定性不高,图形之间的间隔不易确定,只要电源开关开着LED始终是点亮的。
对比与选择:
本次设计要求显示的字符长度较短,使用方案一中的外部中断方法只要控制好延时就可以达到完整显示图案的目的,而且方案一中只使用了外部中断,它所占用的内存比方案二中既使用外部中断又使用两个定时器所占用的单片机资源要少,所以选择使用方案一。
4电路的基本模块
4.1按键模块
使用一个按键对显示的所有内容进行切换,通过按钮按下的次数确定显示的内容。
S1:
水银开关 功能为棒在摇动时,只能在朝某一方向摇动时显示,否则会出现镜像字或镜像画面,所以通过接一支水银开关来控制,使摇摇棒从左向右摇动时将内容显示出来。
S2:
画面切换开关 功能为用于切换显示不同内容。
S3:
手动复位开关 功能为可以控制系统的启停
4.2LED显示模块
首先,我们根据LED点阵屏的显示原理:
点阵屏的显示分为行扫描与列扫描两种,列扫描是将我们的字模数组通过点阵屏的行驱动进行输入,然后通过列对每一行进行扫描,当列为低(高)电平、行为高(低)电平时则表示该点为图案的一部分,将其读出、显示。
它的顺序可以总结为:
行不断的送数据,每送完设置的信息后列进行读取,然后行再次送数据,列再次读取……依次循环下去,一幅完整的图案就显示在了显示屏上。
而本次设计的LED显示棒数据传输原理与LED点阵屏相似。
可以把LED显示棒看成是LED点阵屏中的一列。
为了使显示的图案清晰,我们使用了16个LED管将它们排成一列,整个屏在静止时也就相当于16行×1列。
数据传输时我们同样使用行送数据、列扫描。
在摆动过程中,应用视觉暂留原理,我们点亮的列不会很快的消失,而是随着摆动的方向继续向前移动,只要移动的速度高于视觉暂留的最短时间显示内容就不会熄灭,至此,一幅图案也就可以这样被“摆动”出来了。
4.3振动传感模块
当用力在垂直方向拉弹簧,弹簧开始作竖直方向的来回振动,成为一个弹簧振子。
但它的振幅会逐渐减少,并同时开始左右摆动,摆动幅度越来越大,即弹簧振子的振动逐渐过渡到摆的摆动。
适当选择摆长l,振子质量m、倔强系数K后,可以使得摆动周期与振子振荡周期相等,这时,振子振动时能量就可以从振动转变为摆动,又能从摆动转变为振动。
因而物块m既可作为弹簧振子,又可作为摆的摆锤。
这里弹簧起到了能量转换缓冲器的作用。
一旦一种形式的运动开始,能量即通过弹簧的张力从这种形式的运动转换到另一种形式的运动,直到这种形式运动的能量全部传递完为止,然后又开始通过弹簧反方向传递,相应物质的运动也即从一种形式过渡到另一种形式件传感器主要为摇动传感器,本设计的摇动传感器由弹簧开关构成。
经过分析论证,我们决定了系统各模块的最终方案,流程图如下:
图4-1传感器系统流程图
5设计原理流程及仿真
5.1设计原理
摇摇棒显示电路的电路原理图:
图5-1电路原理图
本装置采用了STC89C52单片机,它支持直接通过串口线下载程,对于本设计而言,显示文字需经常改变,STC89S52方便许多,因此选择STC89S52作为本设计所用的单片机。
以STC89S52单片机控制为主控芯片,再配合高亮度LED灯以及震动开关构成简易摇摇棒的设计过程,通过分时刷新16只发光二极管并配合手的左右摇晃来显示输出文字及图案等信息;最后显示出预先设计制作的效果。
信息传递主要由显示来完成,本设计显示功能由16个发光二极管来完成。
16个发光二极管分为4组,以共阳的方式连接,共用P1口和P2口作为输出口。
5.2主程序流程
通过软件设计思路分析,得到该系统的主程序流程图如下:
图5-2主程序流程图
系统开始运行,内部进行初始化后,等待外部中断。
当摇动到指定位置时,由滚珠开关出触发外部中断,再经过一段时间延时后开始显示。
显示完成返回主程序,等待下一个摇动周期的到来。
5.3电路仿真图
图5-3仿真图
6调试与焊接
6.1硬软件调试
(1)硬件调试
脱机调试是在电路板加电之前,先用万用表等工具,根据硬件电气原理图和装配图仔细检查样机线路的正确性,并核对元器件的型号,规格和安装是否符合要求。
应特别注意电源的走线,防止电源之间的短路和极性错误,并重点检查拓展系统总线是否存在相互间的短路或其他信号线的短路。
对于样机所用的电源事先必须单独调试,调试好后,检查其电压值,负载能力,极性等均符合要求,才能加到系统的各个部件上。
在不插片子的情况下,加电检查各插件上引脚的电位,仔细检查各地点电位是否正常,尤其应注意单片机插座上的各点电位是否正常,若有高压,联机时将会损坏开发机。
(2)软件调试
对于模块结构程序,要一个个子程序分别调试。
调试子程序时,一定要符合现场环境,即入口条件和出口条件。
调试的手段可采用单步运行方式和断点运行方式,通过检查用户系统CPU的现场、RAM的内容和I/O口的状态,检测程序执行结果是否符合设计要求。
通过检测,可以发现程序中的死循环错误、机器码错误及转移地址的错误,同时也可以发现用户系统中的硬件故障、软件算法及硬件设计错误。
在调试过程中不断调整用户系统的软件和硬件,逐步通过一个个程序模块。
各程序模块通过后,可以把各功能块联系起来一起进行整体程序综合调试。
在这阶段若发生故障,可以考虑各子程序在运行时是否破坏现场,缓冲单元是否发生冲突,零位的建立和清除在设计上有否失误,堆栈区域有否溢出,输入设备的状态是否正常,等等。
若用户系统是在开发系统的监控程序下运行时,还要考虑用户缓冲单元是否和监控程序的工作单元发生冲突。
6.2实物焊接
(1)使用电烙铁时,首先检查焊头,焊头若出现黑色的氧化物就先磨掉。
上锡的具体方法是:
插上电源插头,将电烙铁烧热,刚刚熔化焊锡时,涂上助焊剂,再用焊锡均匀地涂在烙铁头上,是烙铁头均匀地涂上一层锡。
(2)焊接时将引脚对应好焊接电路板的焊接位置上,接着先将焊丝接触然后电烙铁从下至上的较快速的上锡。
焊接出来的焊点应该饱满,略有尖头。
(3)导线焊接:
导线焊接前要出去末端绝缘层。
导线焊接,搪锡是关键步骤,尤其多股导线。
(4)焊接时间不宜过长,否则容易烫坏元件,必要时可用镊子夹住管脚帮忙散热。
(5)焊点应呈正弦波峰形状,表面应光亮圆滑,无焊刺锡量适中。
焊接完成后,再对照电路图检查一遍接线有无错误,然后加电压进行测试。
加上电压后,若正常工作且符合设计要求和目的,则电路设计成功,否则继续调试找出问题所在,修正错误直至达到正常工作且符合设计要求和目的。
7结论
在本次实践中,进一步加深了我对平时所学理论知识的理解和掌握,也了解到要把理论应用到实际中去的道理,本次设计以水银开关和单片机的实际应用为背景,介绍了以单片机为核心显示设计的基本结构和基本原理。
利用8051型单片机对发光二极管阵列进行摇动控制的方法。
输出信号频率的控制通过单片机来实现,用水银开关摆动状态和16个发光二极管进行不同频率的亮灭刷新,通过手动摇动可显示输出文字及图案等信息。
当进行摇动时,由于人的视觉暂留原理,会在发光二极管摇动区域产生一个视觉平面,在视觉平面内的二极管通过不同频率的刷新,会在摇动区域内产生图像,从而达到在该视觉平面上传达信息的作用。
通过这次的设计课程中,我深刻的体会到做任何事都要有耐心,电路焊接的好还不能说明你已经成功了,测试也是个重要的阶段。
在测试的过程中,我学到了一些电路调试的基本方法和一般的规律,同时也有知道如何来检查和排除设计中所遇到的一些难题和故障。
不是电路在电脑中能仿真成功就一定会在焊接完调试成功,可能还要在焊接中要不断地修改原有方案。
正所谓失败不一定就是坏事,任何伟大的科技理论成果都是在经历无数次的失败后的出来的。
同时细心多思考才能真正的领略到成功后的那种喜悦。
参考文献
[1]江晓安,董秀峰.数字电子技术(第三版)[M].西安:
西安电子科技大学出版社,2008
[2]陈梓城.实用电子电路设计与调试[M].北京:
中国电力出版社,2006
[3]张旭东.数字电路和数字系统实验与课程设计实训教程[M].北京:
人民邮电出版社,2009
[4]陈光明.电子技术课程设计与综合实训[M].北京:
北京航空航天大学出版社,2007
附录1:
总体电路原理图
附录2:
源程序
#include
#defineucharunsignedchar
#defineuintunsignedint//宏定义
sbitKEY=P3^4;//定义画面切换按键
ucharKY;//KY作用在后面说明
uchardisp;//显示汉字指针
ucharpic=0,num=0;//pic为按键次数;num为中断次数
/*********n(us)延时子程序***********/
voidDelayUs(uintM)
{
uintx;
for(x=0;x<=M;x++);
}
/***********显示子程序(LOVE)********/
voiddisplay2(void)
{
uchari;
DelayUs(2000);
for(i=0;i<64;i++)
{
P1=~love[i*2];
P2=~love[i*2+1];
DelayUs(130);
}
}
/*****主函数*****/
voidmain(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;
}}
附录3:
实物图