以下是13届蓝桥杯的单片机程序题解答(含题目),博主是个还在备赛省赛的苦命娃(因疫情推迟),有不妥的地方欢迎大家指正。
一、13届蓝桥杯省赛题目
二、程序代码
1.主函数
main:
#include <STC15F2K60S2.H>
#include <DS18B20.C>
#include <DS1302.C>
void Display(void);
//sbit J=P0^4;
sbit C1=P3^2;
sbit C2=P3^3;
sbit C3=P3^4;
sbit C4=P3^5;
sbit L3=P0^2;
unsigned char S12_flag,S13_flag,S16_flag,S17_flag;
unsigned char L10flag,js_flag,time1_flag,time5_flag,L_flag,fm_flag,L,L1_flag;
int t_canshu,cs_bu;
unsigned int temp;
unsigned char shi,fen,miao;
unsigned char SEG[11]={
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc1};
void init()
{
P0=0x00;
P2=0xa0;
P2=0x00;
P0=0xff;
P2=0x80;
P2=0x00;
}
void Delay1ms() //@12.000MHz
{
unsigned char i, j;
i = 12;
j = 169;
do
{
while (--j);
} while (--i);
}
void Delay5ms() //@12.000MHz
{
unsigned char i, j;
i = 59;
j = 90;
do
{
while (--j);
} while (--i);
}
void Timer0Init(void) //50??@12.000MHz
{
AUXR &= 0x7F; //?????12T??
TMOD &= 0xF0; //???????
TL0 = 0xB0; //??????
TH0 = 0x3C; //??????
TF0 = 0; //??TF0??
EA = 1; //???0????
ET0=1;
}
void time_5s() interrupt 1
{
js_flag++;
if(js_flag%2==0)
{
time1_flag=1;
}
if(js_flag==100)
{
js_flag=0;
L10flag=1;
time5_flag=1;
}
}
void seg(int wei,int duan)
{
P2=0xc0;
P0=0x00;
P0=0x01<<(wei-1);
P2=0xe0;
P0=0xff;
P0=SEG[duan];
Delay1ms();
P0=0xff;
P2=0x00;
}
void seg_d(int wei,int duan)
{
P2=0xc0;
P0=0x00;
P0=0x01<<(wei-1);
P2=0xe0;
P0=0xff;
P0=SEG[duan]&0x7f