苏嵌暑期实训----day8

姓名:祝俊宝                          日期:2018.07.16

今日学习任务

1、单片机的概念及特点

2、LED灯

3、蜂鸣器

4、独立按键、矩阵按键

今日任务完成情况

完成了点亮led灯、跑马灯等的程序编程及仿真

完成了驱动蜂鸣器的程序编程及仿真

完成了独立按键及矩阵按键的编程及仿真

今日开发中遇到的问题 矩阵按键的编程
今日未解决问题 矩阵按键编程及仿真
今日开发收获 完成了如跑马灯、蜂鸣器等最基本的c语言编程控制单片机
自我评价 以前关于单片机的课设都是直接上手写较复杂的程序或是直接理解老师给的写好的程序,今天老师从最基本的讲起,让我觉得很多地方都有了不同的理解,受益匪浅

其他:

作业:按键控制蜂鸣器发出不同频率的声音

#include <reg51.h>

#define LED   P0
sbit LED1 = P0^0;
sbit LED2 = P0^1;
sbit LED3 = P0^2;
sbit LED4 = P0^3;
sbit Beep = p2^3;

int key;
int i,j;

void delay(int x)
{
    for(i = 0; i < x; i++)
    {
        for(j = 0; j < 100; j++);
    }    
}

int main()
{
    while (1)
    {
        key = 0;
        LED = 0xff;
        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 += 1;    break;
                case 0x0d:    key += 5;    break;
                case 0x0b:    key += 9;    break;
                case 0x07:    key += 13;    break;
            }
        }

        switch (key)
        {
            case 1:
                Beep = 0;
                delay(20);
                Beep = 1;
                delay(1);
                break;
            case 2:
                Beep = 0;
                delay(100);
                Beep = 1;
                delay(1);
                break;
            case 3:
                Beep = 0;
                delay(200);
                Beep = 1;
                delay(1);
                break;
            case 4:
                Beep = 0;
                delay(300);
                Beep = 1;
                delay(1);
                break;
        }
    }

    return 0;
}

   

猜你喜欢

转载自blog.csdn.net/zjb231425/article/details/81072144