找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

單片機(jī)秒表仿真實(shí)驗(yàn)源碼(帶三個(gè)按鍵)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:433212 發(fā)表于 2018-11-26 09:57 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |正序?yàn)g覽 |閱讀模式
標(biāo)題:?jiǎn)纹瑱C(jī)秒表實(shí)驗(yàn)
內(nèi)容:這是前兩個(gè)星期做的秒表的文件,
         單片機(jī)c語言版,里面的功能可以實(shí)現(xiàn)三分鐘的計(jì)時(shí),
         有三個(gè)按鍵,一個(gè)按鍵按下,可以停止計(jì)數(shù),
          一個(gè)按下可以開始計(jì)數(shù),一個(gè)按下可以復(fù)位。

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


單片機(jī)源程序如下:
  1. #include"reg52.h"
  2. #define uchar unsigned char
  3. sbit s1=P3^2;
  4. sbit s2=P3^3;
  5. sbit s3=P3^4;
  6. uchar code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  7. uchar time=0;        //記錄中斷次數(shù)
  8. uchar second;  
  9. void delay()
  10. { uchar i,j;
  11. for(i=0;i<20;i++)
  12.   for(j=0;j<20;j++);}
  13. main()
  14. {TMOD=0x01;   
  15. ET0=1;
  16. EA=1;
  17. second=0;
  18. while(1)
  19.   {  P2=0xfe;
  20.      P0=seg[second/100];
  21.          delay();
  22.      P2=0xfd;
  23.      P0=seg[second/10%10];     
  24.          delay();
  25.          P2=0xfb;
  26.          P0=seg[second%10];
  27.          delay();
  28. if(s1==0){TH0=0xee;TL0=0x00;TR0=1;}   
  29. if(s2==0)TR0=0;
  30. if(s3==0){second=0;
  31.                P2=0xfe;  //選擇第一個(gè)數(shù)碼管點(diǎn)亮
  32.            P0=seg[second/100];  //顯示秒位0
  33.                delay();
  34.            P2=0xfd; //選擇第二個(gè)數(shù)碼管點(diǎn)亮
  35.            P0=seg[second/10%10];     //顯示0.1秒位0
  36.                delay();
  37.                    P2=0xfb; //選擇第三個(gè)數(shù)碼管點(diǎn)亮
  38.                P0=seg[second%10]; //顯示0.01秒位0
  39.                delay();
  40.                           }
  41. while(P3&0x20==0x00);//消除抖動(dòng)
  42.                         while(P3&0x10==0x00);//消除抖動(dòng)
  43.                                  while(P3&0x08==0x00);}}//消除抖動(dòng)
  44. void t0() interrupt 1 using 1
  45. {
  46. TH0=0xee;
  47. TL0=0x00;
  48. time++;
  49. if(time==200)    //中斷200次,共計(jì)時(shí)200*5ms=1000ms=1s
  50. {time=0;
  51.   second++;
  52.    P2=0xfe;  //選擇第一個(gè)數(shù)碼管點(diǎn)亮
  53.    P0=seg[second/100];  //顯示秒位0
  54.    delay();
  55.    P2=0xfd; //選擇第二個(gè)數(shù)碼管點(diǎn)亮
  56.    P0=seg[second/10%10];     //顯示0.1秒位0
  57.    delay();
  58.    P2=0xfb; //選擇第三個(gè)數(shù)碼管點(diǎn)亮
  59.    P0=seg[second%10]; //顯示0.01秒位0
  60.    delay();       
  61.    }
  62.   if(second==180)
  63.   {TR0=0;
  64.    second=180; }
  65.    else TR0=1;}       
復(fù)制代碼

所有資料51hei提供下載:
秒表.zip (60.14 KB, 下載次數(shù): 35)




評(píng)分

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

查看全部評(píng)分

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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