蓝桥杯单片机第四届

Posted 一心向月

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蓝桥杯单片机第四届相关的知识,希望对你有一定的参考价值。

全部文件:提取码:azxy
这一届太简单了,没啥好说的,直接看题目吧。

#include<STC15F2K60S2.h>
#include"intrins.h"
#include "iic.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit S7=P3^0;
sbit S6=P3^1;

u8 code duan[15]=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf,0xc1,0x8e,0xc6;

u8 model=1;
u8 money_ml=50;
u16 all_money=0;
u16 all_ml=0;
u8 count=0;
u8 flag=0;
u16 rd1=0;

void delay(u16 i)

	while(i--);

//============================定时器=========================//
void Timer0Init(void)		//5ms 12.000MHz

	AUXR |= 0x80;		
	TMOD &= 0xF0;		
	TL0 = 0xA0;		
	TH0 = 0x15;		
	TF0 = 0;		
	ET0 = 1;		
	EA=1;


void Srevice_T0() interrupt 1

	count++;
	if(count==20)
	
		count=0;
		all_ml++;
		all_money=all_ml*0.5;
	
	if(all_ml==9999)
	
		TR0=0;
		all_money=all_ml*0.5;
		model=2;
	

//==========================选择锁存器=======================//
void Chan_hc573(choose)

	switch(choose)
	
		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;
	


void Init_system()

	Chan_hc573(5);
	P0=0x00;
	Chan_hc573(4);
	P0=0xff;

//==========================数码管模块========================//
void Smg_display(u8 com,u8 dat)

	Chan_hc573(7);
	P0=0xff;
	Chan_hc573(6);
	P0=0x01<<com;
	Chan_hc573(7);
	P0=dat;


void Close_smg()

	Chan_hc573(6);
	P0=0x00;
	Chan_hc573(7);
	P0=0xff;

//===========================界面设置=========================//
void ML_Money()

	Close_smg();
	Smg_display(0,duan[10]); delay(1000);
	Smg_display(1,duan[0]+0x80); delay(1000);
	Smg_display(2,duan[money_ml/10]); delay(1000);
	Smg_display(3,duan[money_ml%10]); delay(1000);
	if(model==1)
	
		Smg_display(4,duan[all_ml/1000]); delay(1000);
		Smg_display(5,duan[(all_ml/100)%10]+0x80); delay(1000);
		Smg_display(6,duan[(all_ml/10)%10]); delay(1000);
		Smg_display(7,duan[all_ml%10]); delay(1000);
	
	else
	
		Smg_display(4,duan[all_money/1000]); delay(1000);
		Smg_display(5,duan[(all_money/100)%10]+0x80); delay(1000);
		Smg_display(6,duan[(all_money/10)%10]); delay(1000);
		Smg_display(7,duan[all_money%10]); delay(1000);
	
	Close_smg();

//===========================按键设置=========================//
void Key_Down()

	if(S7==0)
	
		delay(100);
		if(S7==0)
		
			while(S7==0) ML_Money();
			if(flag==0)
			
				TR0=1; all_ml=0; all_money=0;
				flag=1; model=1;
			
		
	
	if(S6==0)
	
		delay(100);
		if(S6==0)
		
			while(S6==0) ML_Money();
			flag=0; TR0=0; model=2;
		
	

//===========================继电器设置=========================//
void Relay_Set()

	if(flag==1)
	
		Chan_hc573(5);
		P04=1;
		P06=0;
	
	else
	
		Chan_hc573(5);
		P04=0;
		P06=0;
	

//===========================LED设置=========================//
void Led_Rd1()

	rd1=pcf8591(1);
	rd1=rd1/0.51;
	if(rd1<125)
	
		Chan_hc573(4);
		P00=0;
	
	else
	
		Chan_hc573(4);
		P00=1;
	

//===========================主函数==========================//
void main()

	Timer0Init();
	Init_system();
	while(1)
	
		Led_Rd1();
		Relay_Set();
		ML_Money();
		Key_Down();
	

以上是关于蓝桥杯单片机第四届的主要内容,如果未能解决你的问题,请参考以下文章

蓝桥杯十四届单片机省赛

蓝桥杯单片机芯片型号

蓝桥杯单片机自锁怎么解决

蓝桥杯单片机——第十二届蓝桥杯单片机第一场省赛

蓝桥杯单片机组流程是啥,​请说具体点

蓝桥杯单片机组训练导航