找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机按键控制流水灯的4个状态 源程序

[复制链接]
ID:519743 发表于 2020-12-26 22:11 | 显示全部楼层 |阅读模式
第一次再这个论坛分享,如有错误,还请批评指正。配合单片机开发板使用的程序,当按下按键1时,LED每隔1S闪烁一次;当按下按键2时,流水灯从左往右流水,当按下按键3时,流水灯从左往右流水流水,当按下按键4时,LEDD灯全灭;

单片机源程序如下:
  1. #include<reg51.h>
  2. #include"stdio.h"
  3. sbit K1 = P3^0;
  4. sbit K2 = P3^1;
  5. sbit K3 = P3^2;
  6. sbit K4 = P3^3;
  7. unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99};
  8. unsigned char code table1[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
  9. unsigned char code table2[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
  10. void delay1()                //@12.000MHz
  11. {
  12.         unsigned char i, j;

  13.         i = 12;
  14.         j = 169;
  15.         do
  16.         {
  17.                 while (--j);
  18.         } while (--i);
  19. }
  20. void delay(unsigned int n)
  21. {
  22.                 unsigned char i;
  23.         for(i=0;i<n;i++)
  24.         {
  25.                 delay1();        
  26. }
  27. }
  28. void Cls_Peripheral(void) //关闭外设;
  29. {
  30.         P0 = 0XFF;  
  31.         P2 = P2 & 0X1F | 0X80;
  32.         P2 &= 0X1F;   

  33.         P0 = 0;  
  34.         P2 = P2 & 0X1F | 0XA0;
  35.         P2 &= 0X1F;
  36. }

  37. void Set_74HC138(unsigned char outnum)  //打开某一位的开关;
  38. {
  39.         P2 &= ~(0x7<<5);
  40.         P2 |= ((outnum&0x07)<<5);
  41. }


  42. void led_init(unsigned char n)  //选择某个数字;
  43. {
  44.                 Set_74HC138(6); //打开位选段
  45.                 P0 = 0X01;
  46.                 P2 = 0X1F;
  47.                 Set_74HC138(7); //打开段选端;
  48.                 P0 = table[n];
  49.                 P2 = 0X1F;
  50. }

  51. void main(void)
  52. {                        char KEY1=0, KEY2=0,KEY3=0,KEY4=0,j=0;
  53.                         static char z=0,l=0;
  54.                 Cls_Peripheral(); //关外设?
  55.         while(1)
  56.                 {               
  57.                         if(K1 == 0)
  58.                         {
  59.                                 KEY1 = 1;
  60.                                 KEY2 = 0;
  61.                                 KEY3 = 0;
  62.                                 KEY4 = 0;
  63.                         }
  64.                                 if(K1 == 1 && KEY1 == 1)
  65.                                 {
  66.                                 led_init(1);
  67.                                         P2 =0X1F;
  68.                                         Set_74HC138(4);
  69.                                         {
  70.                                                 P0 = 0xFF;
  71.                                                 delay(100);
  72.                                                 P0 = 0X00;
  73.                                                 delay(100);
  74.                                         }                        
  75.                                 }                        

  76. if(K2 == 0)
  77.                         {
  78.                                 KEY2 = 1;
  79.                                 KEY1 = 0;
  80.                                 KEY3 = 0;
  81.                                 KEY4 = 0;
  82.                         }
  83.                                 if(K2 == 1 && KEY2 == 1)
  84.                                 {
  85.                                         led_init(2);
  86.                                         P2 =0X1F;
  87.                                         Set_74HC138(4);
  88.                                                 {
  89.                                                 P0 = table1[z];
  90.                                                 z++;
  91.                                                 delay(110);
  92.                                                         if(z==8) z=0;
  93.                                                 }                        
  94.                                 }        


  95. if(K3 == 0)
  96.                         {
  97.                                 KEY3 = 1;
  98.                                 KEY1 = 0;
  99.                                 KEY2 = 0;
  100.                                 KEY4 = 0;
  101.                         }
  102.                         
  103.                                 if(K3 == 1 && KEY3 == 1)
  104.                                 {
  105.                                 led_init(3);
  106.                                         P2 =0X1F;
  107.                                         Set_74HC138(4);
  108.                                                 {
  109.                                                 P0 = table2[l];l++;
  110.                                                 delay(110);
  111.                                                         if(l==7) l =0;
  112.                                                 }                        
  113.                                 }        
  114.                                 

  115.                                 if(K4 == 0)
  116.                         {
  117.                                 KEY4 = 1;
  118.                                 KEY1 = 0;
  119.                                 KEY3 = 0;
  120.                                 KEY2 = 0;
  121.                         }
  122.                                 if(K4 == 1 && KEY4 == 1)
  123.                                 {
  124.                                         P0 = 0XFF;  
  125.                                         P2 = P2 & 0X1F | 0X80;
  126.                                         P2 &= 0X1F;
  127.                                                                
  128.                                         P0 = 0X01;  
  129.                                         P2 = P2 & 0X1F | 0XC0;
  130.                                         P2 &= 0X1F;   

  131.                                         P0 = 0X99;  
  132.                                         P2 = P2 & 0X1F | 0XE0;
  133.                                         P2 &= 0X1F;
  134.                                        
  135.                                        
  136.                                 }                                
  137. }
  138. }
复制代码
全部程序51hei下载地址:
按键控制.rar (26.4 KB, 下载次数: 13)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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