用单片机c51,c语言编0-9计数器程序!谢谢!!!

按钮按一下加一,求求你们帮帮我,谢谢了!!!!!!

你的硬件电路有问题啊,单片机31号脚要接高电平


还有,你的数码管接法也不对啊


看你的排阻接法,你的数码管要用共阴极的


当加到9之后,再按一下,是不是又恢复到0啦???



下面是更改的回答


#include<reg51.h>

unsigned char a;


unsigned char code table[]={    
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x67};

void init(void)
{
EA=1;
EX0=1;
IT0=1;
}

void main(void)
{
init();
while(1)
{
P0=table[a];

}

}

void EX_0(void) interrupt 0
{
a++;
if(a>9)
a=0;
}


望采纳

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-11-30
/* 0-9 共阳计数器*/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar num;
uchar code table[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};//共阳极数码管编码(编码表/数组)
sbit key=P3^2;
void delay(uint z);
void main()
{
P0=0xff;
P3=0xff;
num=0;
while(1)
{
if(key==0);
delay(10);
if(key==0)//按下防抖(延时后再判断)
{
num++;
P0=table[num];
if(num==9)
num=0;
}
while(!key);//检测松手程序(死cycyle),不然按键只要不放开,将在一直加数。
delay(10);
while(!key);//松手防抖(延时后再判断)

}
}
void delay(uint z)
{
uchar x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}追问

加个qq好吗

追答

344258600

用单片机c51,c语言编0-9计数器程序!谢谢!!!
include<reg51.h>unsigned char a;unsigned char code table[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67};void init(void){EA=1;EX0=1;IT0=1;}void main(void){init();while(1){P0=table[a];}}void EX_0(void) interrupt 0{a++;if(a>9)a=0;} 望采纳 ...

51单片机c语言设计,按键控制数码管,依次按下显示0到9循环
include<reg51.h> sbit k1=P1^0;define uint16 unsigned int define uchar unsigned char uchar code shuzu[ ]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void delay(){ uint16 i=1000;while(i--);} void main(){ uchar n ;P2=0xfe;P1=0xff;while(1){ if...

用C语言51单片机编写数码管从00到99的循环程序
if(i==100) i=0;} }

51单片机c语言设计,按键控制数码管,依次按下显示0到9循环?
假设你的是共阳极数码管,P0接数码。按键接P2^0;include<reg52.h> typedef unsinged int uint;sbit key=P2^0;unsigned char tab[]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void denay(uint x){ uint i,j;for(i=x;i>0;i--)for(j=110;j>0;j--)} void main(){ u...

51单片机 让数码管自动显示0至9的C程序。有没有比这个更简单的...
一、设置延时函数 延时函数在单片机中有着让现实延时的能力,本程序中可以通过采用for循环方式进行延时,具体代码如下:void delay(){ uinti,j;for(i=100;i>0;i--)for(j=1000;j>0;j--);} 二、设置数码管显示数组 数组定义简单,而且访问很方便。所有元素类型相同,在数码管显示程序中可以...

51单片机C语言编程两个按键加减显示0-99的加减,求程序,自己编的有警...
if(key >99) \/\/防止越界 也可以用与的方式写 key &= 0x63;这句话就能顶了下面俩判断 key = 0;else if(key < 0)key = 99;} void display(int x){ P0 = tap[x%10];ge = 1;delay(10);ge = 0;delay(10);P0 =tap[x\/10];shi = 1;delay(10);shi = 0;delay(10);} void...

单片机数码管显示0到999c语言程序怎么编
unsigned int i,j;for(i=0;i<k;i++)for(j=0;j<125;j++);}INT_0()interrupt 0 { delay(10);if(INT0==0){sz++; if(sz>2){sz=0;}}} void T0_int()interrupt 1{ TH0=(65535-50000)\/256;\/\/设置初值 TL0=(65535-50000)%256;s++;if(s>20){s=0; if(sz==1)time++; ...

51单片机产生随机数c程序
刚写的程序,我的思想是用定时器加rand()随机函数来实现的,单片机上电之后通过按键去启动取随机数,若是单片机上电就立即取随机数的话,那每次上电随机的结果都是一样的。然后是0到9不重复的随机数,程序中用了循环来判断是否和前面取的随机数相同,相同则进入下次取随机数,不同则存入数组。程序...

单片机程序求修改,实现按键控制数码管0-9,急!!!
num=0;while(key2==0);} } \/*实现定时器1方式1定时1S使得数码管加1显示功能*\/ if(key3==0) { delay(7);if(key3==0) { flag = ~flag;while(key3==0);} } } void T1_ini(){ TMOD=0X10;TH1=(65536-50000)\/256;TL1=(65536-50000)%256;EA=1;ET1=1;TR1=1;} void ...

基于51单片机的999倒计时C语言程序。
用C语言实现 \/ include<at89X51.h> define uchar unsigned char define uint unsigned int uchar num_qian,num_bai,num_shi,num_ge;\/\/定义千位,百位,十位,个位。uint time;\/\/要显示的时间0~9999 uint tcnt;\/\/计时单元 \/\/***\/\/ \/\/以下是端口定义 \/\/***\/\/ sbit key_qian=P1^0;...

相似回答