標(biāo)題: 單片機(jī)10s秒表兩個(gè)開(kāi)關(guān)怎么實(shí)現(xiàn) [打印本頁(yè)]

作者: Runningit    時(shí)間: 2017-12-1 11:39
標(biāo)題: 單片機(jī)10s秒表兩個(gè)開(kāi)關(guān)怎么實(shí)現(xiàn)
求助!我要做個(gè)10s的秒表。有兩個(gè)按鍵,一個(gè)按鍵是電源,一個(gè)是開(kāi)關(guān)。
當(dāng)按下開(kāi)關(guān)時(shí),前提電源開(kāi)關(guān)也按下了,數(shù)碼管開(kāi)始走動(dòng),再按下開(kāi)關(guān)會(huì)暫停定時(shí)器,再按清零(已實(shí)現(xiàn))。
關(guān)鍵是電源另一個(gè)功能。當(dāng)再按下電源開(kāi)關(guān)時(shí),數(shù)碼管熄滅,定時(shí)器停止。(未實(shí)現(xiàn))
有沒(méi)有大神能夠告訴我怎么實(shí)現(xiàn)這個(gè)功能,關(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í)器的計(jì)數(shù)
  9. uchar count=0;//數(shù)碼管的計(jì)數(shù)
  10. uchar Key_Num=0;//按鍵次數(shù)的計(jì)數(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{  //定時(shí)器
  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ù)制代碼




作者: 2345312342    時(shí)間: 2017-12-1 14:29
這簡(jiǎn)單了,電源開(kāi)關(guān)就總開(kāi)關(guān)好了,一按電源開(kāi)關(guān),把所有電關(guān)掉,就好啦。屏也不亮了數(shù)據(jù)也沒(méi)了正好啊
作者: 999333    時(shí)間: 2017-12-1 17:18
什么時(shí)候交我?guī)湍阃瓿?hr noshade size="2" width="100%" color="#808080"> 作者: 999333    時(shí)間: 2017-12-1 17:23
有什么不懂的可以找我

秒表.zip

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


作者: Runningit    時(shí)間: 2017-12-4 10:02
999333 發(fā)表于 2017-12-1 17:23
有什么不懂的可以找我

感謝大佬,我理解了!不好意思,今天才看見(jiàn),非常感謝。!
作者: zt666    時(shí)間: 2023-6-5 16:54
Runningit 發(fā)表于 2017-12-4 10:02
感謝大佬,我理解了。〔缓靡馑,今天才看見(jiàn),非常感謝。!

能講解一下顯示函數(shù)的那一塊嘛
作者: zt666    時(shí)間: 2023-6-5 16:56
有些代碼看不懂,比如顯示函數(shù)那一塊


作者: sdjfggregbr    時(shí)間: 2023-6-6 01:13
開(kāi)關(guān)按鈕可以通過(guò)設(shè)定變量來(lái)實(shí)現(xiàn)不同的功能,這個(gè)已經(jīng)解決。
電源按鈕如果不去切斷單片機(jī)電源,可以做一個(gè)假斷電,即數(shù)碼管全部不顯示,用0x00應(yīng)該能實(shí)現(xiàn),然后將程序重置即可
作者: wys91203    時(shí)間: 2023-6-6 06:02
按下POWER電源鍵后,給數(shù)碼管的段碼是00(共陰),讓EA=0,停止計(jì)數(shù)中斷。
作者: 886yz    時(shí)間: 2023-6-6 12:59
秒表這東西我也不會(huì),在線求助
作者: jianduo    時(shí)間: 2023-6-6 13:29
定時(shí)器停止  可以用EEPROM將斷電時(shí)的數(shù)據(jù)保存  供下次上電時(shí)繼續(xù)使用保存的數(shù)據(jù)
作者: LXJG    時(shí)間: 2023-6-9 17:04
寫個(gè)中斷函數(shù)就可以實(shí)現(xiàn)





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1