右键上拉回来:

  • 1、写在前面的话
  • 2、问题解决思路
    • 01 整体分析
    • 02 独立按键单元
    • 03 数码管显示单元
    • 04 AD转换单元
  • 3、备注

1、写在前面的话

整理下之前蓝桥杯比赛的代码吧,里面其实很多设计的思路,难能可贵,有机会把STM32的也整理下,可以的话把这些比赛其中的几个题目使用ARM-A的S5PV210来实现。


2、问题解决思路


01 整体分析

开发51单片机的时候,使用之前的那个模板(IAP15芯片),提高开发的效率,这个模板之前有,就不说了,以后直接使用,这次用的是矩阵键盘来写的,实现的功能是一样的,有时间会把独立按键的也弄好。


02 独立按键单元

问题:
S7为出水控制按键,按下后,售水机持续出水(继电器接通,指示灯L10点亮)。
S6为停水控制按键,按下后,停止出水(继电器断开,指示灯L10熄灭)。

设计:整个题目只用到了两个按键,S7和S6,这两个独立按键就可以实现了,但还是用矩阵键盘先用下,因为比赛一般考的是矩阵键盘。模板中也实现了矩阵键盘的状态机检测,大概就是通过定时器和按键状态变量来进行判断。我们只需要在相应的while内的case下写某个按键按下后的处理程序。

备注:
01 继电器的断开和接通如何理解?题目说继电器接通的时候L10是点亮的,既然点亮,那么m2就会和K1进行接通,这个接通导致L10两端有电位差,会亮。因此,我们得出一个结论,当继电器接通的时候,m2和K1是接通的。此时继续分析,N_RELAY应该是0,对应P04应该是1。
02
出水:P2=0xa0;relay=1;buzzer=0;P2=0x00;
停水:P2=0xa0;relay=0;buzzer=0;P2=0x00;


03 数码管显示单元

问题:
01 通过4位数码管DS1显示费率,单位为元/升,保留2位有效数字;
02 通过4位数码管DS2显示当前出水总量(出水时,单位为升)和总价(停止时,单位为元):
按下出水按键S7后,清除数码管DS2显示数据,数码管DS2实时显示出水量(保留两位有效数字),在出水状态下,再次按下S7,不会影响出水状态,直到按下停止按键 S6 为止;
按下停止出水按键S6后,数码管DS2显示总价(保留两位有效数字)。
03 假定水价为0.5 元/升,出水速度为100毫升/秒。
04 一次出水总量达到99.99L时,继电器自动断开,数码管显示DS2显示价格。

示例:

分析:
01 数码管显示一半在定时器里面使用扫描的方式,按键是10ms一次判断,数码管是3ms一次扫描。

// 扫描的标准代码
P2=0xc0;P0=0;P2=0;    // 消除数码管残影
P2=0xe0;P0=~smg_du[i];P2=0;
P2=0xc0;P0=smg_wei[i];P2=0;  // 位选择循环,全部显示出来
i++;
if(i==8) i=0;

02 数码管DS1显示费率,单位为元/升,保留2位有效数字,因为费率是固定的,这个部分是没有任何改动的。因此,只需要给对应的显示数组附上相应的变量就好了,这里我们定义一个显示的数组on_display就是用来显示,出水的时候的数码管数据的,同理,关闭的时候,也定义一个数码管显示数组off_display。

03 后面的四位DS2是用来显示出水量的,故需要定义一个出水量变量water_v,这个变量需要使用unsigned int的类型,一开始初始化为0就好了,分析每一秒增加0.1L,这样0.1s就只增加0.01L。所以,我们可以使用0.1s来进行定时,这种定时可以显示到数码管DS2的最后一位。增长的时候比较有动感,在定时器中使用每100ms进行判断,到时之后清零,并给water_v进行加0.01的操作。

04 比较糟糕的是,我们变量一般都会用正数,小数显示的时候会比较麻烦,因此,可以做个灵活的变化,原先1秒对应0.1L,我们就可以使用,相当于定义一个四位数,然后每一秒+10即可,直到最大的99.99,但是这样第四位不会变化,为此,可以转化为0.1秒对应0.01L,也就是每一秒+1就行了。

05 价格方面,直接乘以0.5就好了,因为这个四位数,实际是以ml为单位的,显示的时候是用L为单位。相对应的关系,乘以0.5的时候,是以ml为单位的,显示的时候还是用L为单位。


04 AD转换单元

问题:
通过光敏电阻RD1和AD转换芯片PCF8591组成的亮度检测电路(亮度值转换为PCF8591光敏电阻通道的电压)检测环境亮度;
当PCF8591光敏电阻通道输入电压小于1.25 V时, L1 点亮,大于1.25V时,L1熄灭。

分析:按照0~255对应0~5V,我们只需要将0~1.25V的对应值算出来,之后对读取的数据进行IF判断,就可以控制等来作显示信息了。


3、备注

01 其实难度不是很大,可能是因为前几届的原因了。
02 注意变量的声明,出水开关的控制变量,不同显示下的显示数组等。
03 源代码的注释版本和原题会一起上传上来。
04 之后有什么更新的,在继续补充到这里面来。


51单片机:蓝桥杯省赛自动售水机分析与完整设计相关推荐

  1. 蓝桥杯第三届初赛“自动售水机”设计任务书

    文章目录 蓝桥杯第三届初赛"自动售水机"设计任务书 Author:Luis Time:2022-04-06 Version:v1.0 说明 功能简述 具体代码 iic.c iic. ...

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

                                         2012 年第四届全国电子专业人才设计与技能大赛                                       ...

  3. 第十一届蓝桥杯省赛真题——单词分析

    第十一届蓝桥杯省赛真题--单词分析 单词分析: [问题描述] 小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组成,有些单词很长,远远超过正常英文单词的长度. 小蓝学了很长时间也记不住一 ...

  4. 蓝桥杯单片机第三届省赛自动售水机

    #蓝桥杯单片机省三自动售水机 提示:能力有限仅供参考 本人能力有限仅供新手使用,第一次发表博客难免有错误仅供参考. 提示:以下是本篇文章正文内容,下面案例可供参考 一.main.c 代码如下: #in ...

  5. 【蓝桥杯预备营集结五】第十三届蓝桥杯模拟赛 C/C++ 试题分析及解答

  6. 《蓝桥杯真题》:1.自动售水机

    自动售水机 功能简述: 设计任务及要求 实现代码 真题内容取自: 无语凝烟 功能简述: 通过竞赛硬件平台模拟小区自动售水机的工作流程,具体的:通过按键控制售水机水流出和停止:通过数码管显示费率.出水量 ...

  7. 蓝桥杯第3届省赛(单片机)_自动售水机

    蓝桥杯第3届省赛(单片机)_自动售水机 题目 这是2012年蓝桥杯的省赛的题目,也是单片机第一次加入蓝桥杯比赛系列,由于是初次加入蓝桥杯,所以这次比赛的自动售水机的题目(自动售水机)也比较简单,主要考 ...

  8. 蓝桥杯单片机省赛第三届初赛试题 自动售水机

    蓝桥杯单片机省赛第三届初赛试题 自动售水机 蓝桥杯单片机 原题如下 `` main.c代码如下 iic.c文件 iic.h文件 这是第一次写蓝桥杯的题目的代码,写的时候外设没有熟悉 花费了很多时间 感 ...

  9. 蓝桥杯单片机 自动售水机

    蓝桥杯单片机 自动售水机 题目要求 main.c #include <stc15f2k60s2.h> #include <absacc.h> #include <dela ...

最新文章

  1. 使用Jenkins自动远程调用压测机实现不同用户场景下的并发测试
  2. linux history 命令 shell历史记录显示 HISTSIZE
  3. 多媒体分析与理解_如何设计一个出色的数字多媒体展厅?
  4. 2020 年开发者生态报告:Python超越Java,Go、Kotlin强势崛起
  5. Android开发 - 掌握ConstraintLayout(一)传统布局的问题 1
  6. 海南可以禁燃油辆,东北不可以,因为冬天温度
  7. lisp弧度转度分秒_度分秒转弧度)
  8. Nginx反向代理RabbitMQ出现交换机和队列出现Not found The object you clicked on was not found; it may have been。。。
  9. php二次开发帝国,【使用说明】帝国cms万能通用api二次开发核心包
  10. 麦吉尔大学计算机科学申请,加拿大麦吉尔大学计算机科学硕士成功案例分享
  11. Vue中使用echarts,echarts 封装以及使用的事项
  12. 金属箔式应变片实验思考题
  13. yarn application -kill application_id yarn kill 超时任务脚本
  14. 设计模式-单例模式-注册式单例模式-枚举式单例模式和容器式单例模式在Java中的使用示例
  15. win11 右键菜单恢复成win10样式(亲测有效)
  16. 853计算机综合基础包括什么,2017年南京农业大学853计算机专业基础综合硕士研究生参考书目...
  17. 3d游戏成套模型素材网站合集看过来
  18. linux系统下查看cpu功耗,Linux系统下查看CPU信息
  19. 工具总结篇——vault
  20. 单线、三线和BGP服务器的区别

热门文章

  1. LCT(link-cut-tree)入门
  2. 毛驴之死”献给辛勤加班的程序猿
  3. 危险场景分类(NHTSA 37 Pre-Crash Scenarios)
  4. ArcGIS教程:什么是经验贝叶斯克里金法?
  5. 家庭影院.液晶电视.液晶电视连接电脑全功略续
  6. python自动调整格式快捷键_pycharm使用技巧之自动调整代码格式总结
  7. TCP报文段,关于确认号的相关问题解析
  8. 计算机办公软件应用试题汇编,《办公软件应用(Windows平台)Windows7、Office2010试题汇编》...
  9. 家用投影仪有哪些优缺点?帮你避雷!
  10. 采用计算机数控技术的自动控制系统为,终稿毕业论文:C6150车床主轴的加工数控工艺规程设计.docOK版(范文1)...