基于清翔QX-MCS51单片机的模拟定时炸弹,可用于wargame下场,可为其定制一个Molle套件将其挂载于战术背心之上。目前功能基本完成,能设置8档倒数时间。自定义倒数时间以及蜂鸣器加速响鸣功能尚未完善。键盘扫描、数码管显示等函数皆摘自清翔单片机实验例程。

小白第一次写博客还不太懂,有什么不对的还望大佬海涵。

​//可设定定时炸弹程序
//功能:
//按S6~13选择时间,分别为30、60、90、120、150、180、210、240秒
//只需按一次时间选择键,随后按S2以启动,将自动倒计时
//倒计时结束后爆炸,请在安全区域操作,否则会有生命危险#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit BEEP = P2^3;//蜂鸣器低电平有效
sbit WE = P2^7;//数码管位选
sbit DU = P2^6;//数码管段选
uchar KeyValue = 0;//按键值//共阴数码管段选表0-9
uchar  code tabel[]= {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F,};void delay(uint z)//毫秒级软件延时
{uint x,y;for(x = z; x > 0; x--)for(y = 114; y > 0 ; y--);
} //数码管动态显示函数,最高显示255
void display(uchar i)
{uchar bai, shi, ge;bai = i / 100; //236 / 100  = 2shi = i % 100 / 10;   //236 % 100 / 10 = 3ge  = i % 10;//236 % 10 =6//第一位数码管       P0 = 0XFF;//清除断码WE = 1;//打开位选锁存器P0 = 0XFE; //1111 1110WE = 0;//锁存位选数据DU = 1;//打开段选锁存器P0 = tabel[bai];//DU = 0;//锁存段选数据delay(5);//第二位数码管P0 = 0XFF;//清除断码WE = 1;//打开位选锁存器P0 = 0XFD; //1111 1101WE = 0;//锁存位选数据DU = 1;//打开段选锁存器P0 = tabel[shi];//DU = 0;//锁存段选数据delay(5);//第三位数码管P0 = 0XFF;//清除断码WE = 1;//打开位选锁存器P0 = 0XFB; //1111 1011WE = 0;//锁存位选数据DU = 1;//打开段选锁存器P0 = tabel[ge];//DU = 0;//锁存段选数据delay(5);
}//键盘扫描函数。键值从左到右从上到下从0开始以1递增
void KeyScan()
{//4*4矩阵键盘扫描P3 = 0XF0;//列扫描if(P3 != 0XF0)//判断按键是否被按下{delay(10);//软件消抖10msif(P3 != 0XF0)//判断按键是否被按下{switch(P3) //判断那一列被按下{case 0xe0:  KeyValue = 0;  break;//第一列被按下case 0xd0:    KeyValue = 1;  break;//第二列被按下case 0xb0:    KeyValue = 2;  break;//第三列被按下case 0x70:    KeyValue = 3;  break;//第四列被按下 }P3 = 0X0F;//行扫描switch(P3) //判断那一行被按下{case 0x0e:KeyValue = KeyValue;break;//第一行被按下case 0x0d:KeyValue = KeyValue + 4;break;//第二行被按下case 0x0b:KeyValue = KeyValue + 8;break;//第三行被按下case 0x07:KeyValue = KeyValue + 12;break;//第四行被按下 }while(P3 != 0X0F);//松手检测   }}P3 = 0XFF;//独立按键扫描if(P3 != 0XFF){delay(10);//软件消抖10msif(P3 != 0XFF){switch(P3) //判断那一行被按下{case 0xfe:   KeyValue = 16; break;//S2被按下case 0xfd: KeyValue = 17; break;//S3被按下case 0xfb: KeyValue = 18; break;//S4被按下case 0xf7: KeyValue = 19; break;//S5被按下 }while(P3 != 0XFF);//松手检测            }   }
}//定时器0初始化
void timer0Init()
{TR0 = 1;   //启动定时器0TMOD = 0X01; //定时器工作模式1,16位定时器计数模式TH0 = 0x4b;//(65535-46082)/256 高八位TL0 = 0xfd; //(65535-46082)%256 定时50ms,50ms=50000μs 50000/1.085=46082 低八位
}void main()//主函数,负责倒计时、数码管显示、蜂鸣器提示
{   uint TimeInput = 0;//键盘输入按键值uchar mSec, Sec;//毫秒和秒储存变量while(KeyValue!=16){KeyScan();switch(KeyValue){case 0:TimeInput = 30; break;//半分钟case 1:TimeInput = 60; break;//一分钟case 2:TimeInput = 90; break;//一分半case 3:TimeInput = 120; break;//两分钟case 4:TimeInput = 150; break;//两分半case 5:TimeInput = 180; break;//三分钟case 6:TimeInput = 210; break;//三分半case 7:TimeInput = 240; break;//四分钟default:KeyValue = 16;//强制S2以开始倒计时}}KeyValue = 16;/*主要过程,倒计时*/timer0Init();//定时器0初始化while(1){if(TF0 == 1)//判断是否溢出{TF0 = 0;//软件清零溢出标志位TH0 = 0x4b;TL0 = 0xfd; //定时50msmSec++;//50ms到if(mSec == 20){mSec = 0;Sec++;//1秒时间到BEEP = 0;delay(50);BEEP = ~BEEP;}                 }display(TimeInput-Sec); //数码管显示函数if(Sec > TimeInput)//倒计时结束{Sec = 0;//秒清零 BEEP = 0;//长鸣WE = 1;//打开位选锁存器P0 = 0X00; //选通所有数码管WE = 0;//锁存位选数据DU = 1;//打开段选锁存器P0 = 0Xff;//全亮DU = 0;//锁存段选数据while(1);}}
}  ​

【单片机小白屑作】基于清翔QX-MCS51单片机的精简版定时炸弹相关推荐

  1. 单片机小白学步系列(三) 偶遇51单片机

    单片机有很多种,比较常见的有51单片机,AVR,MSP430,PIC,STM32等.现在我将从比较简单易学的51单片机说起,带领大家进入单片机的精彩世界. 20世纪80年代美国Intel公司推出MCS ...

  2. 清翔电子51单片机PWM理解

    /********************************************************************************* * [编写时间]: 2014年3月 ...

  3. 两位动态数码管电子秒表c语言,清翔电子51单片机6课动态显示数码管作业秒表...

    单片机数码管电子钟单片机数码管电子钟单片机数码管电子钟单片机数码管电子钟单片机数码管电子钟单片机数码管电子钟单片机数码管电子钟单片机数码管电子钟单片机数码管电子钟 相关下载链接://download. ...

  4. 清翔电子51单片机小结——可调表时钟

    /*******************************/ //让后4位数码管以0.01秒速度从0到9999显示 //按下S2开始跑数 按下S3停止跑数 //按下S4选择时钟的时分秒哪一位 按 ...

  5. 【计算机毕设之基于python的漏洞扫描检测系统精简版-哔哩哔哩】 https://b23.tv/w6ryWlY

    在漏洞泛滥的今天,互联网安全倍受挑战.只有合理配置设备,关掉不必要口和服务,及时了解最新安全动态,打好漏洞补丁加固系统,才能最大限度的减少因漏洞隐患而造成被黑客非法入侵而造成的不必要损失.主要解决内容 ...

  6. 单片机小白学步系列(九) 用万用焊板搭建实验电路

    这一篇我们继续上篇的话题,讲解自己搭建电路的另一种方法:用万用焊板搭建电路.在此之前,先普及几点基础知识. 1.电路板 首先我们了解下电路板.前面介绍了面包板可以搭建电路,但是在实际制作出来的电子设备 ...

  7. 单片机小白学步系列(十三) 点亮第一个LED——好的開始,成功的一半

    前面介绍了非常多概念知识.做了非常多准备工作,从这一节開始,我们正式開始单片机的学习.我们将使用单片机完毕一项非常easy的工作:点亮一个发光二极管(即LED:Light-Emitting Diode ...

  8. 单片机小白学步系列(二十三) IO口原理知识补充:双向IO口、互补推挽、高阻态

    由于之前考虑不周,本篇在IO口原理知识的基础上,进一步补充一些知识. ================================================= 双向IO口的输出:互补推挽 在 ...

  9. 单片机小白学步系列(二十一) IO口:基本的LED和按键操作

    本篇我们先介绍最基础的几个IO口操作.学完本篇,大家要能自己独立完成下面几个实验. 1.点亮LED 2.一个按键控制LED,按下灯亮,释放灯灭 3.两个按键控制一个LED,一个键开灯,一个键关灯 实验 ...

  10. 单片机小白学步系列(二十) IO口原理

    IO口操作是单片机实践中最基本最重要的一个知识,本篇花了比较长的篇幅介绍IO口的原理.也是查阅了不少资料,确保内容正确无误,花了很长时间写的.IO口原理原本需要涉及很多深入的知识,而这里尽最大可能做了 ...

最新文章

  1. WPF 提供了以下关键帧动画类[msdn]
  2. 当当网新用户注册界面——JS代码
  3. mysql索引组织结构_MySQL中创建及优化索引组织结构的思路(3)
  4. resource.arsc二进制内容解析 之 RES_TABLE_TYPE_TYPE (Config List)
  5. You must supply a resourceID for a TextView
  6. Asp.net中实现同一用户名同时登陆,注销先前用户(转)
  7. signal软件如何退出账号_超好用的手机视频剪辑软件Videoleap内购分享
  8. Catch That Cow【广搜】
  9. 利用truffle与智能合约进行交互
  10. python自带的解释器叫什么_什么是Python解释器?Python解释器有哪些?
  11. 外卖红包小程序0基础搭建附教程+源码
  12. 基于SEIRD和元胞自动机(CA)模型的传染病发展趋势预测
  13. 外地人排北京新能源指标需要什么条件?需要摇号吗?
  14. 0CTF/TCTF2019 Ghost Pepper Writeup
  15. 在苹果Macbook Pro上安装Windows 7
  16. GEE系列:第 1 单元 Google 地球引擎简介
  17. Python语法练习
  18. 谈谈WebService开发-基础篇
  19. Mybatis 解决数据库字段名和实体类属性名不一致问题
  20. 机器学习入门基础(一)

热门文章

  1. 计算机网络实用技术教程txt,计算机网络实用技术教程
  2. Centos7解压Zip文件
  3. pywinauto实现微信消息自动发送
  4. python文件操作--写入文件
  5. 所谓“卡常数”的常数到底指什么?
  6. mysql身份证校验码_MySql整理篇之身份证提取生日性别
  7. 工业产品表面缺陷检测方法——综述
  8. 计算机cad图块,CAD图块的操作及概念
  9. Java-基于百度API的图片文字识别(支持中文,英文和中英文混合)【收藏】
  10. springboot简历制作