找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机用K1-K3控制数码管移位显示设计

[复制链接]
ID:191525 发表于 2017-4-20 10:25 | 显示全部楼层 |阅读模式
               51单片机用K1-K3控制数码管移位显示设计
功能:1.按下 K1 时加1 计数并增加显示位,
      2.按下K2 时减1 计数并减少显示位,
      3.按下K3 时清零。
#include<reg51.h>    //头文件
#define uchar unsigned char   // uchar 定义为usigned char 为后面定义的时候方便
#define uint unsigned int
uchar code acode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//其阳极数码管09的数字,即为段码
uchar codeindex[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};//位码
ucharbuffer[]={0,10,10,10,10,10,10,10};//待显示到各数码管的数字缓冲(开始仅在0位显示0,其他黑屏)
void delay(uchar x)  //延时程序
{
   uchar i;
    while(x--) for(i=0;i<120;i++);
         }
void show()   //显示程序
{
   uchar i;
         for(i=0;i<8;i++)
         {
            P0=0xff;//消除对P0口的影响
            P0=acode[buffer];//P0口为连接数码管的端口
            P2=index;// 位选
            delay(2);//延时
            }
}
void main()//主程序
{
  uchar i,key1,keycount=0;//定义变量i,key1,keycount
  P0=0xff;
  P1=0xff;
  P2=0x00;
  while(1)
   {
      show();
            P1=0xff;
            key1=P1;/P1的状态保存到key1
            switch (key1)//通过P1的状态来决定作什么操作
            {
               case 0xfe: keycount++;//P1=0xfe时即P1.0=0,k1按下
                               if(keycount>8) keycount=8;
                                              buffer[keycount-1]=keycount;//按下 K1 时加1 计数并增加显示位
                                              break;
                   case 0xfd: if(keycount>0) buffer[--keycount]=10;//P1=0xfd时即P1.1=0,k2按下
                               break; 按下 K2时减1 计数并减少显示位
                   case 0xfb: buffer[0]=0;
                               for(i=0;i<8;i++) buffer=10;//P1=0xfb时即P1.2=0,k2按下
                                              keycount=0;//按下K3 时清零。
                                              }
                  while(P1!=0xff) show();
//查询是否有键按下,若没有继续判断,若有则显示出来相应结果
         }
}
Protues仿真图:
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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