久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2646|回復: 5
打印 上一主題 下一主題
收起左側

基于C語言switch-case結構:4KHZ無源蜂鳴器單片機驅動源程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:1036918 發表于 2022-6-25 14:23 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
//定時器每125uS調用Buz_Output()函數一次,實現無源蜂鳴器4KHZ驅動
//功能參數說明:rbeep=0,蜂鳴器不響。rbeep=1,響1聲。rbeep=3,響2聲。
#define BUZ_OUT_TIME         800        /125uS*800=100mS
#define BUZ_STOP_TIME         800        /125uS*800=100mS
unsigned char rbeep;
unsigned int temp;
void Buz_Output(void)
{
        switch (rbeep)
        {
                case 0:
                        BUZ_GPIO = 0;
                        break;
//響100mS****************************************************
                case 1:
                        BUZ_GPIO = ~BUZ_GPIO;
                        temp ++;
                        if (temp > BUZ_OUT_TIME)  //125uS*800=100mS
                        {
                                temp  = 0;
                                rbeep = 0;                                
                        }
                        break;
//不響100mS****************************************************                        
                case 2:
                        BUZ_GPIO = 1;
                        temp ++;
                        if (temp > BUZ_STOP_TIME)
                        {
                                temp  = 0;
                                rbeep = 1;                                
                        }
                        break;
//響100mS****************************************************                        
                case 3:
                        BUZ_GPIO = ~BUZ_GPIO;
                        temp ++;
                        if (temp > BUZ_OUT_TIME)
                        {
                                temp = 0;
                                rbeep = 2;
                        }
                        break;               
                default:break;
        }
}

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:887371 發表于 2022-6-27 09:49 | 只看該作者
你這驅動還不夠完善。只實現斷續響1聲,斷續響2聲,立刻停3種功能。

我也實現過4KHZ無源蜂鳴器驅動,代碼框架和你一樣,代碼行數約為你的一半,但能實現下列功能。
1.立刻停(rbeep=0;)
2.斷續響n聲(rbeep=n;),n取值1~253
3.永久斷續響(rbeep=254;)
4.永久連續響(rbeep=255;rbeep1=0;)
5.連續響(n*100)毫秒(rbeep=255;rbeep1=n;)

按我提到的修改代碼,我相信樓主也能做到。
回復

使用道具 舉報

板凳
ID:1036918 發表于 2022-6-27 14:08 | 只看該作者
datouyuan 發表于 2022-6-27 09:49
你這驅動還不夠完善。只實現斷續響1聲,斷續響2聲,立刻停3種功能。

我也實現過4KHZ無源蜂鳴器驅動,代 ...

這個是我初學時寫的,確實有很多改進空間
回復

使用道具 舉報

無效樓層,該帖已經被刪除
5#
ID:373388 發表于 2022-11-15 22:40 | 只看該作者
datouyuan 發表于 2022-6-27 09:49
你這驅動還不夠完善。只實現斷續響1聲,斷續響2聲,立刻停3種功能。

我也實現過4KHZ無源蜂鳴器驅動,代 ...

可以共享一下嗎?
回復

使用道具 舉報

6#
ID:373388 發表于 2022-11-17 10:08 | 只看該作者
最近產品需要根據運行狀態蜂鳴器發出1聲-6聲的程序,現把代碼共享出來;用的有源驅動,可以修改宏定義,改為無源驅動
回復

使用道具 舉報

7#
ID:373388 發表于 2022-11-17 10:13 | 只看該作者
最近產品需要根據運行狀態,蜂鳴器 發出1聲到6聲的鳴叫,用的是有源蜂鳴器,也可以用無源蜂鳴器,修改宏定義即可。現把代碼共享出來,不管怎么優化也沒有大神的代碼少;測試可用
uint8_t Buzzer_Enable;                //蜂鳴器驅動函數使能
uint8_t on_time,off_time;   //鳴叫時間,停止時間
uint8_t Buzzer_cnt;         //鳴叫次數
//調用一次Buzzer_Set_int,蜂鳴器驅動函數就會執行一次,
//例如想讓蜂鳴器鳴叫,調用Buzzer_Set_int(蜂鳴次數,蜂鳴時長,蜂鳴關時長)一次,蜂鳴器就會按照設定參數鳴叫。
void Buzzer_Set_int(uint8_t cnt,uint8_t oncnt,uint8_t offcnt)
{
        on_time=oncnt;
        off_time=offcnt;
        on_count = cnt;
        Buzzer_Enable = 1;
}

//蜂鳴器驅動函數,放在定時器中斷函數里面,100ms執行一次
void Buzzer_Output(void)
{
static uint8_t oncnt,offcnt, buzzercnt = 0;
if(buzzercnt < on_count && offcnt == 0)
{
         oncnt = on_time;
         offcnt = off_time;
         buzzercnt++;
}
else if(buzzercnt>=on_count && offcnt == 0)
{
         Buzzer_Enable = 0;
         buzzercnt = 0;
         oncnt = 0;
         offcnt = 0;
         BEEPOFF();
}
  if(Buzzer_Enable)
        {
                if(oncnt)
                {
                        oncnt--;
                        BEEPON();//蜂鳴器響
                }
                else if(offcnt)
                {
                        offcnt--;
                        BEEPOFF();//蜂鳴器關
                }
                else
                {
                        if(on_count>0)
                        {
                                BEEPOFF();
                        }
                }
  }
}
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91精品国产91久久综合桃花 | 91麻豆精品一区二区三区 | 国产在线视频在线观看 | 成人免费看片 | 日韩国产精品一区二区三区 | 国产综合精品一区二区三区 | xxx视频| 淫片专区| 亚洲精品美女视频 | 成人免费区一区二区三区 | 国产在线视频一区 | 日韩电影中文字幕 | 婷婷激情综合 | 色在线视频网站 | 精品91 | 在线一级片 | 久久av一区 | 久久久在线视频 | 久久99精品久久久久久国产越南 | 91九色视频 | 国产一区影院 | 国产视频二区 | 毛片1| 日韩一区欧美一区 | 免费毛片在线 | 日韩精品一区二区三区中文在线 | 国产成人免费在线 | 亚洲视频在线观看 | 国产高清视频一区 | 久久久91 | 美国十次成人欧美色导视频 | 天天干天天草 | 日韩一区二区视频 | 四虎永久在线精品免费一区二 | 亚洲毛片一区二区 | 久久精品成人 | 在线视频h| 欧美乱码精品一区二区三区 | 欧美国产日韩在线 | 99视频网 | 污视频在线免费观看 |