#include <control.H>
uchar POS;
uchar devies_dly;
uchar key_num;
uchar tempreture;
uchar DAC_num = 100;
uchar DAC_write;
uchar real_num = 0;
uchar fu_num = 0;
uchar key12_flage=0;
uchar key13_flage;
uchar key16_flage;
uchar key17_flage;
uchar key130_flage;
bit Buzzer;
bit Relay;
bit led2;
bit led3;
bit led4;
//*******************************************
void devies_init() //外设初始化
{
// if(devies_dly < 50) return;
// else devies_dly = 1;
tempreture = ds18b20_read_temp(0);
if(real_num>=0 && real_num<=9) real_tempreture = tempreture+ real_num;
if(real_num >= 247)real_tempreture = tempreture - fu_num;
}
//*******************************************
void smg_working(uchar channel) //显示任务
{
switch(channel)
{
case 1:
SMG[0] = 13;
SMG[1] = 12;
SMG[2] = 12;
SMG[3] = 12;
SMG[4] = 12;
SMG[5] = 12;
SMG[6] = real_tempreture/10;
SMG[7] = real_tempreture%10;
break;
case 2:
SMG[0] = 14;
SMG[1] = 12;
SMG[2] = 12;
SMG[3] = 12;
SMG[4] = 12;
SMG[5] = DAC_num<100 ? 12 : DAC_num/100;
SMG[6] = DAC_num<10 ? 12 : DAC_num/10%10;
SMG[7] = DAC_num%10;
break;
case 3:
SMG[0] = 15;
SMG[1] = 12;
SMG[2] = 12;
SMG[3] = 12;
SMG[4] = 12;
SMG[5] = 12;
SMG[6] = 12;
SMG[7] = real_num%10;
break;
case 4:
SMG[0] = 15;
SMG[1] = 12;
SMG[2] = 12;
SMG[3] = 12;
SMG[4] = 12;
SMG[5] = 12;
SMG[6] = 10;
SMG[7] = fu_num%10;
break;
}
}
//*******************************************
void key_working()
{
key_num = key_2x2_scan();
switch(key_num)
{
case 12: key12_flage = (1+key12_flage)%3;
break;
case 13: key13_flage = 1- key13_flage;
break;
case 16:
if(key12_flage == 0){ key16_flage = 1;key17_flage=0;}
else if(key12_flage == 1) key16_flage = 2;
else if(key12_flage == 2) key16_flage = 3;
break;
case 17:
if(key12_flage == 0) {key17_flage = 1;key16_flage=0; }
else if(key12_flage == 1) key17_flage = 2;
else if(key12_flage == 2) key17_flage = 3;
break;
case 130: key130_flage = 1- key130_flage;
break;
}
if(key12_flage == 0){smg_working(1);}
else if(key12_flage == 1)
{
smg_working(2);
if(key16_flage == 2)
{
DAC_num = DAC_num + 5;
if(DAC_num >= 255 && DAC_num <5) DAC_num = 255;
key16_flage = 0;
}
if(key17_flage == 2)
{
if(DAC_num >=251) DAC_num = 0;
DAC_num = DAC_num - 5;
key17_flage = 0;
}
}
else if(key12_flage == 2)
{
if(key16_flage == 3)
{
real_num = real_num + 1;
if(real_num >=9 && real_num <247) real_num = 9;
if(real_num>=247)fu_num = 256- real_num;
key16_flage = 0;
}
if(key17_flage == 3)
{
real_num = real_num - 1;
if(real_num>=247)fu_num = 256 - real_num;
if(real_num >9 && real_num <= 247) real_num = 247;
key17_flage = 0;
}
if(real_num>=0 && real_num<=9) smg_working(3);
if(real_num>=247) smg_working(4);
}
if(key13_flage == 0){DAC_write = (tempreture*1.0/10.0 + 1)*51;LED[0] = 1;}
else if(key13_flage == 1){DAC_write = DAC_num; LED[0] = 0;}
if(key130_flage == 0)
{
LED[7] = 1;
if(key12_flage == 0)
{
if(key16_flage == 1) Relay = 1;
if(key17_flage == 1) Relay = 0;
}
}
if(key130_flage == 1){Relay = Relay;LED[7] = 0;}
}
//*******************************************
void task_working()
{
devies_init();
key_working();
PCF8591_Write(0X40,DAC_write);
}
//*******************************************
void system_init()
{
Timer0_Init();
Timer1_Init();
EA = 1;
HC138_Init(0,0x00);
HC138_Init(5,0x00);
HC138_Init(4,0xff);
ds18b20_read_begin();
}
//*******************************************
void Timer_server() interrupt 3
{
// devies_dly ++;
led_display(LED,POS);
smg_display(SMG,DOT,POS);
if(++POS == 8) POS = 0;
Relay_Init(Relay);
}
第十五届蓝桥杯大赛电子赛第二批代码
于 2024-05-12 22:04:48 首次发布