找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機(jī)10s秒表兩個開關(guān)怎么實現(xiàn)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:256067 發(fā)表于 2017-12-1 11:39 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
求助!我要做個10s的秒表。有兩個按鍵,一個按鍵是電源,一個是開關(guān)。
當(dāng)按下開關(guān)時,前提電源開關(guān)也按下了,數(shù)碼管開始走動,再按下開關(guān)會暫停定時器,再按清零(已實現(xiàn))。
關(guān)鍵是電源另一個功能。當(dāng)再按下電源開關(guān)時,數(shù)碼管熄滅,定時器停止。(未實現(xiàn))
有沒有大神能夠告訴我怎么實現(xiàn)這個功能,關(guān)系到我掛不掛科的事情......

單片機(jī)代碼如下:
  1. #include <reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uchar code Dsy_Code[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  5. sbit Key_Start = P2^2;
  6. sbit Key_Power=P2^3;
  7. sbit dp = P0^7;                                                                                                       //小數(shù)點(diǎn)
  8. uchar num=0;  //定時器的計數(shù)
  9. uchar count=0;//數(shù)碼管的計數(shù)
  10. uchar Key_Num=0;//按鍵次數(shù)的計數(shù)
  11. uchar Power_Num=0;
  12. bit Key_State=1,Power_State=1;
  13. void DelayMS(uint x){
  14.         uchar i;
  15.         while(x--)
  16.                 for(i=0;i<120;i++);
  17. }
  18. void Dsy(){  //顯示函數(shù)
  19.         P2=0xfd;
  20.         P0=Dsy_Code[num%10];
  21.         DelayMS(2);
  22.         P2=0xfe;
  23.         P0=Dsy_Code[num/10];
  24.         dp=1;
  25.         DelayMS(2);
  26. }
  27. void Timer()interrupt 1{  //定時器
  28.         TH0=(65536-50000)/256;  //50ms
  29.         TL0=(65536-50000)%256;
  30.         count++;
  31.         if(count==2){
  32.                 count=0;
  33.                 num++;
  34.                 if(num==100)
  35.                         num=0;
  36.         }
  37. }
  38. void Key_Handle(){//按鍵處理
  39.         if(Key_State==0){
  40.                 Key_Num=(Key_Num+1)%3;
  41.                 switch(Key_Num){
  42.                         case 1:IE=0x82;TR0=1;break;
  43.                         case 2:IE=0x00;TR0=0;break;
  44.                         case 0:IE=0x00;TR0=0;num=0;break;
  45.                 }
  46.         }
  47. }
  48. void main(){
  49.         TMOD=0x01;
  50.         TH0=(65536-50000)/256;  //10ms
  51.         TL0=(65536-50000)%256;
  52.         if(Power_State!=Key_Power){
  53.                 DelayMS(10);
  54.                 if(Power_State!=Key_Power){
  55.                         Power_Num++;
  56.                         if(Power_Num%2==1){
  57.                                 while(1){
  58.                                         if(Key_State!=Key_Start){
  59.                                         DelayMS(10);
  60.                                         Key_State=Key_Start;
  61.                                         Key_Handle();
  62.                                         }
  63.                                 Dsy();
  64.                                 }
  65.                         }
  66.                 }
  67.         }
  68. }
復(fù)制代碼



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

使用道具 舉報

沙發(fā)
ID:256126 發(fā)表于 2017-12-1 14:29 | 只看該作者
這簡單了,電源開關(guān)就總開關(guān)好了,一按電源開關(guān),把所有電關(guān)掉,就好啦。屏也不亮了數(shù)據(jù)也沒了正好啊
回復(fù)

使用道具 舉報

板凳
ID:222948 發(fā)表于 2017-12-1 17:18 | 只看該作者
什么時候交我?guī)湍阃瓿?/td>
回復(fù)

使用道具 舉報

地板
ID:222948 發(fā)表于 2017-12-1 17:23 | 只看該作者
有什么不懂的可以找我

秒表.zip

29.99 KB, 下載次數(shù): 31

評分

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

查看全部評分

回復(fù)

使用道具 舉報

5#
ID:256067 發(fā)表于 2017-12-4 10:02 | 只看該作者
999333 發(fā)表于 2017-12-1 17:23
有什么不懂的可以找我

感謝大佬,我理解了!不好意思,今天才看見,非常感謝。!
回復(fù)

使用道具 舉報

6#
ID:1082198 發(fā)表于 2023-6-5 16:54 | 只看該作者
Runningit 發(fā)表于 2017-12-4 10:02
感謝大佬,我理解了!不好意思,今天才看見,非常感謝。!

能講解一下顯示函數(shù)的那一塊嘛
回復(fù)

使用道具 舉報

7#
ID:1082198 發(fā)表于 2023-6-5 16:56 | 只看該作者
有些代碼看不懂,比如顯示函數(shù)那一塊

回復(fù)

使用道具 舉報

8#
ID:1082282 發(fā)表于 2023-6-6 01:13 | 只看該作者
開關(guān)按鈕可以通過設(shè)定變量來實現(xiàn)不同的功能,這個已經(jīng)解決。
電源按鈕如果不去切斷單片機(jī)電源,可以做一個假斷電,即數(shù)碼管全部不顯示,用0x00應(yīng)該能實現(xiàn),然后將程序重置即可

評分

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

查看全部評分

回復(fù)

使用道具 舉報

9#
ID:116103 發(fā)表于 2023-6-6 06:02 | 只看該作者
按下POWER電源鍵后,給數(shù)碼管的段碼是00(共陰),讓EA=0,停止計數(shù)中斷。
回復(fù)

使用道具 舉報

10#
ID:1082051 發(fā)表于 2023-6-6 12:59 | 只看該作者
秒表這東西我也不會,在線求助
回復(fù)

使用道具 舉報

11#
ID:1074358 發(fā)表于 2023-6-6 13:29 | 只看該作者
定時器停止  可以用EEPROM將斷電時的數(shù)據(jù)保存  供下次上電時繼續(xù)使用保存的數(shù)據(jù)
回復(fù)

使用道具 舉報

12#
ID:1004455 發(fā)表于 2023-6-9 17:04 | 只看該作者
寫個中斷函數(shù)就可以實現(xiàn)
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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