感悟网 导航

单片机按键按五次灯亮

作者&投稿:苑谦 (若有异议请与网页底部的电邮联系)
~ 单片机如何设置灯L1到L8循环亮5次的程序:例题:使LED灯先全部闪五次,再实现从L1到L8依次亮起,最后实现从L1到L8依次熄灭。(注:扩展方式为io,即J13跳帽接到io处)#include"reg52.h"流水灯程序最简单了,而且在知道这里可以搜到无数个例子。循环5次停下来,用for控制循环5次,结束后,用一个while(1); 语句就停了。

最近一段时间在准备单片机考试,复习过程中发现自己在平时写作业的过程中很少用到计数器,大部分情况下都是在用定时器,因此复习看到有关定时器的内容时很是吃力,后来好好温习了一下课本,才对计数器有了一点了解。单片机课程虽然结束了,课设也搞完了,但是在这一过程中暴露了很多的问题还是应该引起重视的,很有必要记录一下。

问题描述
Supposing:

The oscillator frequency is 12 MHZ, a LED is connected to P2.0 in the sink current mode. The LED is turned off after power.Write the program which can change the state of the LED when the button is pressed five times. Use the counter 0 and let it work at mode 2.

(哈哈哈,看到的题确实是英文描述的,我的单片机老师是位特别负责任的老师,对于我们的要求也比较严格,有时课上带我们学习新的芯片就直接给我们看英文的,可怜我这个英语渣,听说考试也是全英文卷子,有点怂啊)

电路图设计
在这里插入图片描述
电路图的解释
题目要求LED灯接P2.0,且使用灌电流的接法。在关于计数器的那部分,要求采用计数器0,方式2的方式。在关于计时器的内容中提到,当使用计数器时需要在外部引脚T0(P3.4)或T1(P3.5)提供一个能够进行负跳变的设备。在该电路图中,按键开关起到提供负跳变的角色。

代码实现:
//-----------------------------------------------------
// 计数器 方式2
// 开关按5次LED灯状态转换一次
//-----------------------------------------------------
#include<reg51.h>
sbit LED = P2^0;
sbit KEY = P3^4;
void main()
{
TMOD = 0x06; //计数模式,方式2
TL0 = TH0 = (256-5); //计数5次;
TR0 = 1; //启动T0
IT0 = 1; //外部中断请求0,中断请求信号从高电平到低电平负跳变有效
ET0 = 1; //允许T0中断
EA = 1; //开启中断
LED = 1; //初上电时灯熄灭
while(1);
}

void EX0_INT(void) interrupt 1
{
LED = !LED;

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
关于TMOD设置可以参考我的另一篇博客定时器|计数器TMOD设置

仿真结果
在这里插入图片描述

《单片机按键按五次灯亮》
答:单片机如何设置灯L1到L8循环亮5次的程序:例题:使LED灯先全部闪五次,再实现从L1到L8依次亮起,最后实现从L1到L8依次熄灭。(注:扩展方式为io,即J13跳帽接到io处)#include"reg52.h"流水灯程序最简单了,而且在知道这里可以搜到无数个例子。循环5次停下来,用for控制循环5次,结束后,用一个...

《用c51单片机控制一个闪光灯循环闪光5次以后熄灭不再闪光,用C语言编程...》
答:#include//包含单片机寄存器的头文件 /***函数功能:延迟一段时间 ***/ Voiddelay(Void)//Void表示没有返回值,也没有传递参数。{ Unsignedint我;定义一个最大值为65535的无符号整数。For (I = 0;我< 20000;i++) //执行20000个空循环。;//什么也不做,等待一个机器周期。...

《单片机程序!我想按下P2^5,5次之后,P0^0的灯才亮!但是我按了一下按钮就...》
答:}; while (!keyx1); // 等待按键放开 } }

《单片机代码 小灯从左往右闪5次,后从右往左闪5次,再后小灯全亮闪5次...》
答:void ac();void main(){ 。。。} 还有全亮后要关灯,否则一直全亮

《单片机 流水灯怎样全部闪烁 五次之后停止》
答:可以用for循环试试unsingned char i;for(i=0;i<5;i++)//流水灯闪烁程序。若干个灯泡依次点亮就叫流水灯,它用在夜间建筑物装饰方面。例如在建筑物的棱角上装上流水灯,可起到变换闪烁美不胜收的效果。单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据...

《高手们帮忙写个单片机C语言程序,有两个led灯一红一黄,想让黄灯闪烁5次...》
答:void main(){ while(1){ for(i=0;i<5;i++){ LED_0=1;delay100ms;LED_0=0;delay100ms;} LED_1=1;delay5s;LED_1=0;} }

《单片机 流水灯怎样全部闪烁 五次之后停止》
答:可以用for循环试试unsingned char i;for(i=0;i<5;i++)//流水灯闪烁程序。若干个灯泡依次点亮就叫流水灯,它用在夜间建筑物装饰方面。例如在建筑物的棱角上装上流水灯,可起到变换闪烁美不胜收的效果。单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据...

《51单片机按键控制小灯亮灭》
答:电平状态输出相应的信号来控制LED的亮灭。将按键与某个IO口相连。当按下按钮时,IO口会被拉低(变为低电平),未按下按钮时为高电平。在程序中通过循环检测IO口的状态,检测到低电平表示按钮被按下,可以执行相应操作。

《单片机应用,一个键多次按下,能够依次控制红黄蓝绿四个灯控制第一次按...》
答:changeByKey = 1;//按键控制换灯 led0 = LED_OFF; //全部熄灭 led1 = LED_OFF;led2 = LED_OFF;led3 = LED_OFF;} else//按下 { if(changeByKey)//松开下次按下才能再次生效 { changeByKey = 0;cnt ++;switch(cnt & 3){ case 0:led0 = LED_ON; //亮灯 break;case 1:led1...

《51单片机的按键控制小灯亮灭的问题(程序类型:c语言)怎么解决?》
答:KEY1) //检测到按键按下 { LED = ~LED; /*LED取反,此时LED = 0,灯亮。当松手时,KEY1 = 1,不满足if语句不 进入循环,LED继续保持当前状态即LED = 0,如果再次按下按键,此时检测到KEY1 = 0,进入循环,LED取反得到LED = 0,灯亮。*/ delay(500); /*此处延迟,保...

   

返回顶部
本页内容来自于网友发表,若有相关事宜请照下面的电邮联系
感悟网