单片机学习日志—2018.01.17

学习日志                     姓名:   王瑶           日期: 2017.07.17   

今日学习任务

用矩阵按键控制LED灯按二进制形式点亮设计。

 

日任务完成情况

(详细说明本日任务是否按计划完成,开发的代码量。)

 

基本按照要求完成,可以实现1~255范围内的按照二进制点亮操作,但有些地方完成的还不是特别好,比如总是会有其他的地方不按照设想的样子点亮。

今日开发中遇到的问题汇总

  1. 怎么样将数字按键和确定按键区分开。
  2. 怎么能够实现两位数的按下而不被清零。
  3. 扫描确认键。

日开发收获

  1. 矩阵按键的扫描代码。
  2. 两次按键的识别。

自我评价

(是否规范完成指定任务,需要改进的地方,与他人合作等。)

实际操作还是很有必要的,而且在这个不断发现错误更改错误的过程中也可以收获很多。

 

用矩阵按键控制LED灯按二进制形式点亮:

#include<reg51.h>

 

#define LED P0

sbit led1=P0^0;

sbit led2=P0^1;

sbit led3=P0^2;

sbit led4=P0^3;

sbit led5=P0^4;

sbit led6=P0^5;

sbit led7=P0^6;

sbit led8=P0^7;

 

void main()

{

    int key,i, k[8];

 

while(1)

{

 

    key=0;

LED=0xff;

P3=0xf0;

do{

       P3=0xf0;

if(P3!=0Xf0)

{

   switch(P3)

   {

      case 0xe0:key+=0;break;

  case 0xd0:key+=1;break;

  case 0xb0:key+=2;break;

  case 0x70:key+=3;break;

           }

   P3=0x0f;

   switch(P3)

   {

      case 0x0e:key+=0;break;

  case 0x0d:key+=4;break;

  case 0x0b:key+=8;break;

  default:break;

 // case 0x07:key=key+12;break;

   }

 }

    }while(P3!=0x07);

        if(P3==0x07)

{

     key=key-3;

     for(i=0;i<8;i++)

 {

       k[i]=~(key%2);

   key/=2;

 }

 led1=k[0];

 led2=k[1];

 led3=k[2];

 led4=k[3];

 led5=k[4];

 led6=k[5];

 led7=k[6];

 led8=k[7];

}

}

}

猜你喜欢

转载自blog.csdn.net/qq_40616514/article/details/81086634