登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] 单片机-按键1

[复制链接]
发表于 2022-2-6 18:18:38 | 显示全部楼层 |阅读模式
学习笔记
学习科目: 单片机
学习安排: 一个按键加减
开始时间: 2022-02-05
结束时间: 2022-02-06
                    一个按键从1到16
  1. #include <reg52.h>

  2. sbit P20 = P2^0;
  3. sbit P21 = P2^1;
  4. sbit P22 = P2^2;
  5. sbit ENLED = P1^1;
  6. sbit K4 = P2^3;

  7. unsigned char code LedChar[]={
  8.         0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
  9.         0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E
  10. };

  11. void delay();

  12. void main()
  13. {
  14.         bit keybuf = 1;
  15.         bit backup = 1;
  16.         unsigned char cnt = 0;    //记录按键按下的次数
  17.         ENLED = 0;
  18.         P2=~0x82;              //开启Y5,同时给kout4低电平(2~7分别对应Y5到Y1)
  19.         P0=LedChar[cnt];

  20.   while(1)
  21.         {
  22.                 keybuf = K4;
  23.                 if(keybuf!=backup)
  24.                 {
  25.                         delay();
  26.                         if(keybuf==K4)
  27.                         {
  28.                                 if(backup==0)
  29.                                 {
  30.                                         cnt++;
  31.                                         if(cnt>=16)
  32.                                         {
  33.                                                 cnt = 0;
  34.                                                
  35.                                         }
  36.                                         P0 = LedChar[cnt];
  37.                                        
  38.                                 }
  39.                                 backup = keybuf;
  40.                                
  41.                         }
  42.                 }
  43.         }
  44. }
  45. void delay()
  46. {
  47.         unsigned int i =1000;
  48.         while(i--);
  49. }
复制代码
      一个按键从16到1
  1. #include <reg52.h>

  2. sbit P20 = P2^0;
  3. sbit P21 = P2^1;
  4. sbit P22 = P2^2;
  5. sbit ENLED = P1^1;
  6. sbit K12 = P2^3;

  7. unsigned char code LedChar[]={
  8.         0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
  9.         0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E
  10. };

  11. void delay();

  12. void main()
  13. {
  14.         bit keybuf = 1;
  15.         bit backup = 1;
  16.         signed char cnt = 15;   
  17.         ENLED = 0;
  18.         P2=0xDD;              //开启Y5,同时给kout2低电平(2~7分别对应Y5到Y1)
  19.         P0=LedChar[cnt];

  20.   while(1)
  21.         {
  22.                 keybuf = K12;
  23.                 if(keybuf!=backup)
  24.                 {
  25.                         delay();
  26.                         if(keybuf==K12)
  27.                         {
  28.                                 if(backup==0)
  29.                                 {
  30.                                         cnt--;
  31.                                         if(cnt<0)
  32.                                         {
  33.                                                 cnt = 15;
  34.                                                
  35.                                         }
  36.                                         P0 = LedChar[cnt];
  37.                                        
  38.                                 }
  39.                                 backup = keybuf;
  40.                                
  41.                         }
  42.                 }
  43.         }
  44. }
  45. void delay()
  46. {
  47.         unsigned int i =1000;
  48.         while(i--);
  49. }
复制代码


好懒~~不想说~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表