第十五届蓝桥杯单片机省一代码


前言

  今年单片机试题比14届可以说是简单太多了(参加过14届,直接被创死555),题主提前两小时就交卷了,最后也是稳定拿下省一进入国赛(嘿嘿)。
在这里插入图片描述


一、问题重现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、代码实现

  下面给出main.c,而其他部分子函数由于较为基础,不再赘述。可前往stc15单片机进一步了解其他子函数的来源。

#include "main.h"
#include "key_smg.h"
#include "timer.h"
#include "ds1302.h"
#include "iic.h"

u8 smgflash=0;
u8 showpage=0,setpage=0,huixianpage=0;

u8 keyflash=0,keytemp=0,keynum=0;

u16 f=0,fflash=0,flimit=2000;
u8 fmaxtime[3]={
   0,0,0};
int fjiaozun=0;
long ftemp=0,fmax=0;

u8 led[]={
   1,1,1,1,1,1,1,1};u8 led1=0;
#define ledset outputp0(0x80,led[0]*1+led[1]*2+led[2]*4+led[3]*8+led[4]*16+led[5]*32+led[6]*64+led[7]*128)

void smgshowflash();
void keyfun();
void page0();
void page1();
void page2();
void page3();

void smgshowpage()
{
   
	if(showpage==0)
	{
   
		page0();
	}
	else if(showpage==1)
	{
   
		page1();
		
	}
	else if(showpage==2)
	{
   
		page2();
		
	}
	else if(showpage==3)
	{
   
		page3();
		
	}
	
}
void fun()
{
   
	if(ftemp>fmax)
	{
   
		fmax=ftemp;
		ds1302read();
		fmaxtime[0]=ds1302dectime[0];
		fmaxtime[1]=ds1302dectime[1];
		fmaxtime[2]=ds1302dectime[2];
	}
	if(ftemp<0)
	{
   
		pcf_da(0);	
	}
	else if(ftemp<=500&&ftemp>=0)
	{
   
		pcf_da(51);
	}
	else if(ftemp<=fmax&&ftemp>500)
	{
   
		pcf_da(256*4*(ftemp-500)/(fmax-500)/5+256/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值