• 2022-07-01
    利用学院下发的单片机实验单板实现,8个段数码管显示要求如下:从最右侧一个7段数码管开始显示0,然后最右侧两个显示01,再然后最右侧三个显示012,依次类推最后所有数码管显示01234567。按下按键K17后8个段码管全灭,再次按下后从0开始重新按上面要求显示。要求:用外部中断实现。效果演示.mp4
  • #include#defineuintunsignedint#defineucharunsignedchar//共阴极段码ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}ucharcodesled_bit[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};sbitOE=P1^3;//74LS573的/OE控制位sbitLE1=P1^4;//控制段码的74LS573的LE控制位sbitLE2=P1^5;//控制位选的74LS573的LE控制位bitsym;//设置按键标志//延时函数voiddelay(uinti){while(i--);}//显示函数voidseg_disp(charx,chary){OE=1;//禁止74LS573的使能输入位LE2=1;//控制位码锁存器锁存输入P0=sled_bit[y];//位选码管位控码送P0口LE2=0;LE1=1;//控制段码锁存器锁存输入P0=table[x];LE1=0;OE=0;}//主函数voidmain(){chari,j;ucharnum;//外部中断0初始化IT0=1;//外部中断0为下降沿触发EA=1;//开启总中断EX0=1;//使能外部中断0sym=0;//初始化按键标志变量while(1){for(i=0;i<8;i++){for(num=0;num<100;num++)//每组数据显示的次数for(j=0;j<=i;j++)//判断定时器溢出标志{if(0==sym){//最初没有按键按下,或者是本次按键按下后重新从0开始显示seg_disp(j,7-i+j);//调用显示函数delay(200);}else{j=i=num=100;//使下一次按下按键后数码管从0开始显示}}}}}//外部中断0中断服务函数voidint0_seg()interrupt0{sym=!sym;//按键标志变量取反if(1==sym)OE=1;//关闭所有段码管显示}

    内容

    • 0

      对于共阴极接法的七段数码显示管,如果显示码为0000110,那么在数码管上会显示数字1。

    • 1

      智慧职教: LED数码管用( )个显示段显示一个字符或数字

    • 2

      4位半数字万用表采用七段数码管显示,需要()个数码管。 A: 4 B: 5 C: 7 D: 8

    • 3

      LED数码管有()数码管和()数码管显示两种

    • 4

      用数码管显示矩阵式按键的键值:学会判断矩阵式按键是否按下,并将其键值送给数码管显示