|
1-14届蓝桥杯单片机组代码与赛题.
#include <STC15F2K60S2.H>
#include "sys.h"
//控制数码管、按键、LED、外部模块函数刷新速率的变量
uchar seg_dly, key_dly, led_dly, sen_dly;
//seg_pos 定时器中断显示专用,循环依次显示数码管
//seg_buf[] 把字符串转换后的段码,保存下来
//seg_code[] 存储要显示内容的段码
uchar seg_pos, seg_buf[10], seg_code[8] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
uchar key_val, key_old, key_down, key_up;
uchar led_stat = 0x00; ////记录LED的状态
bit seg_stat = 1; //1-频率界面 0-电压界面
ulong freq_temp = 0, freq = 0; //频率的中间值 真正的频率值
uint freq_ms; //记录频率的时间
float voltage_ain3 = 0, voltage_dac = 0; //通道3的电压 DAC输出电压
bit mode = 1; //1-DAC输出2V 0-DAC输出通道3的电压
bit led_flag = 1; //1开启 0关闭
bit seg_flag = 1; //1开启 0关闭
void main()
{
ClsPeripherial();//关闭外设
TimerInit(); //配置定时器1 定时器0
while(1)
{
SensorProc(); //PCF8591模块处理函数
SegProc(); //数码管处理函数
LedProc(); //LED处理函数
KeyProc(); //按键处理函数
}
}
void Timer0() interrupt 1
{
freq_temp++;
}
void Timer1() interrupt 3
{
if(++seg_dly == 200) seg_dly = 0;
if(++led_dly == 100) led_dly = 0;
if(++key_dly == 10) key_dly = 0;
if(++sen_dly == 200) sen_dly = 0;
if(++freq_ms == 1000) //每过1秒得出频率值
{
freq = freq_temp;
freq_temp = 0; //频率置0
freq_ms = 0;//频率的时间置0
}
if(led_flag)
LedDisp(led_stat);//LED显示
else
LedDisp(0x00);//熄灭LED
if(seg_flag)
{
SegDisp(seg_pos, seg_code[seg_pos]);//数码管显示seg_code[]数组的段码
}else{
SegDisp(seg_pos, 0xff);//不显示内容
}
if(++seg_pos == 8) seg_pos = 0;//数码管显示刷新
}
要的人太多了,代码自己下载把,里面包含了两份代码,是不同写法。不是国赛是省赛代码,但是都差不多。下载文件里面有历届赛题。
部分文件超过了上传限制,是国赛赛题(没有代码)以及一些客观题解释,如果想要可以留下邮箱推荐网易与qq邮箱。只需要省赛代码下载下面文件即可。如果黑币不够也可以留下邮箱  
|
评分
-
查看全部评分
|