当前位置: 首页 > news >正文

蓝桥杯真题——自动售水机

                                     2012年第四届全国电子专业人才设计与技能大赛
                                                       “自动售水机”设计任务书
1. 系统框图

接下来我们将任务分块:

1. 按键控制单元
设定按键 S7 为出水控制按键,当 S7 按下后,售水机持续出水(继电器接通,指示
L10 点亮)。设定按键 S6 为停水控制按键,当 S6 按下后,停止出水(继电器断开,
指示灯 L10 熄灭)。

# include "reg52.h" 
# include "iic.h"
# include "onewire.h"     
# include "ds1302.h"      
# include "intrins.h"		 //S7°´Ï£¬L10µãÁÁ¡£S6°´Ï£¬L10ϨÃð
sbit S7=P3^0;
sbit S6=P3^1;
sbit S5=P3^2;
sbit S4=P3^3;//ledµÆ
sbit L1=P0^0;
sbit L2=P0^1;
sbit L3=P0^2;
sbit L4=P0^3;
sbit L5=P0^4;
sbit L6=P0^5;void SelectHC573(unsigned char channel)
{switch(channel){case 4:P2 = (P2 & 0X1f) | 0x80;break;case 5:P2 = (P2 & 0X1f) | 0xa0;break;case 6:P2 = (P2 & 0X1f) | 0xc0;break;case 7:P2 = (P2 & 0X1f) | 0xe0;break;case 0:P2 = (P2 & 0X1f) | 0x00;break;}
}void Delay(unsigned int t)
{while(t--);
}void Scankey()
{SelectHC573(5);if(S7 == 0){Delay(500);if(S7 == 0){P0 = 0xff;}}if(S6 == 0){Delay(500);if(S6 == 0){P0 = 0x00;}}SelectHC573(0);
}void main()
{while(1){Scankey();}
}

2. 数码管显示单元
任务:
通过 4 位数码管 DS1 显示费率,单位为元/升,保留 2 位有效数字;
通过 4 位数码管 DS2 显示当前出水总量(出水时,单位为升)和总价(停止时,单
位为元):按下出水按键 S7 后,清除数码管 DS2 显示数据,数码管 DS2 实时显示出水
(保留两位有效数字),在出水状态下,再次按下 S7,不会影响出水状态,直到按下停
止按键 S6 为止;按下停止出水按键 S6 后,数码管 DS2 显示总价(保留两位有效数字)。

 这个也就是数码管显示,我们也是可以分来进行

当按下S7时:

当按下S6时:

系统说明:

1. 假定水价为 0.5 /升,出水速度为 100 毫升/秒;
2. 一次出水总量达到 99.99L 时,继电器自动断开,数码管显示 DS2 显示价格。

我们先来实现出水量,通过定时器来计数出水量,每100ml/s

# include "reg52.h"
# include "Scankey.h"
# include "iic.h"
# include "onewire.h"     
# include "ds1302.h"      
# include "intrins.h"		sbit S7=P3^0;
sbit S6=P3^1;
sbit S5=P3^2;
sbit S4=P3^3;/* ±äÁ¿ÉùÃ÷Çø */
unsigned char code SMG_duanma[18]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x80,0xc6,0xc0,0x86,0x8e,0xbf,0x7f};unsigned int count = 0;
unsigned int water_value = 0; //³öË®Á¿		 
unsigned int water_money = 0;
unsigned int water_count = 0;/* ³öË®Á¿¼ÆËã */void Init_Timer0() //¶¨Ê±50ms
{TMOD = 0x01;                    TH0 = (65536 - 50000) / 256;      TL0 = (65536 - 50000) % 256;ET0 = 1;                      EA = 1;                             TR0 = 1;                       
}void SeviceTimer0() interrupt 1
{//50ms £¬100ms¾Í¿ÉÒÔÔÚ×îºóTH0 = (65536 - 50000) / 256;TL0 = (65536 - 50000) % 256;count++;water_value = count/2;}void DelaySMG(unsigned int t)
{while(t--);
}/*************ÊýÂë¹Ü***********/
void DisplaySMG(unsigned char dat,unsigned int pos) //posλÖã¬datÄÚÈÝ
{SelectHC573(7);P0 = 0xff;SelectHC573(6);P0 = (0x01 << pos);SelectHC573(7);P0 = dat;SelectHC573(0);	}/******ÏÂÃæÉè¼ÆÁ½¸öÊýÂë¹ÜµÄÖµ£¬ÎÒÃǰÑÁ½±ß·Ö¿ª¼ÆË㣬ÎÒÃÇÏÈ¿´DS2   */void ShowSMG_DS2_Water()
{if(water_value<10){DisplaySMG(SMG_duanma[water_value],7);DelaySMG(300);}else if(water_value>=10 && water_value <100){DisplaySMG(SMG_duanma[water_value%10],7);DelaySMG(300);DisplaySMG(SMG_duanma[water_value/10],6);DelaySMG(300);}else if(water_value>=100 && water_value <1000){DisplaySMG(SMG_duanma[water_value%10],7);DelaySMG(300);DisplaySMG(SMG_duanma[water_value/10%10],6);DelaySMG(300);DisplaySMG(SMG_duanma[water_value/100],5);DelaySMG(300);}else if(water_value >= 1000){DisplaySMG(SMG_duanma[water_value%10],7);DelaySMG(300);DisplaySMG(SMG_duanma[water_value/10%10],6);DelaySMG(300);DisplaySMG(SMG_duanma[water_value/100%10],5);DelaySMG(300);DisplaySMG(SMG_duanma[water_value/1000],4);DelaySMG(300);}
}void main()
{Init_Timer0();Scankey();while(1){ShowSMG_DS2_Water();}
}

相关文章:

蓝桥杯真题——自动售水机

2012年第四届全国电子专业人才设计与技能大赛“自动售水机”设计任务书1. 系统框图接下来我们将任务分块&#xff1a; 1. 按键控制单元 设定按键 S7 为出水控制按键&#xff0c;当 S7 按下后&#xff0c;售水机持续出水&#xff08;继电器接通&#xff0c;指示 灯 L10 点亮&…...

软件质量保证与测试 课程设计 测试报告 缺陷报告撰写方法

测 试 报 告 2020年 6月 1日 测试项目 程序员 测试人 测试阶段&#xff1a; □集成 √系统 □ 测试日志编号清单 1,2,3,4,5,6,7,8,9,10 遗留错误说明&#xff1a;&#xff08;测试后仍然遗留下来未解决的错误及其说明&#xff09; 1.系统界面不够友好&…...

vue2和vue3中路由的区别和写法?

前言&#xff1a;Vue 2 和 Vue 3 中路由的主要区别在于使用的路由库不同。在 Vue 2 中&#xff0c;通常使用 Vue Router 作为路由库&#xff1b;而在 Vue 3 中&#xff0c;Vue Router 仍然是官方推荐的路由库&#xff0c;但也可以选择使用新的路由库 - Vue Router Next。下面分…...

【数据结构】第四站:单链表力扣题(一)

目录 一、移除链表元素 二、链表的中间结点 三、链表中倒数第k个结点 四、反转链表 五、合并两个有序链表 六、分割链表 一、移除链表元素 题目描述&#xff1a;力扣 法一&#xff1a;直接循环依次判断 对于这个题目&#xff0c;我们最容易想到的一种思路就是&#xff0c…...

SAP BPC简介

BPC是SAP在financial application领域主推的产品&#xff0c;由于从原有产品线发展而来&#xff0c;产品本身有两个版本&#xff0c;分别是基于MS OLAP平台和Netweaver OLAP平台。 整个系统分为.net前台和abap后台。由于abap端的数据结构与.net数据结构的差异&#xff0c;所以没…...

Linux网络概述

写咋前面 今天,我们需要初步的认识一下Linux中网络的基本原理,只有大家对这个有一个初步的认识,后面我们学习起来才会更加的简单容易.计算机语言知识那么多,但是Linux不是.面试时,面试官总是会有问题难住你,我们后面需要看看书,这一点非常重要.我们现在谈的是脉络,.是框架.这些…...

Mybatis --- 获取参数值和查询功能

一、MyBatis的增删改查 1.1、新增 <!--int insertUser();--> <insert id"insertUser">insert into t_user values(null,admin,123456,23,男) </insert> 1.2、删除 <!--int deleteUser();--> <delete id"deleteUser">dele…...

【C++】C++入门,你必须要知道的知识

1.C关键字 &#x1f525;前言&#xff1a; C是在C的基础之上&#xff0c;容纳进去了面向对象编程思想&#xff0c;并增加了许多有用的库&#xff0c;以及编程范式等。熟悉C语言之后&#xff0c;对C学习有一定的帮助。今天的主要目标&#xff1a; 1️⃣ 补充C语言语法的不足&…...

spring(七):事务操作

spring&#xff08;七&#xff09;&#xff1a;事务操作前言一、什么是事务二、事务四个特性&#xff08;ACID&#xff09;三、事务操作&#xff08;搭建事务操作环境&#xff09;四、事务操作&#xff08;Spring 事务管理介绍&#xff09;五、事务操作&#xff08;注解声明式事…...

Word怎么转换成PDF文件格式?思路提供

PDF是一种通用的文件格式&#xff0c;它可以在不同操作系统和设备上保持一致的显示效果。在日常工作或学习中&#xff0c;我们常常需要将Word文档转换为PDF格式&#xff0c;以便更好地进行分享、存档或打印&#xff0c;毕竟Word文档则往往会因为不同版本的软件或者字体等原因而…...

HCIE-Cloud Computing LAB备考第二步:逐题攻破--第五题:规划--根据网络平面规划表,完成ensp中接入交换机SW1/2的配置

我是第五题规划题目的要求之一,需要从这里跳转过来,没看过题目的彭友,可以先跳转过去哈 解题:根据网络平面规划表,在两台交换机上对应的端口表填写服务器的网口号,完成ensp中接入交换机SW1/2的配置 答案 完成交换机端口表 第一:心中划分好“服务器接口表”,考试不需…...

【无标题】Perforce研讨会回顾 | Helix Core在芯片行业的应用实例:芯片项目的版本控制、持续集成及自动化

2023年2月28日&#xff0c;龙智联合全球领先的数字资产管理和DevSecOps工具厂商Perforce共同举办Perforce on Tour网络研讨会——“赋能‘大’研发&#xff0c;助力‘快’交付”。 研讨会上&#xff0c;在芯片行业有15年经验的Perforce Helix Core深度用户——何刚了带来精彩演…...

AdamW 优化器

Adam 优化器于 2014 年推出&#xff0c;其思想&#xff1a;既然知道某些参数移动得更快、更远&#xff0c;则每个参数不需要遵循相同的学习率&#xff0c;因为最近梯度的平方代表每一个权重可以得到多少信号&#xff0c;可以除以这个&#xff0c;确保即使是最迟钝的权重也有机会…...

手把手教你基于HTML、CSS搭建我的相册(上)

The sand accumulates to form a pagoda写在前面HTML是什么&#xff1f;CSS是什么&#xff1f;demo搭建写在最后写在前面 其实有过一些粉丝咨询前端该从什么开始学&#xff0c;那当然是我们的前端基础三件套开始学起&#xff0c;HTML、CSS、javaScript&#xff0c;前端的大部分…...

基于Redis实现的延时队列

基于Redis实现的延时队列 针对于Redis实现延时队列有两种实现方式&#xff1a; 使用zset实现实现的延时队列 借助redis zset来实现延时队列&#xff0c;具体的实现代码很简单&#xff0c;就是从zset中取出score小于当前时间戳的数据 import cn.hutool.json.JSONUtil; impor…...

(3.16——3.19)本周后半段总结

周四&#xff08;3.16&#xff09; 1.封装了TitleTip组件&#xff0c;并写了博客记录 http://t.csdn.cn/DAY4chttp://t.csdn.cn/DAY4c2.菜单跳转配置完毕&#xff0c;进行了一些页面的细节样式修改 3.基本写完了ServerSideEncryption页面&#xff0c;十一点多剩最后一点交互的…...

C++ 基础: cin和getline() 有啥区别?

所谓温故而知新&#xff0c;所以时不时会回头来看看我们最最基础的知识。 获取标准键盘输入的方法有多种。以C语言来说&#xff0c;最常用的就是cin 和geline() 。那么它们之间有什么区别呢&#xff0c;我们总结一下。 一、cin和geline的异同点 在 C 中&#xff0c;cin 和 ge…...

在使用fastjson中遇到的问题

一、在使用fastjson中遇到的问题 导论&#xff1a;最近在写一个JavaFx项目的时候使用到了fastjson作为处理json数据的依赖。在其它非JavaFx项目中也使用到了相同版本的fastjson&#xff0c;但是可以正常运行&#xff0c;而在JavaFx项目中却报异常&#xff0c;刚开始以为是我的依…...

C++造轮子飙车现场之无锁、有锁环形队列实现

先看带锁的实现。 带锁版本 circular_queue.h // 头文件防卫 #ifndef CIRCULAR_QUEUE_H #define CIRCULAR_QUEUE_H#include <mutex> // 互斥量 #include <condition_variable> // 条件变量template <typename T> class CircularQueue { public:// 构造函数…...

Spring Profiles and @Profile

1. Overview In this tutorial, we’ll focus on introducing Profiles in Spring. Profiles are a core feature of the framework — allowing us to map our beans to different profiles — for example, dev, test, and prod. We can then activate different profiles…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序&#xff08;Program&#xff09; 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存…...

LangFlow技术架构分析

&#x1f527; LangFlow 的可视化技术栈 前端节点编辑器 底层框架&#xff1a;基于 &#xff08;一个现代化的 React 节点绘图库&#xff09; 功能&#xff1a; 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...