51/AVR单片机技术驿站!  <在线翻译>     便利工具    特色网址   无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

当前位置:首页 > 课题设计文章 > 详细内容
“摇摇棒”-视觉暂留原理的显示装置
作者:刘庆宇  发布时间:2009/10/16  阅读次数:7297  字体大小: 【】 【】【

摘要:“摇动显示装置”,俗称“摇摇棒”,是基于人的视觉暂留原理的,通过分时刷新32个发光二极管来显示输出文字或图案等信息的显示装置。输出信号频率的控制通过单片机来实现,用摇动传感器检测当前摇动状态。当进行摇动时,由于人的视觉暂留原理,会在发光二极管摇动区域产生一个视觉平面,在视觉平面内的二极管通过不同频率的刷新,会在摇动区域内产生图像,从而达到在该视觉平面上传达信息的作用。
关键字:单片机;摇摇棒;发光二极管 ;摇动

前言:随着人们物质生活水平的提高,人们对精神生活的追求也愈加强烈,对信息的渴求已成为了人们必不可少的需要,更加简捷与新颖的信息传递方式无疑会给人们带来耳目一新的感受。而现代工具务求简捷化、便携化,因此,摇动显示装置的到来,必将会给人们带来一种新的方便的文化传递方式。



一、系统硬件
系统功能主要体现在3个部分:
(1)单片机控制(STC12C2052)
本装置采用了STC12C2052单片机,它支持直接通过串口线下载程序,对于本设计而言,显示文字需经常改变,STC12C2052方便许多,因此选择STC12C2052作为本设计所用的单片机。
(2)显示功能。(D1~D32)
信息传递主要由显示来完成,本设计显示功能由32个发光二极管来完成。32个发光二极管分为4组,以共阳的方式连接,共用P1口作为数据输出口。另外4条I/O口作为段选,通过三极管选通相应段。
(3)传感器系统。(S2)
硬件传感器主要为摇动传感器,本设计的摇动传感器由滚珠开关构成。
可选摇动开关有水银摇动开关和滚珠开关两种。水银摇动开关稳定性较高,但容易发生破裂,水银外泄,安全性较差。滚珠开关稳定性稍差,但不容易损坏,安全度很高。考虑到实际应用环境,故选用滚珠开关作为系统的摇动传感器。由滚珠开关带来的不稳定性可以通过软件进行弥补。

图1:滚珠开关内部结构图
另外D_B1和D_B2为装饰用的蓝色发光二极管,J1为串口,供下载程序用。J2和J3为电池盒插座。

图2:系统硬件原理图
二、系统软件
系统开始运行,内部进行初始化后,等待外部中断。当摇动到指定位置时,由滚珠开关出触发外部中断,再经过一段时间延时后开始显示。显示完成返回主程序,等待下一个摇动周期的到来。
程序清单如下:
#include
#define uchar unsigned char
#define uint unsigned int

/*********外部接口定义**********/
#define out P1 //数据输出端口
sbit led1=P3^2; //第1组LED
sbit led2=P3^4; //第2组LED
sbit led3=P3^5; //第3组LED
sbit led4=P3^7; //第4组LED

/*********字符点阵数据表**********/
uchar code disp_tab[]=
{0xFF,0xFF, 0x0F,0xFF,
0xFF,0x9F, 0xFF,0xFF,
0xFF,0xCF, 0x00,0x80,
0xFF,0xE7, 0x00,0x80,
0xFF,0xF3, 0xEF,0xFF,
0xFF,0xF8, 0xDF,0xFF,
0x00,0xFC, 0x8F,0x9F,
0x00,0xFE, 0x81,0x9C,
0x7F,0xFC, 0xE1,0x9C,
0xFF,0xF9, 0xE7,0x9C,
0xFF,0xF3, 0x00,0x80,
0xFF,0xE7, 0x00,0x80,
0xFF,0xCF, 0xE7,0x9C,
0xFF,0x9F, 0xE7,0x9C,
0xFF,0xDF, 0xE7,0x9F,
0xFF,0xFF,0xFF,0xFF,/*"人"*/ /*"性"*/

0xFF,0xDF, 0xFF,0xF7,
0xCF,0xCF, 0xE7,0xE7,
0xCF,0xE7, 0xE7,0xF3,
0xCF,0xF7, 0xE7,0xF9,
0xCF,0xE3, 0x67,0xF0,
0xCF,0xC9, 0x27,0xF2,
0xCE,0xDC, 0x07,0xF3,
0x48,0x9E, 0x00,0x80,
0x09,0x9F, 0x00,0x80,
0x8F,0x9F, 0x27,0xF3,
0x8F,0x9F, 0x67,0xF2,
0xCF,0x9F, 0xE7,0xF0,
0xCF,0x9F, 0xE7,0xF9,
0xCF,0x9F, 0xE7,0xF3,
0xFF,0x9F, 0xE7,0xF7,
0xFF,0xFF,0xFF,0xFF,/*"之"*/ /*"本"*/

0xFF,0xFD, 0xFF,0xFF,
0xE7,0xFC, 0xFF,0xFD,
0x64,0xFE, 0xBB,0x85,
0x20,0x80, 0x2A,0x85,
0x01,0x80, 0x28,0xD4,
0x47,0xFC, 0xA9,0xD4,
0x3F,0x99, 0xAB,0xD5,
0xB3,0xCF, 0x03,0xD4,
0xF3,0xE3, 0x03,0xD4,
0x03,0xF0, 0xA9,0xD5,
0x03,0x9C, 0xA8,0xD4,
0xF3,0x9F, 0x2A,0x84,
0xF3,0x8F, 0x2B,0x85,
0x03,0xC0, 0xBB,0xFD,
0x03,0xE0, 0xFF,0xFD,
0xFF,0xFF,0xFF,0xFF};/*"初"*/ /*"善"*/

/*********子程序声明**********/
void delay(n); //延时子程序
void display(); //显示子程序

/********* 主 程 序 **********/
void main()
{
EX1=1; //开放外部中断1
IT1=0; //中断1为边沿触发方式
EA=1;
while(1);
}

/*********显示子程序**********/
void display()
{ uchar i,n;
n=0; //初始化数据表计数
for(i=0;i<48;i++) //共显示16*3=48列
{
out=0xff; //清显示
led4=1; //关闭第4组LED
led1=0; //开启第1组LED
out=disp_tab[n++]; //输出数据到LED
delay(20); //延时

out=0xff; //清显示
led1=1; //关闭第1组LED
led2=0; //开启第2组LED
out=disp_tab[n++]; //输出数据到LED
delay(20); //延时

out=0xff; //清显示
led2=1; //关闭第2组LED
led3=0; //开启第3组LED
out=disp_tab[n++]; //输出数据到LED
delay(20); //延时

out=0xff; //清显示
led3=1; //关闭第3组LED
led4=0; //开启第4组LED
out=disp_tab[n++]; //输出数据到LED
delay(20); //延时
}
}

/*********延时子程序**********/
void delay(n)
{
uchar i;
for(;n>0;n--)
{
for(i=0;i<7;i++);
}
}

/*********中断子程序**********/
void int1() interrupt 2 //使用外部中断1
{
uint i=5000; //延时一段时间开始显示
out=0xff;
while(i--);
display(); //显示
}

三、“pctolcd2002”软件使用方法
程序中“字符点阵数据表”中的数据是由“pctolcd2002”软件生成的,下面介绍使用pctolcd2002生成3个×2行的汉字点阵数据的方法:
1、启动pctolcd2002软件,“模式”设为“字符模式”。字宽和字高设为16*16。“选项”中的“自定义格式”选择“C51”格式。其它默认即可。

2、输入第一行的三个(或四个)汉字,生成字模。
例如:
{0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11}
{0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22}
{0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33}
3、将字模保存好,输入第二行的三个(或四个)汉字,生成字模。
例如:
{0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44}
{0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55}
{0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66}
4、由于摇摇棒是逐列扫描,需要将同一列上下两行16位的数据组成一列32位数据。

按上面的数据,组合后为:
{0x11,0x11,0x44,0x44,
0x11,0x11,0x44,0x44,
0x11,0x11,0x44,0x44,
0x11,0x11,0x44,0x44,
0x22,0x22,0x55,0x55,
0x22,0x22,0x55,0x55,
0x22,0x22,0x55,0x55,
0x22,0x22,0x55,0x55,
0x33,0x33,0x66,0x66,
0x33,0x33,0x66,0x66,
0x33,0x33,0x66,0x66,
0x33,0x33,0x66,0x66};
5、将数据替换,如每行显示4个汉字则修改程序 for(i=0;i<48;i++)为 for(i=0;i<64;i++)


四、结论
本文以传感器和单片机的实际应用为背景,介绍了以单片机和传感器为核心系统摇动传感器和显示设计的基本结构和基本原理。
本文将使用单片机对摇动显示进行实例化,设计一个LED摇动显示器来显示文字、图像等信息。掌握利用8051型单片机对发光二极管阵列进行摇动控制的方法。输出信号频率的控制通过单片机来实现,用摇动传感器检测当前摇动状态,用32个发光二极管进行不同频率的亮灭刷新,通过手动摇动可显示输出文字及图案等信息。当进行摇动时,由于人的视觉暂留原理,会在发光二极管摇动区域产生一个视觉平面,在视觉平面内的二极管通过不同频率的刷新,会在摇动区域内产生图像,从而达到在该视觉平面上传达信息的作用。
设计具有市场前景,可满足各种大型演出、集会、游行等宣传需要,为人们的生活提供便利。
  
来源:黑龙江八一农垦大学信息技术学院05电气
我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[6]
  • 评论人:[匿名] 时间: [2011/12/29 19:04:33] IP:[67.20.111.7*]
  • vhJviL , [url=http://fkrkilhvubrj.com/]fkrkilhvubrj[/url], [link=http://frsicigmojmn.com/]frsicigmojmn[/link], http://hvxfxubekdgz.com/
  • 评论人:[匿名] 时间: [2011/12/29 19:04:23] IP:[58.30.38.10*]
  • coNNLb , [url=http://vjekrqemcnyu.com/]vjekrqemcnyu[/url], [link=http://gkhsrmrndcks.com/]gkhsrmrndcks[/link], http://nylasnozalhb.com/
  • 评论人:[匿名] 时间: [2011/12/28 20:35:20] IP:[127.0.0.*]
  • QCxci3 <a href="http://bsxdklvlszlw.com/">bsxdklvlszlw</a>
  • 评论人:[匿名] 时间: [2011/12/27 20:55:27] IP:[201.73.184.16*]
  • MWbqzz , [url=http://mudubzqkessh.com/]mudubzqkessh[/url], [link=http://yjeotjhxojhm.com/]yjeotjhxojhm[/link], http://kwcelsazwywj.com/
  • 评论人:[匿名] 时间: [2011/12/26 16:36:45] IP:[67.221.226.12*]
  • efxJqf <a href="http://hyvjumzmrngd.com/">hyvjumzmrngd</a>

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:522422171
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号