注册会员
- 积分
- 74
- 威望
- 52
- 贡献
- 16
- 兑换币
- 15
- 注册时间
- 2013-12-21
- 在线时间
- 3 小时
- 毕业学校
- 保密
|
2#
楼主 |
发表于 2014-3-8 13:46:01
|
只看该作者
本帖最后由 青菜汤 于 2014-3-8 13:48 编辑
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit BIT0=P2^0;
sbit BIT1=P2^1; //定义数码管位码端口
sbit BIT2=P2^2;
sbit BIT3=P2^3;
sbit BIT4=P2^4;
sbit BIT5=P2^5;
sbit SDA=P2^7;
sbit SCK=P2^6;
sbit OE=P3^0; //定义ADC0808端口
sbit EOC=P3^1;
sbit ST=P3^2;
uchar code table1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//带小数点的0~5六个
uchar code tab[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};//共阳极0~9十个段码/段码
uchar volt_data;
void init();
uchar i;
//*********************************
//延时子程序
//*********************************
void delay(uchar z)
{
uchar x,y;
for(x=z;x>0;x--)
for(y=100;y>0;y--);
}
//*********************************
//将AD转换输出的数据转换成相应的
//电压值并且显示出来
//*********************************
/*8位数据从74HC164的串行输入端输入,从输出端并行输出*/
/*************************************************************************************************/
void senddata(uchar dd) {
uchar j;
for (j=0;j<8;j++) {
SCK=0;
SDA=(bit)(dd&0x01);
SCK=1;
dd=dd>>1;
}
}
/****************************************************************************************************/
void convert(uchar volt_data)
{
float h,j;
uint i,k,l;
h=volt_data*31.368;
k=volt_data*31.368;
i=k/1000;
i=i*1000;
j=h-i;
l=j*10;
senddata(tab[k/1000]);
BIT0=1;
delay(1);
BIT0=0;
senddata(tab[k/100&10]);
BIT1=1;
delay(1);
BIT1=0;
senddata(tab[k/10%10]);
BIT2=1;
delay(1);
BIT2=0;
senddata(tab[k%10]);
BIT3=1;
delay(1);
BIT3=0;
senddata(tab[l/1000]);
BIT4=1;
delay(1);
BIT4=0;
}
void main()
{
uchar volt_data;
init();//初始化子程序
while(1)
{
if(i==7)
{
i=0;
ST=0;
_nop_();
ST=1;
_nop_();
ST=0; //启动AD转换
if(EOC==0) //等待转换结束
delay(5);
while(EOC==0);
OE=1; //允许输出
volt_data=P1;
convert(volt_data); //调用数据处理子程序
delay(5); //暂存转换结果
OE=0; //关闭输出
}
}
}
void time0_int(void) interrupt 1
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
i++;
}
void init()
{
TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
EA=1;ET0=1;
i=0;
TR0=1;
} |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|