单片机:按键控制两位数码管
/*****************
按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(); }
}
单片机:按键控制两位数码管相关推荐
- 按键控制两位数码管加减
关于按键方法的原帖地址:http://www.amobbs.com/thread-4308630-1-1.html //本文按键未经消抖处理,有了好方法再来上传. #include "reg ...
- 【单片机仿真项目】外部中断0和1控制两位数码管进行计数
目录 1.外部中断0和1控制两位数码管进行计数 keil 代码 2.proteus 原理图 3.gif 动态图
- proteus仿真arduino控制两位数码管
前面我们用arduino控制一位数码管,知道了控制数码管的原理.这里我们增加了一位,其显示的原理基本一样.只不过本质上不是两位同时点亮,而是轮换点亮.下面是原理图: 我们来看看代码的实现: int P ...
- protues用一片74hc595控制两位数码管
前面的博文中我们介绍了一个arduino中用一片595来控制一位数码管,这里我们介绍一个595来控制两位数码管.两位数码管是应用最广泛的,如交通灯倒计时,计数器等都将用到两位数码管. 两位数码管的动态 ...
- 两位数码管30秒倒计时c语言,基于51单片机共阴两位数码管显示倒计时
<基于51单片机共阴两位数码管显示倒计时>由会员分享,可在线阅读,更多相关<基于51单片机共阴两位数码管显示倒计时(2页珍藏版)>请在人人文库网上搜索. 1.基于51单片机共阴 ...
- 单片机按键控制数码管c语言程序,基于单片机的按键控制LED数码管共阴极动态显示电路设计报告(毕业论文).doc...
基于单片机的按键控制LED数码管共阴极动态显示电路设计报告(毕业论文) 物理与电子工程学院2014级课程设计 PAGE IV 物理与电子工程学院 <单片机原理与接口技术> 课程设计报告书 ...
- 两个74HC595D驱动芯片控制三位数码管显示
两个74HC595D驱动芯片控制三位数码管显示 概述 一.数码管引脚及使用概述 1.1位数码管显示方式 2.3位数码管 3.3位数码管电路图 二.74HC595D引脚及使用概述 1. 74HC595引 ...
- 8255总线实验 编写程序利用8255扩展单片机的IO口,控制8位数码管显示1-8。
8255总线实验 编写程序利用8255扩展单片机的IO口,控制8位数码管显示1-8. 程序: #include<reg51.h> #include<absacc.h> #def ...
- 单片机c语言数码管显示子程序,单片机C语言之两位数码管动态显示
<单片机C语言之两位数码管动态显示>由会员分享,可在线阅读,更多相关<单片机C语言之两位数码管动态显示(1页珍藏版)>请在人人文库网上搜索. 1.include #define ...
最新文章
- day04-html
- python的学习笔记(0)之循环的使用1
- 微信文件撤回时间多长_微信悄悄上线新玩法:拍了拍、朋友圈可重新编辑
- 产品中的实名认证该怎么设计?
- [置顶] JQuery在线截取图片
- Objective-C 2.0 with Cocoa Foundation --- 3,类的声明和定义
- 云计算之IaaS 中间件
- 【华为大咖分享】7.大型云平台的DevOps实践(后附PPT下载地址)
- .net 数据存储 mysql_asp.net实现存储和读取数据库图片
- JSP提交中文乱码的解决
- php set get 作用_浅谈PHP拦截器之__set()与__get()的理解与使用方法
- BOSS直聘数据采集、解析处理、分析与可视化实战
- 基于易智瑞(ArcGIS)JavaScript API的视频融合探索
- python 爬取图片网站图片链接并下载收集
- 微信小程序之如何注册微信小程序
- 用matlab拟合多元函,使用matlab进行多元非线性拟合的方法
- 单位组织机构代码提取和补零操作
- Linux基本指令初阶
- java continue语句_Java continue 语句
- 虚拟机 邮箱服务器,虚拟机邮箱服务器设置密码
热门文章
- CPCI总线计算机软件无法运行,CPCI总线计算机的加固设计研究.pdf
- Unicode 与前端字符编码全揭秘
- PCA9540BDP 电子元器件 封装MSOP8 批次21
- 一个使用javafx编写电子相片管理程序
- jpg图片怎么转换为CAD图纸?简单几步教你操作
- 替换word中英文““为中文双引号“”,且保持西文为Time NewRome
- 计算机三级网络技术ppt介绍,计算机三级网络技术课件.ppt
- Win10系统笔记本耳机没有声音而外放却有
- eclipse安装后,出现“can not create the java virtual machine”错误的另一种原因和解决方案
- 126页5万字智慧园区建设方案