×
单片机 > 单片机程序设计 > 详情

51单片机实验16:A/D模数转换(XPT2046)

发布时间:2024-05-19 发布时间:
|

关于A/D模数转换以及XPT2046芯片的内容请参考:/zixunimg/eeworldimg/blog.csdn.net/cax1165/article/details/87024388


#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


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ARM 汇编的必知必会