按键控制数码管闪烁

简介: 按键控制数码管闪烁

一、数码管闪烁

#include<STC15F2K60S2.H>
unsigned char mode=0;//模式变量
unsigned char stat=0;//闪烁位变量
unsigned int count_smg=0;//数码管闪烁计数变量
unsigned char f_open=0;//闪烁标志
sbit S7=P3^0;
unsigned char code table[]={0xc0,0xf9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xA7,0xA1,0x86,0x8E,0xbf,0x7f};
void select(unsigned char n) //打通译码器
{
  switch(n)
  {
    case 4:
      P2=(P2&0x1f)|0x80; 
      break;
    case 5:
      P2=(P2&0x1f)|0xa0;
      break;
    case 6:
      P2=(P2&0x1f)|0xc0;
      break;
    case 7:
      P2=(P2&0x1f)|0xe0;
      break;
  }
}
void guanbi() //关闭无关设备
{
  select(5);
  P0=0x00;
  select(4);
  P0=0xff;
}
//**************数码管段选位选函数
void shuma(unsigned char pos,unsigned char date) 
{
  select(7);
  P0=0xff;
  select(6);
  P0=0x01<<pos;
  select(7);
  P0=date;
}
//*************延时函数
void delayms(unsigned int x)
{
  while(x--);
}
//************数码管显示函数
void display()
{
  if(f_open==0)
  {
    shuma(0,table[1]);
    delayms(100);
    shuma(1,table[2]);
    delayms(100);
  }
  else 
  {
    shuma(0,0xff);
    shuma(1,0xff);
  }
    shuma(2,table[16]);
    delayms(100);
    shuma(3,table[3]);
    delayms(100);
    shuma(4,table[4]);
    delayms(100);
    shuma(5,table[16]);
    delayms(100);
    shuma(6,table[5]);
    delayms(100);
    shuma(7,table[6]);
    delayms(100); 
}
void display1()
{
    shuma(2,table[16]);
    delayms(100);
    shuma(0,table[1]);
    delayms(100);
    shuma(1,table[2]);
    delayms(100);
    shuma(5,table[16]);
    delayms(100);
    shuma(6,table[5]);
    delayms(100);
    shuma(7,table[6]);
    delayms(100); 
  if(f_open==0)
  {
    shuma(3,table[3]);
    delayms(100);
    shuma(4,table[4]);
    delayms(100);
  }
  else 
  {
    shuma(3,0xff);
    shuma(4,0xff);
  }
}
void display2()
{
    shuma(2,table[16]);
    delayms(100);
    shuma(0,table[1]);
    delayms(100);
    shuma(1,table[2]);
    delayms(100);
    shuma(5,table[16]);
    delayms(100);
    shuma(3,table[3]);
    delayms(100);
    shuma(4,table[4]);
    delayms(100); 
  if(f_open==0)
  {
    shuma(6,table[5]);
    delayms(100);
    shuma(7,table[6]);
    delayms(100);
  }
  else 
  {
    shuma(6,0xff);
    shuma(7,0xff);
  }
}
void INT()
{
  TMOD=0x01;
  TH0=(65535-1000)/256;
  TL0=(65535-1000)%256;
  EA=1;
  ET0=1;
  TR0=1;
}
void sreviceINT() interrupt 1
{
   TH0=(65535-1000)/256;
   TL0=(65535-1000)%256;
   count_smg++;
   if(count_smg==1000)
   {
     count_smg=0;
     f_open=~f_open;
   }
}
void scan()
{
  if(S7==0)
  {
    delayms(10);
    if(S7==0)
    {
      stat++;
      if(stat==4)
      {
        stat=1;
      }
      while(S7==0) //等待按键松开
      {
        if(stat==1)
        {
          display();
        }
        else if(stat==2)
        {
          display1();
        }
        else
        {
          display2();
        }
      }
    }
  }
}
void main()
{
  guanbi();
  INT();
  while(1)
  {
    scan();
    switch(stat)
    {
      case 1:
        display();
      break;
      case 2:
        display1();
      break;
      case 3:
        display2();
      break;
    }
  }
}
相关文章
|
域名解析 弹性计算 tengine
阿里云DNS常见问题之阿里云OpenAPI判断域名的dns服务器是否在阿里云失败如何解决
阿里云DNS(Domain Name System)服务是一个高可用和可扩展的云端DNS服务,用于将域名转换为IP地址,从而让用户能够通过域名访问云端资源。以下是一些关于阿里云DNS服务的常见问题合集:
|
传感器 Cloud Native 物联网
Micronaut在物联网中的应用探索:轻盈架构赋能万物互联新时代
【9月更文挑战第6天】Micronaut是一个现代、轻量级的Java框架,以其高效、易用及对云原生环境的支持,在物联网开发中展现出独特优势。它通过AOT编译技术优化应用,减少内存消耗,适合资源受限的设备。Micronaut支持反应式编程和HTTP/2,提升并发处理能力和网络传输效率。本文通过一个温度传感器数据收集服务的例子,展示了如何利用Micronaut简化物联网应用开发,使其成为该领域的理想选择。
231 3
|
easyexcel
EasyExcel动态合并单元格
EasyExcel动态合并单元格
558 0
|
开发工具 git
git 出现502错误后用depth一步一步来
公司有个项目的git仓库,因为一些二进制文件也放在里面,版本迭代后,整个仓库特别大,有好几G。 直接git clone是不行的,会报这样的错误: error: RPC failed; HTTP 502 curl 2...
3127 0
|
Android开发
Android onActivityResult()的属性与用法
Android onActivityResult()的属性与用法
251 1
|
芯片 内存技术
MDK 下载程序出现no target connected 导致下载失败
MDK 下载程序出现no target connected 导致下载失败
724 0
MDK 下载程序出现no target connected 导致下载失败
|
Linux 虚拟化 网络虚拟化
VMware EXSI 配置两个网卡(外网和内网)
VMware EXSI 配置两个网卡(外网和内网)
1362 0
|
Cloud Native Unix Go
如何选择合适的开源许可证?
如何选择合适的开源许可证?
299 0
|
存储 Linux Go
Docker 存储驱动解析:选择最适合你的存储方案
Docker 存储驱动解析:选择最适合你的存储方案
312 0
|
JavaScript 小程序 前端开发
微信小程序生成海报图片导出相册
小程序内通过静态模板和样式绘制 canvas ,导出图片,可用于生成分享图等场景
716 1
微信小程序生成海报图片导出相册

热门文章

最新文章