📄 yalixianshi.c
字号:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//uchar tab1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//带小数点
sbit ST = P3^0;
sbit OE = P3^1;
sbit EOC = P3^2;
sbit CLK = P3^3;
/*sbit p10=P1^0;
sbit p11=P1^1;
sbit p12=P1^2;
sbit p13=P1^3;
sbit p14=P1^4;*/
uchar getdata,i,sum=0,temp;
void clk() interrupt 1 using 0
{ // 软件延时产生ADC0809的时钟
CLK = ~ CLK;
}
void delay()
{
uint j;
for(j=0;j<500;j++)
{;}
}
void display(unsigned char read)
{
uint t,k,a[4];
while(1)
{
t=read*4000/256;
for(k=0;k<4;k++)
{
P1=0x08;
a[k]=t%10;
P0=tab[a[k]];
delay();
t=t/10;
P1=0x08>>1|(1<<4);
}
}
//delay();
//p10=1;
//P0=tab[t]
//P0=tab1[read%10];
//p10=0;
//delay();
//p11=1;
//P0=tab[(int)(read*10)%10];
//p11=0;
}
void main()
{
ST = 0;
OE = 0;
TMOD = 0x12; // 定时器0工作方式2,定时器1工作方式1
//TH0 = 216; // 定时器0赋初值
//TL0 = 216;
TH0 = (65536-4000)/256; //定时器1赋初值
TL0 = (65536-4000)%256;
TR0 = 1;
//TR1 = 1;
ET0 = 1;
//ET1 =1;
EA = 1;
ST = 1; // ST端产生正脉冲
ST = 0;
while(1)
{
if(EOC == 1) // 转换结束
{
OE = 1; // 输出转换得到的数据
getdata = P2; // 记下得到的数据
OE = 0;
for(i=0;i<10;i++)
{
sum+=getdata;
}
temp =sum/10;
}
display(temp);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -