学习日志

学习日志姓名:孙双      日期:2018/7/17
今日学习任务

用按键输入0~255的数,转化成二进制,用8个LED灯表示。

 

今日任务完成情况

 

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

完成了代码,但功能上有缺陷。

 

今日开发中出现的问题汇总将键盘上的数转化成二进制比较 困难

今日未解决问题

今日开发收获

学会了在矩阵按键上输入十进制数,也学会了将十进制数转化为二进制,并用LED灯表示。

 

自我评价

 

(是否按开发规范完成

 

既定任务,需要改进的地方,与他人合作效果等)

有点难度,编程能力有待提高
其他 

                                                                                                                                                 #include<reg51.h>
#include<math.h>
#include<reg51.h>
#include<reg51.h>
#include<stdio.h>

void Delay1ms(int ms)
{
    int i;
    while(ms--)
    {
        for(i = 0;i<100;i++);
    }
}


main(void)
{
    unsigned char Mask,ScanCode,Line,Col,i;

    while(1)
    {
        P3 = 0xff;
        Line = 1;
        Mask = 0x01;


        for(i = 0;i<4;i++)
        {
            Col = 0;
            P3 = ~Mask;

            ScanCode = P3&0xf0;
            switch(ScanCode)
            {
                case 0xe0:Col = 1;
                            break;
                case 0xd0:Col = 2;
                            break;
                case 0xb0:Col = 3;
                            break;
                case 0x70:Col = 4;
                            break;
                default:Col = 0;
                            break;
            }

            if(Col>0)
            {    
                switch(Line)
                {
                    case 1:P0 = 0x01;
                            break;
                    case 2:P0 = 0x02;
                            break;
                    case 3:P0 = 0x04;
                            break;
                    case 4:P0 = 0x08;
                            break;
                    default:P0 = 0x00;
                            break;
                }

                switch(Col)
                {
                    case 1:P0 |= 0x10;
                            break;
                    case 2:P0 |= 0x20;
                            break;
                    case 3:P0 |= 0x40;
                            break;
                    case 4:P0 |= 0x80;
                            break;
                    default:P0 = 0x00;
                            break;
                }
                                                                                
                while(1)
                {
                    ScanCode = P3&0xf0;
                    if(ScanCode == 0xf0)
                    {
                        Delay1ms(60);
                        if(ScanCode == 0xf0)
                        {
                            break;
                        }
                    }
                }

                Delay1ms(250);
                P0 = 0x00;
            }
            Mask<<=1;
            Line++;
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值