当前位置: 首页 > 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();}
}

http://www.lryc.cn/news/41177.html

相关文章:

  • 软件质量保证与测试 课程设计 测试报告 缺陷报告撰写方法
  • vue2和vue3中路由的区别和写法?
  • 【数据结构】第四站:单链表力扣题(一)
  • SAP BPC简介
  • Linux网络概述
  • Mybatis --- 获取参数值和查询功能
  • 【C++】C++入门,你必须要知道的知识
  • spring(七):事务操作
  • Word怎么转换成PDF文件格式?思路提供
  • HCIE-Cloud Computing LAB备考第二步:逐题攻破--第五题:规划--根据网络平面规划表,完成ensp中接入交换机SW1/2的配置
  • 【无标题】Perforce研讨会回顾 | Helix Core在芯片行业的应用实例:芯片项目的版本控制、持续集成及自动化
  • AdamW 优化器
  • 手把手教你基于HTML、CSS搭建我的相册(上)
  • 基于Redis实现的延时队列
  • (3.16——3.19)本周后半段总结
  • C++ 基础: cin和getline() 有啥区别?
  • 在使用fastjson中遇到的问题
  • C++造轮子飙车现场之无锁、有锁环形队列实现
  • Spring Profiles and @Profile
  • 数据分析-数据探索
  • 7个最受欢迎的Python库,大大提高开发效率
  • Intellij IDEA 中调试 maven 插件
  • Java全栈知识(1)缓存池
  • 网络安全的特性
  • YOLOv8 多目标跟踪
  • Gitee搭建个人博客(Beautiful Jekyll)
  • 图形视图框架 事件处理(item)
  • PTA第六章作业详解
  • Java课程设计项目--音乐视频网站系统
  • FPGA可以转IC设计吗?需要学习哪些技能?