实验: 用数码管的前两位显示一个十进制数,变化范围为00-59,开始时显示00。每按下S2键一次数值加一;每按下S3键一次数值减一;每按下S4键一次数值归零;按下S5键一次,利用定时器功能使数值开始自动每秒加一,再次按下S5键数值停止自动加一,保持显示原数。

程序:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit key1=P3^4;
sbit key2=P3^5;
sbit key3=P3^6;
sbit key4=P3^7;
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5c,0x79,0x71};
void delayms(uint x);
uchar numt0,num;//num0为中断次数
uint i,j;
void display(uchar numdis)
{
uchar shi,ge;
shi=numdis/10;
ge=numdis%10;
dula=1;
P0=table[shi];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delayms(500);
dula=1;
P0=table[ge];
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delayms(500);
}
void delayms(uint x)
{
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
}
void keyscan()
{
if(key1==0)
{
  delayms(40);
  if(key1==0)
  {
   num++;
   if(num==60)
    num=0;
   while(!key1);
  }
}
if(key2==0)
{
  delayms(40);
  if(key2==0)
  {
   if(num==0)
    num=60;
    num--;
   while(!key2);
    }
}
if(key3==0)
{
  delayms(40);
  if(key3==0)
  {
   num=0;
   while(!key3);
  }
}
if(key4==0)
{
  delayms(40);
  if(key4==0)
  {
   while(!key4);
   TR0=~TR0;
  }
}
}
void main()
{
init();
while(1)
{
  keyscan();
  display(num);
}
}
void T0_time() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
numt0++;
if(numt0==20)
{
  numt0=0;
  num++;
  if(num==60)
   num=0;
}
}

独立键盘检测 proteus仿真小实验相关推荐

  1. proteus矩阵按键计算机,矩阵键盘检测Proteus仿真电路图这里将16个按键按照4*4排列...

    该按钮可以说是51单片机项目开发的重要组成部分,是51单片机IO端口输入的重要方式.我们可以通过按下按钮来控制微控制器执行相应的程序,以获得所需的效果. 51单片机的键输入主要有两种.一种是独立密钥. ...

  2. 蓝桥杯实验4--按键之独立键盘(proteus仿真)

    开始试试按键的部分 首先说一下什么是按键 按键分为按结构可分为触点式和无触点式两类.开发板上用的是触点式的按键.按键在接口上分类可分为编码键盘和非编码键盘.按键通常使用机械式触点式按键开关,但是由于机 ...

  3. 基于stm32单片机有害气体监测检测Proteus仿真(仿真+源码+全套资料)

    资料编号:097 检测当前的有害气体浓度,LCD1602显示,并且可以自动打开关闭风扇,也可以通过手动按键打开关闭风扇通风,全套资料齐全,具体功能请看下面演示视频 97-基于stm32单片机有害气体监 ...

  4. Proteus仿真小闹钟_C51

    Proteus仿真小闹钟_C51 简介 介绍 功能 演示 注意问题 多文件结构 结构体 AT24C02 仿真时序 主要代码 简介 这个小假期被作业支配了,最近这段时间也在忙其他东西,没时间更新博客了. ...

  5. 基于stm32单片机的甲醛气体检测proteus仿真(源码+仿真+参考论文)

    资料编号:056 检测当前的甲醛气体浓度,LCD1602显示,并且可以自动打开关闭风扇,也可以通过手动按键打开关闭风扇通风,全套资料齐全,具体功能请看下方演示视频 56-基于stm32单片机的甲醛气体 ...

  6. 51单片机(五)独立键盘检测与矩阵键盘检测

    独立键盘检测与矩阵键盘检测 一.独立键盘检测 1.工作原理 2.举例 2.1 位定义 2.2 数码管显示 3.3 按键 2.4 中断服务函数 2.5 完整程序 二.矩阵键盘检测 1.工作原理 2.程序 ...

  7. 基于stm32单片机有害气体监测检测Proteus仿真

    资料编号:097   下面是相关功能视频演示: 97-基于stm32单片机有害气体监测检测Proteus仿真(仿真+源码+全套资料) 功能介绍:检测当前的有害气体浓度,LCD1602显示,并且可以自动 ...

  8. VAE逻辑整理及VAE在异常检测中的小实验(附代码)

    VAE逻辑整理及VAE在异常检测中的小实验(附代码) Variance和control variate 两种常见的分类器 相应代码 Minst数据集的训练和重构 KDD99数据  本文主要讲解一下整个 ...

  9. 基于51单片机多路温度检测proteus仿真 ds18b20

    本设计是基于51单片机多路温度检测proteus仿真_ds18b20(仿真+程序+原理图) 仿真图proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:C0042 ...

  10. 1430基于51单片机的管道压力检测及泄漏检测Proteus仿真

    [前言] hello 大家好,今天给大家讲一讲基于51单片机的管道压力检测及泄漏检测Proteus仿真. 该项目的功能如下: 1.LCD1602液晶实时显示当前始端和末端压力,压力阈值 2.按键启动/ ...

最新文章

  1. 注意力机制Q K V
  2. 《Netty 实战》Netty In Action中文版 第2章——你的第一款Netty应用程序(一)
  3. Definition of BPS (基点)
  4. Python 函数式编程,Python中内置的高阶函数:map()、reduce()、filter()与sorted(),Python中返回函数
  5. Eclipse使用TODO标签管理任务及自定义TODO标签
  6. 【Flink】Flink Max 和 MaxBy的区别
  7. [网络收集]LINUX磁盘挂载mount和共享
  8. CC2540开发板学习笔记(五)——串口通信
  9. android中常用的宏,iOS-开发中常用的宏有哪些?
  10. Android面试题整理
  11. tomcat内存溢出的解决方法
  12. 写一个VSCode插件
  13. 以读者角度走进RFID打造的智慧图书馆
  14. sendcloud php 群发,laravel5.5 使用sendcloud发送邮件
  15. MySQL被黑客攻击勒索5000美元,幸好有备份
  16. AI医学诊断基础-CT扫描、核磁共振成像(MRI)、拍X光、拍胸片、做B超/彩超等常规检查的介绍、原理、医学影像示例(持续跟新和答疑。。。)
  17. 咸鱼ESP32实例—RTC
  18. Win32之ShowWindow
  19. Mybatis源码基础解析
  20. hive之反斜杠导致Unicode编码字段里的中文无法正常显示

热门文章

  1. DCM protocol Diagnostic session
  2. Floating IP
  3. 罗马盘、大力盘、大圣盘等搜索网站,简单绕过付费
  4. php dingo和jwt,Laravel5.5+dingo+JWT 开发后台 API
  5. matlab里det函数的神奇bug
  6. lua菜鸟教程_lua经典学习教程.pdf
  7. backtrace和backtrace_symbols函数原理解析
  8. LeetCode | 521. Longest Uncommon Subsequence I
  9. DTL常用过滤器详解
  10. 合同计算问题的计算公式与计算方法