j--);} void main(void){ while(1) //循环 { fengmingqi=1; //p0.0口高电平,蜂鸣器发声 delay(500); //延时 fengmingqi=0; //p0.0口低电平,蜂鸣器不发声 delay(500); //延时 } }
include
beepflag&=0xFD;if(k3==0) //按键按下 beepflag|=0x04;else beepflag&=0xFB;//---这里判断字符低三位,如果有其中两位置一,则开启蜂鸣器 } } 思路大概就是这样,如对您有帮助,请采纳,谢谢!
1.数码管前三位显示一个跑表,从000到999之间以1%秒速度运行,当按下一个独立键盘时跑表停止,松开手后跑表继续运行。(用定时器设计表)。code:include
BEEP=~BEEP;//蜂鸣器引脚输出1KHz方波 }
51单片机驱动蜂鸣器(蜂鸣器分有源与无源两种,有源指加电压就会响的,无源需要以一定频率的交变脉冲电压驱动),如果只响0.5S,只要用一个定时0.5S开关信号驱动、或者用0.5S的一定频率的脉动信号驱动就可以了。
51单片机蜂鸣器程序为:include"reg52.h"typedef unsigned char u8;typedef unsigned int u16;sbit beep=P1^5;void delay(u16 i){ while(i--);} void main(){ while(1){ beep=~beep;delay(1000);//控制音调频率
51单片机蜂鸣器程序
单片机的控制课题涉及到了LED和蜂鸣器。蜂鸣器从结构区分分为压电式蜂鸣器和电磁式蜂鸣器。压电式为压电陶瓷片发音,电流比较小一些,电磁式蜂鸣器为线圈通电震动发音,体积比较小。按照驱动方式分为有源蜂鸣器和无源蜂鸣器。这里的
你的无源蜂鸣器型号?有的蜂鸣器在加上一定频率的方波时可以发声,如果是这样的。需要发声时只需 P1.0=1;for(int i=0;i<1000;i++){ P2.0=1;delay_us(500);P2.0=0;delay_us(500);} P1.0=0;你需要自己
“故障LED串电阻”并联“蜂鸣”后,正的一端接VCC,负端接IO,运行LED串电阻后正端接IO,负端接地,这样就可以了
方法如下你用51的话,你直接就用延时和循环的方式来做,比如说你把蜂鸣器和led分别接在p0.0和p0.1,你就让他们两个io口同时开始(理论上没办法同时开始,但是两个开始的时间差别人类分辨不出来)高电平或者低电平,然后
将图中LED电路和BUZZER电路各自连到你单片机的IO口控制即可
CALL PRG1 ; 亮且发音 CALL PRG2 ; 灭且静音 SJMP 0 ;--- PRG1:MOV P0, #0 ; 8个led灯亮 MOV R2, #200 LP1:CPL P1.0 ; 蜂鸣器响 DJNZ R6,DJNZ R7, $ - 2 DJNZ R2, LP1 MOV P0
for (x=0;x<45;x++); //45为蜂鸣器发声频率,可调 }} void main(){ while (1){ D1=0; //P1.0口LED点亮 fasheng(); //P2.0发声1S D1=1; //P1.0口LED熄灭 delay(); //延时1秒
单片机同时驱动LED和无源蜂鸣器
//红外接收器数据线sbit led = P1^5; //蜂鸣器驱动线uchar key=0;//键值储存uchar x=4; //遥控器一般为4个数据 不同时修改此处uchar IRCOM[7];void delay1(int ms);void beep();void delay(unsigned char
将图中LED电路和BUZZER电路各自连到你单片机的IO口控制即可
KEY=1; //按键输入端口电平置高 while (1) //主循环 { if(!KEY) //如果检测到低电平,说明按键按下 LED=0;else LED=1; //这里使用if判断,如果按键按下led点亮,否则熄灭 //如果需要四个亮就写LED1=1
define uc unsigned char//每次定义变量都要写unsigned char,不爽。精简了 void delay(uc d1,d2);//延时用两个变量,使得延时范围更大 //单片机的输入信号太弱,无法驱动喇叭!但是仿真时可以省略。//单片机输出高电平
P1=temp;delay(100);//延时程序此处必须加延时程序 temp=_cror_(temp,1);//循环右移起始位位移.1.位 delay(100);//延时程序 } } } }
CALL PRG2 ; 灭且静音 SJMP 0 ;--- PRG1:MOV P0, #0 ; 8个led灯亮 MOV R2, #200 LP1:CPL P1.0 ; 蜂鸣器响 DJNZ R6,DJNZ R7, $ - 2 DJNZ R2, LP1 MOV P0, #255 ; 8个led灯灭
include
求高手帮忙提供: 单片机程序,开关点亮LED灯,点亮数码管,蜂鸣器叫。 谢谢! *
ET0=1;//外部中断0、1下降沿中断 ET1=1;EX0=1;EX1=1;EA=1;while(1)P0=0xFF; // P1的8个LED,高电平亮 } void int0_int() interrupt 0 { unsigned char i ,j, tmp=0x01;for(i=3; i>0; i--
while(1){ P3=0xfe;//第一个灯亮 delay();//延时 P3=0xfd;//第二个灯亮 delay();P3=0xfb;//第三个灯亮 delay();P3=0xf7;//第四个灯亮 delay();P3=0xef;//第五个灯亮 delay();P3=0xdf;//第六
P0=led[num]; num++; num%=5; } }}
LED7=1;LED8=1;//LED初始状态为全灭 Buzzer=1;//蜂鸣器初始状态为不响 while(1)//死循环 { LED1=0;Delay(500);LED1=1;LED2=0;Delay(500);LED2=1;LED3=0;Delay(500);LED3=1;LED4=0;Delay(500);L
想编一个关于C51的程序,让八个LED灯循环亮,让后用P3-2接一个开关,用下降沿触发 使得蜂鸣器连续响两声,
1、首先打开桌面上的keil软件,在进行对51单片机进行编程时最常用的就是keil软件。2、编写相应的代码:#include
单片机驱动LED灯的源程序:include
void Delay10ms(unsigned int c) //误差 0us { unsigned char a, b;//--c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了--// for (;c>0;c--){ for (b=38;b>0;b--){ for (a=
利用单片机一个IO口检测光电传感器的电平变化,一个IO口控制LED灯报警,一个IO控制蜂鸣器报警(如果是有源蜂鸣器,可以和灯共用一个IO口)。比如,正常状态,单片机检测光电传感器那边电平为0。当遮蔽光线时,电平会变换为1,
CALL PRG2 ; 灭且静音 SJMP 0 ;--- PRG1:MOV P0, #0 ; 8个led灯亮 MOV R2, #200 LP1:CPL P1.0 ; 蜂鸣器响 DJNZ R6,DJNZ R7, $ - 2 DJNZ R2, LP1 MOV P0, #255 ; 8个led灯灭
把蜂鸣器响一次的程序封装成一个函数,然后根据灯光闪烁的情况判断,判断如果是第一个灯就运行一次蜂鸣器响的函数一次,如果是第二个灯就运行二次蜂鸣器响的函数,以此类推。
这个很简单的啊,比如你的光敏开关接在P1.0,LED和蜂鸣器接在P1.2上,那程序就这样写 if(P1^0 == 0){ P1^2 = 1;} else { P1^2 = 0;}
单片机,c语言编程实现:当遮住光敏开关时一个led灯亮同时蜂鸣器响,...
//发声函数 void Alarm(uchar t){ uchari,j;for(i=0;i<200;i++){ SPK=~SPK;for(j=0;j
sbit SPK=P1^0;sbit K1=P1^7;//发声函数,注意这里是用扬声器,不能用普通的蜂鸣器 void Alarm(uchar t){ uchari,j;for(i=0;i<200;i++){ SPK=~SPK;for(j=0;j
如果是蜂鸣器的话,那么加一个电平信号就可以发声了。\x0d\x0aFMQ EQU P1.0\x0d\x0aORG 0000H\x0d\x0aLJMP MAIN\x0d\x0aORG 0030H\x0d\x0aMAIN:\x0d\x0aCPL FMQ\x0d\x0aLCALL DELAY\x0d\x0
delay(1000);//控制音调频率 beep=~beep;/控制声音大小 delay(10);} }
0x20,0x26,\r0x40,0x20,0x20,0x2B,
单片机蜂鸣器发声代码
程序问题。你断开开关后,要吧蜂鸣器和LED使能关闭#include //--定义你要使用的IO口--// #define GPIO_DIG P0 //--声明全局函数--// void Delay10ms(unsigned int c); //误差 0us //--定义全局变量--// //RAM,ROM unsigned char code DIG_CODE[16]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71}; //0~F段码 //0:0011_1111 /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void main(void) { unsigned char i = 0; while(1) { GPIO_DIG = ~DIG_CODE[i]; i++; if(i == 16) { i = 0; } Delay10ms(50); } } /******************************************************************************* * 函 数 名 : Delay10ms * 函数功能 : 延时函数,延时10ms * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void Delay10ms(unsigned int c) //误差 0us { unsigned char a, b; //--c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了--// for (;c>0;c--) { for (b=38;b>0;b--) { for (a=130;a>0;a--); } } }
Arduino基础11—for循环。使LED灯连续闪烁100次,该怎么做?
这是低电平有效的接线方法,高电平有效反过来就行了。。。
给你个程序参考吧,#include #include #define uint unsigned int #define uchar unsigned char sbit d=P3^4; void delay200ms(void) { unsigned char i,j,k; for(i=5;i>0;i--) for(j=132;j>0;j--) for(k=150;k>0;k--); } void main() { uchar r,t; r=0xfe; while(1) { for(t=0;t<9;t++) { P2=r; delay200ms(); r=_crol_(r,1); d=0; delay200ms(); d=1; delay200ms(); } } }
分析单片机程序很多时候是要根据原理图来进行的。最好要提供原理图。 switch(P1&0x0f)//读取P1口,并且只保留低四位,然后根据低四位的值进入到对应的case中。 { case 0x0e: P0=0x01;break;//这个0x0e就是P1口的最低位读到0(可能是P1.0有按键按下),其他0x0d,0x0b,0x07一样的道理。 case 0x0d: P0=0x02;break;//后面的0x01到0x08并不是随意,是根据设计意图和原理图来的 case 0x0b: P0=0x04;break; case 0x07: P0=0x08;break; default:; } }}//综合整个代码来看,其功能是判断连接在P1口低四位的按键是否按下,对应按键按下后P0口输出值。
本来打算玩游戏的!看你分给这么高,来帮写一个。这太容易了。 #include #define uchar unsigned char #define uint unsigned int sbit led=P1^0; sbit feng=P2^0; uchar count; //**************************************主程序******************************************// void main() { IE=0x8a; count=0; TMOD=0x21; TH1=0; TL1=0; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; TR1=1; //开启蜂鸣器 led=0; //点亮LED while(1); //等待中断1S的到来 } //***********************************定时器1中断服务函数********************************// void time1() interrupt 3 { feng=~feng; //驱动蜂鸣器 } //**********************************定时器0中断服务函数*********************************// void time0() interrupt 1 { count++; if(count==20) { count=0; if(TR1==0) //如果蜂鸣器没有开则打开 TR1=1; else //如果蜂鸣器已经打开则关闭,这样就实现了1S关1S开, TR0=0; led=~led; } TH0=(65536-50000)/256; TL0=(65536-50000)%256; }
一般学习板上只有一个蜂鸣器吧,而led灯则有8个,而且好的单片机学习板是不会直接固定模块对应的I/O口的,一般使用杜邦线或排线将模块连接到想要的I/O口(我记得我用过的普中的51板上蜂鸣器是固定一个I/O口的),你可以将它们的总的八位口错开呀。
51单片机蜂鸣器程序为: #include"reg52.h" typedef unsigned char u8; typedef unsigned int u16; sbit beep=P1^5; void delay(u16 i) { while(i--); } void main() { while(1) { beep=~beep; delay(1000);//控制音调频率 beep=~beep;/控制声音大小 delay(10); } } 扩展资料: BUZZER蜂鸣器的分类: 1、按其驱动方式的原理分,可分为:有源蜂鸣器(内含驱动线路,也叫自激式蜂鸣器)和无源蜂鸣器(外部驱动,也叫他激式蜂鸣器)。 2、按构造方式的不同,可分为:电磁式蜂鸣器和压电式蜂鸣器。 3、按封装的不同,可分为:DIP BUZZER(插针蜂鸣器)和SMD BUZZER(贴片式蜂鸣器)。 4、按电流的不同,可分为:直流蜂鸣器和交流蜂鸣器,其中,以直流最为常见压电式蜂鸣器,用的是压电材料,即当受到外力导致压电材料发生形变时压电材料会产生电荷。同样,当通电时压电材料会发生形变。 电磁式蜂鸣器,主要是利用通电导体会产生磁场的特性,用一个固定的永久磁铁与通电导体产生磁力推动固定在线圈上的鼓膜。 由于两种蜂鸣器发音原理不同,压电式结构简单耐用但音调单一音色差,适用于报警器等设备。而电磁式由于音色好,所以多用于语音、音乐等设备。
#includesbit buzzer = P1^0 ;声明区void delay(int) ;void pulse_BZ(int,int,int);声明函数void main(void){while(1){pulse_BZ(500,1,1); 调用发声delay(1000); 延时1000 X 0.5mspulse_BZ(500,1,1);delay(1000);pulse_BZ(500,1,1);delay(1000);pulse_BZ(200,1,1);delay(1000);pulse_BZ(200,1,1);delay(1000);}}void delay(int x){int i,j;for(i=0;i<x;i++)for(j=0;j<60;j++);}void pulse_BZ(int count;int TH;int TL){int i;for(i=o;i<count;i++) //循环count次,时间count x 1ms{buzzer=1; //此程序段产生1HZ 信号delay(TH);buzzer=0;delay(TL);}} 51单片机蜂鸣器 开关C语言程序: sbit P2^0=KEY;sbit P2^1=BEEP;unsigned char KEYNUM=0;void main(){while(1){if(KEY==0)//开关按下;{KEYNUM++; }if(KEYNUM==1)//第一次按下;{BEEP=1; //蜂鸣器响 }if(KEYNUM==2)/第二次按下;{BEEP=0; //蜂鸣器不响KEYNUM=0; }}} 51单片机,编写延时程序,控制蜂鸣器发声: 很简单的#include#define uchar unsigned char#define uint unsigned int sbit fengmingqi=P0^0; //声明IO口void delay(uint x)//延时子函数{ uint i,j;for(i=x;i>0;i--)for(j=50;j>0;j--);}void main(void){while(1) //循环{fengmingqi=1; //p0.0口高电平,蜂鸣器发声delay(500); //延时fengmingqi=0; //p0.0口低电平,蜂鸣器不发声delay(500); //延时}}