电子科学与技术

单片机按键扫描数码管显示C语言程序

按键扫描数码管显示程序共定义了6个键的功能:K1、K2、K3、K4以及K5、K8组成的一对复合键,其中K2,K3为连击键,K5为上档键。在正常工作模式下按K1则切换至状态,在设定模式下按K1键循环选择4个数码管中的某个,被选中的数码管闪烁,此时单按K2键显示数值加1;常按K2显示数值以一定速度递增,同时数码管停止闪烁,当K2松开,数码管恢复闪烁,显示数值停留在K2松开前的值上。K3完成的功能和K2类似。其完成减操作。这2个键只有在设定状态才有效,可以有效防止误操作。K4为确认键,按下该键回到正常显示状态,所有指示灯熄灭,数码管显示刚刚设定的数值。K5+K8这对复合键执行复位操作,任何情况下同时按下K5和K8或先按下K5再按下K8,所有数码管的显示全为0,指示灯全灭,进入正常显示状态。同时程序还对如下几个异常操作进行了处理:

1. 2个或多个功能键同时按下

2. 一个功能键按下未释放,又按另一个功能键,然后再松开其中一个功能键

3. 先按下功能键再按下上档键

4. 多个上档键和一个功能键同时按下,此时不做处理。等到松开其他上档键,只剩下一个上

5. 档键和一个功能键时才执行这对复合键;或松开所有上档键,处理单一功能键。 /*******************************************************************************/

#include

#include

#define uchar unsigned char

#define uint unsigned int

#define RCtrl 0x20 //定义上挡键 第5键

#define RConti 0xfe //定义连击键 第6键

#define N 2 //去抖年龄下限

#define MaxRate 50 //重复前的延迟值 600ms

#define MinRate 20 //重复速度 240ms

#define leddark 83 //闪烁时灭时间1s

#define ledshow 83 //闪烁时亮时间1s

#define decimal 0x80 //小数点的段数

#define KEY_DDR DDRC

#define KEY_PORTO PORTC

#define KEY_PORTI PINC

#define OUT 0x3f

#define IN 0xc0

#define KeyValue 0x3f

#define LEDD_DDR DDRB

#define LEDD_PORTO PORTB

51单片机c语言按键扫描程序,单片机按键扫描数码管显示C语言程序相关推荐

  1. 51单片机矩阵按键详解,两位数码管显示(普中HC6800ESV2.0)

    一.简述 本人是一名在校生,这个学期刚好在学单片机,自己也挺有兴趣,前面在写数码管.时钟啥的程序时都没什么大问题,但是做到矩阵按键时碰到了一些问题,不过已经解决,下面我会把碰到的问题和解决方法都写出来 ...

  2. 基于51单片机PWM(即脉冲宽度调制)调速数码管显示测速L298M芯片控制直流电机正反运转的项目

    基于51单片机PWM(即脉冲宽度调制)调速数码管显示测速L298芯片控制直流电机正反运转的项目 一.前言 1.基于51单片机PWM(即脉冲宽度调制)调速数码管显示测速L298芯片控制直流电机正反运转的 ...

  3. c语言让数码管显示时间,请问51单片机肿么编写程序让8个数码管显示时间(时分秒)...

    //*******时间程序**************// //*******2010-7-14 00:31:39 *******// //******* Z X C **************** ...

  4. 4x4矩阵键盘工作原理及扫描程序_AVR单片机扫描4X4矩阵键盘并数码管显示程序

    /* program name :   keyboard ; 功能描述 :  扫描16个按键(4X4),并把键值显示在数码管上(两位); 要点 :  在扫描按键时运用了比较复杂的两个for()循环嵌套 ...

  5. 单片机数码管显示程序c语言,基于STC89C52单片机的动态数码管显示C语言程序

    * 实验说明 : 8位数码管显示0~F #include #define GPIO_DIG P0 //段选 #define GPIO_PLACE P1 //位选 //--定义全局变量--// unsi ...

  6. 基于51单片机电子秒表倒计时器proteus仿真程序原理图PCB数码管显示语言播报

    硬件设计 仿真图1: 计时功能,数码管显示 仿真图2 数码管LCD结合显示:具有多次记录模式: 仿真图3 数码管显示:具有时钟和秒表功能: 仿真图4 数码管显示:具有语音播报功能(这里采用示波器模拟, ...

  7. c语言键盘控制数码管显示,3*4矩阵键盘控制4位数码管显示的C程序

    这个很简单 ;******************************************************************************** ;*  标题:  伟纳电 ...

  8. 3641bs数码管C语言程序,树莓派控制3641BS数码管显示数字

    3641BS数码管是一个小LED显示器,可以显示4位数字和4个小数点.它是没有驱动的,使用它的方法就是控制每一个LED灯的亮起和熄灭.这个型号的数码管长这个样子: 硬件准备 树莓派 显像管 – 不是3 ...

  9. 单片机原理与应用技术(三)———动态数码管显示汇编语言

    一.数码管基础知识 1.数码管结构 一般数码管通常由八段LED灯组成,又分成共阳数码管和共阴数码管(如下图所示).共阴极数码管即为LED阴极连接在一起为公共阴极,共阳极数码光即为LED阳极连接在一起为 ...

最新文章

  1. Cell子刊:特异靶向病原菌致病力的植物天然产物的作用机制
  2. IC基础知识(1)集成电路(IC)简介
  3. SharePoint 2013 创建一个搜索中心和搜索设置
  4. 第二课时之python认识
  5. Xamarin提示Build-tools版本过老
  6. 以回调形式使用startActivityForResult方法,并解决Activity被回收的问题
  7. python jieba库用法
  8. MS SQL 模仿ORACLE的DESC
  9. win10系统用户访问ftp服务器被拒绝,关于windows2003下ftp用户名无法访问FTP服务器的问题...
  10. hadoop-hdfs-存储模型-架构模型-角色介绍
  11. 中断处理程序与中断服务例程
  12. Linux基础(用户身份和文件权限)
  13. C++提高部分_C++类模板对象做函数参数---C++语言工作笔记090
  14. diskgenius扩容c盘重启电脑卡住_用diskgenius更改分区参数的终止柱面,扩大C盘空间后...
  15. (黑苹果efi文件)B550-I Ryzen 9 5950X RX 5700 XT 黑苹果efi引导文件
  16. javascript中map和filter的区别
  17. PDF文件如何快速转换成Word文件?两个方法教你搞定
  18. 基于微信小程序公交查询系统设计与实现
  19. 发生死锁时自动发mail
  20. Mineflayer简介——Minecraft机器人

热门文章

  1. 解决阿里云存在未支付订单请支付或作废后再下单
  2. Mac下安装Tomcat7
  3. visio2013快速入门指南
  4. R语言--百度ECharts接口(echarts4r包)
  5. Lucene.Net 的“System.IndexOutOfRangeException: 索引超出了数组界限”错误
  6. 工程伦理课后习题参考答案(清华网课)
  7. Wamp以及其数据库的简单使用
  8. 解决PowerBuilder错误:unable to load the requested database interface please
  9. 基于vue-element-ui的一款表格设计器table-making
  10. html网页设计期末大作业——酒庄网页设计实例(5页)