光移LED摇摇棒设计报告.doc_第1页
光移LED摇摇棒设计报告.doc_第2页
光移LED摇摇棒设计报告.doc_第3页
光移LED摇摇棒设计报告.doc_第4页
光移LED摇摇棒设计报告.doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

光移LED摇摇棒设计报告光移LED摇摇棒设计报告 姓 名: 维玩电子 学 号: 1号 专业班级: 电子信息工程071 指导教师: 摘 要本文介绍了一种以STC15W202S单片机为主控制器,利用视觉暂留效果和单片机外部中断技术,实现了在摇动过程中形成的扇形平面内清晰显示文字、字母、图案的LED摇摇棒。系统基于MCU控制、32个高亮度LED发光二极管、供电模块等构成摇摇棒。同时配合手的左右摇晃就可呈现一幅完整的画面,可以显示字符、图片等。关键词: STC15W202S单片机;视觉暂留;动态扫描;中断;LED目录第1章 系统设计11.1设计要求11.1.1 基本要求11.1.2扩展部分11.1.3 系统功实现11.2总体设计方案21.2.1 LED摇摇棒的工作原理21.2.2 系统总体设计方案2第2章 系统硬件电路设计42.1 单片机最小系统设计42.2 LED显示电路的设计52.3传感器电路设计62.4 按键控制电路设计72.5 电源电路设计8第3章 系统软件设计93.1主程序流程图93.2 主程序设计思路93.3 多幅画面切换设计10第4章 系统测试114.1 硬件测试114.2 软件测试114.3 测试结果12第5章 心得与体会13参考文献14附录1:电路图15附录2:源程序16III第1章 系统设计1.1设计要求设计制作一个依靠摇动能显示字符、图形的LED摇摇棒1.1.1 基本要求1、 设计一个基于LED的摇摇棒,LED灯必须线状排列,至少使用16只。2、 摇动时形成的亮灯扇形区域能够让人分辨出图案或字符。3、 用按键实现显示8个画面切换。4、 采用电池供电。1.1.2 扩展部分1、使用32个LED灯。2、画面信息可通过下载更新。3、其他特色和创新。1.1.3 系统功实现1.2总体设计方案1.2.1 LED摇摇棒的工作原理LED摇摇棒是基于人的视觉暂留原理的,通过分时刷新32个发光二极管来显示输出文字或图案等信息的显示装置。输出信号频率的控制通过单片机来实现,用摇动传感器检测当前摇动状态。当进行摇动时,由于人的视觉暂留原理,会在发光二极管摇动区域产生一个视觉平面,在视觉平面内的二极管通过不同频率的刷新,会在摇动区域内产生图像,从而达到在该视觉平面上传达信息的作用。此外通过按键切换不同的画面。1.2.2 系统总体设计方案本系统在硬件上主要包括 STC15W202S最小系统、LED显示模块、传感器模块、电源供电模块、按键切换模块等重要模块。其基本的工作原理是:主要是利用人的视觉暂留效应,使手摆动到不同位置的时候,让位于一条直线上的LED显示二维图像的不同的列,实现图形扫描显示。采用STC15W202S单片机为控制核心模块,使用74HC595串转并输出控制发光二极管的显示,软件上将图文转化成表供单片机调用,设计上使用机械滚珠开关产生中断,以准确执行表的内容。外部设计一个按键,通过按键次数,单片机会判断所需要调用的显示画面数据。总体设计框图,如图1所示。图1LED摇摇棒的总体设计框图第2章 系统硬件电路设计2.1 单片机最小系统设计为了设计此系统,我们采用了STC15W202S单片机作为控制芯片,STC15W202S系列单片机是STC生产的单时钟/机器周期的单片机。是高速/高可靠/低功耗/超强抗干扰的新一代8051单片机。采用第八代加 密技术,加密型超强,指令代码完全兼容传统的8051,速度快812倍。内部集成高精度R/C时钟,+/-1%温漂,常温下温漂 5%,5MHz35MHz宽范围可设置,可彻底省去昂贵晶振电路和外部复位电路。图2为单片机最小系统。主要特性: n 大容量2048字节片内RAM数据存储器 n 高速:1个时钟/机器周期,增强型8051内核,速度比传统8051快712倍 n 宽电压:5.5V 2.4V n 低功耗设计 n 不需外部复位的单片机n 不需外部晶振的单片机 n 支持掉电唤醒 n ISP/IAP ,在系统可编程/在应用可编程n 硬件看门狗(WDT)n SPI高速同步串行通信接口n 比较器图2 单片机最小系统电路图2.2 LED显示电路的设计方案一:传统LED发光二极管。颜色多样,在可以同样显示图案的前提下使用它更为经济,但是颜色较为黯淡,不鲜亮。方案二:高亮LED发光二极管。正如其名,它的亮度比传统二极管要亮,而且同样也有很多颜色,但是高亮LED的工作电流也要大于传统二极管。为了使显示的图案清晰、明了,我们选择方案二,经过比较,使用蓝色的LED使得显示画面更为明显。同时通过74HC595串转并芯片+四个S8050给32个LED作扫描显示。图3 LED显示电路2.3传感器电路设计通过外部中断可以控制数据开始传输的时刻。选择好外部中断来源是本次制作的难点及重点。方案一:使用机械滚珠开关。通过摇晃使得机械滚珠开关产生的电平变化来触发中断,结合软件控制显示,制作简单,使用方便。方案二:使用光遮断器。在棒上装一个可以摆动的用来遮挡光遮断器光线的细杆,细杆每左右摆动一次这个杆就会通过一次光遮断器,发生电平变化。同样通过这种电平变化,结合软件控制显示。 本次设计中产生的中断是为了实现数据的单程传输。如果使用光遮断器,其触发单片机的时刻处于正中间,不能解决画面因为返回与原来图片重叠的现象。而使用机械滚珠开关,因为在左右都有触点,所以很容易的在往返途中产生两次中断,方便指令控制,所以选择使用方案一。图4 传感器电路图2.4 按键控制电路设计为了控制画面切换,通过按钮按下的次数确定显示的内容。所以设计了一个按键,其连接至单片机中断脚P3.3进 行控制。按键控制电路如图6所示。图6按键控制电路图2.5 电源电路设计如图7所示为电源电路图。系统电源VCC选用3节7号电池串联,串联电压为4.5V。而单片机为宽电压:5.5V 2.4V,所以足以保证下载程序及调试。图7 电源电路图第3章 系统软件设计3.1主程序流程图本设计的软件的主程序流程图如图9所示图8 系统软件流程图3.2 主程序设计思路在摇动LED 棒的时候单片机必须单程送数据否则显示的图形会产生重影,影响视觉效果。因此当系统开始工作后通过机械滚珠开关的位置来使单片机实现单程送数据给LED。如果机械滚珠开关位于右边,则进入外部中断T1并将一变量置1。在变量为1期间让单片机以一定的频率将数据送给LED。如果机械滚珠开关位于左边,则进入外部中断T0并将变量置0,在这期间单片机不会送数据给LED。在送数据时,数据送完后应延时一段时间来使摇动时显示的每个字不会太拥挤。之后再立刻熄灭LED并开始重新判断机械滚珠开关的位置。3.3 多幅画面切换设计本系统通过按键切换不同画面。设计中实现单个图形或者字符的显示方法是将要显示的内容一次性送出,延时一段时间后再进行第二次传送数据。即分别对不同画面取模并保存在数组里,然后根据不同按键值来决定送出哪个画面数据。从而达到了不同画面能够切换的功能。第4章 系统测试4.1 硬件测试当焊接好显示电路之后,先对硬件一些明显错误进行排查,首先在集成电路器件未插入电路板之前,用万用表仔细检查线路,查看连线是否连接正常,防止电源短路。检查系统的总线是否存在相互之间短路或于其他信号线的短路,直至线路问题正确无误。其次对器件进行检查,方法是用面包板逐个检查器件的逻辑状态是否正常,确保器件工作正常。在上述工作完成后,接通上电,看系统是否是正常工作,如不正常,则需要进一步排查错误。当确认焊接无误、芯片完好的情况下之后,就可以进行软件的检查。4.2 软件测试软件的调试是利用keil软件,模块化调试,通过观察存储单元数据的变化,查找并解决程序的语法和逻辑错误,具体的调试步骤如下:1. 把系统的各个模块在仿真软件中逐个调试。2. 对各个需要赋值模块调试时,赋入初值,单步调试,观察仿真器窗口,看输出结果是否为设计时想要的结果。3. 把各个模块组合起来,全速运行,看程序是否能流畅的,是否能实现设计的系统的所有功能。并达到预期效果。 4.3 测试结果根据实际测试结果,此系统的设计基本取得成功。能够清晰的显示并辨认字符或者图案,并可以通过按键进行内容的切换。但是也有不足之处,如果摆动幅度不够大或延时不够短时,会出现的图案不是准确的静态,不过可以明显的显示出来。实际整体效果如下所示:第5章 心得与体会通过本次设计,深深感到理论与实践之间的差距。在学习单片课程时,很多知识点在理论完全理解了,但到具体的电路设计与实现中,会出现很多一时无法理解的现象,要通过不断的通过强化自身的实践动手能力的培养,才能用理论来指导实践,通过实践来进一步深入理解理论。参考文献1 全国大学生电子设计竞赛组委会.第五届全国大学生电子设计竞获奖作品选编M.北京:北京理工大学出版社,2003年第1版.2 李广弟主编.单片机基础.北京:北京航空航天大学出版社,20083 LED及其工程应用 杨清德 康娅编 人民邮电出版社4 胡汉才.单片机原理及系统设计M. 北京:清华大学出版社,2001.01第一版.附录1:电路图 附录2:源程序#include led.h#include string.h#defineGPIO_Pin_00x01/IO引脚 Px.0#defineGPIO_Pin_10x02/IO引脚 Px.1#defineGPIO_Pin_20x04/IO引脚 Px.2#defineGPIO_Pin_30x08/IO引脚 Px.3#defineGPIO_Pin_40x10/IO引脚 Px.4#defineGPIO_Pin_50x20/IO引脚 Px.5#defineGPIO_Pin_60x40/IO引脚 Px.6#defineGPIO_Pin_70x80/IO引脚 Px.7#defineGPIO_Pin_All0xFF/IO所有引脚/* 全局变量定义 */ulongtimeCount = 0;uint delayN = 80; /延时临时计数uint delayTime = 80; /每次延时的周期个数uchar key;uchar KY; /KY作用在后面说明/* 函数: void SYS_init(void)* 描述: 系统资源初始化* 参数: 无* 返回: 无*/void SYS_init(void)/* 外部中断0初始化 */ IT0=1; /中断0为边沿触发方式EX0=1; /开放外部中断0/* 定时器0初始化 */TMOD &= 0x0f;Timer0_16bitAutoReload();/设置为16位自动重装模式Timer0_1T(); /设置为1T模式ET0 = 1; /允许中断PT0 = 1; /高优先级中断TH0 = (u8)(65536 - MAIN_Fosc / 100000ul)8);/重装值100KHZ, 10us,65536 - (MAIN_Fosc)/100000TL0 = (u8)( 65536 - MAIN_Fosc / 100000ul);TR0 = 1; /开始运行/* 函数:void GPIO_Init(void)* 描述:初始化IO口* 参数:无* 返回:无*/void GPIO_Init(void) P1n_push_pull(GPIO_Pin_0+GPIO_Pin_1+GPIO_Pin_2+GPIO_Pin_3+GPIO_Pin_4+GPIO_Pin_5);P3n_push_pull(GPIO_Pin_7+GPIO_Pin_6);P5n_push_pull(GPIO_Pin_4+GPIO_Pin_5);/* 函数: void SYS_delayMs(unsigned char ms)* 描述: 延时函数* 参数: ms,要延时的ms数, 这里只支持1255ms. 自动适应主时钟.* 返回: 无*/void SYS_delayMs(unsigned char ms) unsigned int i; do i = MAIN_Fosc / 13000; while(-i); /14T per loop while(-ms);/* 函数: void main(void)* 描述: 主函数* 参数: 无* 返回: 无*/void main(void)SYS_init();GPIO_Init();key=0; /初始化显示第一组文字 KY=0;LED_sendData(5,0xff); /所有灯灭掉BK_LED = 0; /开启背光灯EA = 1; /使能中断while(1)if (KEY=0) /等待中断SYS_delayMs(10);if (KEY = 0) BK_LED = 1;while (KEY=0);/等待按键释放BK_LED = 0;key+;/更换下一幅画面if (key = 3) /画面循环显示key = 0; /* 函数: void EXT0_int() interrupt 0* 描述: 外部中断0处理函数* 参数: 无* 返回: 无*/void EXT0_int() interrupt 0KY=KY; if (KY = 0)delayTime = timeCount/1580;timeCount = 0; LED_displayMenu(key);/* 函数:void TIMER0_int() interrupt 1* 描述:定时器0中断处理函数* 参数:无* 返回:无*/void TIMER0_int() interrupt 1timeCount+;if (delayN != 0)delayN-;#include led.h /*生日快乐,天天开心*/uchar code text0=0x80,0x40,0x40,0x80,0x40,0x40,0x40,0x80,0x30,0x42,0x42,0x40,0x1e,0x42,0x42,0x20,0x10,0x42,0x42,0x10,0x10,0x42,0x42,0x0c,0x10,0x42,0x42,0x03,0xff,0x7f,0xfe,0x00,0x10,0x42,0x42,0x03,0x10,0x42,0x42,0x0c,0x10,0x42,0x42,0x10,0x10,0x42,0x42,0x20,0x10,0x42,0x42,0x40,0x10,0x40,0x40,0x80,0x00,0x40,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x00,0x00,0x40,0x80,0x00,0x00,0x42,0x40,0xfe,0xff,0x42,0x20,0x82,0x40,0x42,0x10,0x82,0x40,0x42,0x0c,0x82,0x40,0x42,0x03,0x82,0x40,0xfe,0x00,0x82,0x40,0x42,0x03,0x82,0x40,0x42,0x0c,0x82,0x40,0x42,0x10,0xfe,0xff,0x42,0x20,0x00,0x00,0x42,0x40,0x00,0x00,0x40,0x80,0x00,0x00,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0xe0,0x00,0x82,0x80,0x00,0x00,0x82,0x40,0xff,0xff,0x82,0x30,0x10,0x00,0xfe,0x0f,0x20,0x81,0x82,0x00,0x08,0x41,0x82,0x00,0x08,0x31,0x82,0x00,0x08,0x0d,0x82,0x00,0xff,0x03,0x82,0x00,0x08,0x0d,0xfe,0xff,0x08,0x31,0x82,0x00,0xf8,0x41,0x82,0x00,0x00,0x81,0x82,0x00,0x00,0x81,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x20,0x00,0x0c,0xe0,0x10,0x80,0x03,0x9c,0x08,0x00,0x00,0x84,0x06,0x00,0x00,0x84,0x40,0xe0,0x3f,0x84,0x80,0x02,0x40,0xf4,0x7f,0x04,0x40,0x82,0x00,0x18,0x40,0x82,0x00,0x00,0x40,0x83,0x02,0x00,0x40,0x82,0x04,0x00,0x78,0x80,0x08,0x40,0x00,0x80,0x30,0x80,0x01,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x00;/*I love you */uchar code text1=0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x02,0x20,0x00,0x00,0x02,0x20,0x00,0x00,0x02,0x20,0x00,0x00,0x02,0xe0,0xff,0xff,0x03,0xe0,0xff,0xff,0x03,0x20,0x00,0x00,0x02,0x20,0x00,0x00,0x02,0x20,0x00,0x00,0x02,0x20,0x00,0x00,0x02,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,0x3e,0x00,0x00,0x80,0xff,0x01,0x00,0x80,0xff,0x07,0x00,0xc0,0xff,0x0f,0x00,0xc0,0xff,0x3f,0x00,0xc0,0xff,0x7f,0x00,0xc0,0xff,0xff,0x00,0x80,0xff,0xff,0x01,0x00,0xff,0xff,0x03,0x00,0xfe,0xff,0x07,0x00,0xff,0xff,0x07,0x80,0xff,0xff,0x01,0xc0,0xff,0xff,0x00,0xc0,0xff,0x7f,0x00,0xc0,0xff,0x3f,0x00,0xc0,0xff,0x0f,0x00,0xc0,0xff,0x07,0x00,0x80,0xff,0x01,0x00,0x00,0x7f,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,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0xe0,0xff,0x7f,0x00,0xe0,0xff,0xff,0x01,0x20,0x00,0x00,0x01,0x20,0x00,0x00,0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x20,0x00,0x00,0x01,0x20,0x00,0x80,0x00,0xe0,0xff,0x7f,0x00,0x20,0x00,0x00,0x00,0x20,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 text2=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,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,0xf0,0x07,0x00,0x00,0xfe,0x3f,0x00,0x00,0x0f,0x78,0x00,0xc0,0x03,0xe0,0x01,0xe0,0x00,0x80,0x03,0x60,0x00,0x03,0x03,0x30,0x04,0x06,0x06,0x38,0x02,0x08,0x06,0x18,0x03,0x18,0x0c,0x18,0x03,0x30,0x0c,0x0c,0x02,0x30,0x18,0x0c,0x04,0x60,0x18,0x0c,0x00,0x60,0x18,0x0c,0x00,0x60,0x18,0x0c,0x00,0x60,0x18,0x0c,0x04,0x60,0x18,0x0c,0x02,0x30,0x0c,0x18,0x03,0x30,0x0c,0x18,0x03,0x18,0x06,0x38,0x02,0x0e,0x07,0x30,0x04,0x03,0x03,0xe0,0x00,0x80,0x03,0xc0,0x00,0xc0,0x01,0xc0,0x03,0xe0,0x00,0x00,0x0f,0x78,0x00,0x00,0xfe,0x3f,0x00,0x00,0xf0,0x07,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,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;/* 函数: void LED_delay(unsigned char n)* 描述:显示延时* 参数: 延时n* 返回: 无*/void LED_delay(unsigned char n)for(; n 0; n-)delayN = delayTime;while (delayN);/* 函数: void LED_senByte(uchar value)* 描述: 发送一字节数据* 参数:value: 数据值* 返回: 无*/void LED_senByte(uchar value)uchar i;for (i = 0; i 8; i+)SCK = 0; DS = value & 0x80;/取数据的最高位SCK = 1;value = value 1; /数据左移一位/* 函数: void LED_sendData(uchar group,uchar value)* 描述: 指定组发送一字节数据* 参数: group:组, value:数据值* 返回: 无*/void LED_sendData(uchar group,uchar value)G=1; LED_senByte(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论