单片机与C语言学习连载六
单片机与C语言学习连载六
泥巴耳朵hh 发表于2年前
单片机与C语言学习连载六
  • 发表于 2年前
  • 阅读 1
  • 收藏 0
  • 点赞 1
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

摘要: 示例6:独立按键和动态显示

#include <reg51.h>
#include "user.h"
#define DUAN P0
#define WEI P2
#define KEY P3
uint8 code DuanMa[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x00};
uint8 code WeiMa[] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uint8 data DispBuf[] = {16,16,16,16,16,16,16,16};
void DelayMs(uint16 mstime)
{
 uint8 i;
 while(mstime--)
  for(i=115;i>0;i--)
   ;
}
void Display(uint8 *buf,uint8 num)
{
 uint8 i;
 for(i=0;i<num;i++)
 {
  DUAN = 0;
  DUAN = DuanMa[*(buf+i)];
  WEI = WeiMa[i];
  DelayMs(1);
 } 
}
void main(void)
{
 while(1)
 {
  if(KEY != 0xff)
  {
   switch(KEY)
   {
    case 0xfe:
     if(DispBuf[0] == 16)
      DispBuf[0] = 1;
     else
      DispBuf[0] = 16;
     break;
    case 0xfd:
     if(DispBuf[1] == 16)
      DispBuf[1] = 2;
     else
      DispBuf[1] = 16;
     break;
    case 0xfb:
     if(DispBuf[2] == 16)
      DispBuf[2] = 3;
     else
      DispBuf[2] = 16;
     break;
    case 0xf7:
     if(DispBuf[3] == 16)
      DispBuf[3] = 4;
     else
      DispBuf[3] = 16;
     break;
    case 0xef:
     if(DispBuf[4] == 16)
      DispBuf[4] = 5;
     else
      DispBuf[4] = 16;
     break;
    case 0xdf:
     if(DispBuf[5] == 16)
      DispBuf[5] = 6;
     else
      DispBuf[5] = 16;
     break;
    case 0xbf:
     if(DispBuf[6] == 16)
      DispBuf[6] = 7;
     else
      DispBuf[6] = 16;
     break;
    case 0x7f:
     if(DispBuf[7] == 16)
      DispBuf[7] = 8;
     else
      DispBuf[7] = 16;
     break;
    default:break;
   }
  }
  Display(DispBuf,8);
 }
}

共有 人打赏支持
粉丝 0
博文 6
码字总数 840
×
泥巴耳朵hh
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: