#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit ST = P3^4; //ADC0809的6引脚
sbit EOC = P3^5; //ADC0809的7引脚
sbit OE=P3^6;
sbit RS=P1^0 ;
sbit RW=P1^1 ;
sbit E=P1^2 ;
sbit RES=P1^3 ;
#define Lcd_Bus P0
uchar buffer[] = {0,0,0,0};
uint voltage; //定义电压变量
uint AdResult; //定义A/D转换结果变量
uint Temp; //定义二进制-十进制转换的中间变量
float xianshi;
uchar dianya[3]={'0','0','0'};
void delay1(uint z) //延时子程序
{
uint x,y;
for(x = 0;x < z; x ++)
for(y = 0;y < 120; y ++);
}
void send_str(unsigned char str[])
{
unsigned char i = 0;
while (str[i] != '\0')
{
SBUF = str[i++];
while (!TI)
;
//等待数据传送完毕
TI = 0; //清中断标志
}
}
void chk_busy()
{
RS=0 ;
RW=1 ;
E=1 ;
Lcd_Bus=0xff ;
while((Lcd_Bus&0x80)==0x80);
E=0 ;
}
/*------------------延时子程序-----------------------------*/
void delay(unsigned int t)
{
unsigned int i,j ;
for(i=0;i<t;i++)
for(j=0;j<10;j++);
}
/*------------------写命令到LCD------------------------------*/
void write_com(unsigned char cmdcode)
{
chk_busy();
RS=0 ;
RW=0 ;
E=1 ;
Lcd_Bus=cmdcode ;
delay(5);
//------------------在数据写入的时候加入适当的延时
E=0 ;
delay(5);
}
/*-------------------写数据到LCD----------------------------*/
void write_data(unsigned char Dispdata)
{
chk_busy();
RS=1 ;
RW=0 ;
E=1 ;
Lcd_Bus=Dispdata ;
delay(5);
//------------------在数据写入的时候加入适当的延时
E=0 ;
delay(5);
}
/*------------------初始化LCD屏--------------------------*/
void lcdreset()
{
delay(2000);
write_com(0x30);
delay(10);
//选择基本指令集
write_com(0x30);
//选择8bit数据流
delay(5);
write_com(0x0c);
//开显示(无游标、不反白)
delay(10);
write_com(0x01);
//清除显示,并且设定地址指针为00H
delay(500);
write_com(0x06);
//指定在资料的读取及写入时,设定游标的移动方向及指定显示的移位
delay(0);
}
/*------------------显示字符串--------------------------*/
void hzkdis(unsigned char code*s)
{
while(*s>0)
{
write_data(*s);
s++;
delay(50);
}
}
void adc0809_convert() //A/D转换子程序
{
ST = 0;
ST = 1;
ST = 0; //开始A/D转换
while(EOC == 0) ; //A/D转换完成
OE=1;
AdResult = P2; //把A/D转换结果赋给A/D转换结果变量
OE=0;
// send_str(AdResult);
dianya[2]=AdResult/100;
dianya[1]=AdResult%100/10;
dianya[0]=AdResult%10;
write_com(0x90);
write_data(dianya[2]+'0');
write_data(dianya[1]+'0');
write_data(dianya[0]+'0');
xianshi=((float)AdResult/255)*4.6;
write_com(0x98);
xianshi=xianshi*100;
write_data((int)xianshi/100+'0');
hzkdis(".");
write_data((int)xianshi%100/10+'0');
write_data((int)xianshi%10+'0');
}
void main()
{
P0 = 0xff;
P1 = 0xff;
P2 = 0xff;
P3 = 0xff;
lcdreset();
SCON = 0x50; //设定串口工作方式1,接收使能
PCON = 0x00; //波特率不倍增
TMOD = 0x20; //定时器1工作于8位自动重载模式, 用于产生波特率
EA = 1;
TL1 = 0xfd;
TH1 = 0xfd; //波特率9600
TR1 = 1;
hzkdis("ADC0809");
while(1)
{
adc0809_convert();
send_str("111");
delay1(255);
send_str(dianya);
delay1(255);
}
}
单片机用ADC0832进行数据采样,12864液晶显示
4星 · 超过85%的资源 需积分: 10 17 浏览量
2011-08-09
15:23:47
上传
评论 1
收藏 889KB RAR 举报
诗酒赠佳人
- 粉丝: 29
- 资源: 10
- 1
- 2
前往页