欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1981|回復: 4
打印 上一主題 下一主題
收起左側(cè)

單片機雙按鍵控制數(shù)碼管,仿真出錯,求大佬指點迷津,有文件上傳

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:974245 發(fā)表于 2021-11-2 10:35 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
雙按鍵控制數(shù)碼管,仿真出錯,求大佬指點迷津,有文件上傳
  1. #include <reg51.h>
  2. sbit SW1=P1^0;
  3. sbit SW2=P1^1;
  4. sfr LED=0xA0;
  5. unsigned char ID;
  6. void delay(int time);
  7. void Disp(unsigned char i);
  8. unsigned char SW_check(void);
  9. //unsigned char code LED_SUM[10]={0xfc,0x61,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};
  10. //主函數(shù)通過調(diào)用按鍵檢測函數(shù),顯示函數(shù)完成數(shù)碼管對按鍵有效擊鍵次數(shù)的顯示
  11. void mian(void){
  12.         ID=0;
  13.         while(1){
  14.                
  15.                 SW_check();
  16.                 Disp(ID);
  17.         }
  18.         
  19.         
  20. }
  21. void Disp(unsigned char i){
  22.         unsigned char x,y;
  23.         x=i%10;
  24.         y=i/10;
  25.         y<<4;
  26.         LED=y|x;
  27. }

  28. unsigned char SW_check(void){
  29.         if(!SW1){//sw1是否按下
  30.                 delay(10);
  31.                 if(!SW1){
  32.                         if((ID++)>=99)ID=0;
  33.                         while(!SW1);
  34.                 }
  35.                
  36.         }
  37.         else if(!SW2){
  38.                 delay(10);
  39.                 if(!SW2){
  40.                         if((ID--)<=0){
  41.                                 ID=99;
  42.                         }
  43.                         while (!SW2);
  44.                 }
  45.                
  46.         }

  47.         
  48.         return ID;
  49.         

  50. }

  51. void delay(int time){
  52.         unsigned char j;
  53.         for(time;time>=0;time--)
  54.                 for(j=125;j>0;j--)
  55.                         {;}
  56. }
復制代碼
雙按鍵組合加減.rar (43.02 KB, 下載次數(shù): 6)
求大佬指點迷津。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:974245 發(fā)表于 2021-11-2 10:35 | 只看該作者
就是仿真的時候按按鍵沒反應
回復

使用道具 舉報

板凳
ID:313048 發(fā)表于 2021-11-2 11:48 | 只看該作者
確定仿真頻率是否正確,有時候仿真它跑得很慢  你按鍵時間短了,壓根就沒檢查到,你就松開了.
1、修改按鍵掃描時的消抖延時,減小延時時間看看。或者按鍵按的時候時間持續(xù)長一點點。看仿真軟件下方的仿真時間而定。
2、程序去除掉數(shù)碼管的顯示。保留按鍵掃描,通過LED來確定按鍵掃描程序是否正常運行,如果正常運行再開啟數(shù)碼管顯示程序。
回復

使用道具 舉報

地板
ID:213173 發(fā)表于 2021-11-2 15:54 | 只看該作者
給你改好了,但不直接告訴你問題在哪,你自己逐字對照找錯誤,以后就不會再犯了,終身享用。


  1. #include <reg51.h>
  2. sbit SW1=P1^0;
  3. sbit SW2=P1^1;
  4. sfr LED=0xA0;
  5. unsigned char ID;
  6. void delay(int time);
  7. void Disp(unsigned char i);
  8. unsigned char SW_check(void);
  9. //unsigned char code LED_SUM[10]={0xfc,0x61,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};
  10. //主函數(shù)通過調(diào)用按鍵檢測函數(shù),顯示函數(shù)完成數(shù)碼管對按鍵有效擊鍵次數(shù)的顯示
  11. void main(void){
  12.         ID=0;
  13.         while(1){
  14.                
  15.                 SW_check();
  16.                 Disp(ID);
  17.         }
  18.         
  19.         
  20. }
  21. void Disp(unsigned char i){
  22.         unsigned char x,y;
  23.         x=i%10;
  24.         y=i/10;
  25.         y<<=4;
  26.         LED=y|x;
  27. }

  28. unsigned char SW_check(void){
  29.         if(!SW1){//sw1是否按下
  30.                 delay(10);
  31.                 if(!SW1){
  32.                         if((ID++)>=99)ID=0;
  33.                         while(!SW1);
  34.                 }
  35.                
  36.         }
  37.         else if(!SW2){
  38.                 delay(10);
  39.                 if(!SW2){
  40.                         if((ID--)<=0){
  41.                                 ID=99;
  42.                         }
  43.                         while (!SW2);
  44.                 }
  45.                
  46.         }

  47.         
  48.         return ID;
  49.         

  50. }

  51. void delay(int time){
  52.         unsigned char j;
  53.         for(time;time>=0;time--)
  54.                 for(j=125;j>0;j--)
  55.                         {;}
  56. }
復制代碼




回復

使用道具 舉報

5#
ID:974245 發(fā)表于 2021-11-2 17:00 | 只看該作者
wulin 發(fā)表于 2021-11-2 15:54
給你改好了,但不直接告訴你問題在哪,你自己逐字對照找錯誤,以后就不會再犯了,終身享用。

謝謝你了,超級感謝。我是個大傻子!!終于好了
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表