#include
#include
sbit KEY1=P2^0;
sbit KEY2=P2^1;
sbit KEY3=P2^2;
sbit KEY4=P2^3;
sbit BELL=P2^4;
sbit RED1=P1^0;
sbit YEL1=P1^1;
sbit GRE1=P1^2;
sbit RED2=P1^3;
sbit YEL2=P1^4;
sbit GRE2=P1^5;
sbit RED3=P1^6;
sbit YEL3=P1^7;
sbit GRE3=P3^0;
sbit RED4=P3^1;
sbit YEL4=P3^2;
sbit GRE4=P3^3;
#define uint unsigned int
void Delay(uint);
void Key();
void Bell(uint);
void main()
{
while(1)
Key();
}
void Key()
{
if(KEY1==0 || KEY2==0 || KEY3==0 || KEY4==0)
{
Delay(2); //20??????????í????·??????
if(KEY1 == 0)
{
RED1=0;
RED2=0;
RED3=0;
RED4=0;
Bell(10);
}
else if(KEY2 == 0)
{
YEL1=0;
YEL2=0;
YEL3=0;
YEL4=0;
Bell(10);
}
else if(KEY3 == 0)
{
GRE1=0;
GRE2=0;
GRE3=0;
GRE4=0;
Bell(10);
}
else
{
RED1=0;
RED2=0;
RED3=0;
RED4=0;
YEL1=0;
YEL2=0;
YEL3=0;
YEL4=0;
GRE1=0;
GRE2=0;
GRE3=0;
GRE4=0;
Bell(10);
}
Delay(50); //??????±0.5????????????????????????°????ü??????ì????
RED1=1;
RED2=1;
RED3=1;
RED4=1;
YEL1=1;
YEL2=1;
YEL3=1;
YEL4=1;
GRE1=1;
GRE2=1;
GRE3=1;
GRE4=1;
}
}
void Bell(uint a)
{
uint b;
for(b=100;b>0;b--)
{
BELL=0;
Delay(a);
BELL=1;
Delay(a);
}
}
void Delay(uint z)
{
uint x,y;
for(x=100;x>0;x--)
for(y=z;y>0;y--);
}
关键字:独立按键 流水灯 蜂鸣器
引用地址:
独立按键控制流水灯、蜂鸣器
推荐阅读最新更新时间:2024-03-16 13:53
ARM开发(2)基于STM32的蜂鸣器
一 蜂鸣器原理: 1.1 本实验实现1个蜂鸣器间隔1S鸣叫。 1.2 实验思路:根据电路图原理,给蜂鸣器相关引脚赋予高低电平,实现电路的导通,使蜂鸣器实现鸣叫或不鸣。 1.3 开发环境 : MDK5 库函数版本开发 JLINK仿真 二 实验步骤: 2.1 beep.h代码: #ifndef __BEEP_H #define __BEEP_H #include “sys.h” #define BEEP PBout(10) // BEEP,蜂鸣器接口 void BEEP_Init(void); //初始化 #endif 2.2 beep.c代码(IO配置): #include “beep.h” void
[单片机]
单片机学习之十三:流水灯花样变换(中断)
一、 实验现象: 进入程序后,程序作双向跑马灯;按下k0键,程序作左向跑马灯;按下k1按键程序作右向跑马灯;按下k2键两个亮点从两边向中间移动;按下k3键两个亮点从中间向两边移动。 二、 实验目的 掌握在中断程序中处理多个按键动作的响应方法 三、 实验任务分析: ( 注意:在作这个试验的时候,不要忘了把JMP0跳线置于1、2的位置,选择二极管显示单元。) 在前面的两个中断方式响应按键动作的试验中,我们只对一个按键动作做出响应,难度比较小。 而在这个程序中,我们的中断程序要对多个按键动作进行响应, 灯光变换的花样有4种,用不同的按键切换。那么,这种问题又应该如何处理呢? 我们可以这
[单片机]
基于STM32-蜂鸣器
1.蜂鸣器 蜂鸣器是一种发声设备,被广泛用于计算机、打印机、复印机、报警器、电子玩具等。后面介绍定时器是会给大家说说利用蜂鸣器实现歌曲演奏。蜂鸣器分为有源蜂鸣器和无源蜂鸣器。那么什么是有源,什么是无源呢?这里的有源不是指电源的“源”,而是指有没有自带震荡电路,有源蜂鸣器自带了震荡电路,一通电就会发声;无源蜂鸣器则没有自带震荡电路,必须外部提供 2~5Khz 左右的方波驱动才能发声。 2.硬件介绍 这里使用STM32F103实现无源蜂鸣器的交替发声,下图是硬件设计图。首先,STM32F1 的单个 IO 最大可以提供 25mA 电流(数据手册查看),而蜂鸣器的驱动电流是 30mA 。这里使用一个NPN三极管(S8050)扩
[单片机]
8个花样流水灯c程序
#include reg52.h #define uchar unsigned char #define uint unsigned int void delay(uint t)//延时函数 { uint x,y; for(x=t;x 0;x--) for(y=110;y 0;y--); } void main()//主函数 { uchar temp,i; while(1) { temp=0x01; //8盏灯单个亮向左移 for(i=0;i 8;i++) { P2=~temp; delay(50); temp =1; } temp=0x80; for(i=0;i 8;i++)//8盏
[单片机]
PIC单片机人机接口模块独立式按键的典型应用及经验分享
独立式键盘的扩展电路,该模块主要应用于仪器仪表、工业控制器、条形显示器、控制面板等实时性要求不太高的设备. 下面是应用中的一些经验. 当按下某一个键时,该位变成低电平,与非门输出高电平,三极管反相输出低电平,产生中断信号,中断服务程序读入键状态。 若键未释放,则三极管输出将保持低电平,由于软件采用边缘触发式,按一次键仅能有一次响应。 若一个键未释放又按另一个键或多个键,由于第一键按下后,三极管输出已变低电平,再按下键时,三极管仍输出低电平,故不再响应;只有全部释放后,再按键时才产生下次中断响应。 当多个键同时按下,且两者按下时间差很小,则可读到两个键同时闭合的状态。这时可由编程者根据自己的需要进行软件
[单片机]
单片机(AT89C51)的仿真实验——流水灯和逐一闪烁灯(输入与输出)
在进行仿真实验前必须先装了软件,一个是单片机仿真软件(ISIS 7 Professional)和单片机写程序的软件(Keil uVision4),一个写程序一个烧程序。如果没装的可以私聊我。 流水灯的实现(正向的流水灯): 原理: P1初始值是:1111 1111和temp(0000 0001)异或等于以后 P1=1111 1110使得第一个灯亮着, 进入循环0000 0001左移一位得到0000 0010,然后再和P1(1111 1110)异或等于以后 P1=1111 1100使得第一个灯和第二个灯都亮着,下面也是如此往复的循环,一盏一盏的连着点亮就实现了流水灯,然后一盏接着一盏的灭掉。 #include reg51
[单片机]
51单片机(二十五)—— 独立按键控制LED
在51单片机的前面的文章中,我们主要讲述了单片机IO口的输出功能的应用,如LED控制、数码管控制等。这篇文章我们来讲解如何用单片机的IO口读取按键的状态,并根据按键的状态来控制LED。关于51单片机按键输入功能的介绍可以参考文章《51单片机(二十四)—— 独立按键工作原理》 在本文中,实例的代码如下所示。 #define KEY P2 //定义按键输入端口 #define LED P0 //定义LED输出端口 /********************************************************************/ /* 主函数
[单片机]
51单片机实现按住一个独立按键不松手的连续步进触发
一、使用proteus绘制简单的电路图,用于后续仿真 二、编写程序 /******************************************************************************************************************** ---- @Project: Independent-KEY ---- @File: main.c ---- @Edit: ZHQ ---- @Version: V1.0 ---- @CreationTime: 20200507 ---- @ModifiedTime: 2020
[单片机]