|
|

楼主 |
发表于 2013-3-5 20:47:14
|
显示全部楼层
我看了,2560对于的SPI 应该是20(SCK),21(MOSI),22(MISO),我的代码没有应该是没有用SPI,是端口模拟的呀.
- /**********************************************
- Pay an attention!
- This code is designed for Arduino board.
- **********************************************/
- /**********************************************
- Define zone
- **********************************************/
-
- /*
- #define T_CLK 6
- #define T_CS 5
- #define T_DIN 4
- #define T_DOUT 3
- #define T_IRQ 2
- */
- #define T_CLK 46
- #define T_CS 45
- #define T_DIN 44
- #define T_DOUT 43
- #define T_IRQ 42
- #define X_CONST 240
- #define Y_CONST 320
- #define PREC_TOUCH_CONST 10
- #define PixSizeX 13.78
- #define PixOffsX 411
- #define PixSizeY 11.01
- #define PixOffsY 378
- /**********************************************
- Val Zone
- **********************************************/
- int TP_X,TP_Y;
- void Touch_Init(void)
- {
- pinMode(T_CLK, OUTPUT);
- pinMode(T_CS, OUTPUT);
- pinMode(T_DIN, OUTPUT);
- pinMode(T_DOUT, INPUT);
- pinMode(T_IRQ, INPUT);
- digitalWrite(T_CS, HIGH);
- digitalWrite(T_CLK, HIGH);
- digitalWrite(T_DIN, HIGH);
- digitalWrite(T_CLK, HIGH);
- }
- void Touch_WriteData(unsigned char data)
- {
- unsigned char temp;
- unsigned char nop;
- unsigned char count;
- temp=data;
- digitalWrite(T_CLK,LOW);
- for(count=0; count<8; count++)
- {
- if(temp & 0x80)
- digitalWrite(T_DIN, HIGH);
- else
- digitalWrite(T_DIN, LOW);
- temp = temp << 1;
- digitalWrite(T_CLK, LOW);
- nop++;
- digitalWrite(T_CLK, HIGH);
- nop++;
- }
- }
- unsigned int Touch_ReadData()
- {
- unsigned char nop;
- unsigned int data = 0;
- unsigned char count;
- for(count=0; count<12; count++)
- {
- data <<= 1;
- digitalWrite(T_CLK, HIGH);
- nop++;
- digitalWrite(T_CLK, LOW);
- nop++;
- if (digitalRead(T_DOUT))
- data++;
- }
- return(data);
- }
- void Touch_Read()
- {
- unsigned long tx=0;
- unsigned long ty=0;
- digitalWrite(T_CS,LOW);
- for (int i=0; i<PREC_TOUCH_CONST; i++)
- {
- Touch_WriteData(0x90);
- digitalWrite(T_CLK,HIGH);
- digitalWrite(T_CLK,LOW);
- ty+=Touch_ReadData();
- Touch_WriteData(0xD0);
- digitalWrite(T_CLK,HIGH);
- digitalWrite(T_CLK,LOW);
- tx+=Touch_ReadData();
- }
- digitalWrite(T_CS,HIGH);
- TP_X=tx/PREC_TOUCH_CONST;
- TP_Y=ty/PREC_TOUCH_CONST;
- }
- char Touch_DataAvailable()
- {
- char avail;
- pinMode(T_IRQ, INPUT);
- avail = !digitalRead(T_IRQ);
- pinMode(T_IRQ, OUTPUT);
- return avail;
- }
- int Touch_GetX()
- {
- int value;
- value = ((TP_X-PixOffsX)/PixSizeX);
- if (value < 0)
- value = 0;
- return value;
- }
- int Touch_GetY()
- {
- int value;
- value = ((TP_Y-PixOffsY)/PixSizeY);
- if (value < 0)
- value = 0;
- return value;
- }
- /**********************************************
- Arduino functions zone
- **********************************************/
- void setup()
- {
- Serial.begin(9600);
- Serial.println("Begin init...");
- Touch_Init();
- Serial.println("Init Finieshed");
- }
- void loop()
- {
- unsigned int i,j;
- while(Touch_DataAvailable() == 1)
- {
- Touch_Read();
- i = Touch_GetX();
- j = Touch_GetY();
- //SetXY(i,i,j,j);
- //Write_Data(0xFFFF);
- Serial.print("Touch:X=");
- Serial.print(i,10);
- Serial.print(",Y=");
- Serial.println(j,10);
- }
- }
复制代码 |
|