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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3380|回復: 6
收起左側

51單片機在倒計時的時候蜂鳴器不響,倒計為0時蜂鳴器響

[復制鏈接]
ID:992665 發表于 2021-12-15 17:59 | 顯示全部樓層 |閱讀模式
1黑幣
#include <reg52.h>

sbit DGT0=P2^3;//數碼管控制位
sbit DGT1=P2^2;
sbit DGT2=P2^1;
sbit DGT3=P2^0;
sbit BEEP=P2^5;


unsigned char code  LedChar[]={
        0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
unsigned char LedBuff[4]={0xF9,0xC0,0xC0,0xC0};//顯示數據儲存空間
unsigned char  flagls=0;//工作表示
unsigned int cnt=0;//計數器
unsigned char i=0;//循環變量
void main()
{
        unsigned int sec=1000;//定義變量,倒計時起始數據
        
        TMOD=0x01;//MOV TMOD,#01H//12M晶振產生1ms定時
        TH0=0xFC;//定時器初置
        TL0=0x18;
          TR0=1;//啟動定時計數
        EA=1;//允許中斷
        ET0=1;//允許定時器0中斷
        while(1)
        {         
                LedBuff[0]=LedChar[sec%10];//計數值個位存入
                        LedBuff[1]=LedChar[sec%100/10];//十位
                        LedBuff[2]=LedChar[sec%1000/100];//百位
                        LedBuff[3]=LedChar[sec/1000];//千位

                if(flagls==1)//判斷1秒時間到,工作表示有效
                {
                        flagls=0;//等等下一秒,清零
                        sec--;
                        
               
                }
        }
         
        
}
void InterruptTime0() interrupt 1//定時中斷
{
        TH0=0xFC;//重賦初始值
        TL0=0x18;
        cnt++;//計數器加1
        if (cnt>=200)//時間
        {
                cnt=0;//準備下一秒記時
                flagls=1;//1秒時間到
              
        }
        P0=0xFF;//熄滅,P0高電平

         switch (i)
        {
                case 0:DGT3=0;DGT2=0;DGT1=0;DGT0=1;i++;P0=LedBuff[0];break;//個位
                case 1:DGT3=0;DGT2=0;DGT1=1;DGT0=0;i++;P0=LedBuff[1];break;//十位
                case 2:DGT3=0;DGT2=1;DGT1=0;DGT0=0;i++;P0=LedBuff[2];break;//百位
                case 3:DGT3=1;DGT2=0;DGT1=0;DGT0=0;i=0;P0=LedBuff[3];break;//千位
        }
}





  如何把修改程序加進去?

最佳答案

回復

使用道具 舉報

ID:213173 發表于 2021-12-15 17:59 | 顯示全部樓層
無標題.jpg
  1. #include <reg52.h>

  2. sbit DGT0=P2^3;//數碼管控制位
  3. sbit DGT1=P2^2;
  4. sbit DGT2=P2^1;
  5. sbit DGT3=P2^0;
  6. sbit KEY0=P2^4;
  7. sbit BEEP=P2^5;
  8. sbit KEY1=P2^6;
  9. sbit KEY2=P2^7;

  10. unsigned char code  LedChar[]={
  11. 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
  12. unsigned char LedBuff[4]={0xF9,0xC0,0xC0,0xC0};//顯示數據儲存空間
  13. bit sign,flag,B_flag;//工作表示
  14. unsigned int cnt=0;//計數器
  15. unsigned char i=0;//循環變量
  16. unsigned int sec,sec1=500;//定義變量,倒計時起始數據

  17. void main()
  18. {
  19.         unsigned int t1,t2,t3;
  20.         TMOD=0x01;//MOV TMOD,#01H//12M晶振產生1ms定時
  21.         TH0=0xFC;//定時器初置
  22.         TL0=0x18;
  23.         TR0=1;//啟動定時計數
  24.         EA=1;//允許中斷
  25.         ET0=1;//允許定時器0中斷
  26.         while(1)
  27.         {         
  28.                 if(!KEY0 && !flag)
  29.                 {
  30.                         flag=1;//啟動倒計時并自鎖按鍵
  31.                         sec=sec1;//倒計時賦初值
  32.                         cnt=0;//定時器計數復位
  33.                         t2=0;//蜂鳴器計數復位
  34.                         BEEP=1;//蜂鳴器復位
  35.                         B_flag=0;//蜂鳴器工作標志復位
  36.                 }
  37.                 if(!KEY1 || !KEY2)//預置時間
  38.                 {
  39.                         if(++t1>=200 && !flag)
  40.                         {
  41.                                 t1=0;
  42.                                 sign=1;
  43.                                 if(!KEY1){if(sec1<1000)sec1++;}
  44.                                 if(!KEY2){if(sec1>10)sec1--;}
  45.                                 t3=3000;//顯示切換保持時間
  46.                         }
  47.                 }
  48.                 else
  49.                 {                       
  50.                         if(sign)
  51.                         {
  52.                                 if(--t3==0)sign=0;
  53.                         }               
  54.                         t1=0;
  55.                 }
  56.                 if(sign)//預置顯存
  57.                 {
  58.                         LedBuff[0]=LedChar[sec1%10];//計數值個位存入
  59.                         LedBuff[1]=LedChar[sec1%100/10];//十位
  60.                         LedBuff[2]=LedChar[sec1%1000/100];//百位
  61.                         LedBuff[3]=LedChar[sec1/1000];//千位
  62.                 }
  63.                 else//正常顯存
  64.                 {
  65.                         LedBuff[0]=LedChar[sec%10];//計數值個位存入
  66.                         LedBuff[1]=LedChar[sec%100/10];//十位
  67.                         LedBuff[2]=LedChar[sec%1000/100];//百位
  68.                         LedBuff[3]=LedChar[sec/1000];//千位
  69.                 }
  70.                 if(B_flag)//判斷蜂鳴器允許標志
  71.                 {
  72.                         BEEP=0;//蜂鳴器工作
  73.                         if(++t2>=5000)//蜂鳴器工作時長
  74.                         {
  75.                                 t2=0;//蜂鳴器計數復位
  76.                                 BEEP=1;//蜂鳴器復位
  77.                                 B_flag=0;//蜂鳴器工作標志復位
  78.                         }
  79.                 }
  80.         }
  81. }

  82. void InterruptTime0() interrupt 1//定時中斷
  83. {
  84.         TH0=0xFC;//重賦初始值
  85.         TL0=0x18;
  86.         if(flag)
  87.         {
  88.                 cnt++;//計數器加1
  89.                 if (cnt>=1000)//時間
  90.                 {
  91.                         cnt=0;//準備下一秒記時
  92.                         sec--;
  93.                         if(sec==0)
  94.                         {
  95.                                 flag=0;//停止倒計時
  96.                                 B_flag=1;//允許蜂鳴器工作
  97.                         }
  98.                 }
  99.         }
  100.         P0=0xFF;//熄滅,P0高電平       
  101.         switch (i)
  102.         {
  103.                 case 0:DGT3=0;DGT2=0;DGT1=0;DGT0=1;i++;P0=LedBuff[0];break;//個位
  104.                 case 1:DGT3=0;DGT2=0;DGT1=1;DGT0=0;i++;P0=LedBuff[1];break;//十位
  105.                 case 2:DGT3=0;DGT2=1;DGT1=0;DGT0=0;i++;P0=LedBuff[2];break;//百位
  106.                 case 3:DGT3=1;DGT2=0;DGT1=0;DGT0=0;i=0;P0=LedBuff[3];break;//千位
  107.         }
  108. }
復制代碼



回復

使用道具 舉報

ID:993066 發表于 2021-12-17 22:14 | 顯示全部樓層
你這就給一塊錢,你太瞧不起人了,要不你就不給,要不你就多給點嘛。
回復

使用道具 舉報

ID:993066 發表于 2021-12-17 22:15 | 顯示全部樓層
我這可以給你一點建議,可以用case語句寫
回復

使用道具 舉報

ID:992665 發表于 2021-12-20 18:16 | 顯示全部樓層
akesking 發表于 2021-12-17 22:14
你這就給一塊錢,你太瞧不起人了,要不你就不給,要不你就多給點嘛。

十塊的有,你幫到我,就ok
回復

使用道具 舉報

ID:824490 發表于 2021-12-20 18:48 | 顯示全部樓層
akesking 發表于 2021-12-17 22:14
你這就給一塊錢,你太瞧不起人了,要不你就不給,要不你就多給點嘛。

然而,1HB,并不值1RMB!
回復

使用道具 舉報

ID:824490 發表于 2021-12-20 18:56 | 顯示全部樓層
倒計為0時蜂鳴器響 ?
1、以什么頻率響?
2、響時要不要顯示閃爍?
3、響多久?或者以什么方式停響?
4、響的過程中是否允許關閉響?
5、響完了是重新開始計時,還是就停在那邊?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一二视频 | 国产xxxx岁13xxxxhd | 久久久久久成人 | 日韩在线不卡 | 精品日韩一区二区 | 国产精品一区一区 | 超碰av在线 | 国产aⅴ爽av久久久久久久 | 日韩欧美精品 | 亚洲高清免费观看 | 久久久999国产精品 中文字幕在线精品 | 日韩成人影院在线观看 | 黄色成人免费在线观看 | 亚洲91视频| 日韩精品区| 国产精品久久久久久久免费大片 | 欧美一区永久视频免费观看 | 九久久 | www久| 日韩欧美大片在线观看 | 一区二区三区四区视频 | 久久久久国产精品 | 国产精品久久久久久久久久了 | 亚州影院| .国产精品成人自产拍在线观看6 | 中文字幕在线观看一区二区 | 国产a级毛片 | 国产欧美精品一区二区三区 | 欧美一级大片免费看 | 国产精品一区在线观看 | 天天操天天摸天天爽 | 在线成人免费视频 | 日本三级播放 | 爱操av| 午夜影院操 | 久久久久久亚洲国产精品 | 亚洲视频免费观看 | 亚洲国产精品福利 | 久久精品日产第一区二区三区 | 欧美在线天堂 | 国产精品a久久久久 |