-
一个接一个地重复灯光...... 我能把它理解为一束流动的光吗?
左移后,加一个实现灯光的流动,如果这样写,灯会是1,2,3,4,5,6,7,8亮,而不是一个接一个,在每个周期开始时给p0的i值是不明智的,就像2楼的问题说的,时机不对, 以下程序希望对您有所帮助,不对的地方
p0=i;while (1)
yanshi(500);
i<<=1 ;
i+=1;p0=i;
if(p0==0x7f)
i=0xfe;
p0=i;
-
#include
void yanshi(unsigned int k);
void main()
unsigned char i=0xfe;
while (1)
p0=i; yanshi(500);
i=i<<1 ;
if(p0==0x00)
i=~i;这意味着,如果 p0 在反转的那一刻0x00,它根本不会循环,如果你再想一想,我相信你会做到的。
void yanshi(unsigned int k )unsigned char n ;
for(;k>0;k--)
for(n=0;n<250;n++)
-
创建一个无限循环,在循环内部,先否定引脚,然后延迟它们,仅此而已。
-
否定-调用 延迟-调用否定-。。循环。
-
那么如果没有位运算,就用位否定运算“”啊! 或者添加一个操作也可以实现,或者使用数组查找表的方法,总之有很多种方法。
-
p0=1;while(1)
p0~=p0;
time(10);滚轮凳 这是一个延迟功能,不仅属于您。
-
选取 框。 他们中的少数在线。
我将解释相隔一秒钟,时间常数。
这取决于您如何使用计时器。 通常使用方法 1。 如果频率为24MHz,则机器周期为。
所以计数是 1 秒,超出了范围。 所以使用循环。 它可以是 50000 次循环 4 次或其他时间。
计算技术的初始值。
-
你要的东西很多,不要那么依赖别人,单片机和LED的接口电路很简单,IO口接LED的负极,正极接1K左右的电阻,然后通过电阻接VCC。
去看看郭天翔的十天学习单片机,除非你只是想完成老师的任务。
-
mov p0,#0;灯光完全变暗。
kkk1:mov a,p0;
jnb ,kkk2;
setb ;点亮 LED 0 号;
lcall lll2;延迟 2 秒;
clr ;熄灭 0 号 LED;
kkk2:jnb ,kkk3;
setb ;点亮 LED 1 号;
lcall lll2;延迟 2 秒;
clr ;熄灭 1 号 LED;
kkk2:jnb ,kkk3;
setb ;点亮 LED 2 号;
lcall lll2;延迟 2 秒;
clr ;熄灭 2 号 LED;
kkk3:jnb ,kkk4;
setb ;点亮 LED 3 号;
lcall lll2;延迟 2 秒;
clr ;熄灭 3 号 LED;
kkk4:jnb ,kkk5;
setb ;点亮 4 号 LED;
lcall lll2;延迟 2 秒;
clr ;熄灭 4 号 LED;
kkk5:jnb ,kkk6;
setb ;点亮 LED 5 号;
lcall lll2;延迟 2 秒;
clr ;熄灭 5 号 LED;
kkk6:jnb ,kkk7;
setb ;点亮 LED 6 号;
lcall lll2;延迟 2 秒;
clr ;熄灭 6 号 LED;
kkk7:jnb ,kkk1;
setb ;点亮 LED 7 号;
lcall lll2;延迟 2 秒;
clr ;熄灭 7 号 LED;
lll2: .2S时钟延时子程序(延时程序请自己编,这里只提供参考,不知道对不对,程序还没调试过)。
前后按钮应至少具有 2 秒的空间时间。
如果要同时按多个键,可以按如下方式对程序进行编程。
mov p0,#0;灯光完全变暗。
kkk1:mov a,p0;
mov p0,a;明亮的 LED
lcall lll2;延迟 2 秒;
mov p0,#0;LED 熄灭;
sjmp kkk1;
-
单片机一次执行一条指令,而你的程序是单片机的端口一直在闪烁。
-
您可以尝试将 LED 更改为小写字母,也可以反向翻转它。
-
也就是说,变量 d1 的位值倒置,1 变为 0,0 变为 1,假设 d1=0,执行 d1= d1 后,d1=1。 此处理在定时器 0 的中断程序中执行,当定时器 0 周期性中断时,d1 的位值周期性反转,连接的指示灯闪烁。
-
事实上,原文**是没有标准化的,虽然不影响结果。
使用正确! ,例如 p1 0 =! p1_0;表示 bool 类型数据被否定,原文使用 ,即每个位的否定,如 char a=0x01; b=~a;
则 b=0xfe,即 a 的所有 8 位都被否定了,所以这意味着 char 和 int 类型的每一位数据都被否定了。
同样,如果你想判断布尔,你应该写 if(p1 0) 或 if(!)。p1 0),而不是 if(p1 0==1)。
好好学习,学C语言,不要自己想,看正规的教科书,不会出错
-
初始值与你的单片机IO口的工作状态有关,如果你的P1 0接LED的,那么默认应该是低电平的,即D1=0,你的D1=D1放在定时器中断中,然后定时器溢出产生中断,A=100, D1 会被否定,也就是下次 D1=1,然后下次 D1 为 0,也就是 P1 0 周期被否定,所以连接它的LED会闪烁。
-
这句话就是把水平反转,从高到低,或者从低到高,每次进门都翻转。
该程序使用定时中断翻转计时器。
在电路上,LED应该连接好,当你看外面的电路状态时,LED灯会闪烁和熄灭。
修改 a==100 的值以更改闪烁频率。
另外,每次输入中断时,A会自行加1,当A加到100时,可以进入一次翻转LED灯,然后A返回零,再次进入,并不断循环。
-
我不太明白你说什么。
意义。 LED上不是有开关吗,玩数码管的时候,关掉开关。
亮,使 LED 不属于显示屏; 使用 LED 时,两个 74HC573 锁存器关闭; 打开开关,以免分心。 如果您打算在程序中分别控制数码管和 LED,则只能添加闩锁。 没办法,这就是这块板子的设计方式。
-
虽然两者都是 P0,但 74HC573 用作动态扫描的锁存器。
简单地说,一个573控制着选择中的数字管,称为。
适应选择,573控制选择数码管的哪些段,这称为段选择。 动态扫描的原理是扫描速度足够快,感觉不到数码管的变化,这个原理是以前的砖显CRT,也是通过快速扫描来显示的。 那我们就不谈别的了。
另外,这个数码管显示,即P0先频闪哪个数码管,然后这个数据被锁存包保存,然后P0发送显示的段码,也被锁存器持有,并等待很短的时间(如果时间长,你会看到几个数码管跳动显示), 然后频闪下一个数码管保持,然后发送段码保持,不断重复这个过程,数码管不会熄灭,当然,这很大程度上是由于我们视觉持久性的错觉。不过需要注意的是,这个过程的小问题是需要消除,但所谓的消除,其实就是在不同数码管之间切换时,加一条语句,关闭所有显示器。 关闭所有显示器意味着所有位置都设置为更高的级别(共阴极数码管)。
-
有一个J1 LED开关来控制LED灯,当你想做流光灯时,你必须打开开关,然后对。
应该降低嘴巴,它会被点亮。 数码管有一个74HC573控制,它是一个锁存器,你检查它的真值表就知道如何使用它,通过端口控制锁存器的开/关,当最后一个信号被锁存时LE为低电平,高电平是让Q0-7输出随着D0-7输入而变化。
-
不可以,除非 LED 和数码管连接到中间的 74HC573。
-
你没有放开监控! 也就是说,在密钥处理程序之后,需要添加 while(k1!=0);也就是说,只有松开按钮后,你才会认为按键执行完成,否则你会不断重复按键的程序,那么你的d1就会一直执行开关操作!
-
您不必延迟抖动消除。
void delay(uint z)
delay(20) 按下按钮的地方的延迟 20 是 goodif(s1==0)。
delay(20)
if(s1==0)
d1=!d1
来自用户的内容:lisuyan210
读者可能知道计算机是什么以及它能做什么。 但是你知道什么是微型计算机吗? “微机控制”这个术语在今天的各种设备中总是被使用,那么这个微机是什么呢? 它与计算机有什么关系,它与计算机有何不同? >>>More
AT89C52 C 系列是早期产品。 没有了编程和看门狗,为了区别于早期产品,将新产品改为具有看门狗和ISP功能的AT89S52,ISP就是编程的意思。早期是晶格的专利技术,现在被大量使用。 >>>More
idata:定义的变量在 00 h ffh ram 和 256 字节的范围内,可以读写变量。 >>>More