就是按钮按一下,数码管从0开始加1,加到9,用c语言单片机编写并且要用计数器的方法编写.

求求你帮帮我了,谢谢你们了

#include<reg52.h>
#define uchar unsigned char
sbit P32=P3^2;
uchar num[10]={0xc0,0x5b};    
/*
具体值记不得了,可以百度,就是0-9,这里就写了俩还不一定是对的,就那意思
*/

void delay50us(void)
{
    uchar i,j;
    
    for(i=0;i<100;i++)
    {
        for(j=0;j<19;j++){;}
    }
}
void main(void)
{
    uchar s1;
    s1=0;P0=num[s1];
    while(1){
    if(P32==1)//如果p32是高电平
    {
        delay50us();//延时防抖动
        if(P32==1)
        {
            while(P32);
            /*
这是个很常用的处理方法,P32=1则会一直在循环里,P32=0则进行下一步,在串口双机通信实验里也许还能用上
            */
            if(s1==9){s1==0;}//如果是9就下一个显示0
            else{s1++;}//如果不是正常加一
        }
    }
    P0=num[s1];//刷新7seg值
}
}

这程序我刚打的,我也不知道能不能行,你看看吧,试试。能帮上点算点。


不好意思我没好好看清题目

!我没用计数器,sorry耽误你时间了

追问

你能在帮我一下吗

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-12-26
# include< reg51.h>
unsigned char count=0;
unsigned char a[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
void main()
{
EA=1;
Ex1=1; //外部中断1
ET1=1;
while(1)
{
P0=a[count]; //P0口接数码管
}
}
void int1() interrupt 2 //外部中断1(INT1)
{
P2=0x01; //数码管引脚接了P2.0口
P0=a[count++];
}本回答被网友采纳
第2个回答  推荐于2017-05-18
#include<stdio.h>
main()
{
int i,sum=0;
for(i=1;i<=9;i++)
{
sum=sum+i;
printf("%d+",i);
}printf("%d=%d\n",i,sum);
}追问

我试过了,不行呀

本回答被网友采纳

就是按钮按一下,数码管从0开始加1,加到9,用c语言单片机编写并且要用...
include<reg52.h>#define uchar unsigned charsbit P32=P3^2;uchar num[10]={0xc0,0x5b}; \/*具体值记不得了,可以百度,就是0-9,这里就写了俩还不一定是对的,就那意思*\/void delay50us(void){ uchar i,j; for(i=0;i<100;i++) { for(j=0;j<19;j++){;} ...

单片机程序求修改,实现按键控制数码管0-9,急!!!
if(key2==0) { 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;ET...

单片机 按键(采用独立式按键)按下一次,让液晶第一位显示的数码加1,显 ...
void DelayNms( uint N ) \/\/ 利用x、y作简单的自减运算,消耗单片机指令周期,达到延时的目的 { uint x,y;for( x=N; x>0; x-- )for( y=110; y>0; y-- );} \/\/数码管显示 \/\/ 显示方式为动态扫描,视觉暂留原理 void Display( uchar Num ) \/\/ *p指向Main函数中的数组ShowNum...

51单片机c语言设计,按键控制数码管,依次按下显示0到9循环?
while(1){ P0=tab[a];if (key1==0){delay(10);if(key==0){ while(!key1);a++;if(a==10) 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...

51单片机汇编语言按键控制数码管加一加到999
将三个存储区分别扫描送出去即可 对于C语言:定义char 型最大256不行,那就定义unsigned int 就够用了,按键按下就让它++,加到1000时回零 即可。数码管显示得对这个变量进行百位、十位、个位分离,这个也简单 讲到这应该问题不大了吧,代码就不给你写了,写了就没意思了,呵呵 ...

求:用单片机C语言编一位数码管的数字显示 要求可以从0变化到9
\/\/1位静态显示 include<reg52.h> include<intrins.h> \/\/p0接数码管的A~H;uchar led[]={0xA0,0xBD,0x64,0x2C,0x39, 0x2A, 0x22,0xBC,0x20,0x28};\/\/0-9数字摸。unsigned int dat;main(){while(){ P0=led(dat);\/\/显示dat变量,这里只能显示数字0~9;} } ...

用单片机c51,c语言编0-9计数器程序!谢谢!!!
看你的排阻接法,你的数码管要用共阴极的 当加到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 ...

单片机数码管显示0到999c语言程序怎么编
}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++; if(time>999){time=0;} if(sz==0){time=0;\/\/清零 } ...

用C语言51单片机编写数码管从00到99的循环程序
{ TMOD=0x01;ET0=1;EA=1;TR0=1;TH0=0x3c;TL0=0xaf;} void time_1s (void) interrupt 1 { int ncount;TH0=0x3c;TL0=0xaf;ncount++;if(ncount<20) return;{ ncount=0;i++;if(i==100) i=0;} }

相似回答