老古开发网首页
导航:老古开发网首页文章索引索引第2365页文章分类单片机第31页→[(转)XD5101实验二----按键计数(led显示)]
| -文章搜索 - 最新文章 - |

(转)XD5101实验二----按键计数(led显示)

发布时间:2006年7月10日 点击次数:699
来源:   作者:
 

程序功能:按键计数。每个键对应数码管一位。按键1位数加1,键2十位数加1,键3百位数加1,键4千位数加1。超过量程,清零。

程序源码:

#include<reg52.h>
#define uchar unsigned char

sbit s1 = P2^3;
sbit s2 = P2^0;
sbit s3 = P2^1;
sbit s4 = P2^2;
sbit en = P2^5;
sbit Key1= P3^2;
sbit Key2= P3^3;
sbit Key3= P3^4;
sbit Key4= P3^5;
//各位计数变量
uchar ct1,ct2,ct3,ct4;
//数码管显示
uchar dis[10]={ 0x84,  // 0
          0xBD,  // 1
          0xE0,  // 2
          0xB0,  // 3
          0x99,  // 4
          0x92,  // 5
          0x82,  // 6
          0xBC,  // 7
          0x80,  // 8
          0x90  // 9
    };

void Delay(int m)
{
 while(--m);
}

void display()
{
 s1=0;
 P0=dis[ct1];
 s1=1;
 Delay(100);
 s2=0;
 P0=dis[ct2];
 s2=1;
 Delay(100);
 s3=0;
 P0=dis[ct3];
 s3=1;
 Delay(100);
 s4=0;
 P0=dis[ct4];
 s4=1;
 Delay(100);
}

void main()
{
 s1=1;
 s2=1;
 s3=1;
 s4=1;
 Key1=1;
 Key2=1;
 Key3=1;
 Key4=1;
 en = 0;
 ct1=0;
 ct2=0;
 ct3=0;
 ct4=0;
 while(1)   //循环执行
  {
  if(!Key1)//如果键1按下,下同
  {  
   while(!Key1);
   ++ct1;
  }
  if(!Key2)
  {
   while(!Key2);
   ++ct2;
  }
  if(!Key3)
  {   
   while(!Key3);
   ++ct3;
  }
  if(!Key4)
  {
   while(!Key4);
   ++ct4;
  }
  if(ct1>9)//个位进位,下同
  {
   ct1=0;
   ++ct2;
  }
  if(ct2>9)
  {
   ct2=0;
   ++ct3;
  }
  if(ct3>9)
  {
   ct3=0;
   ++ct4;
  }
  if(ct4>9)
  {
   ct1=0;
   ct2=0;
   ct3=0;
   ct4=0;
  }
     display();     //只须调用显示函数
    }
}

 

欢迎进入老古论坛进行讨论
[单片机] 相关文章:
PCB设计规范系列之一(摘)
简介:
1. 概述 建立 PCB 板设计、制作规范,可以统一设计风格,提高工作效率,避免出现不必要的重复工时浪费。 PCB 设计的总则如下: l 外观大方:器件选择合适,布局布线合理,尺寸比例协调,文字说明清晰。 l ......

关于硬件设计的几点小窍门之成本节约
关于硬件设计的几点小窍门之信号完整性
A51 2.1.4 英特尔/爱特梅尔WM 251
关于硬件设计的几点小窍门之低功耗设计
 
下一个:[单片机]关于硬件设计的几点小窍门之系统效率
简介:
系统效率 现象一:这主频 100M 的 CPU 只能处理 70% ,换 200M 主频的就没事了 点评:系统的处理能力牵涉到多种多样的因素,在通信业务中其瓶颈一般都在存储器上, CPU 再快,外部访问快不起来也是徒劳。 现象二: CPU 用大一点的 CACHE ,就应该快了 点评: CACHE 的增大,并不一定就导致系统性能的提高,在某些情况下关闭 CACHE 反而比使用 CACHE 还快。原因是搬到 ......

上一个:[DSP数字信号处理]基于DSP实现可并机的逆变电源

老古开发网版权所有 2006年9月 asp.Net V2.0 设计:老古
页面缓存:30分钟 执行时间:47毫秒