普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 2220|回复: 0

AD转换试验

[复制链接]

22

主题

24

帖子

136

积分

注册会员

Rank: 2

积分
136
发表于 2021-1-19 13:19:09 | 显示全部楼层 |阅读模式
主文件 main.c
#include <reg52.h>
#include"xpt2046.h"
#define SMG P0

sbit s1=P1^0;
sbit s2=P1^1;
sbit s3=P1^2;

uchar code smg_duan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar Display[4];
void Smg_Display();

void dataproc();

void main()
{
       
        while(1)
        {
               
                dataproc();                     //对数据处理,转变为显示数组
                Smg_Display();                       //数组在数码管显示

        }
}



void dataproc()
{
        static uchar i;
        uint RiValue;
        i++;
        if(i==50)
        {
       
                RiValue=read_xpt2046();        //接收12位数据存入RiValue
                i=0;
        }
        Display[0]=smg_duan[RiValue/1000];
        Display[1]=smg_duan[RiValue%1000/100];
        Display[2]=smg_duan[RiValue%1000%100/10];
        Display[3]=smg_duan[RiValue%1000%100%10];

}

void Smg_Display()
{
        uchar i;
        for(i=0;i<4;i++)
        {
                switch(i)
                {
                        case 0: s3=0; s2=0; s1=0; break;
                        case 1: s3=0; s2=0; s1=1; break;
                        case 2: s3=0; s2=1; s1=0; break;
                        case 3: s3=0; s2=1; s1=1; break;
                }

                SMG=Display[i];
                delay(100);
                SMG=0X00;

        }
}

子文件:xpt2046.c
#include"xpt2046.h"

void delay(uint t)
{
        while(t--);
}

void xpt2046_Init(uchar cmd)
{
        uchar i;
        CLK=0;
        for(i=0;i<8;i++)
        {
                Din=cmd>>7;
                cmd<<=1;
                CLK=0;
                CLK=1;
        }

               
}


uint read_xpt2046()
{
        uchar i;
        uint dat;
        CS=0;
        CLK=0;
        xpt2046_Init(0X94);                //写入控制字命令
//        for(i=6;i>0;i--);
        CLK=1;
        _nop_();
        _nop_();
        CLK=0;
        _nop_();
        _nop_();
        CLK=0;
        for(i=0;i<12;i++)
        {
               
                dat<<=1;
                CLK=1;
                CLK=0;
       
                dat=dat|Dout;

        }


        CS=1;
        return dat;
}

头文件:xpt2046.h
#include<reg52.h>
#include<intrins.h>

#define uchar unsigned char
#define uint unsigned int

sbit Din=P3^4;
sbit CS=P3^5;
sbit CLK=P3^6;
sbit Dout=P3^7;

extern void delay(uint t);

void xpt2046_Init(uchar cmd);

uint read_xpt2046();
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-4-24 16:21 , Processed in 0.087862 second(s), 30 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表