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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

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

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1134495 發(fā)表于 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);
//數(shù)碼管段碼表
unsigned code seg[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
//uchar dis[8]={0,1,2,3,4,5,6,7};
uchar chocode[8]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
//數(shù)碼管顯示子函數(shù)

uchar  i,p,temp;
unsigned char displayIndex;
unsigned char PORT_DISPLAY;
unsigned char inputIndex;
unsigned char password[6]={0};
void DisplayDigit(unsigned char digit, unsigned char position);



int main()
{
    unsigned char keyValue;
    while (1)
    {
        keyValue = MatrixKey();
        if (keyValue > 0 && keyValue <= 9 && inputIndex < 6)
        {
            password[inputIndex] = keyValue;
            DisplayDigit(keyValue, inputIndex);
            inputIndex++;
        }
    }
    return 0;
}


3FFC9676B897FF87536AA2170C04DA5C.png (346.62 KB, 下載次數(shù): 0)

3FFC9676B897FF87536AA2170C04DA5C.png

5E0AF59A75846D5A5F0198A8BB20E831.png (485.93 KB, 下載次數(shù): 0)

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

使用道具 舉報

沙發(fā)
ID:1134495 發(fā)表于 2024-11-2 14:32 | 只看該作者
我想實現(xiàn)的是,按下一個鍵,顯示一位,按下第2次的鍵盤,再顯示一位
回復(fù)

使用道具 舉報

板凳
ID:192020 發(fā)表于 2024-11-2 15:12 | 只看該作者
刪掉for里面的unchar試試,i重復(fù)定義了。26行定義了一遍。還有沒打勾c99的話29行應(yīng)該也會報錯
回復(fù)

使用道具 舉報

地板
ID:1134495 發(fā)表于 2024-11-2 15:20 | 只看該作者
Graves 發(fā)表于 2024-11-2 15:12
刪掉for里面的unchar試試,i重復(fù)定義了。26行定義了一遍。還有沒打勾c99的話29行應(yīng)該也會報錯

解決了大佬,我這個代碼為啥不能顯示多位,現(xiàn)在是按1顯示1,第2次按2只在數(shù)碼管2這里顯示2,之前的1沒有一起顯示,請問您實現(xiàn)這樣的一起顯示應(yīng)該怎么做?
回復(fù)

使用道具 舉報

5#
ID:192020 發(fā)表于 2024-11-2 15:42 | 只看該作者
陶小陶 發(fā)表于 2024-11-2 15:20
解決了大佬,我這個代碼為啥不能顯示多位,現(xiàn)在是按1顯示1,第2次按2只在數(shù)碼管2這里顯示2,之前的1沒有 ...

沒有原理圖,不知道硬件怎么搭的,程序也不知道你用圖片的還是文字里面的。如果是圖片的我猜是uchar dis[8]={0,1,2,3,4,5,6,7};這里的問題
回復(fù)

使用道具 舉報

6#
ID:1134495 發(fā)表于 2024-11-2 16:24 | 只看該作者
Graves 發(fā)表于 2024-11-2 15:42
沒有原理圖,不知道硬件怎么搭的,程序也不知道你用圖片的還是文字里面的。如果是圖片的我猜是uchar dis[ ...

圖片和文字是一樣的

3111B40268E709968B1DF14AB25F7A02.png (209.31 KB, 下載次數(shù): 1)

3111B40268E709968B1DF14AB25F7A02.png
回復(fù)

使用道具 舉報

7#
ID:1134495 發(fā)表于 2024-11-2 16:51 | 只看該作者
Graves 發(fā)表于 2024-11-2 15:42
沒有原理圖,不知道硬件怎么搭的,程序也不知道你用圖片的還是文字里面的。如果是圖片的我猜是uchar dis[ ...

不知道為什么原理圖發(fā)不出,圖片和文字是一樣的,段碼連的p0,位碼p2,加多了個138譯碼器,我想實現(xiàn)輸入1時是000001,再輸入2時是000012,這樣子
回復(fù)

使用道具 舉報

8#
ID:1109793 發(fā)表于 2024-11-2 17:18 | 只看該作者
你是說按123,顯示123這樣?
回復(fù)

使用道具 舉報

9#
ID:1134495 發(fā)表于 2024-11-2 21:12 | 只看該作者
xiaobendan001 發(fā)表于 2024-11-2 17:18
你是說按123,顯示123這樣?

差不多,按其他的也是,按什么就一起顯示
回復(fù)

使用道具 舉報

10#
ID:59202 發(fā)表于 2024-11-2 21:36 | 只看該作者
一個問題別發(fā)幾個帖子啊,最好把程序都貼上來,你這上下兩處的程序都不一樣呢
回復(fù)

使用道具 舉報

11#
ID:1134495 發(fā)表于 2024-11-2 21:42 | 只看該作者
xxxevery 發(fā)表于 2024-11-2 21:36
一個問題別發(fā)幾個帖子啊,最好把程序都貼上來,你這上下兩處的程序都不一樣呢

對不起啊,我第一次用,那個代碼我復(fù)制錯了,本來是一樣的,程序是圖片的那個
回復(fù)

使用道具 舉報

12#
ID:349276 發(fā)表于 2024-11-2 22:57 | 只看該作者
你這圖哪里來的,復(fù)位電阻取8.2k真的可以么?
回復(fù)

使用道具 舉報

13#
ID:1134495 發(fā)表于 2024-11-2 23:08 | 只看該作者
萬家燈火51 發(fā)表于 2024-11-2 22:57
你這圖哪里來的,復(fù)位電阻取8.2k真的可以么?

我照網(wǎng)上的連的,不太懂
回復(fù)

使用道具 舉報

14#
ID:1109793 發(fā)表于 2024-11-3 08:36 | 只看該作者
萬家燈火51 發(fā)表于 2024-11-2 22:57
你這圖哪里來的,復(fù)位電阻取8.2k真的可以么?

你說應(yīng)該是多少?我用10K的
回復(fù)

使用道具 舉報

15#
ID:1109793 發(fā)表于 2024-11-3 08:38 | 只看該作者
如果是數(shù)字,就比較簡單,int num;
然后每次按鍵就num*10+按鍵的數(shù)就行了。
回復(fù)

使用道具 舉報

16#
ID:1132991 發(fā)表于 2024-11-3 09:37 | 只看該作者
陶小陶 發(fā)表于 2024-11-2 23:08
我照網(wǎng)上的連的,不太懂

這個論壇里有A2開發(fā)板的仿真文件
還有可以把數(shù)碼管顯示做成含兩個參數(shù)的函數(shù)
例如show(a,b)a代表在哪一位顯示,b代表顯示什么數(shù)字
回復(fù)

使用道具 舉報

17#
ID:1133081 發(fā)表于 2024-11-3 14:51 | 只看該作者
發(fā)表于 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;                        //按鍵自鎖標(biāo)志
  16.         static uint count=0;                //消抖計數(shù)變量                        
  17.         uchar num=0,i;                                //臨時變量
  18.         P1=0xf0;                                        //賦值P1 1111 0000
  19.         if(P1!=0xf0)                                //檢測有按鍵按下
  20.         {
  21.                 if((++count>=20)&&(sign==0))        //消抖計數(shù)10~1000,根據(jù)主循環(huán)周期調(diào)整約10~20ms
  22.                 {                        
  23.                         sign=1;                                //按鍵自鎖標(biāo)志置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;                                //按鍵自鎖標(biāo)志清0
  56.                 count=0;                                //消抖計數(shù)清0
  57.         }
  58. }

  59. void display()                                        //數(shù)碼管顯示程序
  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()                                                //主函數(shù)
  69. {
  70.         while(1)
  71.         {
  72.                 key_scan();                                //按鍵掃描程序
  73.                 display();                                //數(shù)碼管顯示0~9
  74.                 delayms(1);                                //延時控制主循環(huán)周期約1ms
  75.         }
  76. }
復(fù)制代碼



回復(fù)

使用道具 舉報

18#
ID:1134495 發(fā)表于 2024-11-3 21:53 | 只看該作者
WL0123 發(fā)表于 2024-11-3 14:51
按你的圖寫的程序

可以的!謝謝大佬!
回復(fù)

使用道具 舉報

19#
ID:1134495 發(fā)表于 2024-11-3 22:15 | 只看該作者
WL0123 發(fā)表于 2024-11-3 14:51
按你的圖寫的程序

大佬,我想請問一下,按到后面之后的按鍵,閃爍的情況嚴(yán)重了,這種應(yīng)該怎么解決,我昨天搞的一個也是這種情況
回復(fù)

使用道具 舉報

20#
ID:1135535 發(fā)表于 2024-11-5 09:37 | 只看該作者
刪掉for里面的unchar試試,i重復(fù)定義了。26行定義了一遍。
回復(fù)

使用道具 舉報

21#
ID:349276 發(fā)表于 2024-11-5 13:08 | 只看該作者
xiaobendan001 發(fā)表于 2024-11-3 08:36
你說應(yīng)該是多少?我用10K的

不要超過1k,電容適當(dāng)擴大一倍。這個電阻值,網(wǎng)上絕大部分電路都是沒搞明白。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲成人播放器 | 一色桃子av一区二区 | www久久| 毛片免费在线观看 | 亚洲视频中文字幕 | 一区二区三区视频在线观看 | 九九色九九 | 亚洲欧洲一区二区 | 国产成人综合网 | 91在线网站 | 狠狠的干| 麻豆国产一区二区三区四区 | www亚洲精品 | 国产精品国产a级 | 成人黄色a | 亚洲精品一级 | 久久精品国产久精国产 | 日日操夜夜操天天操 | 91中文字幕在线观看 | 99亚洲精品| av中文在线 | 欧美日韩精品一区二区三区四区 | 欧美视频在线看 | 亚洲日本一区二区 | 老司机精品福利视频 | 成人在线观看黄 | 午夜影院| 国产伦精品一区二区三区四区视频 | 国产在线观看一区二区 | 999久久久 | 久久99视频这里只有精品 | 羞羞网站免费 | 一区二区三区国产 | 国产 欧美 日韩 一区 | 日韩在线免费视频 | 国产在线精品免费 | 自拍偷拍第一页 | 日韩一区二区三区四区五区六区 | 国产一区二区精品在线观看 | 日韩在线小视频 | 中文字幕免费观看 |