第十届蓝桥杯省赛真题Word下载.docx

上传人:b****5 文档编号:20900200 上传时间:2023-01-26 格式:DOCX 页数:13 大小:318.44KB
下载 相关 举报
第十届蓝桥杯省赛真题Word下载.docx_第1页
第1页 / 共13页
第十届蓝桥杯省赛真题Word下载.docx_第2页
第2页 / 共13页
第十届蓝桥杯省赛真题Word下载.docx_第3页
第3页 / 共13页
第十届蓝桥杯省赛真题Word下载.docx_第4页
第4页 / 共13页
第十届蓝桥杯省赛真题Word下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

第十届蓝桥杯省赛真题Word下载.docx

《第十届蓝桥杯省赛真题Word下载.docx》由会员分享,可在线阅读,更多相关《第十届蓝桥杯省赛真题Word下载.docx(13页珍藏版)》请在冰豆网上搜索。

第十届蓝桥杯省赛真题Word下载.docx

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)

=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);

//按键消抖

s4_mode=~s4_mode;

if(~s5)//判断S5按键

if(s4_mode)//如果在电压测量模式则改变电压跟随标志

s5_mode=~s5_mode;

//s5_mode取反

if(~s6)//判断S6按键

s6_mode=~s6_mode;

if(~s6_mode)

//关LED灯

if(~s7)//判断S7按键

s7_mode=~s7_mode;

//取反

if(~s7_mode)//如果数码管开关标志为0,关数码管显示

//关数码管

while(~s4||~s5||~s6||~s7)//松手检测

if(s4_mode)//如果为电压测量模式,数码管显示电压值,防止出现数码管黑屏现象

//数码管显示电压测量值

//LED显示电压测量模式

else//如果为频率测量模式,数码管显示频率值,防止出现数码管黑屏现象

DIG_show(fseg_num);

//数码管显示频率测量值

//LED显示频率测量模式

/*//////////////////////////////////////////

///////////定时器1中断函数/////////////////

//////////////////////////////////////////*/

voidT1()interrupt3//定时器1中断函数

unsignedchari=0;

unsignedintf_num2=0;

P20=~P20;

TR0=0;

//停止计数

TR1=0;

//停止定时

//设置定时初值

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亮

led_mode=0XFD;

for(i=7;

2&

f_num!

=0;

i--)

fseg_num[i]=DIG_CODE[f_num%10];

f_num/=10;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 家庭教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1