找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 15936|回复: 0
收起左侧

单片机按键控制8位led灯的亮灭程序+电路图

[复制链接]
ID:579530 发表于 2019-7-8 12:02 | 显示全部楼层 |阅读模式
用两个按键控制八灯的亮灭,一次加一或减一

仿真图

仿真图

以下为原程序:
  1. #include <REGX52.H>

  2. #define LED P0                                  // LED 接 P0口

  3. typedef unsigned int u16;         
  4. typedef unsigned char u8;

  5. u16 num = 0;

  6. sbit key_jia = P2^0;                          //按键加
  7. sbit key_jian = P2^1;                          //按键减

  8. /***** 0000 0001        0000 0011        0000 0111        0000 1111        0001 1111        0011 1111        0111 1111        1111 1111 *****/

  9. u8 code table[] = {0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};

  10. /*******************************延时********************************/
  11. void delay(u16 i)
  12. {
  13.         while(i--);
  14. }

  15. /******************************按键**********************************/
  16. void key(void)
  17. {
  18.         if(key_jia == 0)                                //  按键加
  19.         {                                                        
  20.                 delay(1000);                                //  消抖
  21.                 if(key_jia == 0)
  22.                 {
  23.                         num++;                                        //    加一
  24.                         if(num == 9)
  25.                         {
  26.                                 num = 8;                        //  最多到7
  27.                         }                        
  28.                 }
  29.                 while( !key_jia );                         //  检测按键加是否松开
  30.         }

  31.         if(key_jian == 0)                                //按键减
  32.         {
  33.                 delay(1000);
  34.                 if(key_jian == 0)
  35.                 {
  36.                         if(num != 0)                            //  判断是否到0
  37.                 {
  38.                                 num--;                                 //          减一
  39.                         }
  40.                         else
  41.                         {
  42.                                 num = 0;                         //   到0停
  43.                         }               
  44.                 }
  45.                 while( !key_jian );                          //  检测按键减是否松开
  46.         }               
  47. }

  48. /******************************main************************/
  49. void main(void)
  50. {        
  51.         LED = table[0];                                        // 8灯为灭
  52.         while(1)
  53.         {
  54.                 key();                                                //   按键
  55.                 LED = table[num];                        //   led
  56.         }

复制代码


全部资料51hei下载地址:
按键led及仿真.zip (56.21 KB, 下载次数: 36)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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