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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5380|回復(fù): 9
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)定時倒計(jì)時提醒制作 附代碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:678280 發(fā)表于 2020-11-7 23:07 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
學(xué)了一段時間單片機(jī),這兩天做了個實(shí)用電路,最長99分鐘定時倒計(jì)時提醒器。缺陷是電路開始工作后,一分鐘減一個數(shù)再無其它動作。給啟動按鈕加了聲音,否則電路是否已經(jīng)啟動都看不出來。時間到有響聲提醒。


上面兩個按鈕調(diào)節(jié)十分與分,每次加十分鐘和加一分鐘。
晶振下面是復(fù)位按鈕,右下角是啟動按鈕。
下面壓縮包中有Proteus仿真文件與C代碼。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下:
  1. #include<reg52.h>  //自制最長99分鐘定時倒計(jì)時提醒器 2020-11-06
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit gewei0=P2^6;   //允許個位顯示。
  5. sbit shiwei0=P2^7;  //允許十位顯示。
  6. sbit key1=P2^5;  //鍵1,每按加10分鐘。
  7. sbit key2=P2^4;  //鍵2,每按加1分鐘。
  8. sbit key3=P2^3;  //鍵3,開倒計(jì)時或暫停。
  9. sbit beep=P2^2;
  10. uchar k;
  11. unsigned int s;
  12. void delayms(uchar);
  13. void delay(uint z);
  14. void keyscan();
  15. void display(uchar);
  16. void init();
  17. void xiang1();
  18. void xiang2();
  19. uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

  20. void main()
  21. { init();     //調(diào)“初始化”。
  22.   while(1)
  23.   { keyscan();  //調(diào)“監(jiān)測按鍵”。
  24.     display(k); //調(diào)“顯示”。
  25. }}

  26. void keyscan() //監(jiān)測按鍵。
  27. { if(key2==0)
  28.   { delayms(26);
  29.     if(key2==0)
  30.     { k++;
  31.       if(k>=99) //k==99與中斷那里一致。
  32.          k=0;
  33.       while(!key2); //抬起按鍵key2時,顯示出k+2的結(jié)果。
  34.     }
  35.   }

  36.   if(key1==0)
  37.   { delayms(26);
  38.     if(key1==0)
  39.     { k=k+10;
  40.       if(k>=99) //k==99與中斷那里一致。
  41.          k=0;
  42.       while(!key1);
  43.     }
  44.   }
  45.   if(key3==0)
  46.   { delayms(26);
  47.     if(key3==0)
  48.     {   xiang1(); //啟動“倒計(jì)時”提示。
  49.       delayms(246);
  50.       TR0=~TR0;
  51.       while(!key3);
  52. }}}

  53. void delayms(uchar z) //延時。
  54. { uchar i,j;
  55.   for(i=z;i>0;i--)
  56.     for(j=110;j>0;j--); }

  57. void delay(uint z)
  58. {  while(z--); }

  59. void display(uchar k) //顯示。
  60. { uchar shi,ge;
  61.   shi=k/10;
  62.   ge =k%10;

  63.   gewei0=0;
  64.   P0=table[ge];
  65.   delayms(21);
  66.   gewei0=1;

  67.   shiwei0=0;
  68.   P0=table[shi];
  69.   delayms(21);
  70.   shiwei0=1;
  71. }

  72. void init() //初始化。設(shè)置中斷與定時器的值。
  73. { TMOD=0x01;
  74.   TH0=(65536-50000)/256;  //晶振12MHz,定時50ms。
  75.   TL0=(65536-50000)%256;
  76.   EA=1;
  77.   ET0=1;
  78. }

  79. void xiang1() //計(jì)時開始提示音。
  80. {
  81.   uchar q;
  82.   for(q=0;q<100;q++)
  83.   {
  84.     beep=0;
  85.     delayms(6);
  86.     beep=1;
  87.     delayms(4);
  88.   }
  89.     delayms(64);
  90. }

  91. void xiang2() //計(jì)時結(jié)束提示音--嘟嘟。
  92. {
  93.   unsigned int m;
  94.   uchar n;
  95.   for(n=0;n<2;n++)
  96.   {
  97.     for(n=0;n<111;n++)
  98.     {
  99.       beep=0;
  100.       delay(107);
  101.       beep=1;
  102.       delay(107);
  103.     }

  104.    for(m=0;m<3456;m++);
  105.     for(n=0;n<111;n++)
  106.     {
  107.       beep=0;
  108.       delay(107);
  109.       beep=1;
  110.       delay(107);
  111.     }
  112.    for(m=0;m<33333;m++);
  113.   }
  114. ……………………

  115. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
仿真文件與C代碼.rar (17.21 KB, 下載次數(shù): 50)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報(bào)

沙發(fā)
ID:97678 發(fā)表于 2020-11-8 09:19 | 只看該作者
可以把時間修改為999分鐘嗎?
回復(fù)

使用道具 舉報(bào)

板凳
ID:678280 發(fā)表于 2020-11-8 11:09 | 只看該作者
jovew 發(fā)表于 2020-11-8 09:19
可以把時間修改為999分鐘嗎?

可以改,但首先得改電路部分。
回復(fù)

使用道具 舉報(bào)

地板
ID:135950 發(fā)表于 2020-11-8 11:41 | 只看該作者
程序和電路可以再優(yōu)化一下的。而且如果要做最好做成成品電路吧,這種做好后要拿來用又太亂,不用又浪費(fèi)。。把電路板做小焊接好就可以了。
回復(fù)

使用道具 舉報(bào)

5#
ID:678280 發(fā)表于 2020-11-8 16:40 | 只看該作者
提示音代碼有誤,修改如下:

void xiang2() //計(jì)時結(jié)束提示音--嘟嘟。
{
  unsigned int m;
  uchar n,i;
  for(i=2;i>0;i--)
  {
    for(n=123;n>0;n--)
    {
      beep=0;
      delay(88);
      beep=1;
      delay(88);
    }

   for(m=3456;m>0;m--);
    for(n=123;n>0;n--)
    {
      beep=0;
      delay(88);
      beep=1;
      delay(88);
    }
   for(m=56789;m>0;m--);
  }
}
回復(fù)

使用道具 舉報(bào)

6#
ID:678280 發(fā)表于 2020-11-8 16:50 | 只看該作者
wasen 發(fā)表于 2020-11-8 11:41
程序和電路可以再優(yōu)化一下的。而且如果要做最好做成成品電路吧,這種做好后要拿來用又太亂,不用又浪費(fèi)。。 ...

想做出個恰當(dāng)漂亮的面板太難,并且飛線太多既不好看出問題時又不方便檢查。
回復(fù)

使用道具 舉報(bào)

7#
無效樓層,該帖已經(jīng)被刪除
8#
ID:678280 發(fā)表于 2020-11-26 11:13 | 只看該作者
在中斷中添加了可以實(shí)現(xiàn)秒指示作用的代碼。

void time0()interrupt 1  //0中斷,中斷序號1。
{ uint zxc=65432;
  TH0=0xb1; //晶振12MHz,定時20ms。
  TL0=0xe0;
  s++;
  if(m==25)  //作秒指示。
  {
    m=0;
    led=~led;}
  m++;  //uchar m; 定義為全局變量。
  if(s==3000) //3000×20ms=60000ms÷1000ms=60s(1分鐘)
  { s=0;   //歸零。等待下個1分鐘。
    k--; } //倒計(jì)時,減1分鐘。

  if(k<=0) //如果到0,發(fā)聲,關(guān)閉中斷。
  {
    k=0;
    xiang2();
    TR0=0;   //預(yù)定時間到,關(guān)中斷0,停止。
}}

回復(fù)

使用道具 舉報(bào)

9#
ID:849826 發(fā)表于 2021-7-14 10:20 來自觸屏版 | 只看該作者
再加個到時間輸出一個端口,吸合繼電器或者釋放繼電器
回復(fù)

使用道具 舉報(bào)

10#
ID:849826 發(fā)表于 2021-7-17 16:12 來自觸屏版 | 只看該作者
我把繼電器輸出端口p3^4=1寫在TR0=0;后面的下一句,應(yīng)該是應(yīng)該是提示音全部結(jié)束,再關(guān)斷繼電器?墒乾F(xiàn)在是繼電器關(guān)斷后,后面還響兩聲,應(yīng)該怎么改?
回復(fù)

使用道具 舉報(bào)

11#
ID:849826 發(fā)表于 2021-7-17 16:12 來自觸屏版 | 只看該作者
要求,倒計(jì)時聲音全部響完,再關(guān)斷繼電器
回復(fù)

使用道具 舉報(bào)

12#
無效樓層,該帖已經(jīng)被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲人久久 | 夜夜草视频| 亚洲一区二区精品视频 | 免费人成激情视频在线观看冫 | 国产成都精品91一区二区三 | 北条麻妃视频在线观看 | 日本欧美在线观看视频 | 日日精品| 久久久久久久国产精品视频 | 男人的天堂在线视频 | 国产精品久久久久无码av | 99爱在线观看 | 国产性网 | 国产精品久久久久久久久久久久久 | 精品人伦一区二区三区蜜桃网站 | 国产精品视频免费看 | 秋霞电影院午夜伦 | 欧美日韩高清免费 | 在线观看国产wwwa级羞羞视频 | 少妇一级淫片免费放播放 | 欧美成年人视频在线观看 | 欧美黄 片免费观看 | 99久久影院| 国产成人综合一区二区三区 | 伊人伊人伊人 | 久久精品亚洲精品国产欧美 | 国产精品高清一区二区三区 | 成人深夜福利 | 欧美成人精品 | www.色午夜.com | 国产精品久久久久久久久图文区 | 正在播放亚洲 | 久久久精品影院 | 欧美v在线 | 国产精品一区二区av | 欧美国产中文字幕 | 天堂一区二区三区四区 | 国产成人精品久久久 | 成人黄色在线观看 | 国产三级 | 日韩久久久久久 |