导航:首页 > 操作系统 > 单片机左移流水灯

单片机左移流水灯

发布时间:2023-02-16 10:22:49

⑴ c51单片机流水灯程序闪3次左移怎么回事

二极管的阴极接了单片机。c51单片机产品信息显示,二极管的阴极接了单片机的情况下,流水灯程序会出现故障,具体为闪3次左移,产品出现故障提示。单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU的芯片。

⑵ 关于单片机流水灯左移右移的问题

51单片机
的左移右移,首先在开始要调用"intrins.h"的文件包,这个文件包含_cror_(右移),_crol_(左移);然后通过for语句来控制;
for(m=20;m>0;m--)
for(n=20;n>0;n--)
for(k=250;k>0;k--);
理解这三句,第一句是指:m=20;m>0然后m--是真就执行:
for(n=20;n>0;n--)
for(k=250;k>0;k--);
这两句,m--一直减,减一次,里面就执行一次,这里是20次。
流水灯的左右移,第一用"intrins.h"的文件包,第二要要会定义赋值变量,第三延时,这是关键。

⑶ 如何实现51单片机的按键k1按下,LED流水灯向右移动,按键k2被按下,LED流水灯向左移动

51单片机实现方法:

按键控制标志位flag取反。

然后把下面的代码放到循环里:

U8 temp0 = 1。

U8 temp1 = 0x80。

U8 i = 0。

if(flag == 1)。

{。

for(i=0;i<8;i++)。

{。

P1=temp0<<i。

}。

}。

else。

{。

for(i=0;i<8;i++)。

{。

P1=temp1>>i。

}。

}。

}。

对控制LED口的寄存器进行位操作,按k1左移,按K2就是右移了。

51单片机是对兼容英特尔8051指令系统的单片机的统称。51单片机广泛应用于家用电器、汽车、工业测控、通信设备中。因为51单片机的指令系统、内部结构相对简单,所以国内许多高校用其进行单片机入门教学。

51单片机的特点:

同样的一段程序,在各个单片机厂家的硬件上运行的结果都是一样的,如ATMEL的89C51(已经停产)、89S51,PHILIPS,和WINBOND等,我们常说的已经停产的89C51指的是ATMEL公司的AT89C51单片机。

同时是在原基础上增强了许多特性,如时钟,更优秀的是由Flash(程序存储器的内容至少可以改写1000次)存储器取代了原来的ROM(一次性写入),AT89C51的性能相对于8051已经算是非常优越的了。


⑷ 单片机右移到左移,左移到右移的花样流水灯程序问题

LED灯右移到最右边后向左移时是这样的:右移一位→第二个延时程序→第一个延时程序→右移右移一位→第二个延时程序→第一个延时程序,这样不断循环,循环到最左边,就开始了右移的程序。
这样左移的延迟大一点的!

⑸ 请问金沙滩51单片机中,先是左移到头,然后再右移到头的花样流水灯程序该怎么写

/*单片机,用定时中断实现每隔0.2秒让接在P1口的8个小灯从左往右循环点亮。*/ #include #include #define uchar unsigned char uchar a,b; uchar b=1; uchar a=0xfe; void main() { EA=1;IT1=1;ET0=1; TH0=-5000/256; TL0=-5000%256; TMOD=0x01;...(火星人)2086

⑹ 51单片机按键控制流水灯左移

开始学习单片机的同学们写注意了,在运行程序后,现象不正确的时候,不要首先就找软件的错误,我的经验是从源头开始找问题,首先你得确定你的平台是正确的,
你说是按键没效果,先用万用表测试一下你的引脚的电平,是否被拉低了
如果按键没问题,你就检查_crol_(P0,1);这句,查一下头文件是否被包含,我个人建议自己作个移位函数
虽然程序中还有别的问题,但不会造成你一在按键没效果的现象!
如果你是想学硬件的人,你可以这么玩下去,如果你是想编程,建议你先写段时间(可能是很长时间)的C语言,至少能写个画形动画或是图书馆管理程序出来后再去学单片机吧,不然真心觉得你会学得很慢,而且进步很慢

⑺ 51单片机C语言如何实现8个流水灯左移三次,后右移三次;如此循环

  1. 51单片机C语言实现循环8个流水灯左移三次,后右移三次。

    例程:

    #include<reg51.h>//51单片机头文件
    #include<intrins.h>//包含有左右循环移位子函数的库
    #defineuintunsignedint//宏定义
    #defineucharunsignedchar//宏定义
    sbitbeep=P2^3;
    voiddelay(uintz)//延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.
    {//delay(500);大约延时500ms.
    uintx,y;
    for(x=z;x>0;x--)
    for(y=110;y>0;y--);
    }
    voidmain()//主函数
    {
    uchara,i,j;
    while(1)//大循环
    {
    a=0xfe;//赋初值
    for(j=0;j<3;j++)for(i=0;i<8;i++)//左移三次
    {
    P1=a;//点亮小灯
    beep=0;//开启蜂鸣器
    delay(50);//延时50毫秒
    beep=1;//关闭蜂鸣器
    delay(50);//再延时50毫秒
    a=_crol_(a,1);//将a变量循环左移一位
    }
    a=0x7f;
    for(j=0;j<3;j++)for(i=0;i<8;i++)//右移三次
    {
    P1=a;//点亮小灯
    beep=0;//开启蜂鸣器
    delay(50);//延时50毫秒
    beep=1;//关闭蜂鸣器
    delay(50);//再延时50毫秒
    a=_cror_(a,1);//将a变量循环右移一位
    }
    }
    }
  2. 51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。

⑻ 单片机c51流水灯一亮一闪依次左移编程

下面是采用定时器定时1S(时钟晶振是11.0592MHz)的流水灯程序。采用左移函数_crol_(),此函数包含在intrinsic.h的头文件内。有不懂得再问,需要汇编的话,留言,再写给你。
#include<reg52.h>
#include<intrins.h>
unsigned
int
a,temp;
void
main()
{
TMOD=0x01;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
EA=1;
ET0=1;
TR0=1;
temp=0xfe;
while(1)
{
if(a==20)
{
a=0;
P1=temp;
temp=_crol_
(temp,1);
}
}
}
void
T0_time0()interrupt
1
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
a++;
}

⑼ 单片机流水灯实验原理

上一节我们介绍了什么是总线的方法,以及如何通过十六进制来控制IO口。并把我们的之前单点操作的流水灯进行了改进,成为了一个新的更加简洁的程序。这回,就再用总线方法,来实现流水灯的更加多样化的操作。

这次,我们要实现正向流水结束后再反过来流水,如此循环。然后再间隔闪烁。然后再累积流水,最后结束。

正向流水结束,再反过来。这个如何实现呢,我们需要使用到一些运算方法。

第一个是移位指令<<。

由于数字对比不强,看的不是很清晰,所以把数字给换成红色了。

<<这个标志符的意思是,向左移动一位,就像下边这样:

1111 1111》1111 111_

移动完成后,会发现,最低位空出来了,此时程序会自动去填补一个0。于是就成了:

1111 1111》1111 111_》1111 1110

第一次移位1111 1110,第二次在第一次基础上移位1111 1100,第三次在第二次基础上移位1111 1000,如此循环,就可以一直把所有位都变成0。

我们在看下一句"|",这个符号是或的意思,我们知道,逻辑中的或,是说只要有其一为一,结果就是一。所以,我们把1100|0001,结果就是头两个一和最后一个一留下来,第三位因为都是0,所以就是0.结果就是1101了。当再次移位后,数据就变成1010了,我们再次跟0001取或,最后一位就再次置1,结果就是1011,从结果上看,1110》1101》1011……就是0在不断的左移。

通过这个方法,可以让每一位都会单独置零。然后再给以一定时间的延时,就会看到流水灯了。

如果我们不赋初值0xfe会出现什么情况?

就会出现,移位产生一个0,在或运算时就会被重新置1,如此循环,就进入不到第二个LED,也就不会出现流水灯了。可以自己尝试下。

向右流水,效果是一样的,需要注意的是初值更改为左侧为0,就是0x7f,0111 1111,然后移位符号>>,还有取或的语句需要用0x80,1000 0000.

基本上是在左移位的基础上稍作修改即可。

接下来是闪烁的。

闪烁,我们用的是间隔LED的方法,就是隔一个亮一个,端口输出是1010 1010。翻译成十六进制就是0xaa。这次用到的是一个取反的运算,就是把每一位的0变成1,1变成0,然后延时一段时间,再次取反,循环几个周期,就看起来像是不断闪烁。取反的操作相对好理解一些,就是这一位,现在是1,那么取反后就是0,就是0和1的变换。

最后是一个累积点亮LED。

这个程序就是把第一个我们向左移位的函数,进行了更改,取消了赋初值,不用取或了,这样就可以对比着理解,各个语句的作用,如果不使用,会产生什么结果。如果我们的第一个函数不用取或这一步,那最终输出结果就和这个现象一样了。

所以,我们在写程序时,需要认真,仔细分析自己需要的结果,然后对照程序进行简单的演算。保证每一段都是可以输出想要的结果,不然累积到最终,几百行的代码,看起来就会头疼的,尤其是在没有标注释的情况下,有时就会忘记自己为什么要写这一句。

好的,这篇先说到这里,有问题或建议可以留言或私信给我。

想了解更多精彩内容,快来关注小亮谈电气

更多多内容,欢迎关注百家号:小亮谈电气。微信公众号:电气学苑。

阅读全文

与单片机左移流水灯相关的资料

热点内容
有pdf却打不开 浏览:458
七星彩软件app怎么下载 浏览:213
32单片机的重映射哪里改 浏览:816
为什么前端不用刷算法题 浏览:708
对称加密系统和公钥加密系统 浏览:428
历史地理pdf 浏览:604
物联网云服务器框架 浏览:648
sybaseisql命令 浏览:183
android权威编程指南pdf 浏览:663
哪些软件属于加密软件 浏览:646
文件夹75丝什么意思 浏览:470
最便宜sop8单片机 浏览:966
图解周易预测学pdf 浏览:420
c盘莫名奇妙多了几个文件夹 浏览:171
贵州花溪门票优惠app哪个好 浏览:803
如何说话不会让人有被命令的感觉 浏览:440
哪里可下载湘工惠app 浏览:265
福特python 浏览:312
pdf转换成word表格 浏览:353
无线远端服务器无响应是什么意思 浏览:672