基于AT89C51单片机的倒数计时器设计

1.设计任务

利用AT89C51单片机为核心控制元件,设计一个简易的数字电压表,设计的系统实用性强、操作简单,实现了智能化、数字化。

本设计采用单片机为主控芯片,结合周边电路组成LED彩灯的闪烁控制系统器,用来控制红色的LED闪烁发光,实现LED灯在倒计时结束后闪烁,该LED灯控制器可以通过开始键来控制倒计时系统的开始然后可以通过暂停按键控制倒计时的中止暂停,再次按下按键后倒计时继续直到倒计时结束,随后红色LED灯闪烁。

2. 设计要求

2.1系统方案论证

根据设计任务,分析设计系统的组成,给出实现设计任务的几种方案,分析比较几种设计方案的优略,本着尽量以软件代替硬件,同时力求电路简单,工作可靠的原则,确定总体设计方案。

2.2系统硬件电路设计

根据系统设计方案进行软、硬件的分配,软、硬件设计分别进行。硬件设计包括单片机最小系统和扩展接口及配置,硬件结构在设计时要选择合适的元器件,硬件电路要简洁、工作可靠,需用Proteus绘制整个系统的电路仿真原理图。

2.3软件设计

根据该系统要求的功能进行软件设计,简述软件的功能,并根据每个模块的功能绘制软件流程图,根据流程图编写程序并汇编调试通过;列出软件清单,软件清单要求加以注释。

#include <REGX52.H>
#include <INTRINS.H>
// delay模块
void delay(unsigned int xms)
{unsigned char i, j;while (xms > 0, xms--){i = 2;j = 239;do{while (--j);} while (--i);}
}// END delay模块void nixie(unsigned char location, i)
{switch (location){ // 0是灭case 1:P2_0 = 1;P2_1 = P2_2 = P2_3 = 0;break;case 2:P2_1 = 1;P2_0 = P2_2 = P2_3 = 0;break;case 3:P2_2 = 1;P2_0 = P2_1 = P2_3 = 0;break;case 4:P2_3 = 1;P2_0 = P2_1 = P2_2 = 0;break;}P0 = ~nixienum[i];delay(1);   //显示一段时间P0 = ~0x00; //段码清0,消影
}
// END 数码管显示模块// START LED部分
sbit Led = 0xB1;      // P3_1//LED端口:
void Led_Delay500us()
{unsigned char i;_nop_();i = 247;while (--i);
}void Led_Time(unsigned int ms)
{unsigned int i;for (i = 0; i < ms * 2; i++){Led = !Led;Led_Delay500us();}
}
// END LED部分// START 初始化函数
void init(int i, int j)
{nixie(3, i);nixie(4, j);
}
// END 初始化函数// START 判断按键按下     //由于是模拟软件,delay不需要很高,这里的可以再调低点
unsigned char key()
{unsigned char KeyNumber = 0;if (P1_3 == 0){delay(10);while (P1_3 == 0);delay(10);KeyNumber = 4;}if (P1_4 == 0){delay(10);while (P1_4 == 0);delay(10);KeyNumber = 5;}return KeyNumber;
}
// END 判断按键按下//暂停的原理是,k4按下,然后while卡滞,while内按键判断,再次按下k4继续,
int timeSecond = 30; //倒数的秒数
int flag = 1;        //用于暂停部分,第一次按下变0(代表触发暂停),第二次按下再变1(代表当前次暂停结束)// START 数码管显示函数
void show()
{if (timeSecond < 10){nixie(3, 10);nixie(4, timeSecond);}else{nixie(3, timeSecond / 10); //取二位秒数第一位,十位nixie(4, timeSecond % 10); //取二位秒数第二位,个位}
}
void display()
{for (timeSecond; timeSecond >= 0; timeSecond--){int i = 0;if (key() == 4){flag = 0;while (flag == 0){if (key() == 4)flag = 1;show();}}//这里每次show都会延时2毫秒(一次nixie一毫秒),那show出1秒,只要循环500次show就行// show其它部分也消耗时间,故再减少循环次数,此方法是为了视觉for (i; i < 25; i++){show();delay(38); //减去show内两次nixie消耗的}}
}
// END 数码管显示函数// START 主函数部分
void main()
{while (1){init(3, 0); //初始化if (key() == 5){display();init(3, 0);        //结束显示的时间Led_Time(3000); //显示完结到0时,3秒LED闪烁timeSecond = 30;}}
}
// END 主函数部分

完整代码点开链接私信  免费  获取。

【iBot机器人工作室的个人空间-哔哩哔哩】 https://b23.tv/ryUWVKa

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/235819.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

滴滴崩溃超过12小时,将本增笑?

从 2023 年 11 月 27 日晚上 10 点左右截止 2023 年 11 月 28 日上午 11点左右&#xff0c;目前滴滴出行包括网约车和共享单车等业务已经恢复正常。而此次全面的功能瘫痪持续了接近12小时&#xff0c;也是近年来滴滴出行瘫痪时间最长的一次故障。 2023 年以来&#xff0c;语雀崩…

基于单片机的蔬菜大棚温湿度控制系统

1&#xff0e;设计任务 利用AT89C51单片机为核心控制元件,设计一个节日彩灯门&#xff0c;设计的系统实用性强、操作简单&#xff0c;实现了智能化、数字化。 本系统通过SHT11传感器测量出大棚内的温湿度&#xff0c;并将温湿度电信号传至单片机AT89C51,单片机系统通过预先设…

Nginx配置文件全解析【深度剖析细节】

文章目录 &#x1f4a5; 简介&#x1f4ab; 基本结构&#x1f349; 事件处理器&#x1f96d; 配置分析&#x1f34f; 配置示例 &#x1f349; HTTP服务器&#x1f96d; 配置分析&#x1f34f; 配置示例 &#x1f349; 虚拟主机 &#x1f34a; 优化&#x1f354; 总结 &#x1f…

RK3568 android 13 内置 google GMS服务

需求&#xff1a;Android 系统在国外使用安装app很多需要gms服务&#xff0c;否则无法正常使用&#xff0c;所以出厂前必须要把GMS包集成进系统 1.下载gms包https://download.csdn.net/download/qq_46524402/88136401 2.解压gms包 并放到Android SDK根目录的vender文件夹下 3…

分享从零开始学习网络设备配置--任务4.3 使用动态路由RIPng实现网络连通

任务描述 某公司使用IPv6技术搭建企业网络&#xff0c;由于静态路由需要管理员手工配置&#xff0c;在网络拓扑发生变化时&#xff0c;也不会自动生成新的路由&#xff0c;因此采用IPv6动态路由协议RIPng实现网络连通&#xff0c;实现任意两个节点之间的通信&#xff0c;并降低…

软件工程 课后题 选择 查缺补漏

在一张状态图中只能有一个初态&#xff0c;而终态则可以没有&#xff0c;也可以有多个 所有的对象可以成为各种对象类&#xff0c;每个对象类都定义了一组 方法 通过执行对象的操作可以改变对象的属性&#xff0c;但它必须经过 消息 的传递 UML应用于 基于对象的面向对象的方…

【java+vue+微信小程序项目】从零开始搭建——健身房管理平台(1)项目搭建

项目笔记为项目总结笔记,若有错误欢迎指出哟~ 【项目专栏】 【java+vue+微信小程序项目】从零开始搭建——健身房管理平台(1)项目搭建 持续更新中… java+vue+微信小程序项目】从零开始搭建——健身房管理平台 项目简介Java项目搭建(IDEA)1.新建项目2.项目类型3.项目设置4…

【android开发-04】android中activity的生命周期介绍

1&#xff0c;返回栈 android中使用任务task来管理activity&#xff0c;一个任务就是一组存放在栈里的活动的集合&#xff0c;这个栈被称为返回栈。栈是一种先进先出的数据结构。当我们启动一个新的活动&#xff0c;他会在返回栈中人栈&#xff0c;并处以栈顶的位置&#xff0…

C# 用代码设置受保护的Excel

写在前面 在导出Excel文件的时候&#xff0c;为了防止文件内容被篡改&#xff0c;这时候就需要对Excel设置工作簿保护和工作表保护&#xff0c;本文使用的是Spire.XLS的免费版本来实现&#xff0c;免费版本是受限的&#xff0c;但是一般情况下已经够用了。 通过NuGet引入Free…

使用npm发布typescript包

使用npm发布typescript包 什么是NPM NPM&#xff08;节点包管理器&#xff09;是 JavaScript 编程语言的默认包管理器。NPM 注册表是一个公共存储库&#xff0c;充当存储和分发 JavaScript 包的中心枢纽。它允许开发人员轻松安装、管理和共享可重用的 JavaScript 代码包&…

RNN:文本生成

文章目录 一、完整代码二、过程实现2.1 导包2.2 数据准备2.3 字符分词2.4 构建数据集2.5 定义模型2.6 模型训练2.7 模型推理 三、整体总结 采用RNN和unicode分词进行文本生成 一、完整代码 作者在文章开头地址中使用C实现了这一过程&#xff0c;为了便于理解&#xff0c;这里我…

智跃人力资源管理系统 SQL注入漏洞复现

0x01 产品简介 智跃人力资源管理系统是基于B/S网页端广域网平台&#xff0c;一套考勤系统即可对全国各地多个分公司进行统一管控&#xff0c;成本更低。信息共享更快。跨平台&#xff0c;跨电子设备 0x02 漏洞概述 智跃人力资源管理系统GenerateEntityFromTable.aspx接口处存在…