第十届蓝桥杯省赛真题.docx
- 文档编号:7773134
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:13
- 大小:318.44KB
第十届蓝桥杯省赛真题.docx
《第十届蓝桥杯省赛真题.docx》由会员分享,可在线阅读,更多相关《第十届蓝桥杯省赛真题.docx(13页珍藏版)》请在冰豆网上搜索。
第十届蓝桥杯省赛真题
参考代码:
#include"STC15F2K60S2.H"
#include"MAIN.H"
#include"HAREWARE.H"
#include"DIG.H"
#include"I2C.H"
#include"DELAY.H"
#include"LED.H"
sbits4=P3^3;//按键S4
sbits5=P3^2;//按键S5
sbits6=P3^1;//按键S6
sbits7=P3^0;//按键S7
unsignedintPCF_NUM=0;//电压值
unsignedcharled_mode=0xff;//LED灯点亮模式
unsignedintf_num=0;//频率数值
unsignedcharj=0;//频率测量里面的等待中断标志
unsignedchardiya_num=0;//储存模数转换返回的电压值
unsignedchartimer=0;
bits4_mode=1;//1为电压测量模式,0为频率测量模式
bits5_mode=0;//1为输出2.0v电压,为0跟随PCF8591三通道电压输出
bits6_mode=1;//1为开启LED灯显示,0为关显示
bits7_mode=1;//1为开启数码管显示,0为关显示
bitgensui=0;//0为不跟随电压输出,1为跟随电压输出
unsignedcharuseg_num[]={0x3e,0,0,0,0,0,0,0};//电压数值数组
unsignedcharfseg_num[]={0x71,0,0,0,0,0,0,0};//频率数值数组
voidkey_scan();//按键扫描函数原型
unsignedchardian_ya_ce_liang();//电压测量函数原型
voidTimerInit();//定时计数初始化函数原型
/************************************************************************************************/
/******************************************函数**************************************************/
/************************************************************************************************/
voidmain()//主函数
{
HAREWARE_init();//关闭外部设备
DIG_init();//数码管初始化
LED_init();//LED灯初始化
TimerInit();//定时器1初始化
P20=1;
while
(1)//等待中断
{
key_scan();//按键扫描
if(~s5_mode)//判断是否是电压跟随模式
{
PCF_DA(103);//没有跟随
gensui=0;//没有跟随
}
else
{
gensui=1;//跟随电压
}
if(s4_mode)//判断是否为电压测量模式
{
diya_num=dian_ya_ce_liang();
led_mode=0xfe;//电压测量模式指示灯亮
if(((diya_num*0.01953125>=1.5)&&(diya_num*0.01953125<2.5))||(diya_num*0.01953125>=3.5))
{
led_mode&=0xfb;//满足条件第三个指示灯亮
}
if(gensui)
{
led_mode&=0xef;//电压跟随第五个指示灯亮
}
PCF_NUM=diya_num*1.953125;//变成十进制的数字,把小数乘一百
useg_num[5]=DIG_CODE[PCF_NUM/100];//百位数字
PCF_NUM=PCF_NUM%100;
useg_num[6]=DIG_CODE[PCF_NUM/10];//十位数字
PCF_NUM%=10;
useg_num[7]=DIG_CODE[PCF_NUM];//个位数字
LED_show(led_mode);//LED等显示
DIG_show(useg_num);//数码管显示
if(gensui)//判断是否是电压跟随模式
{
PCF_DA(diya_num);//没有跟随
}
}
else//频率测量模式
{
TR1=1;//开始计时
TR0=1;//开始计数
j=1;//等待中断标志置1
while(j);//等待中断
}
}
}
////////////////////////////////////////////////////
////////////////////////////////////////////////////
voidTimerInit()//定时计数器初始化函数
{
AUXR&=0x3F;//12分频
TMOD&=0x00;//TMOD(定时/计数器模式寄存器)清零
TMOD|=0x15;//T0设置为模式1,计数;T1设置为模式1,定时
TH0=TL0=0;//计数器清零
TL1=0xF0;//设置定时初值
TH1=0xD8;//设置定时初值
EA=1;//开总中断
ET1=1;//开定时器1中断
}
///////////////////////////////////////////////////////
///////////////////////////////////////////////////////
unsignedchardian_ya_ce_liang()
{
returnPCF_AD(3);//返回模数转换值
}
//////////////////////////////////////////////////////
//////////////////////////////////////////////////////
voidkey_scan()//键盘扫描函数
{
P3|=0x0f;//P3低4位设为全1
if(~s4)//判断S4按键
{
delay1ms(5);//按键消抖
if(~s4)//判断S4按键
{
s4_mode=~s4_mode;
}
}
if(~s5)//判断S5按键
{
delay1ms(5);//按键消抖
if(~s5)//判断S5按键
{
if(s4_mode)//如果在电压测量模式则改变电压跟随标志
{
s5_mode=~s5_mode;//s5_mode取反
}
}
}
if(~s6)//判断S6按键
{
delay1ms(5);//按键消抖
if(~s6)//判断S6按键
{
s6_mode=~s6_mode;
if(~s6_mode)
{
LED_init();//关LED灯
}
}
}
if(~s7)//判断S7按键
{
delay1ms(5);//按键消抖
if(~s7)//判断S7按键
{
s7_mode=~s7_mode;//取反
if(~s7_mode)//如果数码管开关标志为0,关数码管显示
{
DIG_init();//关数码管
}
}
}
while(~s4||~s5||~s6||~s7)//松手检测
{
if(s4_mode)//如果为电压测量模式,数码管显示电压值,防止出现数码管黑屏现象
{
DIG_show(useg_num);//数码管显示电压测量值
LED_show(led_mode);//LED显示电压测量模式
}
else//如果为频率测量模式,数码管显示频率值,防止出现数码管黑屏现象
{
DIG_show(fseg_num);//数码管显示频率测量值
LED_show(led_mode);//LED显示频率测量模式
}
}
}
/*//////////////////////////////////////////
///////////定时器1中断函数/////////////////
//////////////////////////////////////////*/
voidT1()interrupt3//定时器1中断函数
{
unsignedchari=0;
unsignedintf_num2=0;
P20=~P20;
TR0=0;//停止计数
TR1=0;//停止定时
TL1=0xF0;//设置定时初值
TH1=0xD8;//设置定时初值
timer++;//计数器加1
j=0;//等待中断标志清零
if(timer==20)
{
f_num=(TH0*256+TL0)*5;//计算频率
timer=0;
TL0=TH0=0;//计数器清零
for(i=7;i>2;i--)//重新初始化频率数值数组
{
fseg_num[i]=0;//除数组的第一位和第二位其他的初始化为0
}
if((f_num>=1000&&f_num<5000)||(f_num>=10000))
{
led_mode=0XF5;//满足条件led4亮
}
else
{
led_mode=0XFD;
}
for(i=7;i>2&&f_num!
=0;i--)
{
fseg_num[i]=DIG_CODE[f_num%10];
f_num/=10;
}
}
LED_show(led_mode);
DIG_show(fseg_num);
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第十 届蓝桥杯省赛真题
![提示](https://static.bdocx.com/images/bang_tan.gif)