人妻综合网,中文字幕被公侵犯的漂亮人妻,噜噜洲,性色AV无码久久久久

資訊詳情
萬代觸摸芯片8051與WTC6312BSI 6316BSI接口程序范例
發(fā)布者:oweis88  發(fā)布時間:2015-09-01 10:15:05

萬代觸摸芯片8051與WTC6312BSI 6316BSI接口程序范例

萬代觸摸芯片WTC6312BSI程序

萬代觸摸芯片WTC6316BSI程序

1 多鍵組合(SHIFT)工作模式的操作程序范例
該范例程序?qū)崿F(xiàn)的功能是8051 從觸摸芯片的SPI 口讀取按鍵信息,并用
LED加以顯示。每一個LED顯示一個相應(yīng)按鍵的狀態(tài)。并給出了通過SPI口設(shè)
置觸摸芯片的靈敏度的功能函數(shù)。
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
//--------------------------------WTC6316BSI SPI接口---------------------------------------------
sbit SCS = P1^3;
sbit SCK = P1^2;
sbit SDO = P1^1;
sbit SDI = P1^0;
//--------------------------------LED 顯示界面---------------------------------------------
sbit LED15 = P2^7;
sbit LED14 = P2^6;
sbit LED13 = P2^5;
sbit LED12 = P2^4;
sbit LED11 = P2^3;
sbit LED10 = P2^2;
sbit LED9 = P2^1;
sbit LED8 = P2^0;
sbit LED7 = P0^7;
sbit LED6 = P0^6;
sbit LED5 = P0^5;
sbit LED4 = P0^4;
sbit LED3 = P0^3;
sbit LED2 = P0^2;
sbit LED1 = P0^1;
sbit LED0 = P0^0;
//------------------------------------the funtion define-------------------------------------
void delay_loop(uint i);
void set_Subtle_SPI(uchar temp); //用軟件設(shè)置WTC6316BSI靈敏度
uchar get_key_data(void); //讀取WTC6316BSI SPI接口數(shù)據(jù)
void shift_led_disp(void); //用LED 顯示按鍵狀態(tài)//------------------------------------the register define -----------------------------------
uchar GetKey; //從SPI口讀到的數(shù)值
uchar SwitchImage[3]; //觸摸按鍵狀態(tài)寄存器
//------------------------------------------------------------------------------------------
void main(void)
{
init();
SCS = 1; //關(guān)閉SPI口使能
SCK = 1; //SCK 初始電平為高
SDI = 1; //SDI設(shè)置為高電平
while(1)
{
delay_loop(400); //延時,實際程序中可以每4MS讀一次SPI口
SDI = 1;
GetKey = get_key_data(); //讀取SPI接口的數(shù)據(jù)
if((GetKey & 0x03)== 0) //檢測低2位的幀信息識別位
{ //第一幀
SwitchImage[0] = GetKey;
shift_led_disp(); //用LED 顯示讀取的按鍵狀態(tài)
}
else if((GetKey & 0x03)== 1) //檢測低2位的幀信息識別位
{ //第二幀
SwitchImage[1] = GetKey;
shift_led_disp(); //用LED 顯示讀取的按鍵狀態(tài)
}
else if((GetKey & 0x03)== 2) //檢測低2位的幀信息識別位
{ //第三幀
SwitchImage[2] = GetKey;
shift_led_disp(); //用LED 顯示讀取的按鍵狀態(tài)
}
}
}
//------------------------------------------------------------------------------------------
void shift_led_disp(void)
{
if((SwitchImage[2] & 0x20) != 0) {LED15 = 0;} //點亮LED
else {LED15 = 1;} //熄滅LEDif((SwitchImage[2] & 0x10) != 0) {LED14 = 0;}
else {LED14 = 1;}
if((SwitchImage[2] & 0x08) != 0) {LED13 = 0;}
else {LED13 = 1;}
if((SwitchImage[2] & 0x04) != 0) {LED12 = 0;}
else {LED12 = 1;}
if((SwitchImage[1] & 0x80) != 0) {LED11 = 0;} //點亮LED
else {LED11 = 1;} //熄滅LED
if((SwitchImage[1] & 0x40) != 0) {LED10 = 0;}
else {LED10 = 1;}
if((SwitchImage[1] & 0x20) != 0) {LED9 = 0;}
else {LED9 = 1;}
if((SwitchImage[1] & 0x10) != 0) {LED8 = 0;}
else {LED8 = 1;}
if((SwitchImage[1] & 0x08) != 0) {LED7 = 0;}
else {LED7 = 1;}
if((SwitchImage[1] & 0x04) != 0) {LED6 = 0;}
else {LED6 = 1;}
if((SwitchImage[0] & 0x80) != 0) {LED5 = 0;}
else {LED5 = 1;}
if((SwitchImage[0] & 0x40) != 0) {LED4 = 0;}
else {LED4 = 1;}
if((SwitchImage[0] & 0x20) != 0) {LED3 = 0;}
else {LED3 = 1;}
if((SwitchImage[0] & 0x10) != 0) {LED2 = 0;}
else {LED2 = 1;}
if((SwitchImage[0] & 0x08) != 0) {LED1 = 0;}
else {LED1 = 1;}
if((SwitchImage[0] & 0x04) != 0) {LED0 = 0;}
else {LED0 = 1;}
}
//------------------------------------------------------------------------------------------
uchar get_key_data(void)
{
uchar KeyData;
uchar i;
KeyData = 0;
i = 0; //計數(shù)器指初始為0SDI = 1; //SDI置為高,以避免錯誤設(shè)置觸摸芯片的靈敏度
SCS = 0; //打開SPI口使能
do
{
KeyData <<= 1; //MSB為數(shù)據(jù)第一位
SCK = 0; //SCK 信號下降沿
SCK = 1; //SCK 信號上升沿
if(SDO == 1) //讀取SDO的數(shù)據(jù)
{ //SDI為高電平
KeyData |= 0x01;
}
else
{ //SDI為低電平
KeyData &= 0xFE;
}
i++; //計數(shù)器加1
}while (i < 8); //循環(huán)讀數(shù)8次
SCS = 1; //關(guān)閉SPI口使能
return(KeyData); //返回讀取的按鍵信息
}
//------------------------------------------------------------------------------------------
void set_Subtle_SPI(uchar temp)
{
uchar i;
i= 0; //計數(shù)器指初始為0
SCS = 0; //打開SPI口使能
do
{
if((temp & 0x80) != 0) //發(fā)送數(shù)據(jù)的第一位為MSB
{ //敏感度設(shè)定值的當(dāng)前位值為1
SDI = 1;
}
else
{ //敏感度設(shè)定值的當(dāng)前位值為0
SDI = 0;
}
SCK = 0; //SCK 信號下降沿
SCK = 1; //SCK 信號上升沿temp <<= 1; //發(fā)送數(shù)據(jù)的第一位為MSB
i++; //計數(shù)器加1
}while (i < 8); //循環(huán)發(fā)送8次
SCS = 1; //關(guān)閉SPI口使能
SDI = 1; //SDI設(shè)置為高電平
}
//------------------------------------------------------------------------------------------
void delay_loop(uint i)
{
while(i > 0)
{
i--;
}
}
2 8051 與WTC6316BSI 接口的單鍵工作模式的操作程序范例
該范例程序?qū)崿F(xiàn)的功能是8051 從觸摸芯片的SPI 口讀取按鍵信息,并用
LED加以顯示。每一個LED顯示一個相應(yīng)按鍵的狀態(tài)。并給出了通過SPI口設(shè)
置觸摸芯片的靈敏度的功能函數(shù)
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
//--------------------------------WTC6316BSI SPI接口---------------------------------------------
sbit SCS = P1^3;
sbit SCK = P1^2;
sbit SDO = P1^1;
sbit SDI = P1^0;
//--------------------------------LED 顯示界面---------------------------------------------
sbit LED15 = P2^7;
sbit LED14 = P2^6;
sbit LED13 = P2^5;
sbit LED12 = P2^4;
sbit LED11 = P2^3;
sbit LED10 = P2^2;
sbit LED9 = P2^1;
sbit LED8 = P2^0;sbit LED7 = P0^7;
sbit LED6 = P0^6;
sbit LED5 = P0^5;
sbit LED4 = P0^4;
sbit LED3 = P0^3;
sbit LED2 = P0^2;
sbit LED1 = P0^1;
sbit LED0 = P0^0;
//------------------------------------功能函數(shù)-------------------------------------
void delay_loop(uchar i); //延時函數(shù)
void led_on(uchar LedControler); //開LED
void led_off(); //關(guān)LED
void set_Subtle(uchar subtle); //設(shè)置WTC6316BSI的敏感度
uchar get_keyValue(void); //讀取觸摸按鍵狀態(tài)
//------------------------------------變量定義 -----------------------------------
uchar GetKey; //從WTC6316BSI讀取的按鍵值
//GetKey == 0xFF 表示沒有按鍵觸摸或按鍵已經(jīng)彈開
//GetKey 不等于 0xFF 表示有按鍵正在被觸摸
//------------------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------------------
void main(void)
{
SCS = 1; //關(guān)閉SPI口使能
SCK = 1; //SCK 初始電平為高
SDI = 1; //SDI設(shè)置為高電平
set_Subtle(10); //將WTC6316BSI的敏感度初始化為10
while(1)
{
delay_loop(500); //延時,實際程序中可以每4MS讀一次SPI口
GetKey = get_keyValue(); //讀取按鍵信息
if(GetKey != 0xFF)
{ //有鍵按下點亮相應(yīng)鍵的指示LED
led_on(GetKey);
}
else
{ //沒有按鍵按下或鍵彈開,關(guān)閉所有指示LED
led_off();}
}
}
//------------------------------------------------------------------------------------------
uchar get_keyValue(void)
{
uchar KeyValue;
uchar i;
i = 0; //計數(shù)器指初始為0
SDI = 1; //SDI置為高,以避免錯誤設(shè)置觸摸芯片的靈敏度
SCS = 0; //打開SPI口使能
do
{
KeyValue <<= 1; //MSB為數(shù)據(jù)第一位
SCK = 0; //SCK 信號下降沿
SCK = 1; //SCK 信號上升沿
if(SDO == 1) //讀取SDO的數(shù)據(jù)
{ //SDI為高電平
KeyValue |= 0x01;
}
else
{ //SDI為低電平
KeyValue &= 0xFE;
}
i++; //計數(shù)器加1
}while (i < 8); //循環(huán)讀數(shù)8次
SCS = 1; //關(guān)閉SPI口使能
return(KeyValue); //返回讀取的按鍵信息
}
//------------------------------------------------------------------------------------------
void set_Subtle(uchar subtle)
{
uchar i;
i= 0; //計數(shù)器指初始為0
SCS = 0; //打開SPI口使能
do
{
if((temp & 0x80) != 0) //發(fā)送數(shù)據(jù)的第一位為MSB
{ //敏感度設(shè)定值的當(dāng)前位值為1SDI = 1;
}
else
{ //敏感度設(shè)定值的當(dāng)前位值為0
SDI = 0;
}
SCK = 0; //SCK 信號下降沿
SCK = 1; //SCK 信號上升沿
temp <<= 1; //發(fā)送數(shù)據(jù)的第一位為MSB
i++; //計數(shù)器加1
}while (i < 8); //循環(huán)發(fā)送8次
SCS = 1; //關(guān)閉SPI口使能
SDI = 1; //SDI設(shè)置為高電平
}
//-----------------------------------------------------------------------------------------
void delay_loop(uint i)
{
while(i)
{
i--;
}
}
//------------------------------------------------------------------------------------------
void led_on(uchar LedControler)
{
switch(LedControler)
{
case 0: LED0 = 0; break;
case 1: LED1 = 0; break;
case 2: LED2 = 0; break;
case 3: LED3 = 0; break;
case 4: LED4 = 0; break;
case 5: LED5 = 0; break;
case 6: LED6 = 0; break;
case 7: LED7 = 0; break;
case 8: LED8 = 0; break;
case 9: LED9 = 0; break;
case 10: LED10 = 0; break;case 11: LED11 = 0; break;
case 12: LED12 = 0; break;
case 13: LED13 = 0; break;
case 14: LED14 = 0; break;
case 15: LED15 = 0; break;
}
}
//------------------------------------------------------------------------------------------
void led_off (void)
{
LED0 = 1;
LED1 = 1;
LED2 = 1;
LED3 = 1;
LED4 = 1;
LED5 = 1;
LED6 = 1;
LED7 = 1;
LED8 = 1;
LED9 = 1;
LED10 = 1;
LED11 = 1;
LED12 = 1;
LED13 = 1;
LED14 = 1;
LED15 = 1;
}

 

版權(quán)聲明:工控網(wǎng)轉(zhuǎn)載作品均注明出處,本網(wǎng)未注明出處和轉(zhuǎn)載的,是出于傳遞更多信息之目的,并不意味 著贊同其觀點或證實其內(nèi)容的真實性。如轉(zhuǎn)載作品侵犯作者署名權(quán),或有其他諸如版權(quán)、肖像權(quán)、知識產(chǎn)權(quán)等方面的傷害,并非本網(wǎng)故意為之,在接到相關(guān)權(quán)利人通知后將立即加以更正。聯(lián)系電話:0571-87774297。
今日最新資訊
熱門資訊
0571-87774297  
免费日韩欧美| 亚洲精品aaa| 久久AV无码专区亚洲AV桃花岛| 激情图区小说| 色偷偷91综合久久噜噜| 人妻少妇AV无码一区二区| 国产99在线观看| 久久棈精品久久久久久噜噜| 丰满人妻久久中文字幕免费| 啪啪一区二区| 亚洲欧洲日韩精品| 久久精品国产电影| 久草视频中文在线| 九九热一区二区| 亚洲激情丁香| 欧美日韩一区二区精品| 国产乱伦熟女| 奇米一区二区| 日韩美女AAAAA片片免费| 国产白丝精品| 日本黄色动作片| 国产熟女50岁一区二区| 思思在线| 亚洲精品天堂网| 久久久国产精品无码1区2区| 久久综合色色| 欧美黄色大片在线免费观看| 国产又粗又长又猛又爽视频| 国产欧美日韩黄片| 日本护士野外奶水HD在线观看| 亚洲视频综合网| 亚洲网站视频| 好紧好大快点舒服使劲| 毛片区| 亚洲成av人片在线观看| 欧美αv| 亚洲A∨无码精品午夜电影| 亚洲欧美一区二区成人片| 全部孕妇毛片免费孕妇| 亚洲午夜福利在线观看| 免费激情网站|