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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1739|回復(fù): 1
收起左側(cè)

單片機定時器及中斷實現(xiàn)百秒以內(nèi)正計時程序

[復(fù)制鏈接]
ID:903830 發(fā)表于 2022-11-16 15:49 | 顯示全部樓層 |閱讀模式
定時器及中斷設(shè)計電路如圖所示,可以看到使用兩個數(shù)碼管來顯示。實現(xiàn)百秒之內(nèi)的正計時器(如17秒),到達(dá)17秒LED閃一下計時結(jié)束,數(shù)碼管實時顯示正計時值。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
圖.png

單片機源程序如下:
  1. //名稱: 定時器實現(xiàn)數(shù)碼管倒計時
  2. #include <reg51.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. #define SEG P3

  6. sbit SCON1 = P2^0;
  7. sbit SCON2 = P2^1;
  8. sbit LED = P2^5;

  9. uchar num=0,ge,shi;    //倒計時17秒  7秒    正計時 0
  10. uchar count=0;
  11. uchar flag;

  12. //定義表格存放共陽極LED的點陣碼
  13. unsigned char code ledTab[]={
  14.         0xC0, // 1100 0000 數(shù)字0
  15.         0xF9, // 1111 1001 數(shù)字1
  16.         0xA4, // 1010 0100 數(shù)字2
  17.         0xB0, // 1011 0000 數(shù)字3
  18.         0x99, // 1001 1001 數(shù)字4
  19.   0x92, // 1001 0010 數(shù)字5
  20.         0x82, // 1000 0010 數(shù)字6
  21.         0xF8, // 1111 1000 數(shù)字7
  22.         0x80, // 1000 0000 數(shù)字8
  23.         0x90  // 1001 0000 數(shù)字9
  24. };  

  25. //毫秒級延時函數(shù)
  26. void delay(uint z)
  27. {
  28.         uint x,y;
  29.         for(x = z; x > 0; x--)
  30.                 for(y = 120; y > 0 ; y--);
  31. }


  32. void T0INTinit() //定時器T0初始化
  33. {
  34.         TMOD=0x01;
  35.         TH0=(65536-50000)/256;
  36.         TL0=(65536-50000)%256;  //50ms
  37.         EA=1;  //開總中斷
  38.         ET0=1; //開定時器0
  39.         TR0=1; //開始計時
  40. }


  41. void T0INT() interrupt 1
  42. {
  43.         TH0=(65536-50000)/256;
  44.         TL0=(65536-50000)%256;
  45.         flag++;
  46.         if(flag==20)//當(dāng)定時到1秒時執(zhí)行
  47.         {
  48.                 flag=0;
  49.                 num++;     //
  50.                 if (num > 17)    //
  51.                 {
  52.                         num = 0;
  53.                         TR0=0;  //停止計時
  54.       SEG=0xff;   //消影 不然會閃爍一下                       
  55.                         LED=0;
  56.                         delay(1000);
  57.                         LED=1;
  58.                         while(1)
  59.                         {
  60.                           SEG=0xff;  //計時結(jié)束 熄滅數(shù)碼管
  61.                         }
  62.                 }
  63.         }
  64. }



  65. void main(){
  66.         T0INTinit();
  67.         while(1)
  68.         {       
  69.                 SEG=0xff; //消影
  70.                 shi = num / 10;
  71.                 ge = num % 10;
  72.                 switch(count)
  73.                 {       
  74.                         case 0: SCON1=0;SCON2=1;SEG=ledTab[ge];break;  //共陽極
  75.                         case 1: SCON1=1;SCON2=0;SEG=ledTab[shi];break;
  76.                 }
  77.                 count++;
  78.                 if(count>1) count=0;
  79.         }
  80. }
復(fù)制代碼

Keil代碼與Proteus8.13版本的仿真下載(注意:不能兼容其他版本 只能用8.13打開):
百秒以內(nèi)正計時.zip (105.04 KB, 下載次數(shù): 13)


評分

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

查看全部評分

回復(fù)

使用道具 舉報

ID:491577 發(fā)表于 2022-11-16 22:04 | 顯示全部樓層
用定時器中斷計數(shù)可以實現(xiàn)任意時間定時,無論是秒、分鐘、小時、天、月都沒有問題的。這是基本功。
例如:
void T0INTinit() //定時器T0初始化
{
        TMOD=0x01;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;  //50ms
        EA=1;  //開總中斷
        ET0=1; //開定時器0
        TR0=1; //開始計時
}


void T0INT() interrupt 1//50ms定時器中斷
{
        static  unsigned int  m,s0,fen0,h0,day0;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        m++;//
        if(m>=20)
        {
          s0++;
          s++;//秒變量,需要定義成全局變量
          m=0;
        }
        if(s0>=60)
        {
          fen0++;
          fen++;//分鐘變量,需要定義成全局變量         s0=0;
        }
        if(fen0>=60)
        {
          h0++;
          h++;//小時變量,需要定義成全局變量
          fen0=0;
        }
        if(h0>=24)
        {
          day0++;
          day++;//天變量,需要定義成全局變量
          h0=0;
        }
        if(day0>=30)
        {
          yue++;//月變量,需要定義成全局變量
          day0=0;
        }
  }

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 精品在线观看入口 | 亚洲精品久久 | 日本在线一二 | 欧洲一区二区视频 | 国产线视频精品免费观看视频 | 日韩在线免费视频 | 天天操天天操 | 在线国产精品一区 | 国产伦精品一区二区三区在线 | 欧美综合国产精品久久丁香 | 久久久久国产精品免费免费搜索 | 在线综合视频 | 国产综合精品一区二区三区 | 免费看的av | 国内精品视频在线观看 | 99re国产| 欧美精品a∨在线观看不卡 国产精品久久国产精品 | 久久99精品视频 | 久久精品亚洲精品国产欧美 | 国产主播第一页 | 中文在线a在线 | 国产一区二区久久久 | 欧美国产视频一区二区 | 成人片在线看 | 91精品国产乱码久久久 | 国产一区免费视频 | 亚洲视频欧美视频 | 久久亚洲一区 | 国产一级片在线观看视频 | 黄视频网站免费观看 | 午夜激情在线视频 | 日本网站在线看 | 精品1区2区 | 一区二区三区国产好 | 午夜视频一区二区 | 欧美福利网站 | 国产精品伦一区二区三级视频 | 久久丝袜视频 | 一区二区蜜桃 | 中文字幕在线免费观看 | 一区中文字幕 |