wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

觸控屏的控制電路制作小記(附STM32的驅動)

作者:佚名   來源:本站原創   點擊數:  更新時間:2010年11月20日   【字體:

  觸控屏已經不是什么新鮮的東西,現在的電子產品基本上都帶有一個大大的彩色液晶,加上一個輕觸式的觸控屏。使用起來非常方便,可以完全取代以往那種固定式的按鍵。

  下面就介紹一種觸控屏的驅動電路,我也是一個小時前才把這個小板子做出來,測試成功后馬上發表這篇日志,新鮮熱辣的哦!

  首先,介紹以下觸控屏幕的構造,它是由一塊觸控屏幕和一塊液晶顯示屏幕粘合在一起的。液晶顯示屏幕按色彩、材料、成像原理等多種方式分類,種類繁多,這里對液晶屏幕不做詳細介紹,本文圖片中所使用的是16Bit半透明反射式TFT液晶點陣顯示屏。而觸摸屏幕主要分為兩大類,分別是電容式和電阻式。

電容式觸控屏利用人體的電流感應進行工作,優點是使用壽命長,觸摸時不需用力,面板堅硬耐磨;缺點是觸摸精度低,必須使用特定的介質觸控(如人體皮膚),受溫度濕度影響很大,外界有較強磁場電場時,觸控屏會失靈,簡單來說就是抗干擾性較差。

電阻式觸控屏是利用按壓時縱軸和橫軸的電阻值來定位的,優點是抗干擾性好,觸摸精度高,可以用任何物體來觸摸,缺點是表面是塑料薄膜,易磨損,觸摸是需要稍加一點力度按壓。本文中使用的就是電阻式觸控屏。

  接下來介紹一些幾個觸控屏控制IC:ADS7846、ADS7843和TSC2046,它們是最常見的四線觸摸屏控制芯片,均為BURR-BROWN(已經被TI收購,找封裝庫的時候去TI那里找)公司的產品,三者引腳相互兼容,但片內的功能是有區別的,例如7846內集成溫度傳感、可檢測觸摸壓力等功能,具體請參考DataSheet。TSC2046是新出的控制芯片,由于其國產片價錢便宜(零售約1元/片),廣泛應用于國產的具有觸摸屏幕的MP3、手機等電子產品。

  我這次制作采用的是ADS7846。

ADS7846引腳圖:


引腳功能介紹:

DCLK:時鐘輸入端口

CS:片選信號

DIN:串行數據輸入端,CS為低時數據在DCLK上升沿鎖存

BUSY:忙時信號輸出,CS為高時其為高阻態

DOUT:串行數據輸出端,CS為高時其為高阻態

PENIRQ:筆中斷(當屏幕被觸壓時,產生中斷信號)

Vref:參考電壓(一般直接接VCC)

Vbat:電源檢測輸入端(一般不使用)

AUX:備選輸入端(一般不使用)

X+、Y+、X-、Y- :四線觸控屏位置輸入端

 

  程序思路是參考一位網友的,我把它移植過來了! 

  工作原理:每次按下觸摸屏,ADS7846的PEN腳會拉低,觸發STM32中斷,然后在中斷服務程序里面處理要執行功能。畫圖的原理是通過在中斷里對X、Y坐標連續采樣十次,若不夠十次,不做任何操作。得到十次數據后,進行排序,最后取中間三次的數據計算均值,便得到需要的X、Y坐標。得到觸屏的點以后,接著就是在屏幕上對應的這個點上畫點。

 

下面是電路的原理圖:



 

用感光法做的板子(未裁剪):

 

裁剪出中間那部分后和一元硬幣小一點,右側為硫酸紙打印出來的負片。
寫了一個可選畫筆和背景顏色的畫板:

 

最后貼上STM32的觸摸屏驅動程序(已添加畫板功能),用C語言寫的,很容易移植,有興趣的同學可以將它移到51或其他單片機上面跑一下。完整的代碼從這里下載http://www.izizhuan.cn/ziliao/file/chumo1.rar ,下面貼出一部分來:

程序:
 

//程序來源于 www.izizhuan.cn
#include"hx8347.h"   //自己編寫的液晶屏頭文件,此頭文件只定義了一些基本變量,不涉及驅動相關函數

//定義引腳高低電平
#define  ADS_DCLK_H() GPIO_SetBits(GPIOB,GPIO_Pin_6)//ADS7846時鐘信號
#define  ADS_DCLK_L() GPIO_ResetBits(GPIOB,GPIO_Pin_6)

#define  ADS_CS_H() GPIO_SetBits(GPIOB,GPIO_Pin_7)//ADS7846片選信號
#define  ADS_CS_L() GPIO_ResetBits(GPIOB,GPIO_Pin_7)

#define  ADS_DIN_H() GPIO_SetBits(GPIOB,GPIO_Pin_8)
#define  ADS_DIN_L() GPIO_ResetBits(GPIOB,GPIO_Pin_8)

#define  ADS_DOUT  GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_9)
#define  ADS_PEN GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_10)////ADS7846響應信號   

//初始化I/O口
void ADS_GPIO_Config()
{
 GPIO_InitTypeDef GPIO_InitStructure;
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
 GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 GPIO_Init(GPIOB, &GPIO_InitStructure);

 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
 GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_9|GPIO_Pin_10;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
 GPIO_Init(GPIOB, &GPIO_InitStructure);
}

void ADS_Spi_Start()//初始信號
{
 ADS_CS_H();
 ADS_DCLK_H();
    ADS_DIN_H();
}

void ADS_Write_Byte(u8 num)
{
 u8 count=0;
 ADS_DCLK_L();
 for(count=0;count<8;count++)
 {
  if(num&0x80)
   ADS_DIN_H();
  else 
   ADS_DIN_L();
  num<<=1;
  ADS_DCLK_L();
  ADS_DCLK_H();  //上升沿有效    
 }
}
u16 ADS_Readdata()
{
 u16  num;
 u8 count;
 for(count=0;count<12;count++)
 {
  num<<=1;
  ADS_DCLK_H();
  ADS_DCLK_L();
  if(ADS_DOUT)
   num++;
 }
 return num;
}

#define CMD_RDX  0X90 //0B10010000即用差分方式讀X坐標
#define CMD_RDY  0XD0 //0B11010000即用差分方式讀Y坐標 

u16  X=0,Y=0;//當前觸控坐標

u8 Readonce()
{
 ADS_Spi_Start();
 ADS_CS_L();
 ADS_Write_Byte(CMD_RDX);
 ADS_DCLK_H();
 delay_us(3);
 ADS_DCLK_L();
 delay_us(3);
 Y=ADS_Readdata();

    ADS_Write_Byte(CMD_RDY);
 ADS_DCLK_H();
 delay_us(1);
 ADS_DCLK_L();
 delay_us(1);
 X=ADS_Readdata();
 ADS_CS_H();
 if(X>100&&Y>100&&X<3800&&Y<3800)return 1;//讀取成功(范圍限制)
 else return 0;//讀取失敗
}

void drawbigpoint(u8 x,u16 y,u16 col)
{
 if(x>220&&y<9)
 {
  LCD_DrawBlock(0,0,239,319,0x0000);//清屏 
  LCD_write_english_string(210,0,"CLR",0xFFE0,0x001F);//清屏按鍵區域
 }
 else 
 {
  LCD_Set_Point(x,y,col);//中心點 
  LCD_Set_Point((x+1),y,col);
  LCD_Set_Point(x,(y+1),col);
  LCD_Set_Point((x+1),(y+1),col); 
 }     
} 

//讀取ADS7846(畫線)
void Read_Ads7846(void)
{
 u8 t,t1,count=0;
 u16 databuffer[2][10]={{5,7,9,3,2,6,4,0,3,1},{5,7,9,3,2,6,4,0,3,1}};//數據組
 u16 temp=0;  
     //循環讀數10次
 do
 {
  t=ADS_PEN; //觸摸屏被按下,PEN為L
  if(Readonce()) //讀數成功
  {   
   databuffer[0][count]=X;
   databuffer[1][count]=Y;
   count++;  
  }
 }
 while(!t&&count<10);  
 if(count==10)//讀10次數據有效
 {  
  //X升序排列
  do
  { 
   t1=0;    
   for(t=0;t<count-1;t++)
   {
    if(databuffer[0][t]>databuffer[0][t+1])//升序排列
    {
     temp=databuffer[0][t+1];
     databuffer[0][t+1]=databuffer[0][t];
     databuffer[0][t]=temp;
     t1=1; 
    }
   }
  }
  while(t1);    
  do//Y升序排列
  { 
   t1=0;   
   for(t=0;t<count-1;t++)
   {
    if(databuffer[1][t]>databuffer[1][t+1])//升序排列
    {
     temp=databuffer[1][t+1];
     databuffer[1][t+1]=databuffer[1][t];
     databuffer[1][t]=temp;
     t1=1;  
    }  
   }
  }
  while(t1);              
  X=(databuffer[0][3]+databuffer[0][4]+databuffer[0][5])/3;
  Y=(databuffer[1][3]+databuffer[1][4]+databuffer[1][5])/3;
   
   //根據觸摸屏的具體參數設置
  if(X<=4000&&Y<=4000)
  {
   if(X>=240)
    X-=240;
   else X=0;
   if(Y>=320)
    Y-=320;
   else Y=0;  
   drawbigpoint(X/15,Y/11+10,BLUE);  
  }   
 }
} 
void EXTI1_IRQHandler(void)
{  
 u8 t=0;                         
 //消除抖動 
    do
 {
  delay_us(10);
  t=ADS_PEN;
  Read_Ads7846();             
 }
 while(t==0);        
 EXTI_ClearITPendingBit(EXTI_Line1);
}       

//中斷優先級管理/開啟    
void NVIC_Configuration(void)
{
 NVIC_InitTypeDef NVIC_InitStructure;
 //存儲器映射   
#ifdef  VECT_TAB_RAM              
  NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); 
#else           
  NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);   
#endif        
 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);//優先級分到第0組 總共5組   
   NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQChannel; //使用外部中斷1
   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;//階級1
   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;  
   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
   NVIC_Init(&NVIC_InitStructure);          
}

//外部中斷初始化
void EXTI_Configuration(void)//配置外部中斷
{
  EXTI_InitTypeDef  EXTI_InitStructure;  //聲明中斷庫函數結構體
  EXTI_InitStructure.EXTI_Line = EXTI_Line1; //外部中斷通道1
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;  //中斷模式
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //下降沿觸發
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;   //使能
  EXTI_Init(&EXTI_InitStructure);
  GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource10);  //設置外部中斷通道1到PB10
}

//END
關閉窗口

相關文章

国产成人精品自线拍| 精品久久中文| 天天天天天天操| 在线观看国产小视频| 无码人妻丰满熟妇区毛片蜜桃精品| 国产亚洲一区二区三区在线播放| 亚洲美女黄色片| 亚洲va韩国va欧美va| 日本不卡的三区四区五区| 4438全国亚洲精品观看视频| 午夜国产福利在线| 日日摸夜夜爽人人添av| 理论片中文字幕| 久久久久久久蜜桃| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲精品97久久| 亚洲尤物在线视频观看| 国产成人福利片| 久久久久久免费视频| 四虎国产精品永久在线国在线| 成人精品一区二区| 爆操妹子视频在线观看| 欧美色图中文字幕| 国产夫绿帽单男3p精品视频| 久久久久久久九九九九| 国产一级二级在线观看| 熟女人妇 成熟妇女系列视频| 色综合婷婷久久| 久久亚洲综合色一区二区三区| 亚欧美中日韩视频| 日韩理论电影院| y111111国产精品久久久| 台湾佬中文娱乐网欧美电影| 国产69久久| 最近2018中文字幕免费在线视频| 污黄视频在线观看| 免费一区二区在线观看| 国产又粗又猛又黄又爽| 国产精品自拍99| 国产亚洲精品久久久久久豆腐| 亚洲午夜精品在线观看| 国产v亚洲v天堂无码久久久| 手机看片日韩国产| 欧美色欧美亚洲另类七区| 国产日韩av高清| 97超视频免费观看| 欧美成人精品xxx| 亚洲欧美日韩国产中文| 精品久久一区二区| 4438x成人网最大色成网站| 日韩欧美主播在线| 亚洲午夜一二三区视频| 亚洲蜜臀av乱码久久精品蜜桃| 久久久久久夜精品精品免费| 国产a视频精品免费观看| 蜜臀av性久久久久蜜臀aⅴ流畅 | 国产精品视频观看| www.色精品| 国产成人av在线影院| 极品尤物av久久免费看| 老司机免费视频一区二区 | 日本xxxxxxxxx18| 久久性爱视频网站| 国产一卡二卡三卡四卡| 国产一级免费片| 久久久高清视频| www.17c.com喷水少妇| 国产精品无码自拍| 欧美xxxx×黑人性爽| 欧美肉大捧一进一出免费视频| 亚洲三级在线观看视频| 亚洲自拍第三页| 波多野结衣免费观看| 日本成人在线免费| 欧美图片一区二区| 亚洲精品国产精品国自| 国产精品一区二区亚洲| 日韩中文字幕视频| 久久国内精品一国内精品| 欧美成人激情图片网| 色噜噜狠狠色综合网图区| 中文字幕欧美国内| 欧美大尺度在线观看| 久久久免费电影| 国产91精品视频在线观看| 热99在线视频| 96久久精品| 日韩国产美国| 欧美亚洲在线视频| 日韩美女在线观看| 国产日韩精品电影| 久久国产精品久久精品国产| 亚洲看片网站| 精品人妻少妇一区二区| 日本美女高潮视频| 精品人妻一区二区免费视频| 精品伦精品一区二区三区视频密桃 | 国产午夜精品免费一区二区三区| 日韩在线小视频| 91av国产在线| 97人人模人人爽人人喊38tv| 欧美一级片免费观看| 肉大捧一出免费观看网站在线播放 | 国产亚洲高清一区| www.操操| 99热手机在线观看| 你懂得网站在线| 国产一二在线播放| 99精品国产高清一区二区麻豆| 精品久久精品| 久久一区精品| 久久久噜噜噜久久人人看| 亚洲电影一区二区三区| 日韩午夜精品电影| 不卡av电影院| 99re在线国产| 成人污网站在线观看| 色免费在线视频| 欧美xxxx精品| 国产影视一区二区| 在线看片网址| 国产在线观看黄| 国产成人精品一区二三区在线观看| 好吊妞视频这里有精品| 亚洲欧洲午夜| 久久久久亚洲蜜桃| 欧美日韩国产首页| 欧美丰满片xxx777| 精品久久久久久一区二区里番| 成人一区二区免费视频| 免费a v网站| 中文字幕在线看人| 国产免费av网站| 黄色小视频在线免费观看| 久久久久久久性潮| 欧美一区国产在线| xf在线a精品一区二区视频网站| 高潮白浆女日韩av免费看| 国产亚洲精品美女久久久| 91精品视频在线免费观看| 影音先锋成人资源网站| 国产吞精囗交久久久| 亚洲系列在线观看| 极品色影院av| 成人免费观看在线观看| 精品一二三区| 成人av网址在线| 欧美色涩在线第一页| 欧美国产一区二区三区| 欧美精品亚洲| 日本亚洲一区二区三区| 中文字幕亚洲精品一区| 2021最新国产精品一区| 一级日本在线| 亚洲人成网亚洲欧洲无码| 九九国产精品视频| 精品成人国产在线观看男人呻吟| 在线视频国产日韩| 久久精品ww人人做人人爽| 日韩视频在线观看一区二区三区| 国产精品人人人人| 成在线人视频免费视频| 男人av在线播放| 韩国亚洲精品| 中文字幕佐山爱一区二区免费| 亚洲精品久久久久久久久久久久 | 日韩欧美国产电影| 国产精品最新在线观看| 啊啊啊一区二区| 久久网一区二区| 国产女人伦码一区二区三区不卡| 午夜在线视频播放| 成人在线国产| 国产精品毛片久久久久久久| 一本色道久久88综合日韩精品| 极品校花啪啪激情久久| 91超薄肉色丝袜交足高跟凉鞋| 国产精品伊人久久| 绯色av一区| 天天久久夜夜| 国产无人区一区二区三区| 亚洲美女视频网站| 青娱乐一区二区| av在线播放中文字幕| 免费国产h视频在线观看86| 日韩三级免费| 亚洲人成人一区二区三区| 五月天激情综合| 日韩美女在线观看| 国产美女扒开尿口久久久| 女人和拘做爰正片视频| 久久国产黄色片| 人人做人人爽| 成人高潮片免费视频| 亚洲欧洲动漫| 男男gay无套免费视频欧美| av不卡免费电影| 一二美女精品欧洲| 永久久久久久| 中文字幕av免费在线观看| 成年女人a毛片免费视频| 一区二区三区日本视频| 成人综合婷婷国产精品久久蜜臀| 亚洲精品国产电影| 中文字幕在线中文字幕日亚韩一区| 懂色av懂色av粉嫩av| 2021av网| 香蕉久久精品日日躁夜夜躁| 日本一区二区免费在线| 久久久久久久成人| 999精彩视频| 天天干,夜夜操| √8天堂资源地址中文在线| 日韩中文字幕区一区有砖一区| 日韩欧美电影一区| 日韩一区免费观看| 国产一级中文字幕| 亚洲s色大片在线观看| 久久精品青草| 欧美日韩中文另类| 欧美日韩在线精品一区二区三区| 澳门黄色一级片| 在线视频99| 欧美一区高清| 欧美成人aa大片| 天天干天天操天天干天天操| 日本中文字幕第一页| 黄上黄在线观看| 久久精品九九| 亚洲男人av电影| 尤物av无码色av无码| 亚洲av无码片一区二区三区| cao在线视频| 99久久亚洲一区二区三区青草| 久久精品这里热有精品| 超碰超碰在线观看| 国产在线视频精品视频免费看| 国产精品一区二区精品| 一区二区中文视频| 国产自摸综合网| 韩国一级黄色录像| 伊人国产在线看一| 日韩高清不卡一区二区三区| 亚洲欧美中文字幕| 在线观看免费黄网站| 国产九九九九| 中文字幕伦av一区二区邻居| 欧美日韩中文在线| 亚洲精品视频一区二区三区| www.五月婷婷.com| 韩日毛片在线观看| 欧美国产日本视频| 亚洲综合最新在线| 国产高清中文字幕| 俄罗斯一级**毛片在线播放| 97久久精品人人做人人爽| 国产盗摄xxxx视频xxx69| 美国一级片在线观看| 免费国产在线观看| 国产xxx精品视频大全| 国产成人久久久精品一区| 极品魔鬼身材女神啪啪精品| jizz在线观看| xf在线a精品一区二区视频网站| 国产精品久久中文| 蜜桃av.com| 成人在线视频成人| 成人精品gif动图一区| 国产精品看片资源| 日韩精品一区二区在线播放| 曰本三级在线| 国产精品视频yy9299一区| caoporn国产精品免费公开| 成年人晚上看的视频| 日韩中文影院| 天天色综合天天| 黑人巨茎大战欧美白妇| 欧美人善交videosg| 日韩片欧美片| 在线视频免费一区二区| 四虎永久免费在线观看| 黄色大片在线看| 91一区二区在线| 国产视频精品网| 亚洲老妇色熟女老太| 欧美日韩破处| 欧美成人精品3d动漫h| 爱豆国产剧免费观看大全剧苏畅 | 黄色不卡一区| 亚洲网站在线看| 中文字幕xxx| 91网在线播放| 欧美激情自拍偷拍| 日韩欧美一区二区视频在线播放| 日本高清视频免费看| 奇米色欧美一区二区三区| 亚洲人成在线观看网站高清| 亚洲a v网站| 婷婷色在线资源| 亚洲韩国一区二区三区| 无码专区aaaaaa免费视频| www视频免费| 久久精品99国产国产精| 成人免费看黄网站| 国产草草影院ccyycom| 亚洲精品播放| 原创国产精品91| 天天天天天天天天操| 欧美momandson| 欧美人与性动xxxx| 四虎成人免费视频| 菠萝菠萝蜜在线视频免费观看 | 亚洲精品人成网在线播放影院| 日韩综合在线| 欧美老女人性生活| 国产视频91在线| 国产一区二区三区免费观看在线 | 日本韩国在线视频| 不卡免费追剧大全电视剧网站| 国精产品99永久一区一区| 男女爱爱福利视频| 一道本一区二区| 国产精品视频久| 天天操天天干天天| 激情欧美日韩一区| 国产欧美日韩综合精品| 理论片中文字幕| 在线日本成人| 亚洲free嫩bbb| 亚洲国产一区二区久久久777| 亚洲毛片一区| 亚洲最大福利网站| 无国产精品白浆免费视| 日韩成人午夜精品| 久久青青草综合| 日皮视频在线免费观看| 国产高清一区日本| 亚洲人久久久| 好吊妞这里只有精品| 国产精品午夜免费| 日韩免费毛片视频| 1769视频在线播放免费观看| 91久久线看在观草草青青| 亚洲一级Av无码毛片久久精品| 在线你懂的视频| 欧美日韩国产成人在线免费| 四虎影成人精品a片| 视频一区在线免费看| 亚洲欧美激情另类校园| 六月丁香激情综合| 91综合在线| 91免费版网站入口| 99久久免费精品国产免费| 97se亚洲国产综合自在线 | 亚洲sss综合天堂久久| 国产精品日日爱| 成人精品免费视频| 无码熟妇人妻av在线电影| 欧美一区二区少妇| 欧美亚洲免费在线一区| 国产又粗又猛又爽又黄的视频四季| 亚洲成人a级片| 欧美风情在线观看| 免费av一级片| 蜜臀av性久久久久av蜜臀妖精| 亚洲一区二区三区涩| 中文在线三区| 欧美视频一区二区| 国产尤物在线播放| 欧美色图一区| 99re在线播放| 天天撸夜夜操| 亚洲伊人色欲综合网| 国产成人av无码精品| 永久免费精品视频| 日本一区二区在线播放| 明星国产一级毛片范冰冰视频| 波多野结衣中文字幕一区二区三区| ww国产内射精品后入国产| 欧美另类tv| 亚洲美女av电影| 99久久夜色精品国产亚洲| 青青草97国产精品免费观看| 国产高清不卡无码视频| 成人在线视频亚洲| 亚洲欧美另类自拍| 午夜精品久久久久久久99老熟妇| 蜜臀av性久久久久蜜臀aⅴ流畅| 日韩欧美视频免费在线观看| 在线播放毛片| 日韩精品极品在线观看| 99视频国产精品免费观看a| 国产精品自拍三区| 免费观看成人网| 亚洲天堂电影| 久久91精品国产91久久跳| 最近中文字幕mv免费高清视频8| 久久久无码精品亚洲日韩按摩| 性chinese极品按摩| 成人午夜一级|