欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4398|回復: 5
收起左側

51單片機讓蜂鳴器30s循環響一次的程序如何編寫?循環報警,求思路

[復制鏈接]
ID:854524 發表于 2021-1-28 17:38 來自觸屏版 | 顯示全部樓層 |閱讀模式
如題,由于本論壇禁止直接求程序,禁止伸手黨,所以向大家請教一下大致的實現方法與思路,理清頭緒后我自己來寫程序去實現
回復

使用道具 舉報

ID:716656 發表于 2021-1-28 20:44 來自觸屏版 | 顯示全部樓層
定時器,變量計數滿為30s當變量大于某數,蜂鳴器響,else不響。高低電平控制三極管
回復

使用道具 舉報

ID:702386 發表于 2021-1-28 23:09 | 顯示全部樓層
通常給程序設置一個工作節拍,比如一秒的節拍,主程序在這個節拍下運行。在主程序中可設置變量來計次數,在一秒節拍下比如計數為30次就置位一個標志位,則說明30秒到了,利用if語句判斷這個標志位為1時去處理30秒一次的任務。至于怎樣設置一秒的節拍,還是要用定時器,可以設置20ms的自動重裝定時器,中斷計數50次則為1秒并置位一個秒節拍標志位。進入相關標志位去處理任務時要記得復位該標志位。
回復

使用道具 舉報

ID:798201 發表于 2021-1-29 00:15 | 顯示全部樓層
本帖最后由 zwf33 于 2021-1-29 00:20 編輯
  1. #include <REGX52.H>
  2. typedef unsigned int  uint;
  3. sbit fmq=P2^3;   //定義I/O
  4. uint cnt=0;

  5. void main()
  6. {
  7.     TMOD=0x01;
  8.     TH0=(65536-46082)/256;        //   50ms    11.0592MHz
  9.     TL0=(65536-46082)%256;
  10.     TR0=1;
  11.     led=0;

  12.     while(1)
  13.     {

  14.         if(TF0==1)
  15.         {
  16.             TF0=0;
  17.             TH0=(65536-46082)/256;
  18.             TL0=(65536-46082)%256;
  19.             cnt++;
  20.             if(cnt>=600)               //  30s  
  21.             {
  22.                 cnt=0;
  23.                 fmq=~fmq;
  24.             }
  25.         }
  26.     }
  27. }
復制代碼

用定時器,變量計數滿30s后再執行蜂鳴器響
回復

使用道具 舉報

ID:854524 發表于 2021-1-29 00:49 來自觸屏版 | 顯示全部樓層
zwf33 發表于 2021-1-29 00:15
用定時器,變量計數滿30s后再執行蜂鳴器響

感謝感謝。
回復

使用道具 舉報

ID:288629 發表于 2021-1-29 11:47 | 顯示全部樓層
先把蜂鳴器的叫聲頻率定好,然后在啟動計時,可以用定時中斷計時,也可以用多進程計時,到了30S就運行一次蜂鳴器唄
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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