导航:首页 > 操作系统 > 摇摇棒单片机

摇摇棒单片机

发布时间:2022-03-30 13:17:31

1. 求 单片机 摇摇棒电路图和代码

我刚好又一个,现在发你可以显示Love

2. 求单片机LED 摇摇棒代码生成器

近年来,单片机系统以其体积小、功能强、扩展灵活、使用方便等优点,逐渐渗透到各行业的工程实际应用中。而LED显示电路就像单片机系统的眼睛,实时地向人们传递着系统工作的各种状态信息和处理结果。因此,高效、方便的LED显示驱动电路是构成完善的单片机系统必不可少的元素。常用的LED显示驱动电路有并行译码方式、串行—并行转换方式、显示驱动接口芯片方式等。下面分别对这几种方式进行讨论,并给出显示驱动芯片MAX7219的应用实例。

并行译码显示方式

单片机89C2051输出显示的一个例子,4位BCD码数据从其P1.0~P1.3并行输出,经7段LED显示驱动电路CD4511译码后驱动LED显示,这样只需向P1.0~P1.3 写入欲显示数字的BCD码,即可显示出相应的数字。这种方式虽然简单,但占用单片机口线较多,资源利用率低,因此不常采用。

串行- 并行转换方式

图2所示为89C2051的串口驱动数码管的电路,其中串口工作在方式0,74LS164是8位串入并出移位寄存器,负责将RXD输出的串行数据转换成并行信号。显然,这种方式显示同样的位数使用单片机的口线大大减少,并且可以让LED显示BCD码以外的字符(如A、B、C、D 等),但是,当要显示的位数较多时,仍需占用较多的口线,并且在许多情况下需要串口工作在UART方式,以便进行串行通信,从而限制了这种方式的使用范围。

LED显示驱动芯片

随着单片机技术的发展,许多公司都推出了专用LED显示驱动芯片,如Microchip公司的A Y0438、Maxim公司的MAX7219等都是其中的典型代表。下面以MAX7219为例说明LED显示驱动芯片在单片机系统中的应用。

MAX7219简介

MAX7219是Maxim公司推出的8位LED串行显示驱动器,它采用3线串口传送数据,占用资源少且硬件简单,只需一个外部电阻即可方便地调节LED的亮度;可灵活地选择显示器的个数( 1~8个, 级联可成倍增加);可进行译码或不译码显示;内含硬件动态扫描控制,可设置低功耗停机方式。

MAX7219采用24脚双列直插式封装,其引脚如图3所示。SEGA~SEGG和DP分别为LED七段驱动器线和小数点线,供给显示器源电流;DIG0~DIG7为8位数字驱动线,输出位选信号,从每位LED共阴极吸入电流。

DIN是串行数据输入端。在CLK 的上升沿,一位数据被加载到内部16位移位寄存器中,CLK最高频率可达10MHz,在输入时钟的每个上升沿均有一位数据由DIN端移入到内部寄存器中;LOAD用来装载数据,在LOAD的上升沿,16位串行数据被锁存到数据或控制寄存器中,LOAD必须在第16个时钟上升沿的同时或之后、在下一个时钟上升沿之前变高, 否则数据将被丢失。每组数据为16 位二进制数据包,其格式如表1所示。

其中D15~D12位不用,D11~D8位为内部5个控制寄存器和8个LED显示数据寄存器的地址,D7~D0位为5个控制寄存器和8个LED数码管待显示的数据,因为控制寄存器与显示数据寄存器独立编址,所以可以通过程序对每个寄存器进行操作。一般情况下,程序先送控制命令,后向显示寄存器送数据,每16 位为一组,从高位地址字节最高位开始送,直到低位数据字节最后一位。MAX7219内部有14个可寻址的控制字寄存器,各寄存器的功能及地址如表2所示。

其中,地址×0H 为空操作寄存器,允许数据从输入到输出直接通过,可用于设备串接。地址×1H~×8H为显示RAM区,分别对应DIG0~DIG7引脚的8 位LED显示数据。地址×9H为译码模式寄存器,其8 位二进制数分别控制着8个LED显示器的译码模式,逻辑高电平时选择硬件译码(BCD - B码译码), 译码器选择数据寄存器中的低4位(D3~D0)进行BCD- B码译码, ×0H~×9H对应BCD码字符0~9,而×AH~×FH分别对应B码字符-、E、H、L、P及消隐,D4~D6无效,D7单独控制小数点;译码模式寄存器为逻辑低电平时选择软件译码,数据D6~D0分别对应LED显示器的A~G段,D7对应小数点DP。

地址×AH为显示亮度寄存器,通过对该寄存器的D0~D3位写入不同的数值可实现对LED显示亮度的控制,从00H到0FH共16级可调。地址×BH为扫描界限寄存器,其D0~D3位数值设定为00H~07H,表示显示器动态扫描个数为1~8。地址×CH为停机寄存器,当其D0位为0时,MAX7219处于停机状态,扫描振荡器停振,所有显示器消隐,寄存器数据保持不变;当D0为1时,正常工作。地址×FH为显示测试寄存器,当其D0位为0时,正常工作;当D0为1时处于测试状态,全部LED显示器的所有字段都以最大亮度接通显示。

3. 谁会做用51单片机制作的摇摇棒

http://www.elecfans.com/soft/32/2011/20110510197985.html
给你个地址,自己注册一个帐号就可以下载了哦,这个网站资料很多的

4. 摇摇棒 51单片机

LED 要学用高亮的,不然效果会很不好,最好是5mm的,电流最好要采用灌电流的方式进行显示,水银开关要选用大一点的,我以前做过这个,因为不高亮和灌电流的状态下,效果很不好。在裁剪和拼接上,单片机放在手握的地方。你看看网上摇摇棒的图片,就知道摇摇棒的外观了。

P0口是一定要加上拉电阻的,5.1K的上拉。

5. 求一个用于51单片机的时钟摇摇棒源程序

没弄过遥遥榜,不会

6. stc单片机摇摇棒c程序

http://user.qzone.qq.com/281362556/blog/1306123569?ptlang=2052&ADUIN=258223434&ADSESSION=1306544480&ADTAG=CLIENT.QQ.3439_FriendTip_QzoneFolder.0
在这个空间里搜索 “摇摇棒” 里面有两篇详细摇摇棒程序的日志

7. 如何用stm32单片机制作一个摇摇棒,网上只找到了用51的教程,能具体说一下怎么做吗,或者要注意的

摇摇棒的显示原理和点阵的显示差不多,就只不过x轴的扫描是要在摇的时候产生震动才进行x轴扫描,而且扫描的速度要比点阵慢一些,具体扫描速度是多少根据你的具体情况测试得到

8. 如何用单片机做摇摇棒单片机专家请进!

其实就是个LED动态显示电路,用水银开关测是否晃动和晃动的方向.

9. 请问,摇摇棒的设计思路,和pic单片机的c程序。谢谢!

以下是详细说明:

图形显示的原理:

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

物理机制:

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

再想想,短时间内我们手臂的摆动频率也不会有特别大的变化,我们只要能得到前一次摆动所用的时间,然后用这个时间近似得到下一次摆动所需要的时间,然后分N份就可以了。得到一次摆动所需的时间的任务由光遮断器完成,在棒上装一个可以摆动的用来遮挡光遮断器光线的细杆,粗细比光遮断器的狭缝稍宽,我用的是整流桥焊后剪下的一段管脚。每左右摆动一次这个杆就会通过一次光遮断器,使单片机产生一次中断,两次中断之间的时间就是想要得到的时间,实现这个功能用掉2051的一个定时器T0和外部中断INT0。然后用2051的另一个定时器T1,其定时时间是T0的N分之一,每次中断依次显示一列,就是照片上的效果。

再细想一下,手臂摆动的频率大于2Hz的时候才大概能由视觉暂留看出图形,再快也不过十几Hz,由T0为16位定时器的最长计时时间得到2051的时钟频率1MHz最合适,还有遮挡用的细杆的粗细也可以大概估算,使其不会对计时精度产生太大影响。

所用元件:

AT89C20518元

高亮LED共8个3.6元

电池盒0.5元

单面万用板8元可以裁成3块,做3个摇棒

陶瓷谐振器1元

光遮断器2元

电阻电容导线2元

外壳*0.7元可以裁成2块

可选元件:

电源开关1元

总成本不超过20元

*外壳我用在家乐福买的半透明文件夹卷成的

此电路电路非常简单,代码短,但是用到了2051的外部中断编程和T0、T1定时器编程,非常适合初学者练习。我制作这个玩具花费了两个晚上的时间。此电路和程序还有扩展改进的空间,如在长时间不摆动的情况下可以使单片机进入省电模式,显示不仅限于对称图片等,大家可以试试。

以下是源程序:

/*************************************************************************/

//---------------

//LED显示摇棒

//---------------

//作者:nim于http://www.21icbbs.com2005-1-7

//

//email:[email protected]

//

//本设计版权归作者所有,请勿擅自用于商业目的,转载请注明作者及出处

/*************************************************************************/

#include<reg51.h>

#defineSEG17//每帧图片分成17列来显示

#defineINTERVAL20//每幅图片在左右摇摆20次后换下一幅

typedefunsignedcharuchar;

typedefunsignedintuint;

codecharpattern[17][3]={//3幅图片的字模

{0xff,0xff,0xff},

{0xff,0xff,0xff},

{0xff,0xff,0xff},

{0xff,0x9f,0xff},

{0xff,0x6f,0xf9},

{0xff,0x77,0x65},

{0xfe,0xbb,0x1e},

{0x7e,0xdd,0xfe},

{0x00,0xee,0xfe},

{0x7e,0xdd,0xfe},

{0xfe,0xbb,0x1e},

{0xff,0x77,0x65},

{0xff,0x6f,0xf9},

{0xff,0x9f,0xff},

{0xff,0xff,0xff},

{0xff,0xff,0xff},

{0xff,0xff,0xff},

};

ucharphase,th1,tl1,index,count;

main()

{

EA=0;

EX0=1;

ET1=1;

PX0=1;

IT0=1;

TMOD=0x11;

index=0;

EA=1;

while(1)

{

}

}

voidInt0_Handle(void)interrupt0using2

{

uintt0_time;

TR0=0;

TR1=0;

TF1=0;

t0_time=TH0<<8|TL0;

TL0=0;

TH0=0;

TR0=1;

t0_time=65535-t0_time/SEG;

th1=t0_time/256;

TH1=th1;

tl1=t0_time%256;

TL1=tl1;

if(count<3*INTERVAL){//3幅图片循环

count++;

}

else{

count=0;

}

index=count/INTERVAL;

if(th1!=0xff||tl1!=0xff){//如果摆动特别慢,定时器溢出就不显示

phase=0;

TR1=1;

}

else{

TR1=0;

}

}

voidTimer1(void)interrupt3using3

{

if(phase<SEG)//17段依次显示

{

P1=pattern[phase][index];

phase++;

TH1=th1;

TL1=tl1;

}

}

阅读全文

与摇摇棒单片机相关的资料

热点内容
书本文件夹夹子怎么安 浏览:801
如何更改编译器的背景 浏览:84
linuxcp拷贝文件 浏览:608
我的世界如何屏蔽别人服务器 浏览:907
单片机烧录员 浏览:970
美国数据服务器可以部署什么业务 浏览:973
如何卸载服务器中的ie 浏览:42
单片机必须学编程吗 浏览:153
如何判断是否与服务器连接数据库 浏览:740
吃甜食会缓解压力嘛 浏览:317
pdf魔鬼 浏览:29
二维数组递归解决算法问题 浏览:382
java反射例子 浏览:670
惠普笔记本自带解压软件 浏览:840
抖音视频后台压缩 浏览:707
app里的视频广告从哪里接的 浏览:556
天翼云服务器跟腾讯云 浏览:618
cyk算法实现 浏览:191
大潘号app在哪里可以下载 浏览:109
怎么做解压豌豆捏捏乐 浏览:618