weixin_50697999 2022-05-15 06:35 采纳率: 73.7%
浏览 46
已结题

stc15+LCD1602+4x4矩阵键盘的问题



```c

//当按键按下 0329的时候,正确显示。为什么一样的代码,输入1129却不行?永远无法和RecordDate_2匹配上

//单片机源程序如下:

#include <stc15.h>
#include <string.h>
#include "LCD1602.h"
#include "delay.h"
#include "MatrixKey.h"
//#include "timer0.h"
//#include "key.h"


void main(void)
{
         unsigned char Key_Number='x';
//        extern unsigned char Key_Flag;
//        char RecordDate[6]="xxxxx";
//        const char RecordDate_1[6]="03-29";
//        const char RecordDate_2[6]="11-19";
        char RecordDate[6]={'\0','\0','\0','\0','\0','\0'};
const char RecordDate_1[6]={'0','3','-','2','9','\0'};
        const char RecordDate_2[6]={'1','1','-','2','9','\0'};
        unsigned char i=0,j=0,k=0;
        P0M0=0X00;
        P0M1=0X00;
        P1M0=0X00;
        P1M1=0X00;
        P2M0=0X00;
        P2M1=0X00;
        P3M0=0X00;
        P3M1=0X00;
//        Timer0_Init();
        LCD_Init();
        LCD_ShowString(1,1,"   Enter a Date:");
        while(1)
        {        
                for(i=0;i<6;)
                {
                        if(i==2)
                        {
                                RecordDate[i]='-';
                                LCD_ShowChar(2,i+1,RecordDate[i]);
                                Key_Number='x';
                                i++;
                                continue;
                        }
                        if(i==5)
                        {
                                RecordDate[i]='\0';
                                Key_Number='x';
                                i++;
                                break;
                        }
                        
                        Key_Number=MatrixKey();
                        
                        if('0'<=Key_Number&&Key_Number<='9'&&Key_Number!='*'&&Key_Number!='#')        //如果按下的按键编码为0-9(ASCII码),输入日期
                        {
                                RecordDate[i]=Key_Number;
                                Key_Number='x';
                                LCD_ShowChar(2,i+1,RecordDate[i]);
                                i++;                        
                        }
                        if(Key_Number=='*')
                        {
                                LCD_ShowString(2,1,"                ");
                                Key_Number='x';
                                i=0;
                        }
                        if(Key_Number=='#')
                        {                        
                                if(!strcmp(RecordDate,RecordDate_1)||!(RecordDate,RecordDate_2))
                                {
                                        LCD_ShowString(2,1,"              OK");
                                        delay(5000);
                                       
                                        if(!strcmp(RecordDate,RecordDate_1))
                                        {
                                                LCD_ShowString(1,1,"Date:           ");
                                                LCD_ShowString(1,6,RecordDate);
                                                LCD_ShowString(2,1,"         Playing");
                                                delay(50000);
                                                LCD_ShowString(1,1,"Enter a Date:   ");
                                                LCD_ShowString(2,1,"                ");
                                                
                                                //动作1-P30=1;
                                                
                                                Key_Number='x';
                                                i=0;
                                                for(j=0;j<6;j++)
                                                {
                                                        RecordDate[j]='\0';
                                                }
                                        }
                                        if(!strcmp(RecordDate,RecordDate_2))
                                        {
                                                LCD_ShowString(1,1,"Date:           ");
                                                LCD_ShowString(1,6,RecordDate);
                                                LCD_ShowString(2,1,"         Playing");
                                                delay(50000);
                                                LCD_ShowString(1,1,"Enter a Date:   ");
                                                LCD_ShowString(2,1,"                ");
                                                
                                                //动作2-P31=1;
                                                
                                                Key_Number='x';
                                                i=0;
                                                for(j=0;j<6;j++)
                                                {
                                                        RecordDate[j]='\0';
                                                }
                                        }
                                                

                                }
                                else
                                {
                                        LCD_ShowString(2,1,"           Error");
                                        delay(5000);
                                        LCD_ShowString(2,1,"                ");
                                        Key_Number='x';
                                        i=0;
                                        for(k=0;k<6;k++)
                                        {
                                                RecordDate[k]='\0';
                                        }
                                }
                        }               
                }                        
        }        
}

```

  • 写回答

1条回答 默认 最新

  • 有问必答小助手 2022-05-18 10:55
    关注

    你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


    本次提问扣除的有问必答次数,已经为您补发到账户,我们后续会持续优化,扩大我们的服务范围,为您带来更好地服务。

    评论

报告相同问题?

问题事件

  • 系统已结题 5月23日
  • 创建了问题 5月15日

悬赏问题

  • ¥20 verilog状态机方法流水灯
  • ¥15 pandas代码实现不了意图
  • ¥15 GD32H7 从存储器到外设SPI传输数据无法重复启用DMA
  • ¥25 LT码在高斯信道下的误码率仿真
  • ¥45 渲染完成之后将物体的材质贴图改变,自动化进行这个操作
  • ¥15 yolov5目标检测并显示目标出现的时间或视频帧
  • ¥15 电视版的优酷可以设置电影连续播放吗?
  • ¥50 复现论文;matlab代码编写
  • ¥30 echarts 3d地图怎么实现一进来页面散点数据和卡片一起轮播
  • ¥15 数字图像的降噪滤波增强