我有一个程序,功能是让四位一体动态数码管最低位依次显示0~9,然后13579,02468,高三位不变,蜂鸣一声,led亮,然后循环
然后有独立按键是焊在P1^1上的,所以只能用这个按键,按下,程序暂停,再按下,程序继续,请问怎么办呢?这是我那段程序
#include "reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;
sbit LSA=P3^0;
sbit LSB=P3^1;
sbit LSC=P3^2;
sbit LSD=P3^3;
sbit beep=P1^6;
sbit led1=P1^2;
sbit led2=P1^3;
sbit led3=P1^4;
sbit led4=P1^5;
u8 code smgduan[21]={0xa0,0xbb,0x62,0x2a,0x39,0x2c,0x24,0xba,
0x20,0x28,0xbb,0x2a,0x2c,0xba,0x28,0xa0,0x62,0x39,0x24,0x20};
void delay(u16 i)
{
while(i--);
}
void DigDisplay(u8 j)
{
u8 i;
for(i=0;i<4;i++)
{
switch(i)
{
case(0):
LSA=1;LSB=1;LSC=1; LSD=0;break;
case(1):
LSA=1;LSB=1;LSC=0; LSD=1;break;
case(2):
LSA=1;LSB=0;LSC=1; LSD=1;break;
case(3):
LSA=0;LSB=1;LSC=1; LSD=1;break;
}
switch(i)
{
case(0):
P2=smgduan[j];break;
case(1):
P2=smgduan[0];break;
case(2):
P2=smgduan[0];break;
case(3):
P2=smgduan[0];break;
}
delay(100);
P2=0xff;
}
}
void main()
{
u8 j;
u16 t;
while(1)
{
for(j=0;j<20;j++)
{
for(t=0;t<200;t++)
{
DigDisplay(j);
}
}
led1=0;
led2=0;
led3=0;
led4=0;
beep=0;
delay(50000);
beep=1;
led1=1;
led2=1;
led3=1;
led4=1;
}
你好,我这个板子接线比较怪,那段smgduan是可以正常显示数字的,然后我DigDisplay这个函数是让动态数码管闪一次,主函数里的for循环是让它一直闪,闪一定次数,显得像一直亮着在,然后过一段时间就是下一个数了
我想实现的是,比如现在数字显示从0显示到5了,按下连接P1^1的按键后,停在显示这个数,再按下按键P1^1或者P1^2后,继续显示下一个数,也就是6,然后继续,就是这个意思
才仔细看smgduan表,还真挺怪,这数码管连接没有规律。利用重复的段码实现显示的做法到是有点新意,也算一怪吧。
改好的程序在电脑上,但电脑不能发程序了。给我发私信,用私信给你发程序。
追问好的,已私信,谢谢你哦,麻烦了。
但是外部中断0触发条件不是P3^2低电平吗,我的按键是接P1^1上的
请问能具体点吗?