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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

讓蜂鳴器只響一次的單片機程序寫法

  [復制鏈接]
跳轉到指定樓層
樓主
ID:74187 發表于 2018-10-13 15:55 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
      在實際的開發中,往往會用到按鍵,客戶要求按下按鍵的時候,最好有蜂鳴器提示一下,但是也就是提示一下,就不要再響了,還有些客戶,系統運行結束后,要求長響3秒或者5秒作為報警,然后也停止運行,這個程序就是這個作用,我們開發板上用的是無源的蜂鳴器,我們這個程序沒有加按鍵,如果加按鍵的話,只要在按下按鍵的時候,清零flag_beep這個變量就好了,程序就會起到按下一次按鍵響一次的效果。
  1. /********************************************************
  2. *描述:蜂鳴器上電只響一次 ,可以通過按鍵清除標志位,然后按一次響一次
  3. ********************************************************/
  4. #include "stc15w.h"
  5. #include "intrins.h" //包含左移和右移指令
  6. #include "string.h"         //字符串
  7. #include "stdio.h"         //標準輸入輸出



  8. /*******************************************************************************
  9. * 文件名:位定義
  10. * 描  述:
  11. * 功  能:
  12. * 作  者:大核桃
  13. * 版本號:1.0.1(2017.05.23)
  14. *******************************************************************************/

  15. bit flag500ms = 0;//500ms翻轉一次
  16. bit staBuzzer = 0;
  17. bit flag200ms = 0;

  18. sbit LED0 = P1^0;//
  19. sbit BEEP = P3^5;//

  20. sbit DATA0 = P2^0;//
  21. sbit DATA1 = P2^1;//
  22. sbit DATA2 = P2^2;//
  23. sbit DATA3 = P2^3;//
  24. sbit DATA4 = P2^4;//
  25. sbit DATA5 = P2^5;//
  26. sbit DATA6 = P2^6;//
  27. sbit DATA7 = P2^7;//

  28. typedef unsigned char uint8;//0-255
  29. typedef unsigned int  uint16;//0-65535
  30. typedef unsigned long uint32;//0-65535*65535

  31. /*******************************************************************************
  32. * 文件名:函數前置聲明
  33. * 描  述:
  34. * 功  能:
  35. * 作  者:大核桃
  36. * 版本號:1.0.1(2017.05.23)
  37. *******************************************************************************/

  38. void Bsp_Power_Init(void);
  39. void Delay500ms();                //@11.0592MHz
  40. void Timer0Init(void);                //1毫秒@11.0592MHz
  41. void KeyBeepState(uint8 sta);
  42. void Beep(void);

  43. /*******************************************************************************
  44. * 文件名:主循環入口
  45. * 描  述:
  46. * 功  能:
  47. * 作  者:大核桃
  48. * 版本號:1.0.1(2017.05.23)
  49. *******************************************************************************/
  50. void main(void)
  51. {
  52.         uint8 i = 0;

  53.         Bsp_Power_Init();//LED端口初始化

  54.         Timer0Init();    //定時器0初始化函數

  55.         LED0 = 1;

  56.         while(1);
  57. }

  58. /*******************************************************************************
  59. * 文件名:void Bsp_Power_Init()
  60. * 描  述: 數碼管上電顯示
  61. * 功  能:編程模塊化
  62. * 作  者:大核桃
  63. * 版本號:1.0.1(2017.05.23)
  64. *******************************************************************************/
  65. void Bsp_Power_Init(void)
  66. {
  67.         P0M1 = 0xFC;
  68.         P0M0 = 0X03;
  69.         P0 = 0X00;

  70.         P1M1 = 0xE0;
  71.         P1M0 = 0X1F;
  72.         P1 = 0X00;


  73.         //P2口開漏輸出
  74.         P2M1 = 0XFF;
  75.         P2M0 = 0XFF;
  76.         P2 = 0Xff;
  77. //        //P54,P55口為推挽輸出
  78.         P5M1 = 0X00;
  79.         P5M0 = 0X00;
  80.         P5 = 0xFF;

  81.         //P37,P36,3.2,P3.3 P3.4口為推挽輸出
  82.         P3M1 = 0X00;
  83.         P3M0 = 0XFC;
  84.         P3 = 0X23;

  85. }

  86. /*******************************************************************************
  87. * 文件名:void Delay500ms()                //@11.0592MHz
  88. * 描  述: 普通延時函數
  89. * 功  能:編程模塊化
  90. * 作  者:大核桃
  91. * 版本號:1.0.1(2017.05.23)
  92. *******************************************************************************/
  93. //void Delay500ms()                //@11.0592MHz
  94. //{
  95. //        unsigned char i, j, k;
  96. //
  97. //        _nop_();
  98. //        _nop_();
  99. //        i = 22;
  100. //        j = 3;
  101. //        k = 227;
  102. //        do
  103. //        {
  104. //                do
  105. //                {
  106. //                        while (--k);
  107. //                } while (--j);
  108. //        } while (--i);
  109. //}

  110. /*******************************************************************************
  111. * 文件名:void Timer0Init(void)
  112. * 描  述: 定時器0配置
  113. * 功  能:編程模塊化
  114. * 作  者:大核桃
  115. * 版本號:1.0.1(2017.05.23)
  116. *******************************************************************************/
  117. void Timer0Init(void)                //1毫秒@11.0592MHz
  118. {
  119.         AUXR &= 0x7F;                //定時器時鐘12T模式
  120.         TMOD &= 0xf0;                //設置定時器模式
  121.         TMOD |= 0x01;                //設置定時器模式
  122.         TL0 = (65535 - 1000) % 256;//設置定時初值
  123.         TH0 = (65535 - 1000) / 256;//設置定時初值
  124.         ET0 = 1;            //打開定時器0中斷使能
  125.         TR0 = 1;                    //定時器0開始計時
  126.         EA = 1;             //打開總中斷使能
  127. }

  128. void Timer0_inter(void) interrupt 1
  129. {
  130.      static uint16 tmr1s = 0;
  131.          static bit flag_beep = 0;

  132.     //自動重載,初值可以不需要寫
  133.         TL0 = (65535 - 1000) % 256;                    //設置定時初值
  134.         TH0 = (65535 - 1000) / 256;                     //設置定時初值

  135.         tmr1s++;

  136.         if(tmr1s >= 1000)
  137.         {
  138.                 tmr1s = 0;
  139.                 if(flag_beep == 0)
  140.                 {
  141.                         KeyBeepState(1);
  142.                 }

  143.                 flag_beep = 1;

  144.         }


  145.         Beep();                        
  146. }

  147. void Beep(void)
  148. {
  149.         static uint8 tmr1ms = 0;
  150.         static uint16 tmr1s = 0;

  151.         if(staBuzzer)
  152.         {
  153.                  tmr1ms++;
  154.                  if(tmr1ms >= 1)
  155.                  {
  156.                          tmr1ms = 0;
  157.                     BEEP = ~BEEP;
  158.                         tmr1s++;
  159.                  }
  160.                  
  161.                  if(tmr1s >= 200)//延時時間長短
  162.                  {
  163.                          tmr1s = 0;
  164.                         staBuzzer = 0;
  165.                  }        
  166.         }
  167.         else
  168.         {
  169.                 BEEP = 1;
  170.         }        
  171. }

  172. /*******************************************************************************
  173. * 文件名: void KeyBeepState(bit sta)
  174. * 描  述: //1開按鍵音 0關閉按鍵音
  175. * 功  能:模塊化編程
  176. * 作  者:大核桃
  177. * 版本號:1.0.1(2015.03.03)
  178. *******************************************************************************/
  179. void KeyBeepState(uint8 sta)
  180. {
  181.         if(sta)
  182.         {
  183.                 staBuzzer = 1;
  184.         }
  185.         else
  186.         {
  187.                 staBuzzer = 0;               
  188.         }
  189. }
復制代碼
代碼下載

013 蜂鳴器的使用.rar (34.96 KB, 下載次數: 60)




評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:420008 發表于 2019-2-15 17:07 | 只看該作者
大神你這個程序長按會有長鳴,不想要長鳴要怎么解決?求解
回復

使用道具 舉報

板凳
ID:471889 發表于 2019-3-10 09:24 | 只看該作者
很好的作品,收下了!謝謝分享!
回復

使用道具 舉報

地板
ID:907150 發表于 2021-4-16 23:27 | 只看該作者
好資料,51黑有你更精彩!!!
回復

使用道具 舉報

5#
ID:1049825 發表于 2022-10-31 19:57 | 只看該作者
我對樓主的無私奉獻精神感動了,謝謝!謝謝
回復

使用道具 舉報

6#
ID:333678 發表于 2022-11-3 05:17 | 只看該作者
好資料,51黑有你更精彩!
回復

使用道具 舉報

7#
ID:485350 發表于 2023-4-4 16:38 | 只看該作者
//功能:
//調用方式:10毫秒調用一次
void Beep_Control(void)
{
    if(Beep_Run_Time == 0)
    {
        if(Beep)
        {
            //IO設置為強推輸出
            if(Beep & 0x01)
            {
                Beep_Out_En = 1;
            }
            else
            {
                Beep_Out_En = 0;
            }

            Beep >>= 1;
            Beep_Run_Time = BEEP_ON_TIME;
        }
        else
        {
            //IO設置為模擬輸入
            Beep_Out_En = 0;
            //BEEP_IO = BEEP_OFF;                //防止蜂鳴器長時間導通
        }
    }
    else
    {
        Beep_Run_Time--;
    }
}

// //功能:蜂鳴器硬件驅動
// //調用方式:125us中斷內調
void Beep_Drive(void)
{
    if(Beep_Out_En)
    {
        BEEP_IO = !BEEP_IO ;
    }
}


if(Key_Down & KEY1)

Key_Down &= ~KEY1;
Beep = 0x0001;//蜂鳴器響100ms


if(Key_Down & KEY2)

Key_Down &= ~KEY2;
Beep = 0x0005;//蜂鳴器響100ms 停100ms 響100ms


if(Key_Down & KEY3)

Key_Down &= ~ KEY3;
Beep = 0x001f;//蜂鳴器響500ms 
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 热99精品视频 | 国产日韩一区二区三区 | 国产视频一区二区 | 欧美一区二区三区高清视频 | 一级视频黄色 | 欧美一级三级 | 欧美国产精品一区二区三区 | 一区二区三区av | 精品久久久久久久久久久久久久 | 日韩中文字幕在线免费 | 欧美美女一区二区 | 男人午夜视频 | 无码国模国产在线观看 | a网站在线观看 | 亚洲av毛片成人精品 | 亚洲第1页| 麻豆成人在线视频 | 一区二区三区日韩精品 | 国产精品一区二区三区久久久 | 夜夜久久 | 99色视频| 日韩高清中文字幕 | 女同久久另类99精品国产 | 亚洲精品在线视频 | 久久久天堂 | 亚洲黄色一级 | 美女天天操| 91啪亚洲精品| 国产精品国产精品国产专区不片 | 剑来高清在线观看 | 国产精品国产三级国产aⅴ中文 | 日韩欧美一区二区三区在线播放 | 自拍偷拍亚洲视频 | 黄色在线观看网站 | 亚洲成人免费电影 | 国产精品成人在线播放 | 国产999精品久久久久久 | 久久av网| 国产精品3区 | 99精品欧美一区二区三区综合在线 | 久久亚洲精品国产精品紫薇 |