找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2690|回復: 0
收起左側(cè)

單片機學習筆記(二)驅(qū)動蜂鳴器

[復制鏈接]
ID:108531 發(fā)表于 2016-3-12 16:49 | 顯示全部樓層 |閱讀模式
利用單片機驅(qū)動蜂鳴器發(fā)聲:
C語言源程序:
#include<reg52.h> //包含52單片機的頭文件
#inlcude<intrins.h> //該頭文件包含了各種移位函數(shù)
//_crol_ 字符循環(huán)左移
//_cror_ 字符循環(huán)右移
//_irol_ 整數(shù)循環(huán)左移
//_iror_ 整數(shù)循環(huán)右移
//_lrol_ 長整數(shù)循環(huán)左移
//_lror_ 長整數(shù)循環(huán)右移
//_nop_ 空操作8051 NOP 指令
//_testbit_ 測試并清零位8051 JBC 指令
#define uint unsigned int   //定義uint為無符號整型
#define uchar unsigned char   //定義uchar為無符號字符型
uchar temp,num,num1; //定義temp,num,num1為三個無符號字符變量
sbit beep=P3^4; //定義蜂鳴器所在的端口位
void delay(uint); //延時函數(shù)原型聲明
void main() //主函數(shù)
{
  temp=0xfe;  //對應二進制11111110 賦值給P1可點亮第一個發(fā)光二極管
  while(1)  //主循環(huán)
  {
    for(num1=0;num1<3;num1++)  //子循環(huán)循環(huán)三次
    {
      for(num=0;num<8;num++)  //子循環(huán)循環(huán)8次
      {
        P1=temp; //將temp賦值給P1點亮發(fā)光二極管
        beep=0;  //蜂鳴器發(fā)聲
        delay(100); //延時
        temp=_crol_(temp,1);//將temp字符變量中的值左移一位
        P1=0xff; //熄滅所有發(fā)光二級管
        beep=1; //蜂鳴器停止發(fā)聲
        delay(100);延時
      }
    }
    for(num1=0;num1<3;num1++)  //子循環(huán)循環(huán)三次
    {
      for(num=0;num<8;num++)  //子循環(huán)循環(huán)8次
      {
        P1=temp; //將temp賦值給P1點亮發(fā)光二極管
        beep=0;  //蜂鳴器發(fā)聲
        delay(100); //延時
        temp=_cror_(temp,1);//將temp字符變量中的值右移一位
        P1=0xff; //熄滅所有發(fā)光二級管
        beep=1; //蜂鳴器停止發(fā)聲
        delay(100);延時
      }
    }
  }
}
void delay(uint a)  //延時函數(shù)
{
  uint x,y;    //定義無符號變量X,Y
  for(x=a;x>0;x--)  //外循環(huán)將x的值循環(huán)減1 直到小于0
    for(y=100;y>0;y--);  //內(nèi)循環(huán)將y的值循環(huán)減1 直到小于0
}
//程序效果 發(fā)光二極管依次從左到右閃亮 每閃亮一次 蜂鳴器發(fā)聲 循環(huán)3次 然后倒過來再次循環(huán)閃亮 每閃亮一次 蜂鳴器發(fā)聲

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表