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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4361|回復: 6
收起左側

為什么矩陣鍵盤用不了

[復制鏈接]
ID:170585 發表于 2017-5-18 03:28 | 顯示全部樓層 |閱讀模式
5黑幣
#include "keyscan.h"
#define uchar unsigned char
unsigned char JP()
{
unsigned char x=0x00;
  bit i=0;
  x=P2;   //é¨ÃèY×ø±ê
  delay(125);  //Ïû¶¶
  P2=0x0f;
  delay(2);
  x+=P2;    //é¨ÃèX×ø±ê
  switch(x)
  {
   case 0xee:x=0x30;break;    //°′ÏÂ0
   case 0xed:x=0x31;break;    //°′ÏÂ1
   case 0xeb:x=0x34;break;    //°′ÏÂ4
   case 0xe7:x=0x37;break;    //°′ÏÂ7
   case 0xde:x=0x46;break;       //°′ÏÂF/.
   case 0xdd:x=0x32;break;    //°′ÏÂ2
      case 0xdb:x=0x35;break;    //°′ÏÂ5
   case 0xd7:x=0x38;break;    //°′ÏÂ8
   case 0xbe:x=0x45;break;    //°′ÏÂE
   case 0xbd:x=0x33;break;    //°′ÏÂ3
   case 0xbb:x=0x36;break;    //°′ÏÂ6
   case 0xb7:x=0x39;break;    //°′ÏÂ9
   case 0x7e:x=0x44;break;    //°′ÏÂD
   case 0x7d:x=0x43;break;    //°′ÏÂC
   case 0x7b:x=0x42;break;    //°′ÏÂB
   case 0x77:x=0x41;break;    //°′ÏÂA
   default:x=0xff;break;
   }
   while(i==0)    //°′¼üËé¿a
   {
    P2=0xf0;
    delay(150);
    if(P2==0xf0)
    {
     i=1;
    }
    else{i=0;}
   }
  return x;    //·μ»Øx(ASCIIÂë)
}
//--------------------Ñóê±oˉêy--------//
void delay(unsigned char m)
{
  uchar i,j;
  for(i=0;i<m;i++)
  {
   for(j=0;j<121;j++)
   {;}
  }
}
#include "main.h"
#include "LCD12864.h"
#include "HX711.h"
#include "keyscan.h"
#define uchar unsigned char
#define uint unsigned int
unsigned long HX711_Buffer = 0;

//****************************************************
//Ö÷oˉêy
//****************************************************
   void main(void)
{
   uchar  LCD[16]={"0123456789ABCDEF"};
   code uchar JM1[]={0xb5,0xda,0xc8,0xfd,0xd7,0xe9,0xb5,0xe7,0xd7,0xd3,0xb3,0xc6};
   code uchar JM2[]={"μ¥¼Û: 00.0    "};
   code uchar JM3[]={"ÖØá¿: 00.000KG  "};
   code uchar JM4[]={"×ü¼Û: 0000.0Ôa  "};
   uchar DJ[3];       //μ¥¼Û
   uchar ZL[5];       //ÖØá¿
   uchar QPZL[5];   //è¥ƤoóμÄÖØá¿
   uchar ZJ[5];       //×ü¼Û
   unsigned long J1;
   uint J2,J3,J6=0;
   bit J5=1;
   uint J7;
   uchar i;
   uchar JM5[]={5679};
  LCD12864_Reset();  //3õê¼»ˉ
  for(i=0;i<3;i++)  //μ¥¼Ûêäèë
  {
   DJ[i]=0;
  }
  for(i=0;i<5;i++)   //ÖØá¿
  {
   ZL[i]=0;
  }
  for(i=0;i<5;i++)   //¾»ÖØ
  {
   QPZL[i]=0;
  }
  for(i=0;i<5;i++)   //×ü¼Û
  {
   ZJ[i]=0;
  }
LCD12864_COM_Write(0x81);  //¶¨Î»       
  for(i=0;i<12;i++)
{
  LCD12864_Data_Write(JM1[i]);  //ÏÔê¾μúèy×éμç×ó3ó
}
LCD12864_COM_Write(0x90);  //¶¨Î»
for(i=0;JM2[i]!='\0';i++)
{
LCD12864_Data_Write(JM2[i]);    //ÏÔê¾μ¥¼Û:00.0Ôa
}
LCD12864_COM_Write(0x88);  //¶¨Î»
for(i=0;JM3[i]!='\0';i++)
{
  LCD12864_Data_Write(JM3[i]);  //ÏÔê¾ÖØá¿: 00.000KG
}
LCD12864_COM_Write(0x98);    //¶¨Î»
for(i=0;JM4[i]!='\0';i++)
{
  LCD12864_Data_Write(JM4[i]);   //×ü¼Û: 0000.0Ôa
}
P2=0xf0;
while(1)
{
   while(P2==0xf0)      //μ±Ã»óD°′¼ü°′ÏÂê±½øè룬óD°′¼ü°′ÏÂê±ìø3öà′
   {
   J1=HX711_Read();    //¶áè¡ADÖμ
   J3=((J1-8388608)/150)-11;  //è¡Öμ
   ZL[0]=(J3/10000)%10;   //ÖØá¿ê®Î»
   if(ZL[0]>3){FMQ=0;}     //3¬Öر¨¾ˉ
   else{FMQ=1;}
   ZL[1]=(J3/1000)%10;       //ÖØá¿¸öλ
   ZL[2]=(J3/100)%10;     //¼ÆËãλ
   ZL[3]=(J3/10)%10;
   ZL[4]=J3%10;
   J7=ZL[4];
   J7+=ZL[3]*10;
   J7+=ZL[2]*100;
   J7+=ZL[1]*1000;
   J7+=ZL[0]*10000;
   J3=QPZL[4];
   J3+=QPZL[3]*10;
   J3+=QPZL[2]*100;
   J3+=QPZL[1]*1000;
   J3+=QPZL[0]*10000;
   J7-=J3;
   ZL[0]=J7/10000;
   J7%=10000;
   ZL[1]=J7/1000;
   J7%=1000;
   ZL[2]=J7/100;
   J7%=100;
   ZL[3]=J7/10;
   J7%=10;
   ZL[4]=J7;
   LCD12864_COM_Write(0x8b); //¶¨Î»
   LCD12864_Data_Write(LCD[ZL[0]]);    //ËíÏÔê¾£¬ÏÂí¬
  LCD12864_Data_Write(LCD[ZL[1]]);   
  LCD12864_Data_Write(0x2e);   
  LCD12864_Data_Write(LCD[ZL[2]]);   
   LCD12864_Data_Write(LCD[ZL[3]]);   
   LCD12864_Data_Write(LCD[ZL[4]]);   
   J7=DJ[2]*ZL[3];
   J7+=DJ[2]*ZL[2]*10;
   J7+=DJ[2]*ZL[1]*100;
   J7+=DJ[2]*ZL[0]*1000;
   J7/=10;
   J7+=DJ[1]*ZL[3];
   J7+=DJ[1]*ZL[2]*10;
   J7+=DJ[1]*ZL[1]*100;
   J7+=DJ[1]*ZL[0]*1000;
   J7/=10;
   J7+=DJ[0]*ZL[3];   
   J7+=DJ[0]*ZL[2]*10;
   J7+=DJ[0]*ZL[1]*100;
   J7+=DJ[0]*ZL[0]*1000;

ZJ[0]=J7/10000;
J7%=10000;
ZJ[1]=J7/1000;
J7%=1000;
ZJ[2]=J7/100;
J7%=100;
ZJ[3]=J7/10;
J7%=10;
ZJ[4]=J7;
  LCD12864_COM_Write(0x9b);
  i=ZJ[0];
  i=LCD[i];
LCD12864_Data_Write(i);   
   i=ZJ[1];
  i=LCD[i];
  LCD12864_Data_Write(i);   
   i=ZJ[2];
  i=LCD[i];
LCD12864_Data_Write(i);   
   i=ZJ[3];
  i=LCD[i];
LCD12864_Data_Write(i);   
  LCD12864_Data_Write(0x2e);   
    i=ZJ[4];
  i=LCD[i];
  LCD12864_Data_Write(i);   
   P2=0xf0;
   delay(1);
   }
   J2=JP();
   if(J6>2){J6=0;}
   if(J2<0x40)
   {
   J2-=0x30;
   DJ[J6]=J2;
   J2=0xff;
   J6++;
   }
   else
   {
    switch(J2)
   {
case 0x41:P2=0xf0;while(P2==0xf0);J2=0xff;break;    //°′ÏÂAËø¶¨½çÃæ
    case 0x42:J2=0xff;break;         //½a3yËø¶¨
case 0x43:HX711_Read();          //è¥Ƥ
           J3=((J1-8388608)/150)-11;
     QPZL[0]=(J3/10000)%10;
     QPZL[1]=(J3/1000)%10;
     QPZL[2]=(J3/100)%10;
     QPZL[3]=(J3/10)%10;
     QPZL[4]=J3%10;
     J2=0xff;
     break;
case 0x44:DJ[0]=0;DJ[1]=0;DJ[2]=0;J6=0;J2=0xff;break;    //μ¥¼Û¸′λ
    case 0x45:QPZL[0]=0;QPZL[1]=0;QPZL[2]=0;QPZL[3]=0;QPZL[4]=0;J2=0xff;break;   //ÖØá¿¸′λ
    case 0x46:DJ[0]=0;DJ[1]=0;DJ[2]=0;J6=0;QPZL[0]=0;QPZL[1]=0;QPZL[2]=0;QPZL[3]=0;QPZL[4]=0;J2=0xff;break;    //μ¥¼ÛÖØá¿ ¸′λ
default:break;
   }
   }
   LCD12864_COM_Write(0x93);
   i=DJ[0];
   i=LCD[i];
   LCD12864_Data_Write(i);
   i=DJ[1];
   i=LCD[i];
  LCD12864_Data_Write(i);
   LCD12864_Data_Write(0x2e);
   i=DJ[2];
   i=LCD[i];
  LCD12864_Data_Write(i);
}
}

//****************************************************
//MSÑóê±oˉêy(12M¾§ÕñÏÂ2aêÔ)
//****************************************************
void Delay_ms(unsigned int n)
{
    unsigned int  i,j;
    for(i=0;i<n;i++)
        for(j=0;j<123;j++);
}


回復

使用道具 舉報

ID:7485 發表于 2017-5-18 09:56 | 顯示全部樓層
你知道你貼出來的是幾個文件嗎?

你有沒有那幾個頭文件?
回復

使用道具 舉報

ID:170585 發表于 2017-5-18 12:18 | 顯示全部樓層
頭文件是有的,開發板調試也沒效果
回復

使用道具 舉報

ID:157662 發表于 2017-5-18 19:18 | 顯示全部樓層
你把仿真圖發上來看看也
回復

使用道具 舉報

ID:195376 發表于 2017-5-18 21:01 | 顯示全部樓層
有仿真結果圖嗎
回復

使用道具 舉報

ID:202427 發表于 2017-5-19 11:12 | 顯示全部樓層
仿真結果是什么樣子的
回復

使用道具 舉報

ID:203076 發表于 2017-5-21 10:36 | 顯示全部樓層
unsigned char keyscan()
{
        unsigned char v;
        P3=0xf0;
        if(P3!=0xf0)//表示有按鍵按下
           {
            delayms(10);  //去抖
                if(P3!=0xf0) //確定有按鍵按下
                  {
                    P3=0xfe; //檢測第一行
                        if(P3!=0xfe)
                          {
                                v=P3&0xf0;
                                v+=0x0e;
                                    while(P3!=0xfe);
                                  delayms(10); //去抖
                                  while(P3!=0xfe);
                                anx++;
                               return v;
                }
                P3=0xfd; //檢測第二行
                        if(P3!=0xfd)
                          {
                                v=P3&0xf0;
                                v+=0x0d;
                                   while(P3!=0xfd);
                                  delayms(10); //去抖
                                  while(P3!=0xfd);
                                anx++;
                               return v;
                }
                    P3=0xfb; //檢測第三行
                        if(P3!=0xfb)
                          {
                                v=P3&0xf0;
                                v+=0x0b;
                                    while(P3!=0xfb);
                                  delayms(10); //去抖
                                  while(P3!=0xfb);
                                anx++;
                               return v;
                }
                    P3=0xf7; //檢測第四行
                        if(P3!=0xf7)
                          {
                                v=P3&0xf0;
                                v+=0x07;
                                    while(P3!=0xf7);
                                  delayms(10); //去抖
                                  while(P3!=0xf7);
                                anx++;
                               return v;
                }
                }
        }
          return 0xff;
}
char outsz() //輸出數字 1~9
{
        switch(keyscan())
        {         
                case 0xee:return 0; break;//0
                case 0xde:return 1; break;//1
                case 0xbe:return 2; break;//2
                case 0x7e:return 3; break;//3
               
                case 0xed:return 4; break;//4
                case 0xdd:return 5; break;//5
                case 0xbd:return 6; break;//6
                case 0x7d:return 7; break;//7
               
                case 0xeb:return 8; break;//8
                case 0xdb:return 9; break;//9
                case 0xbb:return a; break;//a
                case 0x7b:return b; break;//b
               
                case 0xe7:return c; break;//c
                case 0xd7:return d; break;//d
                case 0xb7:return e; break;//e
                case 0x77:return f; break;//f
        }
}
樓主程序太過復雜了,可以參考我這個,第一個函數用來檢測按下的按鍵的坐標,第二個函數用來返回該坐標對應的值
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91影院 | 精产嫩模国品一二三区 | 精产国产伦理一二三区 | 国产午夜在线观看 | 国产黄色大片网站 | 一区二区三区国产精品 | xx性欧美肥妇精品久久久久久 | 亚洲精品欧美精品 | av黄色免费| 色婷婷综合久久久中字幕精品久久 | 天天影视网天天综合色在线播放 | 日韩午夜一区二区三区 | 欧美日韩精品免费观看 | 午夜影院免费体验区 | 四虎在线观看 | 国产成人久久av免费高清密臂 | 欧美精品久久久久 | h视频亚洲 | 久久久久99 | 草久久| 午夜精品久久 | 精品免费国产一区二区三区四区 | 在线观看第一页 | 久久久久资源 | 99精品久久 | 日韩欧美在线一区 | 韩日免费视频 | 在线视频国产一区 | 日韩av在线中文字幕 | 午夜精品视频在线观看 | 精品久久久久一区二区国产 | 久久男人 | 中文字幕av在线播放 | 欧美伊人久久久久久久久影院 | 国产亚洲精品精品国产亚洲综合 | 亚洲精品国产精品国自产在线 | 99精品亚洲国产精品久久不卡 | a级片在线观看 | 日本不卡高字幕在线2019 | 日本三级在线网站 | 自拍视频网站 |