/*****************
按k1加一,按k2减一,按k3清零
*******************/
#include "reg52.h"             //此文件中定义了单片机的一些特殊功能寄存器typedef unsigned int u16;      //对数据类型进行声明定义
typedef unsigned char u8;sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;sbit k1=P3^1;
sbit k2=P3^0;
sbit k3=P3^2;
sbit k4=P3^3;   //定义按键端口u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值#define KEY1 1
#define KEY2 2
#define KEY3 3
#define KEY4 4char keynum;
u8 DisplayData[8];void delay(u16 i)
{while(i--);
}//mode=0 单次   1:连续
u8 KeyScan(u8 mode)
{static u8 keyen=1;if(mode==1){keyen=1;}if(keyen==1&&(k1==0||k2==0||k3==0||k4==0)){delay(1000);  //消抖处理keyen=0;if(k1==0)return KEY1;else if(k2==0)return KEY2;else if(k3==0)return KEY3;else if(k4==0)return KEY4;               }else if(k1==1&&k2==1&&k3==1&&k4==1){keyen=1;}return 0;
}void DigDisplay()
{u8 i;for(i=0;i<2;i++){switch(i)   //位选,选择点亮的数码管,{case(0):LSA=0;LSB=0;LSC=0; break;//显示第0位case(1):LSA=1;LSB=0;LSC=0; break;//显示第1位    }P0=DisplayData[i];//发送段码delay(100); //间隔一段时间扫描    P0=0x00;//消隐}
}void datapros()
{u8 key=KeyScan(0);switch(key){case 1:  keynum++;if(keynum==100)keynum=0; break;case 2:  keynum--;if(keynum<=0)keynum=99; break;case 3:  keynum=0; break;case 4:   break;}DisplayData[0]=smgduan[keynum%10];DisplayData[1]=smgduan[keynum/10];
}void main()
{   while(1){datapros();DigDisplay();   }
}

单片机:按键控制两位数码管相关推荐

  1. 按键控制两位数码管加减

    关于按键方法的原帖地址:http://www.amobbs.com/thread-4308630-1-1.html //本文按键未经消抖处理,有了好方法再来上传. #include "reg ...

  2. 【单片机仿真项目】外部中断0和1控制两位数码管进行计数

    目录 1.外部中断0和1控制两位数码管进行计数 keil 代码 2.proteus 原理图 3.gif 动态图

  3. proteus仿真arduino控制两位数码管

    前面我们用arduino控制一位数码管,知道了控制数码管的原理.这里我们增加了一位,其显示的原理基本一样.只不过本质上不是两位同时点亮,而是轮换点亮.下面是原理图: 我们来看看代码的实现: int P ...

  4. protues用一片74hc595控制两位数码管

    前面的博文中我们介绍了一个arduino中用一片595来控制一位数码管,这里我们介绍一个595来控制两位数码管.两位数码管是应用最广泛的,如交通灯倒计时,计数器等都将用到两位数码管. 两位数码管的动态 ...

  5. 两位数码管30秒倒计时c语言,基于51单片机共阴两位数码管显示倒计时

    <基于51单片机共阴两位数码管显示倒计时>由会员分享,可在线阅读,更多相关<基于51单片机共阴两位数码管显示倒计时(2页珍藏版)>请在人人文库网上搜索. 1.基于51单片机共阴 ...

  6. 单片机按键控制数码管c语言程序,基于单片机的按键控制LED数码管共阴极动态显示电路设计报告(毕业论文).doc...

    基于单片机的按键控制LED数码管共阴极动态显示电路设计报告(毕业论文) 物理与电子工程学院2014级课程设计 PAGE IV 物理与电子工程学院 <单片机原理与接口技术> 课程设计报告书 ...

  7. 两个74HC595D驱动芯片控制三位数码管显示

    两个74HC595D驱动芯片控制三位数码管显示 概述 一.数码管引脚及使用概述 1.1位数码管显示方式 2.3位数码管 3.3位数码管电路图 二.74HC595D引脚及使用概述 1. 74HC595引 ...

  8. 8255总线实验 编写程序利用8255扩展单片机的IO口,控制8位数码管显示1-8。

    8255总线实验 编写程序利用8255扩展单片机的IO口,控制8位数码管显示1-8. 程序: #include<reg51.h> #include<absacc.h> #def ...

  9. 单片机c语言数码管显示子程序,单片机C语言之两位数码管动态显示

    <单片机C语言之两位数码管动态显示>由会员分享,可在线阅读,更多相关<单片机C语言之两位数码管动态显示(1页珍藏版)>请在人人文库网上搜索. 1.include #define ...

最新文章

  1. day04-html
  2. python的学习笔记(0)之循环的使用1
  3. 微信文件撤回时间多长_微信悄悄上线新玩法:拍了拍、朋友圈可重新编辑
  4. 产品中的实名认证该怎么设计?
  5. [置顶] JQuery在线截取图片
  6. Objective-C 2.0 with Cocoa Foundation --- 3,类的声明和定义
  7. 云计算之IaaS 中间件
  8. 【华为大咖分享】7.大型云平台的DevOps实践(后附PPT下载地址)
  9. .net 数据存储 mysql_asp.net实现存储和读取数据库图片
  10. JSP提交中文乱码的解决
  11. php set get 作用_浅谈PHP拦截器之__set()与__get()的理解与使用方法
  12. BOSS直聘数据采集、解析处理、分析与可视化实战
  13. 基于易智瑞(ArcGIS)JavaScript API的视频融合探索
  14. python 爬取图片网站图片链接并下载收集
  15. 微信小程序之如何注册微信小程序
  16. 用matlab拟合多元函,使用matlab进行多元非线性拟合的方法
  17. 单位组织机构代码提取和补零操作
  18. Linux基本指令初阶
  19. java continue语句_Java continue 语句
  20. 虚拟机 邮箱服务器,虚拟机邮箱服务器设置密码

热门文章

  1. CPCI总线计算机软件无法运行,CPCI总线计算机的加固设计研究.pdf
  2. Unicode 与前端字符编码全揭秘
  3. PCA9540BDP 电子元器件 封装MSOP8 批次21
  4. 一个使用javafx编写电子相片管理程序
  5. jpg图片怎么转换为CAD图纸?简单几步教你操作
  6. 替换word中英文““为中文双引号“”,且保持西文为Time NewRome
  7. 计算机三级网络技术ppt介绍,计算机三级网络技术课件.ppt
  8. Win10系统笔记本耳机没有声音而外放却有
  9. eclipse安装后,出现“can not create the java virtual machine”错误的另一种原因和解决方案
  10. 126页5万字智慧园区建设方案