试题2.docx

上传人:b****5 文档编号:7744852 上传时间:2023-01-26 格式:DOCX 页数:11 大小:730.44KB
下载 相关 举报
试题2.docx_第1页
第1页 / 共11页
试题2.docx_第2页
第2页 / 共11页
试题2.docx_第3页
第3页 / 共11页
试题2.docx_第4页
第4页 / 共11页
试题2.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

试题2.docx

《试题2.docx》由会员分享,可在线阅读,更多相关《试题2.docx(11页珍藏版)》请在冰豆网上搜索。

试题2.docx

试题2

二,LED显示棒

本作品主要利用人眼的视觉暂留效应,使手在摆动到不同位置的时候,让位于一条直线上的LED显示二维图像的不同的列,实现图形扫描显示。

当我们在摆动手臂的时候,短时间内摆动位置和左右幅度不会有太大变化,利用我们手臂的这个运动规律,只要能得到棒从一侧摆动到另一侧的时间,然后把这个时间分成N份,然后在每一份的时间里显示不同的花样就能实现图形的显示。

本文介绍的作品就是利用LED而制成的手摇棒。

它可以替代舞台下的荧光棒,不但能够发光,还可以扫描出一些简单的字,起到娱乐作用。

高亮的5mm的LED。

采取并口输出。

采用AT89S52来作为摇摇棒的控制核心;

字模的取模方式

从上到下,从右到左一列一列依次取模,每一列16个点占用2个字节;把生成的每个字节代码低位在上。

至于是由1还是0来表示亮点是无所谓的,可以通过取反输出来调整。

总体设计

设计总体框图如图1:

 

单元模块设计

AT89S52单片机最小系统:

最小系统包括晶体振荡电路、复位开关和电源部分。

图2为AT89S52单片机的最小系统。

图二最小系统电路图

LED显示模块

本模块选用16个5mm的高亮LED灯排成一列,并加上一个IN4007保护二极管构成。

电路图如图三。

 

 

 

图三LED显示电路

按键切换模块

由于本实验有多种显示效果,所以按键切换必不可少。

为了节省空间,只用了一个按键来切换。

下图是按键电路图。

图四按键切换电路

5软件设计

主程序流程图如下:

图五主程序流程图

 

系统测试

接上电源,通过开关K1的不断切换,就能显示不同的效果图。

效果一:

效果二:

效果三:

元器件明细表:

AT89S52一个,16个高亮5mmLED,IN4007一个,锁紧夹一个,排针若干,按键2个,10K电阻2个,12M晶振一个,220欧一个,30pf的电容2个,一个3mm的LED。

系统整体电路图如下:

附录

程序:

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitkey=P3^0;

ucharnum,keynum=0;

ucharcodewelcome1[]={0x07,0xF7,0xFF,0x07,0xFF,0xF7,0x07,0xFF,

0xFF,0xFF,0x7F,0x7F,0x7F,0x7F,0xFF,0xFF,

0xFF,0xF7,0xF7,0x07,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0x7F,0x7F,0x7F,0xFF,0xFF,

0xFF,0xFF,0x7F,0x7F,0x7F,0x7F,0xFF,0xFF,

0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0xFF,

0xFF,0xFF,0x7F,0x7F,0x7F,0x7F,0xFF,0xFF

};

ucharcodewelcome2[]={0xFC,0xC3,0xF8,0xFF,0xF8,0xC3,0xFC,0xFF,

0xFF,0xE0,0xDD,0xDD,0xDD,0xDD,0xEC,0xFF,

0xFF,0xDF,0xDF,0xC0,0xDF,0xDF,0xFF,0xFF,

0xFF,0xF1,0xEE,0xDF,0xDF,0xDF,0xEE,0xFF,

0xFF,0xE0,0xDF,0xDF,0xDF,0xDF,0xE0,0xFF,

0xDF,0xC0,0xDF,0xFF,0xC0,0xDF,0xFF,0xC0,

0xFF,0xE0,0xDD,0xDD,0xDD,0xDD,0xEC,0xFF,

};

ucharcodedianzixi1[]={0xFF,0xFF,0x03,0x03,0xB3,0xB3,0x00,0x00,0xB3,0xB3,0xB3,0x03,0x03,0xFF,0xFF,0xFF,0x3F,0x3F,0x3C,0x3C,0x3C,0x3C,0x3C,0x0C,0x0C,0x24,0x30,0x38,0x3C,0x3F,0x3F,0xFF,0xFF,0xFF,0xF9,0xD9,0xC9,0x41,0x11,0x99,0xD9,0xC9,0xE4,0x34,0x7C,0xFC,0xFF,0xFF

};

ucharcodedianzixi2[]={0xFF,0xFF,0xF0,0xF0,0xF9,0xF9,0xC0,0x80,0x99,0x99,0x99,0x98,0x98,0x87,0xC7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF,0x9F,0x80,0xC0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF,0xCC,0xE4,0xF4,0xFC,0x9C,0x80,0xC0,0xFE,0xFE,0xF6,0xE6,0xCC,0xFF,0xFF

};

ucharcodewuhuan1[]={0xFF,0xFF,0xFF,0x0F,0xF7,0xFB,0xFD,0xFD,0xFD,0xFD,0x7B,0xB7,0x0F,0xB7,0xBB,0x7D,0xFD,0xFD,0xFD,0x7B,0xB7,0x0F,0xB7,0xBB,0x7D,0xFD,0xFD,0xFD,0xFB,0xF7,0x0F,0xFF};

ucharcodewuhuan2[]={0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xFB,0xE1,0xDA,0xBD,0x7E,0x7F,0x7E,0x7D,0xBB,0xDA,0xE1,0xDA,0xBD,0x7E,0x7F,0x7E,0x7D,0xBB,0xDA,0xE1,0xFB,0xFD,0xFE,0xFF,0xFF};

ucharcodedianji1[]={0xDD,0x99,0x33,0x01,0x01,0x99,0x21,0xCF,0x47,0x43,0x10,0x10,0x43,0x47,0xCF,0xFF,

0x7F,0x0F,0xFF,0x00,0x00,0x9F,0x7F,0x01,0x01,0x9F,0x7F,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xC7,0xC6,0x24,0x21,0x27,0x26,0x24,0x21,0x27,0x23,0x20,0xC4,0xC7,0xFF,0xFF,0x01,0x01,0x99,0x01,0x71,0xE3,0xE3,0x93,0x92,0x90,0x91,0x93,0x93,0xE3,0xE3,0xFF,0xFF,0x1F,0xEF,0xF7,0xF7,0xF7,0xEF,0x1F,0xFF,0x07,0xB7,0xB7,0xB7,0xB7,0x77,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0xE7,0xFB,0xFF,0x9F,0xEF,0xF7,0xF7,0xEF,0x1F,0xFF,0xFF,0xCF,0xF7,0xF7,0xF7,0xF7,0x0F,0xFF};

ucharcodedianji2[]={0xCF,0x81,0xF9,0x80,0x80,0xFB,0xF8,0xE7,0xE2,0x92,0x80,0xC0,0xF2,0xE2,0xE7,0xFF,

0xFC,0x9F,0x87,0xE0,0xF8,0xFF,0xFE,0xC0,0xC0,0xFF,0xFE,0xFF,0x80,0x80,0xFF,0xFF,

0xFF,0xF9,0xF9,0xF9,0xF9,0xD9,0x99,0x81,0xC0,0xF8,0xF9,0xF9,0xF9,0xF9,0xFF,0xFF,

0x80,0x80,0xF3,0xF0,0xB8,0x9F,0xCC,0xE0,0xF0,0xFC,0xC0,0x80,0x9C,0x9C,0x8F,0xFF,

0xFF,0xF0,0xEF,0xDF,0xDF,0xDF,0xEF,0xF0,0xFF,0xE7,0xDF,0xDF,0xDF,0xDF,0xE0,0xFF,

0xFF,0xBF,0xCF,0xF3,0xFC,0xFF,0xFF,0xFF,0xFF,0xCF,0xD7,0xDB,0xDD,0xDE,0xDF,0xFF,

0xFF,0xE7,0xDF,0xDF,0xDE,0xDE,0xE1,0xFF

};

voiddelay(ucharz)

{uchari,j;

for(i=0;i

for(j=0;j<180;j++);

}

voidwelcome()

{

delay

(2);

for(num=56;num>0;num++)

{

P0=welcome1[num];

delay

(2);

P2=welcome2[num];

delay

(2);

}

}

voiddianzixi()

{

delay

(2);

for(num=48;num>0;num--)

{

P0=dianzixi1[num];

delay

(2);

P2=dianzixi2[num];

delay

(2);

}

}

voidwuhuan()

{

delay

(2);

for(num=32;num>0;num--)

{

P0=wuhuan1[num];

delay

(2);

P2=wuhuan2[num];

delay

(2);

}

}

voiddianji()

{

delay

(2);

for(num=0;num<104;num--)

{

P0=dianji1[num];

delay

(2);

P2=dianji2[num];

delay

(2);

}

}

voidpresskey()

{

if(key==0)

{

delay(10);

if(key==0)

{

keynum++;

while(!

key);

}

}

}

voidmain()

{

while

(1)

{

presskey();

switch(keynum)

{

case1:

welcome();break;

case2:

dianzixi();break;

case3:

wuhuan();break;

case4:

dianji();break;

case5:

P0=0xff;P2=0xff;break;

case6:

keynum=1;break;

default:

break;

}

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1