摇摇棒课程设计论文程序Word文档格式.docx
《摇摇棒课程设计论文程序Word文档格式.docx》由会员分享,可在线阅读,更多相关《摇摇棒课程设计论文程序Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
(1)最小应用系统是指能维持单片机运行的最简单配置的系统。
这种系统成本低廉,结构简单,常构成一些简单的控制系统,如开关状态的输入/输出控制等。
片内有ROM/EPROM的单片机,其最小应用系统即为配有晶振,复位电路,电源的单个单片机.片内无ROM/EPROM的单片机,其最小应用系统除了外部配置晶振,复位电路,电源外,还应外接EPROM或EEPROM作为程序存储器用.
(2)最小功耗应用系统是指为了保证正常运行,系统的功耗最小.(3)典型应用系统是指单片机要完成工业测控功能所必须的硬件结构系统。
本文将使用单片机对摇动显示进行实例化,设计一个LED摇动显示器来显示文字、图像等信息。
掌握利用8051型单片机对发光二极管阵列进行摇动控制的方法。
输出信号频率的控制通过单片机来实现,用摇动传感器检测当前摇动状态,用16个发光二极管进行不同频率的亮灭刷新,通过手动摇动可显示输出文字及图案等信息。
LED显示棒,又称摇摇棒,是一种利用视觉暂留效应制作的“高科技”玩具。
可以用“静如处子,动如脱兔”来形容它,即当静止时,它只是几个LED发光二极管(后简称LED),而一旦按照一定的频率去摇晃它,它就会随着位置的变化而变化(亮或灭),最终显示一幅图片或字符串。
目录
一.引言·
·
3
二.系统设计方案·
5
1.设计目的·
2.设计要求·
3.设计思路·
三.系统硬件设计·
7
1.基本原理及各部分功能·
2.系统硬件·
8
四.系统软件设计·
10
1.软件设计思路·
2.主程序流程图·
3.软件实现功能的完善·
18
五.系统的硬件调试及软件调试·
19
六.总结·
22
七.致谢·
23
八.参考文献·
24
二.系统设计方案
1.设计目的
本次设计制作的是一个显示棒,基本要求就是要小巧、轻便,所以要将单片机的系统板简化设计。
通过本次设计,加强学生对MCS-51单片机的深刻理解,提高学生的设计能力和动手能力。
2.设计要求
设计一个16只高亮度LED发光二极管构成的摇摇棒,通过单片机编程配合手的左右摇晃就可呈现一幅完整的画面,可以显示字符、图片。
3.设计思路
本系统要求设计一个LED显示棒且需要有按键进行内容切换,它主要是由中央控制部分,LED驱动部分,LED显示部分以及电源部分组成,如图所示
单片机将提取的字模进行存储,当接收到按键输入的指令时单片机就将相应的字模代码通过I/O口输出,使LED灯点亮,利用视觉暂留原理最终使图案完整的显示在摆动的显示屏中。
1.LED灯的选择:
传统LED发光二极管。
颜色多样,在可以同样显示图案的前提下使用它更为经济。
2.外部中断信号产生方式:
通过外部中断可以控制数据开始传输的时刻。
选择好外部中断来源是本次制作的难点及重点。
使用惯性开关。
通过摇晃使得惯性开关的摆杆与焊接的左右两个触点接触,利用这种接触产生的电平变化来触发中断,结合软件控制显示,制作简单,使用方便。
3.抗重影方案的选择:
使用外部中断控制数据传输时刻。
外部中断信号由惯性开关产生,触发方式为下降沿触发。
惯性开关左右两边的触点分别与单片机两个外部中断接口相连,默认为高电平,摇动的摆杆接地。
惯性开关处于不同位置进入不同的中断,从而决定何时送数据。
该方案简单易行,可以保证数据是单程传输的,避免了重影。
不摇动时把惯性开关处在左边就可以使LED棒熄灭,可以达到省电的效果。
三.系统硬件设计
1.基本原理图为:
基本原理与硬件电路设计:
16只LED发光管作为画面每一列的显示,左右摇晃起到了扫描的作用,人眼的视觉暂留现象看到的是一幅完整的画面。
与LED点阵的显示有几分相仿。
其硬件电路如上图中所示:
系统电源VCC为5V,下载程序和调试时一定要保证5V电压,MCS-51单片机作为控制器,在它的P1,P2口接有16只以共阳的方式连接的高亮度LED,由单片机输出低电平点亮。
P1口,P2口的上拉电阻不能少。
串在LED公共端的二极管D1会产生一定的压降,用来保护LED,经试验测试LED点亮时两端电压为3V左右,在LED的安全承受范围之内。
各部分功能
(1)按键模块
使用一个按键对显示的所有内容进行切换,通过按钮按下的次数确定显示的内容。
S1:
水银开关 功能为棒在摇动时,只能在朝某一方向摇动时显示,否则会出现镜像字或镜像画面,所以通过接一支水银开关来控制,使摇摇棒从左向右摇动时将内容显示出来。
S2:
画面切换开关 功能为用于切换显示不同内容。
S3:
手动复位开关 功能为可以控制系统的启停
(2)LED显示模块
首先,我们根据LED点阵屏的显示原理:
点阵屏的显示分为行扫描与列扫描两种,列扫描是将我们的字模数组通过点阵屏的行驱动进行输入,然后通过列对每一行进行扫描,当列为低(高)电平、行为高(低)电平时则表示该点为图案的一部分,将其读出、显示。
它的顺序可以总结为:
行不断的送数据,每送完设置的信息后列进行读取,然后行再次送数据,列再次读取……依次循环下去,一幅完整的图案就显示在了显示屏上。
而本次设计的LED显示棒数据传输原理与LED点阵屏相似。
可以把LED显示棒看成是LED点阵屏中的一列。
为了使显示的图案清晰,我们使用了16个LED管将它们排成一列,整个屏在静止时也就相当于16行×
1列。
数据传输时我们同样使用行送数据、列扫描。
在摆动过程中,应用视觉暂留原理,我们点亮的列不会很快的消失,而是随着摆动的方向继续向前移动,只要移动的速度高于视觉暂留的最短时间显示内容就不会熄灭,至此,一幅图案也就可以这样被“摆动”出来了。
2.系统硬件
系统功能主要体现在3个部分:
1.单片机控制(STC12C2051)
本装置采用了STC12C2051单片机,它支持直接通过串口线下载程序,对于本设计而言,显示文字需经常改变,STC12C2051方便许多,因此选择STC12C2051作为本设计所用的单片机。
2.显示功能。
(D1~D16)
信息传递主要由显示来完成,本设计显示功能由16个发光二极管来完成。
16个发光二极管分为4组,以共阳的方式连接,共用P1口和P2口作为输出口。
3.传感器系统
硬件传感器主要为摇动传感器,本设计的摇动传感器由滚珠开关构成。
可选摇动开关有水银摇动开关和滚珠开关两种。
水银摇动开关稳定性较高,但容易发生破裂,水银外泄,安全性较差。
滚珠开关稳定性稍差,但不容易损坏,安全度很高。
考虑到实际应用环境,故选用滚珠开关作为系统的摇动传感器。
由滚珠开关带来的不稳定性可以通过软件进行弥补。
经过分析论证,我们决定了系统各模块的最终方案,流程图如下:
整套系统以STC12C2051单片机为核心控制系统,使用16只LED灯作为显示屏,其中16只直接与单片机I/O口相连。
当惯性开关触发中断T1时,单片机向16只LED传送数据,依据人体的视觉暂留原理,随着显示棒的摆动前进,输出数据的列也不会立刻消失而是随着摆动逐渐显示在了形成的扇形区域。
系统的元器件明细表:
1、单片机STC12C20511片;
2、发光二极管16只;
3、12M晶振1个
4、电阻、电容若干
5、USB接口1个
6、按钮及开关若干
四.系统软件设计
1.软件设计思路
在摇动LED棒的时候单片机必须单程传送数据否则显示的图形会产生重影,影响视觉效果。
因此当系统开始工作后通过惯性开关的位置来使单片机实现单程传送数据给LED。
如果惯性开关位于右边,则进入外部中断1并将一变量置1,。
在变量为1期间让单片机以一定的频率将数据传送给LED。
如果惯性开关位于左边,则进入外部中断0并将变量置0,。
在这期间单片机不会传送数据给LED。
在送数据时,数据送完后应延时一段时间来使摇动时显示的每个字不会太拥挤。
之后再立刻熄灭LED并开始重新判断惯性开关的位置。
2.主程序流程图
通过软件设计思路分析,得到该系统的主程序流程图如下:
系统开始运行,内部进行初始化后,等待外部中断。
当摇动到指定位置时,由滚珠开关出触发外部中断,再经过一段时间延时后开始显示。
显示完成返回主程序,等待下一个摇动周期的到来。
经过文字取模后,系统的源程序编制如下:
#include<
AT89X52.h>
#defineucharunsignedchar
#defineuintunsignedint//宏定义
#defineKEYP3_0//定义画面切换按键
ucharKY;
//KY作用在后面说明
uchardisp;
//显示汉字指针
ucharpic=0,num=0;
//pic为按键次数;
num为中断次数
ucharcodelove[]={
/*--文字:
刘--*/
/*--宋体12;
此字体下对应的点阵为:
宽x高=16x16--*/
0x08,0x28,0x48,0x89,0x0E,0x88,0x78,0x08,0x08,0x00,0xF8,0x00,0x00,0xFF,0x00,0x00,
0x40,0x20,0x10,0x09,0x06,0x19,0x60,0x00,0x00,0x00,0x0F,0x40,0x80,0x7F,0x00,0x00,
琛--*/
0x84,0x84,0xFC,0x84,0x84,0x0E,0x22,0x12,0x0A,0xC2,0x0A,0x12,0x22,0x0E,0x00,0x00,
0x10,0x30,0x1F,0x08,0x28,0x21,0x11,0x09,0x05,0xFF,0x05,0x09,0x11,0x21,0x20,0x00,};
ucharcodeloveyou[]={
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,/*心形图案*/
};
ucharcodehehe[]={
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图案*/
unsignedcharcodehanzi[]={
//--欢--
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,
//--摇--