电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 蓝桥杯大赛省赛-单片机开发与设计

共3条 1/1 1 跳转至

蓝桥杯大赛省赛-单片机开发与设计

菜鸟
2019-01-24 11:49:09    评分

蓝桥杯大赛单片机开发与设计第三届省赛试题--自动售水机

功能简述

       通过竞赛硬件平台模拟小区自动售水机的工作流程:通过按键控制售水机水流出和停止;通过数码管显示费率、出水量及总费用;通过光敏电阻检测环境亮度,在亮度过低的情况下,自动开灯。系统硬件电路主要由单片机控制电路、数码管显示电路、AD转换电路及功能按键组成。系统框图如图1所示:

image.png


下面附上部分程序:

#include <STC15F2K60S2.H>
#include "iic.h"
unsigned char code smgduan[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0XFF};
unsigned char yi,er,san,si,wu,liu,qi,ba,duan[8];
unsigned char guangmin;
unsigned int ml,RMB;
unsigned char kai,guan,SMG;
unsigned char P30_S7,P31_S6;
void Delay1ms(unsigned int ms);
void Display1();
void Display2();
void Timer0Init(void);
void Key_Scan();
void GongNeng();
void main()
{
 P2=0XA0;P0=0X00;//关闭蜂鸣器和继电器
 P2=0X80;P0=0XFF;//关闭LED灯
 Timer0Init();
 while(1)
 {
  Display2();
  Display1();
  guangmin=IIC_Read(0x01);
  GongNeng();
  Key_Scan();
 }
}
void Display1()
{
 unsigned char a;
 for(a=0;a<8;a++)
 {
  P2=0XC0;
  P0=1<<a;  //0000 0001   0000 0100
  P2=0XFF;
  P0=duan[a];
  Delay1ms(1);
 }
 P2=0XC0; P0=0XFF;//消隐,解决最后一个数码管高亮度
 P2=0XFF; P0=0XFF;
}
void Display2()
{
 duan[0] = smgduan[yi];
 duan[1] = smgduan[er]&0x7f;
 duan[2] = smgduan[san];
 duan[3] = smgduan[si];
 duan[4] = smgduan[wu];
 duan[5] = smgduan[liu]&0x7f;
 duan[6] = smgduan[qi];
 duan[7] = smgduan[ba];
}
void Delay1ms(unsigned int ms)  //@11.0592MHz
{
 unsigned char i, j;
 _nop_(); _nop_(); _nop_();
 i = 11*ms;
 j = 190;
 do { while (--j); } while (--i);
}
void Timer0Init(void)  //1毫秒@11.0592MHz
{
 AUXR |= 0x80;  //定时器时钟1T模式
 TMOD &= 0xF0;  //设置定时器模式
 TL0 = 0xCD;  //设置定时初值
 TH0 = 0xD4;  //设置定时初值
 TF0 = 0;  //清除TF0标志
// TR0 = 1;  //定时器0开始计时
 
 ET0 = 1;
 EA = 1;
}
void Timer0() interrupt 1
{
 unsigned char tt;
 tt++;
 if(tt==10) { ml++; tt=0; }
}
void Key_Scan()
{
 if(P30==0) { P30_S7=1; }
 if(P31==0) { P31_S6=1; }
 
 if((P30_S7==1)&&(P30==1)) { kai=1; P30_S7=0; }
 if((P31_S6==1)&&(P31==1)) { guan=1; P31_S6=0; }
 
}
void GongNeng()
{
 if(kai==1)
 { TR0=1; P2=0XA0; P0=0X10; kai=0; SMG=0; }
 
 if(guan==1)
 { TR0=0; P2=0XA0; P0=0X00; guan=0; SMG=1; RMB=ml*0.5; ml=0; }
 
 if(SMG==0)
 { yi=11;er=0;san=5;si=0;wu=ml/1000;liu=ml%1000/100;qi=ml%100/10;ba=ml%10; }
 else if(SMG==1)
 { yi=11;er=0;san=5;si=0;wu=RMB/1000;liu=RMB%1000/100;qi=RMB%100/10;ba=RMB%10; }
  
 if(ml==9999) { guan=1;}
 
 if(guangmin<64) { P2=0X80;P0=0XFE; }
 else { P2=0X80;P0=0XFF; }
}

完整程序及参赛试题请参考下列文件:

第三届初赛-自动售水机.zip




关键词: 蓝桥     单片机     竞赛     开发     设计    

菜鸟
2019-01-24 11:53:00    评分
2楼

不足之处,请提出宝贵意见!



工程师
2019-03-01 21:44:28    评分
3楼

棒!点个赞,话说你这个帖子怎么发到51diy的板块去了。。我才看到


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]