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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1780|回復: 4
收起左側

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

[復制鏈接]
ID:974245 發表于 2021-11-2 10:35 | 顯示全部樓層 |閱讀模式
雙按鍵控制數碼管,仿真出錯,求大佬指點迷津,有文件上傳 屏幕截圖 2021-11-02 103220.png
  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. //主函數通過調用按鍵檢測函數,顯示函數完成數碼管對按鍵有效擊鍵次數的顯示
  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, 下載次數: 6)
求大佬指點迷津。
回復

使用道具 舉報

ID:974245 發表于 2021-11-2 10:35 | 顯示全部樓層
就是仿真的時候按按鍵沒反應
回復

使用道具 舉報

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

使用道具 舉報

ID:213173 發表于 2021-11-2 15:54 | 顯示全部樓層
給你改好了,但不直接告訴你問題在哪,你自己逐字對照找錯誤,以后就不會再犯了,終身享用。
無標題.jpg

  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. //主函數通過調用按鍵檢測函數,顯示函數完成數碼管對按鍵有效擊鍵次數的顯示
  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. }
復制代碼




回復

使用道具 舉報

ID:974245 發表于 2021-11-2 17:00 | 顯示全部樓層
wulin 發表于 2021-11-2 15:54
給你改好了,但不直接告訴你問題在哪,你自己逐字對照找錯誤,以后就不會再犯了,終身享用。

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产99热精品 | 日韩电影a| 91在线观看视频 | 日韩成人免费视频 | 日日噜噜噜夜夜爽爽狠狠视频97 | 国产在线观看一区 | 91tv在线观看| 国产在线视频一区二区 | 久久久久国产精品 | av网站在线看 | 激情婷婷| 欧美一区二区三区视频 | 成人av一区二区三区 | 国产精品成人在线播放 | 中文字幕在线观看国产 | 青青99| 婷婷综合色 | 91精品国产91久久久久久吃药 | 亚洲黄色国产 | 亚洲精品无人区 | 久久精品99 | 91亚洲精品在线观看 | 91文字幕巨乱亚洲香蕉 | 91久久精品一区二区二区 | 亚洲视频免费观看 | 精品成人佐山爱一区二区 | av在线影院 | 久久久美女 | 美日韩一区二区 | 精品中文字幕一区二区三区 | 久热免费在线 | 欧美精品一区二区免费 | 国产精品高清在线 | 天天爱av | 亚洲中午字幕 | 91精品国产91久久久久久最新 | 97精品视频在线 | 国产一级电影网 | 91在线电影 | 久久极品 | 久久天堂网|