完整版基于单片机的神奇摇摇棒毕业设计Word文档格式.docx
《完整版基于单片机的神奇摇摇棒毕业设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《完整版基于单片机的神奇摇摇棒毕业设计Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
1.5设计要求
设计一个16只高亮度LED发光二极管构成的摇摇棒,通过单片机编程配合手的左右摇晃就可呈现一幅完整的画面,可以显示字符、图片。
1.6设计思路
LED摇摇棒是基于人的视觉暂留原理,通过分时刷新16个发光二极管来显示输出文字或图案等信息。
输出信号频率的控制通过单片机来实现,用摇动传感器检测当前摇动状态。
当进行摇动时,由于人的视觉暂留原理,会在发光二极管摇动区域产生一个视觉平面,在视觉平面内的二极管通过不同频率的刷新,会在摇动区域内产生图像,从而达到在该视觉平面上传达信息的作用。
2.神奇摇摇棒硬件设计
2.1硬件电路设计基本结构
系统电源VCC为5V,下载程序和调试时一定要保证5V电压,实际使用时用3节干电池串联4.5V即可。
STC89C52单片机作为控制器,在它的P0、P2口接有16只以共阳的方式连接的高亮度LED,由单片机输出低电平点亮。
P0口的上拉电阻RA1不能少。
串在LED公共端的二极管D1会产生一定的压降,用来保护LED,经实测LED点亮时两端电压为3V左右,在LED的安全承受范围内。
K1是画面切换开关,用于切换显示不同内容;
S1为水银开关。
图1是神奇摇摇棒设计原理图。
由电源VCC为5V,实际使用时用2.1节纽扣电池串联6V即可。
水银开关的作用:
棒在摇动时,只能在朝某一方向摇动时显示,否则会出现镜像字或镜像画面,所以通过接一只水银开关来控制,使摇摇棒从左向右摇动时将内容显示出来。
图2.1总电路图
水银开关电路:
在水银开关断开时,由于上拉电阻R19的作用外部中断1为高电平,水银开关接通以后为低电平,产生下降沿引起中断。
水银开关的作用:
使摇摇棒从左向右摇动时将内容显示出来。
电路如图2.2所示:
图2.2水银开关电路
2.2主控电路设计说明
单片机控制系统:
单片机以其集成度高、功能强、可靠性高、体积小、功耗低、价格廉、使用灵活等一系列优点得到迅速的发展,渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理等,这些都离不开单片机。
此次设计主要采用的STC89C52RC单片机为主控单元,如电路图2.3。
图2.3单片机系统
2.3STC89C52单片机简介
单片机是指一个集成在一块芯片上的完整计算机系统。
尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:
CPU、内存、内部和外部总线系统,目前大部分还会具有外存。
这里以STC89C52单片机为例理解它的最基本的组成电路。
2.3.1STC89C52芯片
在单片机家族的众多成员中,MCS51系列单片机以其优越的性能、成熟的技术及高可靠性和高性能价格比,迅速占领了工业测控和自动化工程应用的主要市场,成为国内单片机应用领域中的主流。
世界各大单片机厂商都在MCS51上投入了大量的资金和人力,围绕51内核,衍生出许多品种,增强51单片机的各种功能。
MCS51家族是目前在单片机领域发展最快的一个品种。
STC89C52是一种带8K字节闪烁可编程可檫除只读存储器(FPEROM-FlashProgramableandErasableReadOnlyMemory)的低电压,高性能COMOS8的微处理器,俗称单片机。
该器件采用ATMEL搞密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
1、STC89C52单片机的主要性能特点:
(1)增强型8051单片机,6时钟机器周期和12时钟机器周期可以任意选择,指令代码完全兼容传统8051;
(2)工作电压:
5.5v~3.3v(5v单片机)3.8v~2.0v(3v单片机);
(3)工作频率范围:
0~80MHZ,实际工作频率可达48MHZ;
(4)大容量内部数据RAM:
1K字节RAM;
(5)8kB片内Flash程序存储器,具有在应用可编程(IAP),在系统可编程(ISP),可实现远程软件升级,无需编程器;
(6)掉电检测和低功耗模式等;
(7)4个8位IO口,含3个高电流P1口,可直接驱动LED
(8)PCA(可编程计数器阵列),具有PWM的捕获比较功能;
(9)SPI(串行外围接口)和增强型UART;
(10)3个16位定时器计数器;
(11)可编程看门狗定时器(WDT);
(12)低EMI方式(ALE禁止);
(13)兼容TTL和COMS逻辑电平;
2、STC89C52单片机各引脚功能图如2-4所示:
图2-4单片机引脚图
3、STC89C52主要功能
STC89C52主要功能如下表2-1所示。
主要功能特性
兼容MCS51指令系统
8K可反复擦写FlashROM
32个双向IO口
256x8bit内部RAM
3个16位可编程定时计数器中断
时钟频率0-24MHz
2个串行中断
可编程UART串行通道
2个外部中断源
共6个中断源
2个读写中断口线
3级加密位
低功耗空闲和掉电模式
软件设置睡眠和唤醒功能
表2-1STC89C52主要功能
2.4LED基本介绍
LED中文译作发光二级管,顾名思义发光二级管是一种将电能转化成光能的电子器件,具有二极管的特性。
在电路中并不使用使用3MM的LED,而是采用了5MM的高亮LED灯,5MM的高亮LED有多种颜色,除了多种颜色外还有双色的,一只LED可以多出两种颜色,因此5MM高亮的LED达到想要的效果,远距离观看的效果更佳。
2.4.1LED硬件电路
电路中采用了16只红色5MM高亮的LED,所有的LED使用共阳极的方案并联起来,并给电源端加上了IN4007整流二级管,还在LED的正级接上了200欧姆的保护电阻,经过测试如果只接上一只IN4007整流管,实际测量得到LED的电流在30mA左右,LED点亮久后会发热,导致LED的寿命减短,必须加上保护电阻。
而保护电阻测量电流达到15mA~20mA左右,并却没有发热的迹象,因此采用此方案,具体如图2-5所示。
图2-5LED电路图
2.4.2LED内部结构及原理
LED(LightEmittingDiode),发光二极管,是一种固态的半导体器件,它可以直接把电转化为光。
LED的心脏是一个半导体的晶片。
在一个支架上,一端是负极,另一端连接电源的正极,使整个晶片被环氧树脂封装起来。
半导体晶片由P型半导体和N型半导体两部分组成,其中P型半导体在它里面空穴占主导地位,N型半导体主要是电子。
在它们中间有一个过渡层,称为P-N结。
具有单向导电性。
当电流通过导线作用于这个晶片的时候,电子就会被推向P区,在P区里电子跟空穴复合,然后就会以光子的形式发出能量,即LED发光的原理。
而光的波长决定光的颜色,是由形成P-N结的材料决定的。
(图2-6所示)
图2-6LED内部结构
2.4.3时钟电路
单片机其实是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟控制严格地按时序进行工作。
时钟电路用于产生单片机工作所需要的信号。
在MCS-51为核心的单片机内部有一个高增益反相放大器,用于构成振荡器,其输入端引脚为XTAL1,其输出端引脚为XTAL2。
只要在XTAL1和XTAL2之间跨接石英晶体和和两个微调电容,就可以构成稳定的自激振荡器并产生振荡时钟脉冲,这种方式称为内部时钟方式。
在时钟电路中由1个12MHz的晶振、2个30pF的瓷片电容组成具体电路如图2-7所示。
一般地,晶振比较常用的有6MHz、12MHz。
晶振的频率越高,系统的时钟频率也越高,单片机的运行速度也就越快。
STC的单片机最高可支持到40MHz的晶振,但为了系统能够稳定的运行还是选择常用的晶震,如果单片机上使用了串行口通信,则一般会考虑使用11.0592MHz的晶振,方便波特率的计算。
图2-7时钟电路
2.4.4复位电路
STC89C52单片机的的常用的复位电路主要有两种,一种是上电复位,另外一种是手动复位,其中手动复位包括了上电复位的功能,由于摇摇棒设计中考虑到手动复位多了这里不需要的功能,因此在这里采用了上电复位的方式来实现单片机复位。
上电复位电路组成的元件由一个22uf的电容和一个1K的电阻组成,单片机复位的条件是:
必须使RST(第9引脚)加上持续两个以上机器周期(即24个脉冲振荡周期)以上的高电平。
若时钟频率为12MHz,每个机器周期为1us,则需要加上持续2us以上的高电平。
单片机的复位电路如图2-8所示。
图2-8复位电路
2.5开关电路
电路中开关使用了水银开关,是通过水银珠滚动接触导针的原理来控制电路的接通或者断开的。
水银开关简单来说,就如同打开或关掉电灯一样,开关触碰里头的金属板电灯就亮,离开就关,利用开关中的水银珠的滚动,制造与金属端子的触碰或改变光线行进的路线,就能产生导通或不导通的效果。
当水银珠滚到金色引脚那一端的时候就会导通,正是这个原理可以用做单片机外部中断的下降沿的信号控制,在使用水银开关提供单片机下降沿信号时,要给一个10K的上拉电阻给单片机,这样水银开关没有接通的时候外部中断引脚就会保持高电平,一但接通会产生一个下降沿中断。
摇摇棒要使用水银开关,如果没有水银开关摇摇棒就会产生镜像效应,具体的电路如图2-9所示,电路图中SW-SPST为水银开关。
图2-9开关电路
3.神奇摇摇棒软件设计
本节介绍了摇摇棒软件设计过程中所需要的一些软件和软件设计的流程。
3.1开发环境
工欲善其事,必先利其器。
一个良好的开发环境能够使开发人员事半功倍。
单片机的开发工具有很多,各式各样的都有,其中在8051单片机中最常用的就有两款,分别是KEILC51、和SDCC两款。
其中SDCC-SmallDevicdCCompiler,SDCC是一个优化的标准C交叉编译器,目标CPU为基于IN8051,Maxim80DS390,ZilogZ80和Motorola68HC08的单片机。
SDCC是一个免费的开放源代码。
同时SDCC也是一款跨平台的开发工具,现在支持Windows、Linux、Unix和Mac等系统,但SDCC没有IDE开发环境,不过有第三方的IDE软件,还需要整合比较麻烦。
另外一款开发工具就是KeilC51了,在8051单片机开发上应用很广。
KeilC51是一个IDE开发工具,除了界面美观之外,并对c语言支持的很好。
由于SDCC对8051单片机方面的资料比较少,故选用了KeilC51作为主要的开发环境,KeilC51在8051单片机资料非常的广,因此在它上面做开发会有较多的参考,图3-1为KeilC51的界面。
图3-1Keil主界面
3.2汉字图形取模软件
取模软件非常之多,但选取的时候应该考虑到LED电路中是否适合正在使用的取模软件,经过多款取模软件的测试,选定了xiao-qi汉字图形取模软件。
Xiao-qi汉字图形取模软件是晓奇工作室所开发的一款界面友好,多功能的取模软件。
如图3-2所示。
图3-2xiaoqi主界面
在使用过程中选用了数据的排列方式为从上到下从左到右、输出的格式选择了C语言、取模方式选择了纵向8点下高位,其他的不变,取模的方式是根据LED电路而决定的。
3.3主程序流程图
通过软件设计思路分析,得到该系统的主程序流程图3-3如下:
图3-3主程序流程图
系统开始运行,内部进行初始化后,等待外部中断。
当摇动到指定位置时,由滚珠开关出触发外部中断,再经过一段时间延时后开始显示。
显示完成返回主程序,等待下一个摇动周期的到来。
主函数部分:
完成函数的初始化,运用while循环语句,对display1程序段进行若干次重复调用执行;
函数声明部分:
voiddisplay1(void);
延时子程序部分:
voidDelayUs(uintN){uintx;
for(x=0;
x<
=N;
x++);
}一列显示结束后,延时500ms,再进行下一列的显示;
中断服务程序部分:
每个摇动来回水银开关会在摆幅两端分别产生下降沿中断,只提取其中一次(从左向右摇才显示);
显示子程序部分:
voiddisplay1(void)
{uchari;
for(i=0;
i<
64;
i++)
{P1=dian[i*2];
P2=dian[i*2+1];
DelayUs(500);
}
};
LED摇摇棒显示的像素为16*64,也就是在函数里面显示的图像分成64列,每一列都是由两个8位字节构成的。
P1=dian[i*2];
P2=dian[i*2+1]指的是一列显示结束后调用数组中的下一组进行LED显示;
如果P1=dian[i];
P2=[i+1]那么一列显示结束后,调用下一组数组的时候,会把前一列数组中的后一个字节继续调用并作为下一列的前一个字节,导致最终所需图像信息显示不出。
4.神奇摇摇棒系统的实现和结果
4.1硬、软件分别调试及联合调试
4.1.1硬件调试
1、检查电路:
任何组装好的电子电路,在通电调试之前,必须认真检查电路连线是否有错误。
对照电路图,按一定的顺序逐级对应检查,特别要注意检查电源是否接错,电源与地是否有短路,二极管方向和电解电容的极性是否接反,集成电路和晶体管的引脚是否接错,轻轻拔一拔元器件,观察焊点是否牢固,等等。
2、通电观察:
一定要调试好所需要的电源电压数值,并确定电路板电源端无短路现象后,才能给电路接通电源。
电源一经接通,不要急于用仪器观测波形和数据,而是要观察是否有异常现象,如冒烟、异常气味、放电的声光、元器件发烫等。
如果有,不要惊慌失措,而应立即关断电源,待排除故障后方可重新接通电源。
然后,再测量每个集成块的电源引脚电压是否正常,以确信集成电路是否已通电工作。
3、静态调试:
先不加输入信号,测量各级直流工作电压和电流是否正常。
直流电压的测试非常方便,可直接测量。
而电流的测量就不太方便,通常采用两种方法来测量。
若电路在印制电路板上留有测试用的中断点,可串入电流表直接测量出电流的数值,然后再用焊锡连接好。
若没有测试孔,则可测量直流电压,再根据电阻值大小计算出直流电流。
一般对晶体管和集成电路进行静态工作点调试。
4、动态调试:
加上输入信号,观测电路输出信号是否符合要求。
也就是调整电路的交流通路元件,如电容、电感等,使电路相关点的交流信号的波形、幅度、频率等参数达到设计要求。
若输入信号为周期性的变化信号,可用示波器观测输出信号。
当采用分块调试时,除输入级采用外加输入信号外,其他各级的输入信号应采用前输出信号。
对于模拟电路,观测输出波形是否符合要求。
对于数字电路,观测输出信号波形、幅值、脉冲宽度、相位及动态逻辑关系是否符合要求。
在数字电路调试中,常常希望让电路状态发生一次性变化,而不是周期性的变化。
因此,输入信号应为单阶跃信号(又称开关信号),用以观察电路状态变化的逻辑关系。
4.1.2软件程序调试
软件调试:
采用了自顶向下的调试方法,先调试功能电路,在调试整个系统,调试过程中软件调试和硬件调试相结合,提高了效率。
1、在字模选取时,字模走向,点阵格式等方面选取不当会导致显示出的图像,文字信息等不完整或不能显示;
那么,字模的选取方面,点阵格式,字模走向等的选择必须与硬件电路中的一一对应。
2、在软件设计程序编程时,延时子程序设计的时间长短会出现一些问题。
时间设的太长,在摇晃过程中,LED发光二极管点亮的速度会很慢,致使在使用过程中左右摇晃的频率,幅度会很大,画面就不容易显示或者不清晰,只出现部分画面等情况;
时间设的太短,LED发光二极管点亮的速度会很快,那么摇晃过程中,甚至有些应该亮的频率比较高的二极管根本来不急点亮,那么在人眼看来,那些二极管根本就没点亮。
因此,在设置延时子程序时间的问题上,要计算出单向甩出摇摇棒所需的具体时间。
这样,LED灯亮的速度才会适中,致使演示效果完好。
4.1.3联合调试
软、硬件联合调试:
当软硬件基本功能发分别调试后,进行联合调试,调试过程中出现的问题有:
字符呈倒立显示,文字只能显示中间部分等;
通过分析软件程序和硬件电路,对程序进行了大量的调试,最终实现了设计目标。
4.2摇摇棒实物效果展示
图4.1摇摇棒实物图
水银开关里的水银珠很活跃,导致在接通时容易产生抖动,所以将水银开关斜向上45°
角放置,靠水银珠自身重力的作用减少抖动。
图4.2LED及水银开关实物图
图4.3IC座实物图
IC座里面隐藏元件,既美观又能保护元件。
结论
神奇摇摇棒是生活中很常见的东西,本次设计以水银开关和单片机的实际应用为背景,介绍了以单片机为核心显示设计的基本结构和基本原理。
本次将使用单片机对摇动显示进行实例化,设计一个LED摇动显示器来显示文字、图像等信息。
掌握利用8052型单片机对发光二极管阵列进行摇动控制的方法。
输出信号频率的控制通过单片机来实现,用水银开关摆动状态和16个发光二极管进行不同频率的亮灭刷新,通过手动摇动可显示输出文字及图案等信息。
设计综合运用了字模转换软件。
同时查阅了大量相关资料,包括查阅相关书籍和网上的资料,获得了一些相关信息。
在设计方面,采用了在变量自加的原理,在经过逐个读取的方法来显示要显示的内容。
最后还得出以下几点:
1准备越充分,实做越顺利
在做设计前了解相关知识、材料、方法可以避免许多没有必要的麻烦,一步一个脚印就不必“从头再来”。
最不能容忍的是在开始的几步偷懒,造成后面总有一些无法排除的障碍。
2温故而知新
课程设计发端之始,思绪全无,举步维艰,对于理论知识学习不够扎实的我深感知识的不够,便重拾教材对知识系统而全面进行了梳理,终于熟练掌握了基本理论知识,而且领悟诸多平时学习难以理解掌握的较难知识。
3思路即出路
当初没有思路,诚如举步维艰,茫茫大地,不见道路。
在对理论知识梳理掌握之后,茅塞顿开,柳暗花明,思路如泉涌,高歌“条条大路通罗马”。
顿悟,没有思路便无出路,原来思路即出路。
通过这次课程设计,使我学会了编写程序,焊接电路板,增强了我的动手能力,为以后参加工作打下了坚实的基础!
※※※※※
致谢
本文的设计工作是在李老师的精心指导下完成的,在我的学业和论文的毕业设计中无不倾注着李老师的辛勤的汗水和心血。
是她用她的课余时间为我们讲解这次设计的原理以及帮我们找相关的器件,在实物完成后不厌其烦得为我们进行调试和毕业论文的指导。
李老师的严谨治学态度、渊博的知识、无私的奉献精神使我深受感染,对我以后从事工作提供了一种工作精神,一件事情既然你做了就要用心把它做好,你用你的小聪明蒙混过关,这是对你自己的不负责任,要为你做的事情用尽全力。
从尊敬的李老师身上,我不仅学到了扎实、宽广的专业知识,也学到了很多做人的道理。
在此我要向李老师致以最衷心的感谢和深深的敬意,我一定不负老师之望走好以后的漫漫人生路。
还要感谢单片机学的比较好的同学们,是他们教会了我有关单片机相关知识;
此外还给我的论文提出很多宝贵的意见,帮我拍出了实验效果图。
这里我要再一次由衷的感谢,感谢那些给予我帮助的人。
再次感谢李老师长期以来悉心的指导和在设计过程提供的大量资料、修改意见及多次的参观和试验的机会,让我对单片机有了较全面了解,为日后的工作和更进一步的学习打下了坚实的基础,也积累了许多宝贵的设计经验。
参考文献
[1]毛谦敏,吴泓潭.单片机原理及应用系统设计,北京国防工业出版社,2005,8
[2]张毅刚.MCS-51单片机应用设计,哈尔滨工业大学出版社,2004
[3]李光飞.单片机课程设计实例指导,北京航空航天大学出版社,2004,3
[4]冯先成.单片机应用系统设计,北京航空大学出版社,2009
[5]何宏.微型计算机原理与接口技术,西安电子科技大学出版社,2009,4
[6]杨将新.单片机程序设计及应用,电子工业出版社,2006,3
[7]金杰.单片机应用技术基本功,人民邮电出版社,2009
[8]韩志军.单片机系统设计与应用实例,机械工业出版社,2010
[9]李广弟.单片机基础,北京航空大学出版社,2007
[10]李群芳.单片微型计算机接口技术及应用,电子工业出版社,2005
[12]严天峰.单片机应用系统设计与仿真调试,北京航空航天大学出版社,2005
[13]廖雷.C语言程序设计,高等教育出版社,2008
[14]鲁捷,焦振宇.Prot2004电路设计,清华大学出版社
附录
#include<
reg52.(us)延时子程序*****
voidDelayUs(uint