栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

蓝桥杯单片机第十一届国赛

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

蓝桥杯单片机第十一届国赛

#include "stc15f2k60s2.h"
#include "intrins.h"
#include "stdio.h"
#include "onewire.h"
#include "ds1302.h"  
#include "iic.h"

#define uchar unsigned char
#define uint unsigned int

extern unsigned char shijian[7];

//LED开关
uchar led_bit=0xff;
#define led_on(n) {led_bit&=_crol_(0xfe,n-1);P0=led_bit;P2|=0x80;P2&=0x9f;P2&=0x1f;}
#define led_off(n){led_bit|=_crol_(0x01,n-1);P0=led_bit;P2|=0x80;P2&=0x9f;P2&=0x1f;}

uchar code tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,
									0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,
									0xBF,0xFF,0xC6,0x86,0x8C};
uchar Digbuf[]={0,1,2,3,4,5,6,7};
uchar Digcom=0;

void Allinit();
void delayms(uint ms);
void Timer2Init(void);
void GID_Show();
void keyscan16();
void LED_Show();

uint wendu=0;
uchar inter_face1=0;  //数据,参数界面切换
uchar inter_face2=0;   //数据子界面
uchar inter_face3=0;//参数子界面
uchar voltage=0;
char shi_can=17;  //小时参数
char wen_can=25;  //温度参数
char led_can=4;  //指示灯参数
uint tt1=0,tt2=0;

void main(void)
{
	Allinit();
	Timer2Init();
	DS_init();
	
	while(1)
	{
		voltage=AD_Read(0x01); //光敏分压
		voltage=AD_Read(0x01);
		wendu=Temper_Get();
		DS_Get();
		
		LED_Show();
		

		keyscan16();
		GID_Show();
	}
}
void GID_Show()
{
	if(inter_face1==0)  //数据界面
	{
		if(inter_face2==0)  //时间数据显示
		{
			Digbuf[0]=shijian[2]/10;Digbuf[1]=shijian[2]%10;Digbuf[2]=20;
			Digbuf[3]=shijian[1]/10;Digbuf[4]=shijian[1]%10;Digbuf[5]=20;
			Digbuf[6]=shijian[0]/10;Digbuf[7]=shijian[0]%10;
		}
		else if(inter_face2==1)  //温度数据显示
		{
			Digbuf[0]=22;Digbuf[1]=21;Digbuf[2]=21;Digbuf[3]=21;Digbuf[4]=21;
			Digbuf[5]=wendu/1000;Digbuf[6]=wendu%1000/100+10;Digbuf[7]=wendu%100/10;
		}
		else if(inter_face2==2)
		{
			Digbuf[0]=23;Digbuf[1]=21;Digbuf[2]=voltage/100+10;Digbuf[3]=voltage%100/10;Digbuf[4]=voltage%10;
			Digbuf[5]=21;Digbuf[6]=21;
			if(voltage<50){Digbuf[7]=1;}  //暗
			else Digbuf[7]=0;    //亮
		}
	}
	else if(inter_face1==1)  //参数界面
	{
		if(inter_face3==0)   //时间参数
		{
			Digbuf[0]=24;Digbuf[1]=1;Digbuf[2]=21;Digbuf[3]=21;Digbuf[4]=21;Digbuf[5]=21;
			Digbuf[6]=shi_can/10;Digbuf[7]=shi_can%10;
		}
		else if(inter_face3==1)   //温度参数
		{
			Digbuf[0]=24;Digbuf[1]=2;Digbuf[2]=21;Digbuf[3]=21;Digbuf[4]=21;Digbuf[5]=21;
			Digbuf[6]=wen_can/10;Digbuf[7]=wen_can%10;
		}
		else if(inter_face3==2)   //指示灯参数
		{
			Digbuf[0]=24;Digbuf[1]=2;Digbuf[2]=21;Digbuf[3]=21;Digbuf[4]=21;Digbuf[5]=21;Digbuf[6]=21;
			Digbuf[7]=led_can;
		}
	}
}
void LED_Show()
{
	if(shi_can<=7)
	{
		if((shijian[2]>=shi_can)&&(shijian[2]<=8)){led_on(1);}
		else {led_off(1);}
	}
	else if(shi_can>7)
	{
		if(((shijian[2]>=shi_can)&&(shijian[2]<=23))||((shijian[2]>=0)&&(shijian[2]<=8))){led_on(1);}
		else {led_off(1);}
	}
	
	if(wendu=23)shi_can=23;
				}
				else if(inter_face3==1) //温度参数  00-99
				{
					wen_can++;
					if(wen_can>=99)wen_can=99;
				}
				else if(inter_face3==2)//指示灯参数 4-8
				{
					led_can++;
					if(led_can>=8)led_can=8;
				}
			}
		}
		while(!P32);
	}
	else if(P33==0)  //s8   —
	{
		delayms(5);
		if(P33==0)
		{
			if(inter_face1==1)//参数界面加
			{
				if(inter_face3==0)//小时参数  00-23
				{
					shi_can--;
					if(shi_can<=0)shi_can=0;
				}
				else if(inter_face3==1) //温度参数  00-99
				{
					wen_can--;
					if(wen_can<=0)wen_can=0;
				}
				else if(inter_face3==2)//指示灯参数 4-8
				{
					led_can--;
					if(led_can<=4)led_can=4;
				}
			}			
		}
		while(!P33);
	}	
}
void Timer2Init(void)		//1毫秒@12.000MHz
{
	AUXR |= 0x04;		//定时器时钟1T模式
	T2L = 0x20;		//设置定时初值
	T2H = 0xD1;		//设置定时初值
	AUXR |= 0x10;		//定时器2开始计时
	IE2|=0x04;
	EA=1;
}
void timer2() interrupt 12
{
	P0=0xFF;
	P2|=0xC0;P2&=0xDF;P2&=0x1F;
	P0=0xFF;
	P2|=0xE0;P2&=0xFF;P2&=0x1F;
	P0=(1<=3000)
		{
			tt1=0;
			led_on(3);
		}
	}
	else //亮
	{
		tt1=0;
		tt2++;
		if(tt2>=3000)
		{
			tt2=0;
			led_off(3);
		}
	}
	
	if(voltage<50)  //暗
	{
		if(led_can==4){led_on(4);led_off(5);led_off(6);led_off(7);led_off(8);}
		else if(led_can==5){led_off(4);led_on(5);led_off(6);led_off(7);led_off(8);}
		else if(led_can==6){led_off(4);led_off(5);led_on(6);led_off(7);led_off(8);}
		else if(led_can==7){led_off(4);led_off(5);led_off(6);led_on(7);led_off(8);}
		else if(led_can==8){led_off(4);led_off(5);led_off(6);led_off(7);led_on(8);}
	}
	else {led_off(4);led_off(5);led_off(6);led_off(7);led_off(8);}
}
void Allinit()
{
	P0=0x00;P2|=0xA0;P2&=0xBF;P2&=0x1F;
	P0=0xFF;P2|=0x80;P2&=0x9F;P2&=0x1F;
	P0=0xFF;P2|=0xC0;P2&=0xDF;P2&=0x1F;
	P0=0xFF;P2|=0xE0;P2&=0xFF;P2&=0x1F;
}
void delayms(uint ms)
{
	uint i,j;
	for(i=0;i0;j--);
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/976855.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号