用单片机实现输入变量(数值)通过数码管动态显示(输入是多少,输出就是多少。)

先谢谢各位大神了
2024-11-25 16:03:04
推荐回答(4个)
回答1:

#include

#define uchar unsigned char

#define uint unsigned int

uchar code table[]={    //段编码

0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,

0xff,0xc7,0xc1,0x84,0x91};

uchar code tab[]= {  //位编码

0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

uchar tabl[]={  //存数 数组

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};

uchar num,tt,aa,bb,cc,dd;

void init();

void delay(uint z) //延时函数

{

uint x,y;

for(x = z;x >0;x--)

for(y = 110;y > 0;y--);

}

void main()

{

tabl[5]=table[1]; //输入要显示的数字

tabl[6]=table[5];

tabl[7]=table[0];

tabl[8]=table[0];

tabl[9]=table[8];

tabl[10]=table[2];

tabl[11]=table[7];

tabl[12]=table[0];

tabl[13]=table[7];

tabl[14]=table[1];

tabl[15]=table[9];

TMOD=0x01;//选定时器和方式

  TH0=(65536-50000)/256; //装入初值

TL0=(65536-50000)%256;

EA=1;// 开总中断

  ET0=1;//开定时器0中断

  TR0=1;//启动定时器0

while(1)   //大循环  数字滚动流入

{

cc=6;

bb=0;

dd=0;

init();

bb=1;

dd=1;

init();

bb=2;

dd=2;

init();

bb=3;

dd=3;

init(); 

bb=4;

dd=4;

init();

bb=5;

dd=5;

init();

bb=6;

dd=6;

init();

bb=7;

dd=7;

init();

bb=8;

dd=8;

init();

bb=9;

dd=9;

init();

bb=10;

dd=10;

init();

bb=11;

dd=11;

init();

bb=12;

dd=12;

init();

bb=13;

dd=13;

init(); 

bb=14;

dd=14;

init(); 

bb=15;

dd=15;

init();

}

}

void exter0() interrupt 1  //中断子程序

    {

      TH0=(65536-50000)/256;

    TL0=(65536-50000)%256;

num++;

if(num==20)

{

  num=0;

tt=0;

cc++;

}

    }

void init()  //动态扫描子程序

{

aa=0;

tt=1;

while(tt)

{

P2= tab[aa];

aa++;

if(aa==6)

{

aa=0;

}

P0=tabl[bb];

bb++;

delay(5) ;

if(bb%cc==0)

{

bb=dd;

}

P0=0xff;

}

}

回答2:

用单片机实现输入变量(数值)通过数码管动态显示,输入值根据外设而定(比如按键、或者其他输入),数码管动态显示的输出一是段码控制数据,一是位码控制数据。具体数据根据共阴或共阳而不同。

回答3:

哈哈,求硬件图

回答4:

使用周期扫描法对I/O口周期扫描,然后读入存储器,然后再读出!!!