第十三届蓝桥杯准备(1)---数码管部分(显示,小数点,闪烁)

本文适合依据官方指导书写法的同学对比参考。

显示方式:中断,具体方法看指导书,需要一个内容更新函数smgdate( )和显示函数display( )。

加小数点方式:在display()函数中加一个判断位置的函数,相应位置&0x7f。

void display()

{

P2=(P2&0X1F)|0XE0;P0=0XFF;P2&=0X1F;

P2=(P2&0X1F)|0XC0;P0=1<<add;P2&=0X1F;

P2=(P2&0X1F)|0XE0;P0=smgvalue[smg[add]];

if(jiemian==1&&add==6)P0&=0X1F;%%此条语句为选择在第一个界面第七位的数码管带上小数点,相同道理可以添加其他小数点。

P2&=0X1F;

}

闪烁方式:在display()函数中添加条件使得相应位置一段时间不亮一段时间亮,具体亮灭的时间要在定时器中进行求取,具体如下。

void display()

{

    if(jiemian==1)

    {

P2=(P2&0X1F)|0XE0;P0=0XFF;P2&=0X1F;

P2=(P2&0X1F)|0XC0;P0=1<<add;P2&=0X1F;

P2=(P2&0X1F)|0XE0;P0=smgvalue[smg[add]];P2&=0X1F;%%%%前三句正常写

if(((mode==1)&&((add==3)||(add==4))&&(onesflag==1))||((mode==2)&&((add==6)|(add==7))&&(onesflag==1))){P2=(P2&0X1F)|0XE0;P0=0xff;P2&=0X1F;}%%%%此句mode为模式并且onesflag为亮灭时间时相应地址的数码管熄灭%%%

    }

else{P2=(P2&0X1F)|0XE0;P0=0XFF;P2&=0X1F;

P2=(P2&0X1F)|0XC0;P0=1<<add;P2&=0X1F;

P2=(P2&0X1F)|0XE0;P0=smgvalue[smg[add]];P2&=0X1F;%%%%此三句正常些

}

if(++add==8)add=0;

}

定时器部分:

(假设2ms一次中断)if(++onesnum==500){onesnum=0;onesflag=(onesflag+1)%2}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值