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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

有沒有大佬幫我看看這代碼錯在哪里,for附件的語法錯誤在哪里,求告知

查看數: 1419 | 評論數: 20 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2024-11-2 14:05

正文摘要:

#include <REGX52.H> #include "Delay.h" #include "MatrixKey.h"    //包含矩陣鍵盤頭文件 #define uchar unsigned char unsigned char KeyNum; uchar key_scan(void); //數碼管段碼 ...

回復

ID:349276 發表于 2024-11-5 13:08
xiaobendan001 發表于 2024-11-3 08:36
你說應該是多少?我用10K的

不要超過1k,電容適當擴大一倍。這個電阻值,網上絕大部分電路都是沒搞明白。
ID:1135535 發表于 2024-11-5 09:37
刪掉for里面的unchar試試,i重復定義了。26行定義了一遍。
ID:1134495 發表于 2024-11-3 22:15
WL0123 發表于 2024-11-3 14:51
按你的圖寫的程序

大佬,我想請問一下,按到后面之后的按鍵,閃爍的情況嚴重了,這種應該怎么解決,我昨天搞的一個也是這種情況
ID:1134495 發表于 2024-11-3 21:53
WL0123 發表于 2024-11-3 14:51
按你的圖寫的程序

可以的!謝謝大佬!
ID:1133081 發表于 2024-11-3 14:51
發表于 2024-11-2 16:24
圖片和文字是一樣的

按你的圖寫的程序


  1. #include <reg51.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. uchar  code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00};
  5. uchar data dis_buf[]={10,10,10,10,10,10,10,10,10};
  6. uchar key=0;//鍵值變量

  7. void delayms(uint k)
  8. {
  9.         uint i,j;
  10.         for(i=k;i>0;i--)
  11.                 for(j=115;j>0;j--);
  12. }
  13. void key_scan()                                        //按鍵掃描程序
  14. {
  15.         static bit sign=0;                        //按鍵自鎖標志
  16.         static uint count=0;                //消抖計數變量                        
  17.         uchar num=0,i;                                //臨時變量
  18.         P1=0xf0;                                        //賦值P1 1111 0000
  19.         if(P1!=0xf0)                                //檢測有按鍵按下
  20.         {
  21.                 if((++count>=20)&&(sign==0))        //消抖計數10~1000,根據主循環周期調整約10~20ms
  22.                 {                        
  23.                         sign=1;                                //按鍵自鎖標志置1
  24.                         num=P1;                                //保存P1值xxxx 0000,x為0或1
  25.                         num|=0x0f;                        //保存num按位或0x0f值xxxx 1111
  26.                         P1=num;                                //賦值P1 xxxx 1111
  27.                         num=P1;                                //保存P1值xxxx xxxx
  28.                         switch(num)
  29.                         {
  30.                                 case 0xee: key= 0; break;
  31.                                 case 0xde: key= 1; break;
  32.                                 case 0xbe: key= 2; break;
  33.                                 case 0x7e: key= 3; break;
  34.                                 case 0xed: key= 4; break;
  35.                                 case 0xdd: key= 5; break;
  36.                                 case 0xbd: key= 6; break;
  37.                                 case 0x7d: key= 7; break;
  38.                                 case 0xeb: key= 8; break;
  39.                                 case 0xdb: key= 9; break;
  40.                                 default:   key=10; break;
  41. //                                case 0xbb: key=10; break;
  42. //                                case 0x7b: key=11; break;
  43. //                                case 0xe7: key=12; break;
  44. //                                case 0xd7: key=13; break;
  45. //                                case 0xb7: key=14; break;
  46. //                                case 0x77: key=15; break;
  47.                         }
  48.                         dis_buf[8]=key;
  49.                         for(i=0;i<8;i++)
  50.                                 dis_buf[i]=dis_buf[i+1];
  51.                 }
  52.         }
  53.         else                                                //鍵抬起
  54.         {
  55.                 sign=0;                                //按鍵自鎖標志清0
  56.                 count=0;                                //消抖計數清0
  57.         }
  58. }

  59. void display()                                        //數碼管顯示程序
  60. {
  61.         static uchar i;
  62.         P0=0x00;
  63.         P2&=0xf8;
  64.         P2|=i;
  65.         P0=table[dis_buf[i]];
  66.         i=++i%8;
  67. }

  68. void main()                                                //主函數
  69. {
  70.         while(1)
  71.         {
  72.                 key_scan();                                //按鍵掃描程序
  73.                 display();                                //數碼管顯示0~9
  74.                 delayms(1);                                //延時控制主循環周期約1ms
  75.         }
  76. }
復制代碼



ID:1132991 發表于 2024-11-3 09:37
陶小陶 發表于 2024-11-2 23:08
我照網上的連的,不太懂

這個論壇里有A2開發板的仿真文件
還有可以把數碼管顯示做成含兩個參數的函數
例如show(a,b)a代表在哪一位顯示,b代表顯示什么數字
ID:1109793 發表于 2024-11-3 08:38
如果是數字,就比較簡單,int num;
然后每次按鍵就num*10+按鍵的數就行了。
ID:1109793 發表于 2024-11-3 08:36
萬家燈火51 發表于 2024-11-2 22:57
你這圖哪里來的,復位電阻取8.2k真的可以么?

你說應該是多少?我用10K的
ID:1134495 發表于 2024-11-2 23:08
萬家燈火51 發表于 2024-11-2 22:57
你這圖哪里來的,復位電阻取8.2k真的可以么?

我照網上的連的,不太懂
ID:349276 發表于 2024-11-2 22:57
你這圖哪里來的,復位電阻取8.2k真的可以么?
ID:1134495 發表于 2024-11-2 21:42
xxxevery 發表于 2024-11-2 21:36
一個問題別發幾個帖子啊,最好把程序都貼上來,你這上下兩處的程序都不一樣呢

對不起啊,我第一次用,那個代碼我復制錯了,本來是一樣的,程序是圖片的那個
ID:59202 發表于 2024-11-2 21:36
一個問題別發幾個帖子啊,最好把程序都貼上來,你這上下兩處的程序都不一樣呢
ID:1134495 發表于 2024-11-2 21:12
xiaobendan001 發表于 2024-11-2 17:18
你是說按123,顯示123這樣?

差不多,按其他的也是,按什么就一起顯示
ID:1109793 發表于 2024-11-2 17:18
你是說按123,顯示123這樣?
ID:1134495 發表于 2024-11-2 16:51
Graves 發表于 2024-11-2 15:42
沒有原理圖,不知道硬件怎么搭的,程序也不知道你用圖片的還是文字里面的。如果是圖片的我猜是uchar dis[ ...

不知道為什么原理圖發不出,圖片和文字是一樣的,段碼連的p0,位碼p2,加多了個138譯碼器,我想實現輸入1時是000001,再輸入2時是000012,這樣子
ID:192020 發表于 2024-11-2 15:42
陶小陶 發表于 2024-11-2 15:20
解決了大佬,我這個代碼為啥不能顯示多位,現在是按1顯示1,第2次按2只在數碼管2這里顯示2,之前的1沒有 ...

沒有原理圖,不知道硬件怎么搭的,程序也不知道你用圖片的還是文字里面的。如果是圖片的我猜是uchar dis[8]={0,1,2,3,4,5,6,7};這里的問題
ID:1134495 發表于 2024-11-2 15:20
Graves 發表于 2024-11-2 15:12
刪掉for里面的unchar試試,i重復定義了。26行定義了一遍。還有沒打勾c99的話29行應該也會報錯

解決了大佬,我這個代碼為啥不能顯示多位,現在是按1顯示1,第2次按2只在數碼管2這里顯示2,之前的1沒有一起顯示,請問您實現這樣的一起顯示應該怎么做?
ID:192020 發表于 2024-11-2 15:12
刪掉for里面的unchar試試,i重復定義了。26行定義了一遍。還有沒打勾c99的話29行應該也會報錯
ID:1134495 發表于 2024-11-2 14:32
我想實現的是,按下一個鍵,顯示一位,按下第2次的鍵盤,再顯示一位

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

Powered by 單片機教程網

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