精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于XPT2046芯片的電位器AD轉(zhuǎn)換裝置設(shè)計(jì)

CHANBAEK ? 來(lái)源:博客園-立冬以東 ? 作者:博客園-立冬以東 ? 2023-02-15 13:52 ? 次閱讀

XPT2046是一款四線制電阻觸摸屏控制芯片,內(nèi)含12位分辨率125KHz轉(zhuǎn)換速率逐步逼近型A/D轉(zhuǎn)換器,支持從1.5V到5.25V的低電壓I/O接口

所謂逐步逼近型,就是輸入一個(gè)模擬量,其與1000 0000 0000 對(duì)應(yīng)的模擬量進(jìn)行比較,大則高位取1,小則高位取0。 這種思想相當(dāng)于折半查詢(xún),所以可以依次從高位到低位確定所有值,以此來(lái)確定模擬量對(duì)應(yīng)的數(shù)字量。

我們?cè)撊绾稳ビ眠@個(gè)芯片,來(lái)完成將一個(gè)模擬量轉(zhuǎn)換成數(shù)字量呢?

初學(xué)者確實(shí)有很大的困難,我們需要學(xué)會(huì)怎么去看它的芯片手冊(cè)。

上圖是它的一個(gè)封裝圖,是不是看得很亂?

別急,這時(shí)候還要看看它每個(gè)管腳的功能描述

如下圖

這時(shí)候,我們可以大致了解這是一個(gè)串行輸入輸出的芯片。

串行數(shù)據(jù)輸出是DOUT(16管腳),也就是我們最終的數(shù)字量。

串行數(shù)據(jù)輸入是DIN(2管腳),你會(huì)想,我們不是輸入的是模擬量,怎么會(huì)要串行輸入呢?

確實(shí),你會(huì)看到6、7、8、9管腳都是輸入管腳,它們就不是串行輸入的,所以我們可以推測(cè)它們是不同的模擬量輸入口。 其實(shí)DIN管腳是模式控制輸入口,就好比我們?nèi)ゲ僮?a href="http://www.nxhydt.com/tags/寄存器/" target="_blank">寄存器一樣,要寫(xiě)進(jìn)去一個(gè)數(shù)字量,來(lái)控制寄存器的運(yùn)行模式,芯片也是這樣。

再看DCLK管腳,這是外部時(shí)鐘輸入口,既然是串行輸入輸出,就要有拍子來(lái)控制一個(gè)一個(gè)字節(jié)輸入輸出,所以這個(gè)管腳就是起到這個(gè)作用。

然后我們一定要看時(shí)序圖

通過(guò)看時(shí)序圖,才能了解芯片的工作方式。

首先,CS是片選,低電平有效。

首先輸入一個(gè)DIN,但是由于是串行輸入,所以這里就要用位運(yùn)算來(lái)一位一位提取后輸入到DIN管腳,而輸進(jìn)去的時(shí)候是發(fā)生在時(shí)鐘上升沿,時(shí)鐘下降沿結(jié)束輸入。

所以我們可以將模式輸入程序?qū)懗蛇@樣的格式:

1、獲得char 型模式數(shù)字量

2、DCLK = 0.

3、提取高位并將其賦值給DIN

4、DCLK = 1.鎖存當(dāng)前值。

循環(huán)8次。

之后我們發(fā)現(xiàn)芯片進(jìn)入busy階段,我們需要給它一個(gè)小延時(shí),讓它進(jìn)行AD轉(zhuǎn)換,然后我們還需要再給一個(gè)時(shí)鐘脈沖,清除busy.

接下來(lái)就是讀取DOUT的值,原理同DIN輸入。

而模式的選擇需要看你的板子上是怎么外接的

我們需要用電位器來(lái)實(shí)現(xiàn)AD轉(zhuǎn)換,所以模擬量輸入接口應(yīng)該選擇X+(6管腳)

再看芯片手冊(cè)的模式說(shuō)明

所以我們模式選擇為0x94,讀者可以自行對(duì)照每一位看看。

綜上,我就可以給出完整代碼了

1 #include 52.h>
  2 #include
  3 
  4 #define uint unsigned int 
  5 #define uchar unsigned char
  6 #define GPIO_DUAN P0
  7 
  8 uchar table[]={
  9     0x3f, 0x06, 0x5b, 0x4f,
 10     0x66, 0x6d, 0x7d, 0x07,
 11     0x7f, 0x6f, 0x77, 0x7c,
 12     0x39, 0x5e, 0x79, 0x71
 13 };
 14 
 15 uchar DisplayData[5];
 16 sbit HCA = P2^2;//HCA,HCB,HCC是利用了74HC138譯碼器來(lái)進(jìn)行位選,我們動(dòng)態(tài)位選了417 sbit HCB = P2^3;
 18 sbit HCC = P2^4;
 19 sbit CLK  = P1^0;
 20 sbit CS   = P1^1;
 21 sbit DIN  = P1^2;
 22 sbit DOUT = P1^3;
 23 
 24 void DisplayDS();
 25 void delayms(uint xms);
 26 uint Read_AD_Data(uchar moshi);
 27 void SPI_Write(uchar moshi);
 28 uint GetValue();
 29 
 30 void main()
 31 {
 32     uint temp, cnt = 50;
 33     while(1){
 34         if(cnt == 50){//每50下讀取轉(zhuǎn)換值,避免數(shù)字跳動(dòng)太快
 35             temp = Read_AD_Data(0x94);
 36             cnt = 0;
 37         }
 38         cnt++;
 39         
 40         DisplayData[0] = table[temp%10000/1000];
 41         DisplayData[1] = table[temp%1000/100];
 42         DisplayData[2] = table[temp%100/10];
 43         DisplayData[3] = table[temp%10/1];
 44         
 45         DisplayDS();
 46     }
 47 }
 48 
 49 void DisplayDS()
 50 {//動(dòng)態(tài)掃描函數(shù)
 51     uint i;
 52     for(i = 0; i < 4; i++){
 53         GPIO_DUAN = 0x00;
 54         switch(i)
 55         {
 56             case 0 : HCC = 0; HCB = 0; HCA = 0; break;
 57             case 1 : HCC = 0; HCB = 0; HCA = 1; break;
 58             case 2 : HCC = 0; HCB = 1; HCA = 0; break;
 59             case 3 : HCC = 0; HCB = 1; HCA = 1; break;
 60         }    
 61         GPIO_DUAN = DisplayData[i];
 62         delayms(1);
 63     }
 64 }
 65 
 66 void delayms(uint xms)
 67 {
 68     uint i, j;
 69     for(i = 0; i < xms; i++)
 70         for(j = 0; j < 110; j++);
 71 }
 72 
 73 uint Read_AD_Data(uchar moshi)
 74 {//讀取最終的數(shù)字量函數(shù)
 75     uint i, ans;
 76     SPI_Write(moshi);    
 77     for(i = 0; i < 5; i++);
 78     
 79     CLK = 1;
 80     _nop_();
 81     _nop_();
 82     CLK = 0;
 83     _nop_();
 84     _nop_();
 85     
 86     ans = GetValue();
 87     CS = 1;
 88     return ans;
 89 }
 90 
 91 void SPI_Write(uchar moshi)
 92 {//寫(xiě)模式函數(shù)
 93     uint i;
 94     CS = 0;
 95     for(i = 0; i < 8; i++){    
 96         CLK = 0;
 97         DIN = moshi>>7;
 98         CLK = 1;
 99         moshi <<= 1;
100     }
101     CLK = 0;
102 }
103 
104 uint GetValue()
105 {//讀取DOUT管腳,得到最終數(shù)字量函數(shù)
106     uint i, ans = 0;
107     for(i = 0; i < 12; i++){
108         CLK = 0;
109         ans <<= 1;
110         ans |= DOUT;
111         CLK = 1;
112     }
113     CLK = 0;
114     return ans;
115 }
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 電位器
    +關(guān)注

    關(guān)注

    14

    文章

    1005

    瀏覽量

    66725
  • 觸摸屏
    +關(guān)注

    關(guān)注

    42

    文章

    2290

    瀏覽量

    115999
  • 模擬量
    +關(guān)注

    關(guān)注

    5

    文章

    491

    瀏覽量

    25506
  • AD轉(zhuǎn)換
    +關(guān)注

    關(guān)注

    3

    文章

    167

    瀏覽量

    45291
  • XPT2046
    +關(guān)注

    關(guān)注

    0

    文章

    18

    瀏覽量

    18249
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    詳解FPGA XPT2046觸摸控制設(shè)計(jì)

    獲取。XPT2046是一款設(shè)計(jì)用于移動(dòng)電話(huà)、個(gè)人數(shù)字助理、便攜式一起、付款中斷設(shè)備、觸摸屏顯示等設(shè)備的4線制電阻觸摸屏控制。該芯片實(shí)質(zhì)為一個(gè)多通道ADC+電壓輸出
    發(fā)表于 02-20 06:35

    如何用XPT2046芯片實(shí)現(xiàn)AD數(shù)模轉(zhuǎn)換

    普中51開(kāi)發(fā)板,用XPT2046芯片實(shí)現(xiàn)AD數(shù)模轉(zhuǎn)換:讓8個(gè)動(dòng)態(tài)數(shù)碼管,第一二位顯示AD,后3位轉(zhuǎn)換的數(shù)字量,最后3位顯示對(duì)應(yīng)電壓值XPT2046
    發(fā)表于 12-09 07:19

    XPT2046是什么?有何作用

    XPT2046是一種可以做觸摸(壓力)感應(yīng),熱感應(yīng),光感應(yīng),煙霧感應(yīng)等的對(duì)模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)的芯片芯片模型圖控制寄存模式選擇A2—A
    發(fā)表于 01-17 07:20

    XPT2046有哪些功能?

    XPT2046有哪些功能?
    發(fā)表于 02-17 06:58

    XPT2046可以當(dāng)做普通的ADC芯片使用嗎

    一、環(huán)境介紹單片機(jī)采用: STM32F103ZET6編程軟件: keil5編程語(yǔ)言: C語(yǔ)言編程風(fēng)格: 寄存開(kāi)發(fā).目標(biāo)芯片: XPT2046---標(biāo)準(zhǔn)SPI接口時(shí)序二、XPT2046
    發(fā)表于 03-02 06:21

    XPT2046觸摸屏控制

    XPT2046觸摸屏控制
    發(fā)表于 02-15 22:45 ?19次下載

    XPT2046中文資料詳解_引腳圖及功能_工作原理_內(nèi)部框圖及應(yīng)用設(shè)計(jì)電路

    本文主要介紹了XPT2046中文資料詳解_引腳圖及功能_工作原理_內(nèi)部框圖及典型應(yīng)用設(shè)計(jì)。XPT2046是一種典型的逐次逼近型模數(shù)轉(zhuǎn)換器,包含了采樣/保持、模數(shù)轉(zhuǎn)換、串口數(shù)據(jù)輸出等功能
    發(fā)表于 12-23 11:39 ?16.4w次閱讀
    <b class='flag-5'>XPT2046</b>中文資料詳解_引腳圖及功能_工作原理_內(nèi)部框圖及應(yīng)用設(shè)計(jì)電路

    XPT2046觸摸屏實(shí)驗(yàn)過(guò)程詳解與STM32代碼解析

    本文主要介紹了XPT2046觸摸屏實(shí)驗(yàn)過(guò)程詳解與STM32代碼解析,XPT2046完成一個(gè)完整的轉(zhuǎn)換需要24個(gè)串行時(shí)鐘,也就是需要3個(gè)字節(jié)的SPI時(shí)鐘。介紹了觸摸物理坐標(biāo)值轉(zhuǎn)換成LCD
    發(fā)表于 12-23 12:04 ?2.5w次閱讀
    <b class='flag-5'>XPT2046</b>觸摸屏實(shí)驗(yàn)過(guò)程詳解與STM32代碼解析

    基于AD轉(zhuǎn)換XPT2046的TFT3.2-ILI9341彩屏原理圖

    基于AD轉(zhuǎn)換XPT2046的TFT3.2-ILI9341彩屏原理圖
    發(fā)表于 01-13 10:25 ?38次下載

    XPT2046觸摸屏控制的數(shù)據(jù)手冊(cè)免費(fèi)下載

    XPT2046是一款4導(dǎo)線制觸摸屏控制,內(nèi)含12位分辨率125KHz轉(zhuǎn)換速率逐步逼近型A/D轉(zhuǎn)換器XPT2046支持從1.5V到5.25
    發(fā)表于 09-23 16:38 ?14次下載
    <b class='flag-5'>XPT2046</b>觸摸屏控制<b class='flag-5'>器</b>的數(shù)據(jù)手冊(cè)免費(fèi)下載

    XPT2046電阻式觸摸屏控制的數(shù)據(jù)手冊(cè)免費(fèi)下載

    XPT2046是一款4線制電阻式觸摸屏控制,內(nèi)含12位分辨率125KHz轉(zhuǎn)換速率逐步逼近型A/D轉(zhuǎn)換器XPT2046支持從1.5V到5.
    發(fā)表于 11-05 17:38 ?23次下載
    <b class='flag-5'>XPT2046</b>電阻式觸摸屏控制<b class='flag-5'>器</b>的數(shù)據(jù)手冊(cè)免費(fèi)下載

    觸摸屏控制XPT2046數(shù)據(jù)手冊(cè)下載

    觸摸屏控制XPT2046數(shù)據(jù)手冊(cè)下載
    發(fā)表于 07-05 10:20 ?25次下載

    51單片機(jī)實(shí)驗(yàn)16:A/D模數(shù)轉(zhuǎn)換XPT2046

    51單片機(jī)實(shí)驗(yàn)16:A/D模數(shù)轉(zhuǎn)換XPT2046
    發(fā)表于 11-23 16:36 ?31次下載
    51單片機(jī)實(shí)驗(yàn)16:A/D模數(shù)<b class='flag-5'>轉(zhuǎn)換</b>(<b class='flag-5'>XPT2046</b>)

    單片機(jī)之XPT2046

    XPT2046是一種可以做觸摸(壓力)感應(yīng),熱感應(yīng),光感應(yīng),煙霧感應(yīng)等的對(duì)模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)的芯片芯片模型圖控制寄存模式選擇A2—A
    發(fā)表于 01-18 10:16 ?5次下載
    單片機(jī)之<b class='flag-5'>XPT2046</b>

    XPT2046芯片功能介紹

    電子發(fā)燒友網(wǎng)站提供《XPT2046芯片功能介紹.pdf》資料免費(fèi)下載
    發(fā)表于 03-26 09:10 ?3次下載