c语言单片机beep,C语言单片机是什么

本文目录一览:

单片机中断函数C语言的问题?

void Timer1() interrupt 3

{    TH1=xx;    TL1=xx;  //建议还是取定时值为1ms,或者是 0.5ms ;

  cnt++;

 if (s50)

 {

     if(cnt500)   { cnt=0; beep=~beep;}

 }

 else if (s=50 s100)

 {

     if(cnt1000)   { cnt=0; beep=~beep;}

 }

 ………

}

如果定时中断为20ms,对应的频率计数50Hz,这个频率已经很低了,那么再通过cnt计数500次,输出信号频率就远远超出音频范围,你根本就听不到声音;

另外,蜂鸣器的proteus仿真可能不太准确,可以通过仿真示波器看波形及频率就好了;

单片机c语言,这份代码我看不懂,打打注释

/* 

题目:同时用两个定时器控制蜂鸣器发声,

定时器0控制频率,定时器1控制同个

频率持续的时间,间隔2s依次输出

1,10,50,100,200,400,800,

1k(hz)的方波?

设晶振频率为12MHz。

*/

/*********************************************************/

#includereg52.h //52单片机头文件

#include intrins.h //包含有左右循环移位子函数的库

#define uint unsigned int //宏定义

#define uchar unsigned char //宏定义

sbit beep=P2^3;//应该是蜂鸣器吧采的

uchar tt;//自定义计数全局变量

uint fre,flag;//自定义全局变量

void main() //主函数

{

fre=50000;//设置主频50KHZ

beep=0;//应该是蜂鸣器关闭

TMOD=0x11;//设置定时器0,定时器1为工作方式1 —16位计时器

TH0=(65536-fre)/256;//T0定时器高位计数设置 60

TL0=(65536-fre)%256;//T0定时器低位计数设置

TH1=(65536-50000)/256;//T1定时器高位计数设置

TL1=(65536-50000)%256;//T1定时器低位计数设置

EA=1;//开总中断

ET0=1;//开定时器0中断

ET1=1;//开定时器1中断

TR1=1;//启动定时器1

TR0=1;//启动定时器0

while(1);//等待中断产生

}

void timer0() interrupt 1 //定时器0中断

{

TR0=0; //进中断后先把定时器0中断关闭,防止内部程序过多而造成中断丢失

TH0=(65536-fre)/256;//重置定时器高位计数

TL0=(65536-fre)%256;//重置定时器低位计数

tt++;//累加,为了下面逻辑

//依据flag设置主频及翻转蜂鸣器

if(flag40) 

if(tt==10)

{

tt=0;

fre=50000;

beep=~beep;

}

if(flag=40flag80)

{

tt=0;

fre=50000;

beep=~beep;

}

if(flag=80flag120)

{

tt=0;

fre=10000;

beep=~beep;

}

if(flag=120flag160)

{

tt=0;

fre=5000;

beep=~beep;

}

if(flag=160flag200)

{

tt=0;

fre=2500;

beep=~beep;

}

if(flag=200flag240)

{

tt=0;

fre=1250;

beep=~beep;

}

if(flag=240flag280)

{

tt=0;

fre=625;

beep=~beep;

}

if(flag=280flag320)

{

tt=0;

fre=312;

beep=~beep;

}

if(flag=320flag360)

{

tt=0;

fre=156;

beep=~beep;

}

TR0=1;//T0使能

}

void timer1() interrupt 3 //定时器1中断用来产生2秒时间定时

{

TH1=(65536-50000)/256;//重置定时器高位计数

TL1=(65536-50000)%256;//重置定时器低位计数

flag++;//主频重置flag

if(flag==360)

{

flag=0;

fre=50000;

}

TR1=1;//这里少了个T1使能

}

K1、K2分别控制定时器T0、T1的启动停止, T0每2秒beep(蜂鸣器),T1每秒闪烁灯。求C语言单片机程序代码

#includereg51.h

sbit Beep = P1^0;

sbit Led = P1^1;

sbit K1 = P2^0;

sbit K2 = P2^1;

void ConfigTimer()

{

TMOD = 0x11;

TH1 = 0xFC;

TL1 = 0c18;

TH0 = 0xFC;

TL0 = 0x18;

ET0 = 1;

ET1 = 1;

EA = 1;

}

void delay(int z)

{

int i,j;

for(i=0; iz; i++)

for(j=0; j110; j++);

}

void main()

{

ConfigTimer();

while(1)

{

if(K1 == 0)

{

delay(10);

if(K1 == 0)

{

TR0 =~TR0;

while(!K1);

}

}

if(K2 == 0)

{

delay(10);

if(K2 == 0)

{

TR1 =~TR1;

while(!K2);

}

}

}

}

void timer0() interrupt 1

{

static unsigned int t = 0;

TH0 = 0xFC;

TL0 = 0x18;

t++;

if(t 2000)

{

if(t 200)

{

Beep = 0;

}

else

{

Beep = 1;

}

}

else

{

t = 0;

}

}

void timer0() interrupt 3

{

static unsigned int t = 0;

TH1 = 0xFC;

TL1 = 0x18;

t++;

if(t = 1000)

{

Led = ~Led;

t = 0;

}

}

我刚写出来,,没有试验,你编译下,更改引脚定义,试试,,应该是可以的

c语言中,beep是个什么函数

是发声函数,运行后通过主板喇叭唱出旋律,可以试试下面:

TC

试:

#includedos.h

#includeconio.h

#includestdlib.h

/*

this

founction

plays

sound

until

hit

any

key

*/

void

mysound()

{

long

freq

;

while(!kbhit()){/*

while

no

keyboard

hit,

play

sound

*/

for(freq=200L;freq2000L;freq+=200L){

sound(freq);/*play

freq

sound*/

delay(200);/*delay

200ms*/

}

}

nosound();/*

stop

playing

*/

}

void

main()

{

mysound()

;

}

—————

VC++

试:

#include

stdio.h

#include

stdlib.h

#include

windows.h

main()

{

Beep(523,500);

Beep(587,500);

Beep(659,500);

Beep(698,500);

Beep(784,500);

Sleep(500);

Beep(523,500);

Beep(587,500);

Beep(659,500);

Beep(698,500);

Beep(784,500);

}

——

wintc

试验上两个。

单片机c语言中beep=~beep什么意思

按位取反。

如果你的beep只是一位的话,即

bit

beep

=

1

那beep

=

~beep结果就是0

如果是多位的变量的化就是用二进制取反,如

int

beep

=

11001(二进制,你看到的是二进制!!不是十进制)

那beep=~beep就是00110

原创文章,作者:GIRU,如若转载,请注明出处:https://www.506064.com/n/137144.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
GIRUGIRU
上一篇 2024-10-04 00:17
下一篇 2024-10-04 00:17

相关推荐

  • 单片机打印函数

    单片机打印是指通过串口或并口将一些数据打印到终端设备上。在单片机应用中,打印非常重要。正确的打印数据可以让我们知道单片机运行的状态,方便我们进行调试;错误的打印数据可以帮助我们快速…

    编程 2025-04-29
  • AES加密解密算法的C语言实现

    AES(Advanced Encryption Standard)是一种对称加密算法,可用于对数据进行加密和解密。在本篇文章中,我们将介绍C语言中如何实现AES算法,并对实现过程进…

    编程 2025-04-29
  • 学习Python对学习C语言有帮助吗?

    Python和C语言是两种非常受欢迎的编程语言,在程序开发中都扮演着非常重要的角色。那么,学习Python对学习C语言有帮助吗?答案是肯定的。在本文中,我们将从多个角度探讨Pyth…

    编程 2025-04-29
  • Python被称为胶水语言

    Python作为一种跨平台的解释性高级语言,最大的特点是被称为”胶水语言”。 一、简单易学 Python的语法简单易学,更加人性化,这使得它成为了初学者的入…

    编程 2025-04-29
  • OpenJudge答案1.6的C语言实现

    本文将从多个方面详细阐述OpenJudge答案1.6在C语言中的实现方法,帮助初学者更好地学习和理解。 一、需求概述 OpenJudge答案1.6的要求是,输入两个整数a和b,输出…

    编程 2025-04-29
  • Python按位运算符和C语言

    本文将从多个方面详细阐述Python按位运算符和C语言的相关内容,并给出相应的代码示例。 一、概述 Python是一种动态的、面向对象的编程语言,其按位运算符是用于按位操作的运算符…

    编程 2025-04-29
  • Python语言由荷兰人为中心的全能编程开发工程师

    Python语言是一种高级语言,很多编程开发工程师都喜欢使用Python语言进行开发。Python语言的创始人是荷兰人Guido van Rossum,他在1989年圣诞节期间开始…

    编程 2025-04-28
  • Python语言设计基础第2版PDF

    Python语言设计基础第2版PDF是一本介绍Python编程语言的经典教材。本篇文章将从多个方面对该教材进行详细的阐述和介绍。 一、基础知识 本教材中介绍了Python编程语言的…

    编程 2025-04-28
  • Python语言实现人名最多数统计

    本文将从几个方面详细介绍Python语言实现人名最多数统计的方法和应用。 一、Python实现人名最多数统计的基础 1、首先,我们需要了解Python语言的一些基础知识,如列表、字…

    编程 2025-04-28
  • Python作为中心语言,在编程中取代C语言的优势和挑战

    Python一直以其简单易懂的语法和高效的编码环境而著名。然而,它最近的发展趋势表明Python的使用范围已经从脚本语言扩展到了从Web应用到机器学习等广泛的开发领域。与此同时,C…

    编程 2025-04-28

发表回复

登录后才能评论