实训第八天 ---------单片机LED、蜂鸣器、键盘

本文详细介绍了51单片机的基本构成及其编程实践,包括电源电路、晶振电路和复位电路的理解,以及使用sbit定义特定位进行编程控制。通过矩阵按键识别和蜂鸣器控制的实例,展示了如何利用P3口判断按键状态并实现不同延时效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今日学习任务了解51单片机的基本构成,会用编程来控制单片机各部件完成想要的一些操作
今日任务完成情况今日任务基本完成,通过老师讲解了解了单片机的基本构成,并在老师的指导下通过编程仿真了解了如何实现一些简单功能。
今日开发问题汇总sbit用来定义某一位,虽然放在程序较为靠前的地方,但末端的“;”不能忘记
今日未解决问题个人单片机这一部分知识点学的不好,掌握程度不够,编写程序的时候有很多问题,需要重新多加练习编写代码。
今日开发收获

1.单片机的最小单元由电源电路、晶振电路、复位电路

2.定义某一位时用sbit,如:sbit LED = P1^0

3.矩阵按键分别通过P3.0~P3.7口来确定列和行从而确定哪个按键被按下

自我评价基本能听懂老师所授内容,今天老师从最基本的讲起,让我觉得很多地方都有了不同的理解,受益匪浅
其他

#include <reg51.h>

 

 

sbit Beep=P2^3;

int key,i;

/*unsigned char code    CharCode[]=

{      

         0xc0, 0xf9, 0xa4,0xb0,0x99, 0x92,0x82,0xf8,

         0x80, 0x90, 0x88, 0x83, 0xc6,0xa1,0x86,0x8e

};      */

void delay(int x)

{

    while(x--)

         {

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

         }

}

 

int main()

{

         while (1)

         {

                  key = 0;

                  Beep=1;

                  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(1);

                                   break;

                          case 2:

                                   Beep = 0;

                                   delay(20);

                                   break;

                          case 3:

                                   Beep= 0;

                                   delay(40);

                                   break;

                          case 4:

                                   Beep = 0;

                                   delay(80);

                                   break;

                          case 5:

                                   Beep = 0;

                                   delay(100);

                                   break;

                          case 6:

                                   Beep= 0;

                                   delay(120);

                                   break;

                          case 7:

                                   Beep = 0;

                                   delay(150);

                                   break;

                          case 8:

                                   Beep = 0;

                                   delay(180);

                                   break;

                  }

         }

 

         return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值