我这有0804的转换程序,还是51串口发送程序,哪位大哥可以把二者合一下,使0804转换后的量过能串口发给电脑。
0804转换后LED显示程序
#include<reg51.h>
#include <intrins.h>
sbit smg1=P2^6;
sbit smg2=P2^5;
sbit smg3=P2^4; //接LCD的前三个指示
#define uchar unsigned char
#define uint unsigned int
unsigned char code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
//{ 192,249,164,176,153,146,130,248,128,144}
/*************ad控制管脚定义*******************************/
sbit cs=P3^3;
sbit wr=P3^5;
sbit rd=P3^4;
void delay(uint count) //delay
{
uint i;
while(count)
{
i=200;
while(i>0)
i--;
count--;
}
}
/*************读AD0804子程序*******************************/
unsigned char adc0804( void ) //读AD0804子程序
{ unsigned char addata,i;
rd=1;wr=1;//int1=1; //读ADC0804前准备
P1=0xff; //P1全部置一准备
cs=0;wr=0;wr=1; //启动ADC0804开始测电压
rd=0; //开始读转换后数据
i=i; i=i; //无意义语句,用于延时等待ADC0804读数完毕
addata=P1;//读出的数据赋与addate
rd=1;cs=1;//读数完毕
return(addata);//返回最后读出的数据
}
void display(int temp) //显示程序
{
/****************************************************/
smg3=1;
smg2=1;
delay(2);
P0=table[temp/100]; //显示百位
smg1=0;
delay(2);
smg1=1;
/****************************************************/
smg3=1;
P0=table[temp%100/10]; //显示十位
smg2=0;
delay(2);
smg2=1;
/****************************************************/
smg1=1;
P0=table[temp%10]; //显示个位
smg3=0;
delay(2);
smg3=1;
/****************************************************/
}
void main()
{
while(1) display(adc0804());
}
串口发送字符串程序
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define shuju P0
#define bus P1
#define lcdbus P3
sbit wei=P2^2;
uchar a;
uchar tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF};
void chushi()
{
TMOD=0x20;
SCON=0x50;
TH1=0xfA;
TL1=0xfA;
PCON=0x80;
TR1=1;
EA=1;
ES=0;
RI=0;
TI=0;
}
void display()
{
wei=0;
shuju=tab[a];
}
void main()
{
chushi();
while(1)
{
while(!RI);
RI=0;
a=SBUF;
display();
}
} |