51 단편기 실험 16:A/D 모드 변환(XPT2046)
1738 단어 51 단편기진급의 길-단편기 학습
#include
#include
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
uc code x[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uc dig[5];
void delay(uc x)
{
uc i,j;
for(i=1;i<=x;i++)
for(j=1;j<=110;j++);
}
void datapros()
{
ui temp;
static uc i;
if(i==50)
{
i=0;
temp=Read_AD_Data(0x94);
}
i++;
dig[1]=x[temp%10];
dig[2]=x[temp%100/10];
dig[3]=x[temp%1000/100];
dig[4]=x[temp/1000];
}
void digdisplay()
{
uc i;
for(i=1;i<=4;i++)
{
switch(i)
{
case(1):
LSA=0;LSB=0;LSC=0;break;
case(2):
LSA=1;LSB=0;LSC=0;break;
case(3):
LSA=0;LSB=1;LSC=0;break;
case(4):
LSA=1;LSB=1;LSC=0;break;
}
P0=dig[i];
delay(1);
P0=0x00;
}
}
void main()
{
while(1)
{
datapros();
digdisplay();
}
}
#include
void SPI_Write(uc dat)
{
uc i;
for(i=1;i<=8;i++)
{
din=dat>>7;
dat<<=1;
clk=1;
clk=0;
}
}
ui SPI_Read()
{
ui i,dat=0;
for(i=1;i<=12;i++)
{
clk=1;
dat<<=1;
dat|=dout;
clk=0;
}
return dat;
}
ui Read_AD_Data(uc cmd)
{
ui vae;
clk=0;
cs=0;
SPI_Write(cmd);
clk=1;
clk=0;
vae=SPI_Read();
cs=1;
return vae;
}
#ifndef _XPT2046_H_
#define _XPT2046_H_
#include
#include
#ifndef uc
#define uc unsigned char
#endif
#ifndef ui
#define ui unsigned int
#endif
#ifndef ul
#define ul unsigned long
#endif
sbit din=P3^4;
sbit cs=P3^5;
sbit clk=P3^6;
sbit dout=P3^7;
void SPI_Write(uc dat);
ui SPI_Read();
ui Read_AD_Data(uc cmd);
#endif