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

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

QQ登錄

只需一步,快速開始

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

關(guān)于單片機(jī)按鍵控制多位數(shù)碼管增減問(wèn)題求教

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:217998 發(fā)表于 2017-12-26 19:38 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
想做一個(gè)電子時(shí)鐘:采用6位數(shù)碼管顯示當(dāng)前日期,并可以利用按鍵修改年、月、日等信息。現(xiàn)在還沒有考慮顯示實(shí)時(shí)的日期,但是在按鍵控制數(shù)碼管數(shù)字加減的時(shí)候,碰到一個(gè)問(wèn)題,當(dāng)按鍵按下的時(shí)候可以加一,但按鍵彈起就又返回原來(lái)的值了,想向大神們請(qǐng)教一下原因是什么,具體程序該怎么改。附件有編的源碼和原理圖

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


  2.                                //0  1      2    3    4    5   6     7    8    9          -
  3. char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //CC共陰極數(shù)碼管段碼


  4. sbit key_jia=P2^0;//加鍵
  5. sbit key_jian=P2^1;//減鍵
  6. sbit key_xuan=P2^2; //校準(zhǔn)時(shí)間鍵


  7. int change_time_flag=0;


  8. // bit runflag=0;//界面選擇




  9. unsigned int nian,yue,ri;//實(shí)時(shí) 年月日


  10. void delay(int i)
  11. {
  12.         while(i--);//us延遲函數(shù)
  13. }


  14. void display_date()//實(shí)時(shí)時(shí)間界面顯示
  15. {
  16.         int i;
  17.         for(i=0;i<6;i++)
  18.         {
  19.                 switch(i)
  20.                 {
  21.                         case 0:P0=0XFE;P1=table[nian/10];
  22.                         break;
  23.                         case 1:P0=0XFD;P1=table[nian%10]|0x80;        //顯示小數(shù)點(diǎn)
  24.                         break;
  25.                         case 2:P0=0XFB;P1=table[yue/10];
  26.                         break;
  27.                         case 3:P0=0XF7;P1=table[yue%10]|0x80;
  28.                         break;
  29.                         case 4:P0=0XEF;P1=table[ri/10];
  30.                         break;
  31.                         case 5:P0=0XDF;P1=table[ri%10];
  32.                         break;
  33.                 }
  34.                 delay(10);
  35.                 P1=0x00;        //消影
  36.         }
  37. }

  38. void key() //按鍵判斷{                                                        ///////////////////實(shí)時(shí)時(shí)間設(shè)置        if(key_jia==0)//加鍵按下        {        //        delay(10);//消抖                if(key_jia==0)                {                         //        delay(10);                        // while(!key_jia);                        if(change_time_flag==0)                        {                                                                ri++;                        }                        else if(change_time_flag==1)                        {                                yue++;                        }                        else                        nian++;                        //         while(!key_jia);//等待按鍵彈起                }                //while(!key_jia);//等待按鍵彈起        }
  39.         if(key_jian==0)//減鍵按下        {        //        delay(10);        //消抖                if(key_jian==0)                {                        if(change_time_flag==0)                        {                                ri--;                        }                        else if(change_time_flag==1)                        {                                yue--;                        }                        else                        nian--;                }        //        while(!key_jian);//等待按鍵彈起        }                if(key_xuan==0) //實(shí)時(shí)設(shè)置按鍵按下        {        //        delay(10);                if(key_xuan==0)                {                //        runflag=0;                        change_time_flag++;                        delay(10);                         if(change_time_flag==3)                         change_time_flag=0;                }        //        while(!key_xuan);        }
  40. }
  41. void main(){
  42.         while(1)        {                        ri=17;yue=12;nian=25;//初始時(shí)間                 //display_date();                key();//按鍵判斷                        //界面選擇//                if(runflag==0)   // key1();        display_date();                        }}
復(fù)制代碼


QQ圖片20171226184336.png (32.21 KB, 下載次數(shù): 61)

QQ圖片20171226184336.png

自制.rar

77.15 KB, 下載次數(shù): 10

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

使用道具 舉報(bào)

沙發(fā)
ID:164602 發(fā)表于 2017-12-27 08:17 | 只看該作者
把你程序中,主函數(shù),主循環(huán)第一句賦初值,放到主循環(huán)外面,成為主函數(shù)第一句。
你按鍵調(diào)整日期時(shí)間后,主循環(huán)最后還要循環(huán)到第一句,又重新賦初值,所以會(huì)有你說(shuō)的現(xiàn)象。
回復(fù)

使用道具 舉報(bào)

板凳
ID:266627 發(fā)表于 2017-12-27 15:50 | 只看該作者
可能是去按按鍵抖動(dòng)沒有做好,導(dǎo)致按一次,單片機(jī)卻認(rèn)為按了多次。
建議先把思路整理一下,不要著急寫程序,先用文字描述下按鍵掃描的過(guò)程。

比如是希望按下的瞬間,數(shù)字加減,還是釋放瞬間。還是釋放后若干mS內(nèi)再動(dòng)作?

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

地板
ID:84283 發(fā)表于 2017-12-28 00:40 來(lái)自手機(jī) | 只看該作者
  沒有把你改變的值 真正改變  只是滿足你按下去的if條件執(zhí)行 但跳出if 你的改變量沒有在while中的實(shí)際控制時(shí)間的變量
回復(fù)

使用道具 舉報(bào)

5#
ID:217998 發(fā)表于 2017-12-28 22:58 | 只看該作者
HC6800-ES-V2.0 發(fā)表于 2017-12-27 08:17
把你程序中,主函數(shù),主循環(huán)第一句賦初值,放到主循環(huán)外面,成為主函數(shù)第一句。
你按鍵調(diào)整日期時(shí)間后,主 ...

對(duì)的對(duì)的,謝謝大神
回復(fù)

使用道具 舉報(bào)

6#
ID:217998 發(fā)表于 2017-12-28 22:59 | 只看該作者
sirf3 發(fā)表于 2017-12-27 15:50
可能是去按按鍵抖動(dòng)沒有做好,導(dǎo)致按一次,單片機(jī)卻認(rèn)為按了多次。
建議先把思路整理一下,不要著急寫程序 ...

恩恩,好的,延時(shí)那邊我需要再考慮一下
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日本在线中文 | 亚洲精品在线视频 | 午夜精品在线 | 日韩欧美在线一区二区 | 中文字幕久久久 | 欧美在线视频一区二区 | 国产成人综合在线 | 9999精品视频 | 日本精品视频 | 国产一区二区三区在线免费观看 | 91一区二区 | 国产乱码精品一品二品 | 成人久草| 国产精品乱码一二三区的特点 | 国产精选一区 | 色播99| 颜色网站在线观看 | 久久久欧洲 | 91九色在线观看 | 亚洲一区中文字幕 | 国产1区2区3区 | 亚洲欧美国产毛片在线 | 久久精品网 | 五月婷婷 六月丁香 | 91网站在线看 | 91伦理片 | 中文字幕在线三区 | 91免费视频观看 | 紧缚调教一区二区三区视频 | 69av网| 国产人成精品一区二区三 | 国产精品 亚洲一区 | 日本三级线观看 视频 | 久久噜噜噜精品国产亚洲综合 | 久久99精品久久久久久狂牛 | 国产精品日女人 | 成年人视频免费在线观看 | 国产98色在线 | 日韩 | 欧美精品成人一区二区三区四区 | 国产成人综合一区二区三区 | 国产精品久久久久久一区二区三区 |