求助用51单片机用独立按键控制蜂鸣器?

作者&投稿:官贺 (若有异议请与网页底部的电邮联系)
51单片机 ,用C语言编程 通过独立按键控制蜂鸣器和静态数码管,~

1.数码管前三位显示一个跑表,从000到999之间以1%秒速度运行,当按下一个独立键盘时跑表停止,松开手后跑表继续运行。(用定时器设计表)。

code:

#include
#define uchar unsigned char
#define uint unsigned int

sbit key1 = P3^4;
sbit dula = P2^6;
sbit wela = P2^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uint num;
uchar bai, shi, ge, flag = 0,t0 = 0;

void delay(uchar z);
void display(void);

void main(void)
{
num = 0;
P3 = 0xff;
TMOD = 0x01;
TH0 = (65536-10000) / 256;
TL0 = (65536-10000) % 256;
EA = 1;
ET0 = 1;
TR0 = 1;


while(1) {
if(key1 == 0) {
delay(5);
if(key1 == 0) {
flag = 1;
}
while(!key1);
delay(5);
while(!key1);
}

display();
}
}

void display(void)
{
dula = 1;
P0 = table[num / 100];
dula = 0;
P0 = 0xff;
wela = 1;
P0 = 0xfe;
wela = 0;
delay(1);

dula = 1;
P0 = table[num % 100 / 10];
dula = 0;
P0 = 0xff;
wela = 1;
P0 = 0xfd;
wela = 0;
delay(1);

dula = 1;
P0 = table[num % 10];
dula = 0;
P0 = 0xff;
wela = 1;
P0 = 0xfb;
wela = 0;
delay(1);
}
void delay(uchar z)
{
uchar

if(s2==20)(这里的数字无论是多少都可以!)
----
这是一个位,只能是1和0。
你写上1(或者其它的奇数),再试试行不行。

你这个要求太低了,如果就这一个要求,就不建议用单片机实现了,就用双稳态的触发器硬件电路就可以实现,555时基电路就可以做到;如果你正在学习单片机入门,做一个DEMO,就只需几个函数就可以实现上述功能,首先是初始化函数,用来初始化按键输入端口和蜂鸣器输出端口,接着是按键检测函数,以查询方式检测每当按键按下,一个状态变量就切换为0和1,注意防抖处理;最后一个是蜂鸣器控制函数,根据上面那个状态变量控制蜂鸣器的开或者关。


关于51单片机的外部中断使用方法
使用方法:单片机的P2.5,P2.6,P2.7口分别接三位动态数码管的位选端,P0口接动态数码管的段选端。然后,P1.0口接一个电阻串联一个LED灯然后接地,电阻取200~470欧之间就行,是一个限流电阻。中断用的是外部中断0,要触发中断的时候,就用一根杜邦线一端接地,一端接到单片机的P3.2口就行...

如图 利用51单片机引脚P1.0引接一只LED,送“0”信号时点亮灯,送“1...
呵呵 为你解答 1 你的程序中使用的控制引脚为P1.1与电路图中控制LED的引脚P1.0也没有对应上啊 2 修改如下:include "reg51.h"sbit P1_0=P1^0;void main(){ P1_0=0; \\\\ P1.0为低电平时, LED为灭 } 3 其实电路图 可以更简化和使用些 如下是常用的LED接法 P1...

C51系列单片机的实际运用
单片机的主要应用领域 由于单片机有许多优点,因此其应用领域之广,几乎到了无孔不入的地步。单片机应用的主要领域有:1) 智能化家用电器:各种家用电器普遍采用单片机智能化控制代替传统的电子线路控制,升级换代,提高档次。如洗衣机、空调、电视机、录像机、微波炉、电冰箱、电饭煲以及各种视听设备等。...

使用51单片机定时器T1的工作方式1,一次定时50ms,其计数初值的十进制和...
如果要实现一次50ms的定时,可以按照以下步骤进行计算:1. 计算每个计数周期的时间:12\/OSC 秒2. 计算需要多少个计数周期才能达到50ms:50ms \/ (12\/OSC) = 4166.673. 计算需要设置的初始值:65536 - 4167 = 61369因此,在使用51单片机定时器T1工作方式1实现一次50ms的定时任务时,其十进制初始值...

用51单片机编程
但这样的十进制加法运算在单片机中是不能够直接实现的。因为单片机只能够执行二进制加法指令,也就是所有的运算都按照二进制中的规则进行!于是就出现了DA调整指令!现在12H+39H,将12H放于A中,执行 ADD A,#39H指令,则结果为4BH,这不是我们希望的51H的数据形式!!这时执行DA A 指令后,就会将...

51单片机 用1个按键控制8盏灯,进行花样显示
include<reg51.h> define uint unsigned int define uchar unsigned char sbit key=P2^1;\/\/这里看你把按键设置在哪个引脚上 void delay(uint z)unit x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);} void key1(){ if(key==0){ P1=0x00; \/\/灯全亮 } void key2(){ if(key...

怎样用51单片机实现小时级延时
51单片机的机器周期是晶振的12分频的倒数。所以你24Mhz的机器周期是T=12\/12M=0.5us。假设你要定时的数是M,则初值等于M\/机器周期(表示执行多少个机器周期)。若初值小于65536 TH0=(65536-初值)%256 TL0=(65536-初值)\/256 51在24MHZ的最大定时是65536*T=0.032768s,远小于一小时。所以为了...

为什么51单片机使用P0口接电机驱动(大功率H桥),能够驱动电机,但是用P2...
是驱动能力不足,单片机IO口输出电流最大只有10多毫安,P0口可以带8个TTL,其余的只能带4个TTL。

mcs51单片机可以用静态显示的方式驱动四个以上的数码管吗
不可以。51单片机开发板上为八段数码管,只能驱动四个数码管,不可以用静态显示的方式驱动四个以上的数码管。单片机又称微控制器,由中央处理器、存储器、输入输出端口(包括并行I\/O、串行I\/O、模数转换器)、计时器和计数器等组成,具有完整数字处理功能的大规模集成电路。

怎样使用51单片机p3口的第二功能?
使用51单片机p3口的第二功能,并不需要刻意安排,只要启用了相应功能或执行了相应指令,自然就启用了p3口的第二功能。比如:\\x0d\\x0a1、使用了串行口收发数据通信功能,P3.0、P3.1就是RXD、TXD通信线。\\x0d\\x0a2、允许了外部中断0和1,P3.2、P3.2自然就是外部中断输入管脚。\\x0d\\x0a3...

昌邑市18953513026: 51单片机 使用两个独立按键k1,k2,实现按下一个蜂鸣器响,按下另一个蜂鸣器停止程序 -
仍备新洛: //假设你是 按开关时为0电平 //具体IO口 自己配置 //简单的就可以这么写 如果要求消抖 我们再讨论 while(1) {if(k1==0)beep=1;if(k2==0)beep=0; }

昌邑市18953513026: 51单片机C语言控制按键蜂鸣器 -
仍备新洛: unsigned char flag=1; //定义上升沿ready标志 while(1) {if(key1&&flag) // 默认key1下拉至GND,若产生上升沿,则响一次,同时清零标志 {SPK=1;delay();SPK=0;flag=0;}if(!key1) { flag=1;} //检测key1是否归零 准备第二次上升沿,是,则标志位置1...... } 仅供参考

昌邑市18953513026: 51单片机 ,用C语言编程 通过独立按键控制蜂鸣器和静态数码管, -
仍备新洛: 1.数码管前三位显示一个跑表,从000到999之间以1%秒速度运行,当按下一个独立键盘时跑表停止,松开手后跑表继续运行.(用定时器设计表).code:#include<reg52.h> #define uchar unsigned char #define uint unsigned intsbit key1 = ...

昌邑市18953513026: 3. 用51单片机配合四个按键(四个按键分别为按键1 - 4)控制蜂鸣器.(按下按键1,蜂鸣器叫一下,按下按键2,用51单片机配合四个按键(四个按键分别为按... -
仍备新洛:[答案] 我使用郭天祥的TX-1C实验板运行的,已经运行通过了,能达到你的要求.望采纳.希望我的回答能帮助到你.

昌邑市18953513026: 51单片机矩阵按键控制蜂鸣器发出音调 -
仍备新洛: /------------这里判断字符低三位,如果有其中两位置一,则开启蜂鸣器 }

昌邑市18953513026: 51单片机,编写延时程序,控制蜂鸣器发声; -
仍备新洛: 很简单的 #include<reg52.h> #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...

昌邑市18953513026: 51单片机程序,我想要个按键输入的,可以让蜂鸣器输出音阶1234567,怎么做,用不用定时器?跪求!!!
仍备新洛: 写一个按键输入程序if(!KEY1){ delayms(10); if(!KEY1) { while(!KEY1) { BUZZER=~BUZZER; delayus(声音的频率1); } }}这样效果是可以出来 比中断差一点

昌邑市18953513026: 用51单片机控制蜂鸣器发声,望高手指点呀 -
仍备新洛: 把串口初始修改成: SCON =0x50; PCON = 0x00; TMOD = 0x20; EA=1; ES=1; 然后可以不考虑串口中断,直接使用查询法试试. while(RI==0); RI=0; a=SBUF;蜂鸣器不响是不是你设置的波特率不对?试一下.

昌邑市18953513026: 51单片机独立键盘控制发光二极管和蜂鸣器问题 -
仍备新洛: if(s2==20)(这里的数字无论是多少都可以!) ---- 这是一个位,只能是1和0.你写上1(或者其它的奇数),再试试行不行.

昌邑市18953513026: 请问51单片机如何用一个独立按键控制程序的暂停和继续 -
仍备新洛: 1.你的程序并不能实现显0~9,1357,0246,亮灯和响铃是可以. 2.用P1.1按键是可以实现暂停和继续的,并不需要中断.不是什么事都需要中断,好像离开中断就什么也不能做了? 3.你想暂停,是随时暂停,还是什么时候暂停?

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网