立即注册 登录
返回首页

uid:191525的个人空间

日志

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

已有 486 次阅读2017-4-20 10:27 | 单片机, 数码管

               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 code index[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};//位码

 uchar buffer[]={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[i]];//P0口为连接数码管的端口

            P2=index[i];// 位选

            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[i]=10;//P1=0xfb时即P1.2=0,k2按下

                                                keycount=0;//按下K3 时清零。

                                                }

                   while(P1!=0xff) show();

//查询是否有键按下,若没有继续判断,若有则显示出来相应结果

         }

 }

 

Protues仿真图:

 

 

 


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

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

Powered by 单片机教程网

返回顶部