找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機(jī)記時(shí)秒表,暫停、清零、開始 外加矩陣鍵盤定時(shí)秒表上限反向計(jì)時(shí)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:303163 發(fā)表于 2018-4-7 15:07 | 只看該作者 回帖獎勵(lì) |倒序?yàn)g覽 |閱讀模式
秒表,暫停、清零、開始  外加矩陣鍵盤定時(shí)秒表上限反向計(jì)時(shí)


單片機(jī)源程序如下:
  1. #include <reg52.h>

  2. unsigned int code Act_Num[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//不帶下標(biāo)的數(shù)字編碼
  3. unsigned int code Set_Num[] = {0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//帶有下標(biāo)的數(shù)字編碼
  4. unsigned char code BitNumber[] = {0xef,0xdf,0xbf,0x7f};
  5. unsigned int x0,flag = 0,j,num=80,key,key1,k=0,x1;
  6. unsigned char temp, led[4];

  7. sbit KEY = P3^2;
  8. sbit KEY1 = P3^3;

  9. void delay(int time);
  10. void inti();
  11. void inti1();

  12. void main()
  13. {
  14.         unsigned int i;
  15.        
  16.         TMOD = 0x01;
  17.         ET0 = 1;
  18.         EA = 1;
  19.        
  20.         inti();
  21.         inti1();
  22.         while (1)
  23.         {               
  24.                 led[0] = Act_Num[flag/10%10];
  25.                 led[1] = Set_Num[flag%10];
  26.                 led[2] = Act_Num[x1/10%10];
  27.                 led[3] = Act_Num[x1%10];
  28.                 for(i=0;i<4; i++)
  29.                 {
  30.                         P0=0x00;
  31.                         P0=led[i];
  32.       P2=BitNumber[i];
  33.       delay(4);
  34.                         P2=0xff;
  35.           }
  36.         }
  37. }

  38. void time0() interrupt 1
  39. {
  40.         unsigned int i;
  41.         TH0 = 0xff;
  42.         TL0 = 0xa4;
  43.         x0++;
  44.         i++;
  45.         if (x0==10000)
  46.         {
  47.                 x0 =0;
  48.        
  49.                 if (flag==60)
  50.                 {
  51.                         k=1;
  52.                 }
  53.                 else if (flag==0)
  54.                 {
  55.                         k=0;
  56.                 }
  57.                 if (k==1)
  58.                 {
  59.                         flag--;
  60.                 }
  61.                 else
  62.                 {
  63.                         flag++;
  64.                 }
  65.         }
  66.         if (i==100)
  67.         {
  68.                 i=0;
  69.                 if (k==1)
  70.                 {
  71.                         x1--;
  72.                 }
  73.                 else
  74.                 {
  75.                         x1++;
  76.                 }
  77.                 if (x1==60)
  78.                 {
  79.                         x1=0;
  80.                 }
  81.         }
  82. }
  83. void delay(int time)
  84. {
  85.         unsigned int i;
  86.         for (i = 0; i< time;i++)
  87.         {
  88.                
  89.         }
  90. }
  91. void inti()
  92. {
  93.         EA = 1;
  94.         IT0 = 1;
  95.         EX0 = 1;
  96. }
  97. void stop()interrupt 0
  98. {
  99.         if (KEY==0)
  100.         {
  101.                 delay(2);
  102.                 if (KEY==0)
  103.                 {
  104.                         j++;
  105.                         switch(j)
  106.                         {
  107.                                 case 1:
  108.                                         TH0 = 0xff;
  109.                                         TL0 = 0xa4;
  110.                                         TR0 = 1;
  111.                                         break;
  112.                                 case 2:
  113.                                         TR0= 0;
  114.                                         j=0;
  115.                                         num=80;
  116.                                         break;
  117.                         }
  118.                         while(KEY==0);
  119.                 }
  120.         }
  121.         while(!KEY);
  122. }
  123. void inti1()
  124. {
  125.         EA = 1;
  126.         IT1 = 1;
  127.         EX1 = 1;
  128. }
  129. void qinglin()interrupt 2
  130. {
  131.         if (KEY1==0)
  132.         {
  133.                 delay(2);
  134.                 if (KEY1==0)
  135.                 {
  136.                         j=0;
  137.                         TR0=0;
  138.                         flag=0;
  139.                         x1=0;
  140.                 }
  141.                         while(KEY1==0);
  142.         }
  143.         while(!KEY1);
  144. }
復(fù)制代碼

所有資料51hei提供下載:
帶分.zip (29.76 KB, 下載次數(shù): 24)


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

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2018-4-7 16:26 | 只看該作者
有原理圖嗎?
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表