包含4个led灯循环点亮stm32程序实验报告的词条
STM32 的GPIO流水灯,程序下进去后,4个LED先全部都亮,然后才逐个点亮;我不太明白,怎么开始会全部都亮
(仅供参考)由于你设置推挽输出,也就是说没有上下拉(8中模式里输入有上下拉),在《数据手册》里的解释推挽输出初始化时,输出0或1,其实是0,这样的话,你的开始红灯都全部亮下,就不难理解了。所以你若想在开始的时候不想让他都亮(按照你的思路走),你可以对你的几个引脚进行拉高,即对ODR或者BSRR进行操作即可。
GPIO_SetBits(GPIOE, GPIO_Pin_1);//Init函数把几个脚都添加进去即可
单片机汇编语言流水灯程序延时0.5秒 一共四个灯循环
4只LED为共阳极连接,即单片机输出端为低电平时即可点亮LED。
;用最直接的方式实现流水灯
ORG 0000H
START:MOV P1,#01111111B ;最下面的LED点亮
LCALL DELAY ;延时60秒
LCALL DELAY ;延时60秒
MOV P1,#10111111B ;最下面第二个的LED点亮
LCALL DELAY ;延时60秒
LCALL DELAY ;延时60秒
MOV P1,#11011111B ;最下面第三个的LED点亮 (以下省略)
LCALL DELAY
LCALL DELAY ;延时60秒
MOV P1,#11101111B
LCALL DELAY
LCALL DELAY ;延时60秒
MOV P1,#11110111B
LCALL DELAY
LCALL DELAY ;延时60秒
MOV P1,#11111011B
LCALL DELAY ;延时60秒
LCALL DELAY ;延时60秒
LCALL DELAY ;延时60秒
LCALL DELAY ;延时60秒
LCALL DELAY ;完成第一次循环点亮,延时约0.25秒
AJMP START ;反复循环
;延时子程序,12M晶振延时约250毫秒
DELAY: ;大约值:2us*256*256*2=260ms,也可以认为为250ms
PUSH PSW ;现场保护指令(有时可以不加)
MOV R4,#240
L3: MOV R2 ,#00H
L1: MOV R3 ,#00H
L2: DJNZ R3 ,L2 ;最内层循环:(256次)2个周期指令(R3减一,如果比1大,则转向L2)
DJNZ R2 ,L1 ; 中层循环:256次
DJNZ R4 ,L3 ;外层循环:240次
POP PSW
RET
END
单片机如何一个按钮实现控制4个led灯的循环闪烁
0 0
1 1
1 0
0 1
是这样的四种状态吗? 这样很简单的,, 主要还是检测按键, 按键按下 你把一个变量+1, 比如
if(Key == 0)
{
delay(); //延时10ms,延时函数 自己写吧
if(Key == 0)
{
num++;
if(num = 4)
num = 0;
while(!Key);
}
}
然后根据num 的值 对Led进行状态刷新就好了。
switch(num)
{
case 0: Led1 = 1; Led2 = 0; break;
case 1: Led1 = 0; Led2 = 1; break;
case 2: Led1 = 0; Led2 = 0; break;
case 3: Led1 = 1; Led2 = 1; break;
default : break;
}
就可以了,,,顺序的话 可以按照具体要求更换下位置就可以了。
急需单片机高手帮忙用C语言写一个单片机4个灯轮流闪亮的源程序。 详细内容看补充。
/*对于个单片机的初学者,我希望用最直观的方式来达到你要的要求,程序每一句我已经写好备注,希望对你有帮助*/
#includereg51.h //使用51功能头文件
sbit L1=P0^0; //L1对应P0.0,表示第一盏灯
sbit L2=P0^1; //L1对应P0.1,表示第二盏灯
sbit L3=P0^2; //L1对应P0.2,表示第三盏灯
sbit L4=P0^3; //L1对应P0.3,表示第四盏灯
void delay(unsigned int i) //延迟子程序,注意这里的unsigned int i,这里相当于限定了调用时候变量的类型
{
unsigned char j; //局部变量定义
while(i--) //循环i次,主程序main调用时候,i为100,这数值你可随便该,但小于65355
for(j = 200; j 0; j--) ; //这步的意思是空操作200次,也就是暂用CPU200次的工作时间
}
void main(void) //主函数,这里的viod是无类型,意思是没有给这函数指定数据类型
{
P0=0x00; //将P0口初始化位高电平,如果没有这句,初始化为低电平,这里可根据需要选择
L1=1; //第一盏灯亮
delay(100); //调用延时子程序
L2=1; //第二盏灯亮
delay(100); //调用延时子程序
L3=1; //第三盏灯亮
delay(100); //调用延时子程序
L4=1; //第四盏灯亮
delay(100); //调用延时子程序
while(1); //这里我用了个死循环,目的程序只运行一次,如果需要自动重新运行,可以把这句删掉
}
纯手工书写,并仿真调试过,记得加分哟~
关于4个led灯循环点亮stm32程序实验报告和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。微信号:ymsc_2016
相关文章
发表评论
评论列表
- 这篇文章还没有收到评论,赶紧来抢沙发吧~