单片机显示小数
我想在数码管上显示整数和小数部后三位,那们大侠帮我改下程序啊,先谢了
#include<reg52.h>
#define uchar unsigned char
#define static unsigned long int
sbit bb=P3^2; //外部中断位声明
sbit cc=P3^3;
static count,shiwan,wan,qian,bai,shi,ge;
static disnum,ad;
float ab,ac;
uchar code tabledu[]={ //数组变量
0x28,0x7e,0xa2,0x62,
0x74,0x61,0x21,0x7a,
0x20,0x60};
display(uchar,uchar,uchar,uchar,uchar,uchar);
delay(char) ;
void abc();
void main ()
{
count=0;
EA=1; //总中断开
EX0=1; //外部中断0开
IT0=1; //下降沿触发
TMOD=0xf0;
TR1=1;
while(1)
{
if(ac>=1000000) //计数值到一百万后清0
ac=0;
display(shiwan,wan,qian,bai,shi,ge) ; //显示程序
shiwan=ac/100000;
wan=(ac-(shiwan*100000))/10000;
qian=(ac-(shiwan*100000)-(wan*10000))/1000;
bai=(ac-(shiwan*100000)-(wan*10000)-(qian*1000))/100;
shi=(ac-(shiwan*100000)-(wan*10000)-(qian*1000)-(bai*100))/10;
ge=(ac-(shiwan*100000)-(wan*10000)-(qian*1000)-(bai*100)-shi*10)%10;
}
}
void abc()
{
ab=12/200;
ad=disnum/ab;
if(ad>0)
ad=+ac;
}
void tim1() interrupt 0
{
abc();
count++; //计数++
disnum++; //显示++
}
display(uchar shiwan,uchar wan,uchar qian,uchar bai,uchar shi,uchar ge)
{
P2=0xc0; //消影作用
P0=tabledu[shiwan];
P2=0xfd;
delay(0);
P2=0xc0;
P0=tabledu[wan];
P2=0xfb;
delay(0);
P2=0xc0;
P0=tabledu[qian];
P2=0xf7;
delay(0);
P2=0xc0;
P0=tabledu[bai];
P2=0xef;
delay(0);
P2=0xc0;
P0=tabledu[shi];
P2=0xdf;
delay(0);
P2=0xc0;
P0=tabledu[ge];
P2=0xbf;
delay(0);
// 0xfd,0xfb,0xf7,0xef,
// 0xdf,0xbf};
}
delay(char x) //延迟子程序
{
uchar a,b;
for(b=1000;b>0;b--)
for (a=x;a>0;a--) ;
}