第十三届 蓝桥杯 单片机设计与开发项目 省赛

 只发布了主函数的内容

其余的会上传资源

 

 

 

#include "include.h"
uchar jiemian,kbd_num,time=1,led=0xff,jidian=0x00;
uint wendu,wencan=23,ji_flag=0;
bit mode;
void Delay100ms()		//@12.000MHz
{
	unsigned char i, j, k;

	_nop_();
	_nop_();
	i = 5;
	j = 144;
	k = 71;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

void Delay1000ms()		//@12.000MHz
{
	unsigned char i, j, k;

	_nop_();
	_nop_();
	i = 46;
	j = 153;
	k = 245;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

void read_()
{
  if(flag_500ms>=250)
  {
    flag_500ms=0;
    wendu=DS18b20_read();
  }
  if(flag_100ms>=50)
  {
    flag_100ms=0;
    DS1302_read();
  }
  
}

void kbd_scan()
{
  kbd_num=kbd_read();
  switch(kbd_num)
  {
    case 1:time=1;break;
  case 12:
    
      jiemian++;
      if(jiemian>=3)
       jiemian=0; 
      break;    
  case 13:
      if(mode==0) {mode=1;}
      else if(mode==1) {mode=0;}
      break;
 
  case 16:
      
       if(jiemian==2) 
       {
         if(wencan<99)
           wencan++;
         else
           wencan=10;
       }
      break;
  case 17:
        if(jiemian==2) 
       {
         if(wencan>10)
           wencan--;
         else
           wencan=99;
       }
        else if(jiemian==1)
        {
          time=0;
          
        }
      break;
        
     break;
  
  default :
    break;
   }
 
}



void Jm()
{
  if(jiemian==0)
  {
    
    setsmgdat(21,1,20,20,20,wendu/1000,wendu%1000/100+10,wendu%100/10);
  }
  else if(jiemian==1)
  {
    if(time==0)
     setsmgdat(21,2,20,ds1302_hex[12],ds1302_hex[13],22,ds1302_hex[14],ds1302_hex[15]); 
     else if(time==1)
       setsmgdat(21,2,20,ds1302_hex[10],ds1302_hex[11],22,ds1302_hex[12],ds1302_hex[13]);  
        
  }
  else if(jiemian==2)
  {
    
    setsmgdat(21,3,20,20,20,20,wencan/10,wencan%10);
  }
  
}

void other()
{
  if(mode==0)
  {
    led=0xfd;
    Delay1000ms();
    if(wendu>wencan*100)
    {
      jidian=0xff;
      led=0xfb;
      Delay100ms();
      led=0xff;
    }
    else 
    {
      jidian=0x00;
       led=0xff;
    }
  }
  else if(mode==1)
  {
    if(ds1302_hex[12]==0&&ds1302_hex[13]==0&&ds1302_hex[14]==0&&ds1302_hex[15]==0)
    {
      jidian=0xff;
      led=0xfe;
      ji_flag++;
      if(ji_flag>5000)
      {
        ji_flag=0;
        led=0xff;
        jidian=0x00;
      }
    }
    else 
    {
      jidian=0x00;
    }
  }
  
  
  
  
}

void allinit()
{
  P0=0xff;HC_138(4);
  P0=0x00;HC_138(5);
  P0=0xff;HC_138(6);
  P0=0xff;HC_138(7);
  
  Timer2Init();
  DS1302_init();
}
void main()
{
  allinit();
  
  while(1)
  { 
    
    kbd_scan();
  read_();
    Jm();
    other();
    
  }
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值