返回首页

51单片机旋转led制作(基于51单片机led屏滚动)

来源:www.haichao.net  时间:2022-12-21 11:14   点击:94  编辑:admin   手机版

1. 基于51单片机led屏滚动

滑动变阻器坏了,那就焊下来再换一个上去。

不想换也没关系,亮度调节说实话没多少作用,如果你只是做实验。

直接串一个电阻接VCC就行,实在懒得弄就直接接VCC,也不会有问题。

2. 单片机led滚动显示屏设计方法

一、含义不同:

1、固定码:地址码是固定不变的,虽然地址码是固定不变的,但它是由8位不同的地址码组合而成的,可以通过不同的组合来进行配对,这样就不会出现上述情况。遥控器固定码是相对滚动码说的,一般由PT2262/2272组成的系统为硬件编码、固定码遥控系统。

2、学习码:由百万组不同的编码组成,接收器只有通过对码学习,才能识别遥控器。它大大增加了产品的安全性。通常学习码的编码IC为1527和2240,解码为单片机。

3、滚动码:当前主要用在RKE(Remote Keyless Entry)系统中,进行身份验证。

二、特点不同:

1、固定码与学习码都是用在民用和商用的报警产品上的,家中常见的是家用防盗报警器以及家用燃气报警器,而滚动码只用于RKE系统进行身份验证。

2、编码解码以及编码组合不同:学习码的编码IC为1527和2240,解码为单片机;固定码编码为PT2262(传统防盗探测器),解码PT2272(传统报警主机);

3、固定码安全度很不高,地址编码很容易重码;学习码安全度相对较高,100万组编码大大降低使用上编码重复的机率。

3. 51单片机 led

泻药

不加译码器或者锁存器的话,可以用12个引脚+4个三极管(当然还有必要的电阻)实现,如果你的单片机有大电流io口的话,4个三极管也可以省了,12个引脚可以组成4x8的矩阵电路,刚好可以控制32个LED,想多几个,还可以组成5x7,6x6的矩阵,就可以控制36个LED了,而且程序上驱动起来也更简单,不用去查译码器/锁存器的使用方法!

你还要4个按键输入,这12个引脚还可以利用起来,分时复用,程序上可能会复杂一点点,但是绝对可以实现,还能帮助你理解定时器和分时扫描的使用方法!

4. 基于51单片机的led屏显示

89C51或89C52单片机P0P1P3P4四组共32个IO口都可以驱动LED灯。这种单片机的高电平驱动能力很弱,通常IO输出低电平驱动LED,LED的另一端接限流电阻然后再接电源正。限流电阻的选择上,个人经验电流控制在2-7mA之间,根据对亮度和功耗的要求调整选择。

5. 旋转led显示屏51单片机

具体代码我没有,不过可以给你提醒一下. 用12M晶体,采用定时方式0(十六位),最大定时时间大概10ms左右,(具体我没算),你可以设置一个变量用来计算定时中断的次数,如果次数不够就重装并重启定时器,直到2m时间到. 流程: 1.初始化定时器,开中断 2.启动定时器 3.中断处理,中断次数到则翻转与LED相连的IO口,如果次数不到则转到1处.

6. 51单片机滚动显示

舵机工作原理

1、概述

舵机最早出现在航模运动中。在航空模型中,飞行机的飞行姿态是通过调节发动机和各个控制舵面来实现的。举个简单的四通飞机来说,飞机上有以下几个地方需要控制:

1.发动机进气量,来控制发动机的拉力(或推力);

2.副翼舵面(安装在飞机机翼后缘),用来控制飞机的横滚运动;

3.水平尾舵面,用来控制飞机的俯仰角;

4.垂直尾舵面,用来控制飞机的偏航角;

遥控器有四个通道,分别对应四个舵机,而舵机又通过连杆等传动元件带动舵面的转动,从而改变飞机的运动状态。舵机因此得名:控制舵面的伺服电机。

不仅在航模飞机中,在其他的模型运动中都可以看到它的应用:船模上用来控制尾舵,车模中用来转向等等。由此可见,凡是需要操作性动作时都可以用舵机来实现。

2、结构和控制

一般来讲,舵机主要由以下几个部分组成, 舵盘、减速齿轮组、位置反馈电位计5k、直流电机、控制电路板等。

工作原理:控制电路板接受来自信号线的控制信号(具体信号待会再讲),控制电机转动,电机带动一系列齿轮组,减速后传动至输出舵盘。舵机的输出轴和位置反馈电位计是相连的,舵盘转动的同时,带动位置反馈电位计,电位计将输出一个电压信号到控制电路板,进行反馈,然后控制电路板根据所在位置决定电机的转动方向和速度,从而达到目标停止。

舵机的基本结构是这样,但实现起来有很多种。例如电机就有有刷和无刷之分,齿轮有塑料和金属之分,输出轴有滑动和滚动之分,壳体有塑料和铝合金之分,速度有快速和慢速之分,体积有大中小三种之分等等,组合不同,价格也千差万别。例如,其中小舵机一般称作微舵,同种材料的条件下是中型的一倍多,金属齿轮是塑料齿轮的一倍多。需要根据需要选用不同类型。

舵机的输入线共有三条,红色中间,是电源线,一边黑色的是地线,这辆根线给舵机提供最基本的能源保证,主要是电机的转动消耗。电源有两种规格,一是4.8V,一是6.0V,分别对应不同的转矩标准,即输出力矩不同,6.0V对应的要大一些,具体看应用条件;另外一根线是控制信号线,Futaba的一般为白色,JR的一般为桔黄色。另外要注意一点,SANWA的某些型号的舵机引线电源线在边上而不是中间,需要辨认。但记住红色为电源,黑色为地线,一般不会搞错。

舵机的控制信号为周期是20ms的脉宽调制(PWM)信号,其中脉冲宽度从0.5ms-2.5ms,相对应舵盘的位置为0-180度,呈线性变化。也就是说,给它提供一定的脉宽,它的输出轴就会保持在一个相对应的角度上,无论外界转矩怎样改变,直到给它提供一个另外宽度的脉冲信号,它才会改变输出角度到新的对应的位置上。舵机内部有一个基准电路,产生周期20ms,宽度1.5ms的基准信号,有一个比较器,将外加信号与基准信号相比较,判断出方向和大小,从而产生电机的转动信号。由此可见,舵机是一种位置伺服的驱动器,转动范围不能超过180度,适用于那些需要角度不断变化并可以保持的驱动当中。比方说机器人的关节、飞机的舵面等。

常见的舵机厂家有:日本的Futaba、JR、SANWA等,国产的有北京的新幻想、吉林的振华等。现举Futaba S3003来介绍相关参数,以供大家设计时选用。之所以用3003是因为这个型号是市场上最常见的,也是价格相对较便宜的一种(以下数据摘自Futaba产品手册)。

尺 寸(Dimensions): 40.4×19.8×36.0 mm

重 量(Weight): 37.2 g

工作速度(Operating speed):0.23 sec/60°(4.8V)

0.19 sec/60°(6.0V)

输出力矩(Output torque): 3.2 kg.cm (4.8V)

4.1 kg.cm (6.0V)

由此可见,舵机具有以下一些特点:

>体积紧凑,便于安装;

>输出力矩大,稳定性好;

>控制简单,便于和数字系统接口;

正是因为舵机有很多优点,所以,现在不仅仅应用在航模运动中,已经扩展到各种机电产品中来,在机器人控制中应用也越来越广泛。

3、用单片机来控制

正是舵机的控制信号是一个脉宽调制信号,所以很方便和数字系统进行接口。只要能产生标准的控制信号的数字设备都可以用来控制舵机,比方PLC、单片机等。这里介绍利用51系列单片机产生舵机的控制信号来进行控制的方法,编程语言为C51。之所以介绍这种方法只是因为笔者用2051实现过,本着负责的态度,所以敢在这里写出来。程序用的是我的四足步行机器人,有删改。单片机并不是控制舵机的最好的方法,希望在此能起到抛砖引玉的作用。

2051有两个16位的内部计数器,我们就用它来产生周期20 ms的脉冲信号,根据需要,改变输出脉宽。基本思路如下(请对照下面的程序):

我用的晶振频率为12M,2051一个时钟周期为12个晶振周期,正好是1/1000 ms,计数器每隔1/1000 ms计一次数。以计数器1为例,先设定脉宽的初始值,程序中初始为1.5ms,在for循环中可以随时通过改变a值来改变,然后设定计数器计数初始值为a,并置输出p12为高位。当计数结束时,触发计数器溢出中断函数,就是void timer0(void) interrupt 1 using1 ,在子函数中,改变输出p12为反相(此时跳为低位),在用20000(代表20ms周期)减去高位用的时间a,就是本周期中低位的时间,c=20000-a,并设定此时的计数器初值为c,直到定时器再次产生溢出中断,重复上一过程。

# include <reg51.h>

#define uchar unsigned char

#define uint unsigned int

uint a,b,c,d;

sbit p12=P1^2;

sbit p13=p1^3;

sbit p37=P3^7;

void timer0(void) interrupt 1 using 1

{p12=!p12;

c=20000-c;

TH0=-(c/256); TL0=-(c%256);

if(c>=500&&c<=2500)c=a;

else c="20000-a";

}

void timer1(void) interrupt 3 using 1

{p13=!p13;

d=20000-d;

TH1=-(d/256); TL1=-(d%256);

if(d>=500&&d<=2500)d=b;

else d="20000-b";

}

void main(void)

{TMOD=0x11;

p12=1;

p13=1;

a=1500;

b=1500;

c=a;d=b;

TH0=-(a/256); TL0=-(a%256);

TH1=-(b/256); TL1=-(b%256);

EA=1;

ET0=1; TR0=1;EX0=1;EX1=1;

ET1=1; TR1=1;

PX0=0;PX1=0;PT1=1;PT0=1;

for(;;)

{

}

}

因为在脉冲信号的输出是靠定时器的溢出中断函数来处理,时间很短,因此在精度要求不高的场合可以忽略。因此如果忽略中断时间,从另一个角度来讲就是主程序和脉冲输出是并行的,因此,只需要在主程序中按你的要求改变a值,例如让a从500变化到2500,就可以让舵机从0度变化到180度。另外要记住一点,舵机的转动需要时间的,因此,程序中a值的变化不能太快,不然舵机跟不上程序。根据需要,选择合适的延时,用一个a递增循环,可以让舵机很流畅的转动,而不会产生像步进电机一样的脉动。这些还需要实践中具体体会。

舵机的速度决定于你给它的信号脉宽的变化速度。举个例子,t=0试,脉宽为0.5ms,t=1s时,脉宽为1.0ms,那么,舵机就会从0.5ms对应的位置转到1.0ms对应的位置,那么转动速度如何呢?一般来讲,3003的最大转动速度在4.8V时为0.23s/60度,也就是说,如果你要求的速度比这个快的话,舵机就反应不过来了;如果要求速度比这个慢,可以将脉宽变化值线性到你要求的时间内,做一个循环,一点一点的增加脉宽值,就可以控制舵机的速度了。当然,具体这一点一点到底是多少,就需要做试验了,不然的话,不合适的话,舵机就会向步进电机一样一跳一跳的转动了,尝试改变这“一点”,使你的舵机运动更平滑。还有一点很重要,就是舵机在每一次脉宽值改变的时候总会有一个转速由零增加再减速为零的过程,这就是舵机会产生像步进电机一样运动的原因

7. 基于51系列单片机的LED显示屏开发技术

89C52是INTEL公司MCS-51系列单片机中基本的产品,它采用ATMEL公司可靠的CMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。

它结合了CMOS的高速和高密度技术及CMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于89C51增强型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能,适合于类似马达控制等应用场合。

89C52内置8位中央处理单元、512字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。此外,89C52还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。在空闲模式下冻结CPU而RAM定时器、串行口和中断系统维持其功能。掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。89C52有PDIP(40pin)和PLCC(44pin)两种封装形式。

AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。

AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2 个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的 Flash存储器可有效地降低开发成本。

8. 51单片机液晶显示屏数字滚动

单片机一般的ADC是没有问题的,我觉得很有可能是下述原因之一:

1.是不是电平有跳动的不稳定,比如输入电平抖动(干扰导致),你只是肉眼没看出来而已,所以认为它是稳定的。这个解决方法如果输入是稳定电压(直流),那就在电压之间加上个电容就完事了。

2.是不是输入电压的范围超了?如果是范围超了,加个分压电路,然后在单片机程序里面再按比例的增加就行了。

9. 单片机led矩阵滚动显示

题中“二、单片机时 ”好像还没说完……

1、六位数码管自己的姓名和学号(姓名为开头的英文字母) 2、效果为滚屏显示

这个简单,就是数码管的动态显示:把姓名和学号的数码管编码放在数组a[ ]中,用数组b[6]表示段选编码

第一次显示:数组b[6]选数组a[0]到a[5];

第二次显示:数组b[6]选数组a[1]到a[6];

……

以此类推

中间加个时间变化

如果数组b[6]没填满,比如b[6],那就是初始值b[6]=0;共阴数码管段选为0,不亮的

还有数码管动态显示注意消影

如有不懂之处,欢迎和我交流

顶一下
(0)
0%
踩一下
(0)
0%