#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit RS = P2^6;
sbit RW = P2^5;
sbit EN = P2^7;
sbit DCLK = P3^6;
sbit DIN = P3^4;
sbit CS = P3^5;
sbit DOUT = P3^7;
uint disp[4];
void delayms(uint xms)
{
int i,j;
for(i=xms;i>0;i--)
for(j=114;j>0;j--);
}
void write_com(int com)
{
EN = 0;
RS = 0;
RW = 0;
P0 = com;
delayms(1);
EN = 1;
delayms(5);
EN = 0;
}
void write_date(int date)
{
EN = 0;
RS = 1;
RW = 0;
P0 = date;
delayms(1);
EN = 1;
delayms(5);
EN = 0;
}
void lcdset()
{
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}
void display()
{
write_com(0x80);
write_date((disp[0])+'0');
write_com(0x81);
write_date((disp[1])+'0');
write_com(0x82);
write_date((disp[2])+'0');
write_com(0x83);
write_date((disp[3])+'0');
}
void SPI_Write(uchar dat)
{
uchar i;
DCLK = 0;
for(i=0; i<8; i++)
{
DIN = dat >> 7;
dat <<= 1;
DCLK = 0;
DCLK = 1;
}
}
uint SPI_Read(void)
{
uint i, dat = 0;
DCLK = 0;
for(i=0; i<12; i++)
{
dat <<= 1;
DCLK = 1;
DCLK = 0;
dat |= DOUT;
}
return dat;
}
uint Read_AD_Data(uchar cmd)
{
uchar i;
uint AD_Value;
DCLK = 0;
CS = 0;
SPI_Write(cmd);
for(i=6; i>0; i--);
DCLK = 1;
_nop_();
_nop_();
DCLK = 0;
_nop_();
_nop_();
AD_Value=SPI_Read();
CS = 1;
return AD_Value;
}
void datapros()
{
uint temp;
static uint i;
if(i==50)
{
i=0;
temp = Read_AD_Data(0x94);
}
i++;
disp[0]= temp/1000;
disp[1]= temp%1000/100;
disp[2]= temp%1000%100/10;
disp[3]=temp%1000%100%10;
}
void main()
{
lcdset();
while(1)
{
datapros();
display();
}
}
|