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/zh-hant/n/137144.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
GIRU的頭像GIRU
上一篇 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

發表回復

登錄後才能評論