|
NONS2%V8ZNF~W$JDYY`_[)0.png (61.32 KB, 下載次數: 130)
下載附件
proteus圖
2016-6-14 19:51 上傳
#include<reg52.h>
unsigned char smg_du[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
sbit oe=P1^0;
sbit eoc=P1^1;
sbit st=P1^2;
sbit clk=P1^3;
unsigned int c=4;
unsigned int ad_data;
unsigned int s,a;
void mDelay(unsigned int Delay)
{
unsigned int i;
for(;Delay>0;Delay--)
{
for(i=0;i<54;i++) {;}
}
}
void cbs()
{
switch(c)
{
case 1:
s=1;
break;
case 2:
s=4;
break;
case 3:
s=10;
break;
case 4:
s=20;
break;
}
}
void smg_display(unsigned char dat)
{
unsigned char i;
unsigned int b;
b=dat*1.0/255*500*s;
for(i=0;i<4;i++)
{
P0 = 0x00;
switch(i)
{
case 0:
P0 = smg_du[b/10%10]; //顯示十分位
P2 = 0xfb;
break;
case 1:
P0 = smg_du[b/100%10]+0x80; //顯示個位
P2 = 0xfd;
break;
case 2:
P0 = smg_du[b/1000]; //顯示十位
P2 = 0xfe;
break;
case 3:
P0 = smg_du[b%10]; //顯示千分位
P2 = 0xf7;
break;
}
mDelay(1);
}
}
void start()
{
st = 0;
st = 1;
st = 0;
while(!eoc );
oe = 1;
P1=0x0f;
ad_data=P3;
a=ad_data*1.0/255*5*20; //P3口輸出值化成電壓
oe = 0;
}
void chuli()
{
if(a<5)
{ c=1;
P1=0x3f;
}
if(5<=a<20)
{ c=2;
P1=0x2f;
}
if(20<=a<50)
{ c=3;
P1=0x1f;
}
if(a<=50<100)
{ c=4;
P1=0x0f;
}
}
void main()
{
TMOD =0x02;
TH0 = 65355/256;
TL0 = 65355/256;
EA = 1;
ET0 = 1;
TR0 = 1;
while(1)
{
start();
chuli();
cbs();
smg_display(P3);
}
}
void timer0() interrupt 1
{
clk = ~clk;
}
這個程序出不來 請問哪里錯了,謝謝了
|
|