OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 12678|回复: 13

学习STM32 玩TFT屏 第十季 之 触摸屏 毕业篇

[复制链接]

71

主题

467

帖子

0

精华

高级会员

Rank: 4

积分
800
金钱
800
注册时间
2011-11-18
在线时间
5 小时
发表于 2012-6-25 02:33:39 | 显示全部楼层 |阅读模式
上一季那个代码运行后,发现没触摸到屏的时候 X值大多数是4095 就是说, 硬件已做成这样了.就是X是4095的时候,那就表明这个值就等同于0了.
对于Y值来说,大多数时间是0,但也会跳,从二十多到一百五十多不等.

这是屏没有笔点上去的时候是这样,如果有笔点上去,跳到就变少很多,都在正负三十左右跳动.

那问题就出来了,
  1.  没笔点的时候怎么处理?
  2.  有笔点的时候怎么处理?

好了,我们点一下其它地方,发现在屏有显示的位置四个角的坐标分是(大约的值):

左上角  x=210   y=210
右上角  x=210   y=3800

左下角  x=3300 y=210
右下角  x=3650 y=3800

看到问题没有,说明我这个触摸屏比较坑爹.看左下角和右下角 红字部分,和 左下角平的另一边差别有350个数值这么大.

右下角的电阻分布有问题.这样会造成拾取坐标误差很大.我在右中到右下,都点了下,发现中部还行,越住下就差别越大.

没法子了,我设定如下,  Y<210 和 Y>3800 的值全部不要.  X<210 和 X>3300的不要.

我们显示的分辨率是 320 X 240   而 触摸屏 Y的像素 是4095-((4095-3800)+210)=3480(减掉不要的) X的是4095-((4095-3300)+210)=3000(减掉不要的)

我们就得出 X方向 约10个值对应 1个像素.   Y方向上15个数值对应1个像素. 

对于数据跳动情况,我们彩取连读10个值,再将前5个值的平均值和后五个值的平均值相比,差大于50的不要.
好,有了想法,我们就更改一下上一季的主函数.

// 主函数   ************************************************************************************************
int main(void)
{
  u16  i,zx,zy,x1,x2,y1,y2,datax[10],datay[10];
  Stm32_Clock_Init(9);
  delay_init(72);
  uart_init(72,9600);
  LCD_IO_Init();
  LCD_init();

  B_COLOR=color(7,14,7);
  clear_lcd();

  while (1) 
    {   
ADS7843SPI_start();

for(i=0;i<10;i++)
{
Write_Com_to_7843(CMD_RDX);                            <<===X读 10次
datax=Read_data_form7843();
}

for(i=0;i<10;i++)
{
Write_Com_to_7843(CMD_RDY);                              <<=== Y读10次
datay=Read_data_form7843();
}

x1=datax[0]+datax[1]+datax[2]+datax[3]+datax[4];            <<===  X,Y得到前半部分和后半部分的平均数      
x2=datax[5]+datax[6]+datax[7]+datax[8]+datax[9];

x1=x1/5;
x2=x2/5;

y1=datay[0]+datay[1]+datay[2]+datay[3]+datay[4];
y2=datay[5]+datay[6]+datay[7]+datay[8]+datay[9];

y1=y1/5;
y2=y2/5;

if(x1>=x2)                                                                                   <<====  得到X及Y 的前半部分和后半部分的差值
{
zx=x1-x2;
}
else
{
zx=x2-x1;
}

if(y1>=y2)
{
zy=y1-y2;
}
else
{
zy=y2-y1;
}

F_COLOR = color(30,60,0);                                            <<======介面的显示部分
linechar_1608t(18,3," X data\0");
linechar_1608t(18,18," Y data\0");
if ((x1>210)&(x1<3300)&(zx<50))
{
F_COLOR = color(0,60,0);
count_show(19,1,x1);
count_show(19,6,x2);
count_show(19,11,zx);
 }


if ((y1>210)&(y1<3800)&(zy<50))
{
F_COLOR = color(30,60,30);
count_show(19,16,y1);
count_show(19,21,y2);
count_show(19,27,zy);
  }

delay_ms(100);
B_COLOR=color(7,14,7);
Clear_line(19,0,29);
Clear_line(19,0,29);
}
}


将上一季的代码的MAIN()程式改成以上的代码.大家看是不是用TFT屏做的介面很牛B.  ^_^

我看显示的数值发现,Y方向的取值比X方向的取值稳定很多!!!

好了,以上的代码我们可以拿来测试触摸屏了  存起来在朋友同事面前牛去吧   ^-^Y

原子老大,你给我的这个触摸屏忒差了,右下角几乎没用.呃...........我刚叫MM在淘宝给我买10块屏,不知到时啥样.偷偷告诉大家,忒更宜.
我决定用新学的STM32加TFT屏来做我正在设计的主控板.到时将代码丢来给大家玩玩.

好,再接再厉,我们搞个画画的代码,修改一下主程式就行.

// 主函数   ************************************************************************************************
int main(void)
{
  u16  i,zx,zy,x1,x2,y1,y2,datax[10],datay[10];
  Stm32_Clock_Init(9);
  delay_init(72);
  uart_init(72,9600);
  LCD_IO_Init();
  LCD_init();

  B_COLOR=color(7,14,7);
  clear_lcd();

  while (1) 
    {   
ADS7843SPI_start();

for(i=0;i<10;i++)
{
Write_Com_to_7843(CMD_RDX);
datax=Read_data_form7843();
}

for(i=0;i<10;i++)
{
Write_Com_to_7843(CMD_RDY);
datay=Read_data_form7843();
}

x1=datax[0]+datax[1]+datax[2]+datax[3]+datax[4];
x2=datax[5]+datax[6]+datax[7]+datax[8]+datax[9];

x1=x1/5;
x2=x2/5;

y1=datay[0]+datay[1]+datay[2]+datay[3]+datay[4];
y2=datay[5]+datay[6]+datay[7]+datay[8]+datay[9];

y1=y1/5;
y2=y2/5;

if(x1>=x2)
{
zx=x1-x2;
}
else
{
zx=x2-x1;
}

if(y1>=y2)
{
zy=y1-y2;
}
else
{
zy=y2-y1;
}

F_COLOR = color(30,60,0);
linechar_1608t(18,3," X data\0");
linechar_1608t(18,18," Y data\0");
if ((x1>210)&(x1<3300)&(zx<50))
{
F_COLOR = color(0,60,0);
count_show(19,1,x1);
count_show(19,6,x2);
count_show(19,11,zx);
 }


if ((y1>210)&(y1<3800)&(zy<50))
{
F_COLOR = color(30,60,30);
count_show(19,16,y1);
count_show(19,21,y2);
count_show(19,27,zy);
  }

if ((y1>210)&(y1<3800)&(zy<50)&(x1>210)&(x1<3300)&(zx<50))
{
DrawPoint(((y1+y2)/2)/17,((x1+x2)/2)/12);   <<=绿色的17 和12 是因为触摸屏的误差太大,本来算好的值不太准,随手加点减点调上去的,你们的屏可能不同,可以自行调一下.
}
delay_ms(50);
B_COLOR=color(7,14,7);
Clear_line(19,0,29);
Clear_line(19,0,29);
}
}

只不过是加了红色字那部分而已,同学们要写快点要注释掉绿色字的这些.因为点太小,我们修改一画点函数,让点大点.

//画一个点   ************************************************************************************************
void DrawPoint(u16 x,u16 y)
{
u8 i,j;

for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{
LCD_WriteReg(0x0020,x+i);  //X
LCD_WriteReg(0x0021,y+j);  //Y
LCD_WR_REG(0x22);
LCD_WR_DATA(F_COLOR);

LCD_WriteReg(0x0020,x-i);  //X
LCD_WriteReg(0x0021,y-j);  //Y
LCD_WR_REG(0x22);
LCD_WR_DATA(F_COLOR);
}
}
}

扩大6倍.

好,编译好丢进板子,画个画吧.哈哈.画吧.
画画只是玩玩,真实应用中没什么用的,只是当当简单的按键用用还是行的.
中断的玩法大家自己去玩玩吧,我们都学过的.很容易的,时间问题,我就不搞了.

好了,TFT屏和触摸屏我们毕业了,明天我们开搞无线模块了~~~~~~~~~~~~~~~~~~~

这季的所有代码,我帖出来大家玩下吧.
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "FONT.h"


//快速IO
#define LCD_CS_SET  GPIOC->BSRR=1<<9    //片选端口          PC9
#define LCD_RS_SET GPIOC->BSRR=1<<8    //数据/命令            C8    
#define LCD_WR_SET GPIOC->BSRR=1<<7    //写数据    PC7
#define LCD_RD_SET GPIOC->BSRR=1<<6    //读数据    PC6
    
#define LCD_CS_CLR  GPIOC->BRR=1<<9     //片选端口          PC9
#define LCD_RS_CLR GPIOC->BRR=1<<8     //数据/命令            C8    
#define LCD_WR_CLR GPIOC->BRR=1<<7     //写数据    PC7
#define LCD_RD_CLR GPIOC->BRR=1<<6     //读数据    PC6
    
//慢速IO
#define LCD_CS PCout(9)  //片选端口        PC9
#define LCD_RS PCout(8)  //数据/命令        C8    
#define LCD_WR PCout(7)  //写数据  PC7
#define LCD_RD PCout(6)  //读数据  PC6

#define LCD_LED PCout(10)  //背光

//PB0~15,作为数据线
#define DATAOUT(x)   GPIOB->ODR=x;         //数据输出
#define DATAIN       GPIOB->IDR;           //数据输入

#define LCD_WR_DATA(data){\
LCD_RS_SET;\
LCD_CS_CLR;\
DATAOUT(data);\
LCD_WR_CLR;\
LCD_WR_SET;\
LCD_CS_SET;\
}

//与触摸屏芯片连接引脚    
#define PEN  Cin(1)   //PC1  INT
#define DOUT PCin(2)   //PC2  MISO

#define DIN  Cout(3)   //PC3  MOSI
#define DCLK PCout(0)   //PC0  SCLK
#define CS   PCout(13)  //PC13 CS 

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

u16  F_COLOR,B_COLOR;


//    IO 初始化    ****************************************************************************************
void LCD_IO_Init(void)
  RCC->APB2ENR|=1<<3;//先使能外设PORTB时钟
  RCC->APB2ENR|=1<<4;//先使能外设PORTC时钟

RCC->APB2ENR|=1<<0;    //开启辅助时钟
JTAG_Set(SWD_ENABLE);  //开启SWD
 
//PORTC6~10  推挽输出 
GPIOC->CRH&=0XFF0FF000;
GPIOC->CRH|=0X00300333;
 
GPIOC->CRL&=0X00FF0000;
GPIOC->CRL|=0X33003883;  
GPIOC->ODR|=0X07C0;
GPIOC->ODR|=0X200F; 
 
//PORTB 推挽输出 
GPIOB->CRH=0X33333333;
GPIOB->CRL=0X33333333;   
GPIOB->ODR=0XFFFF;
}

////正常IO写 寄存器 函数
//void LCD_WR_REG(u8 data)
//{ 
// LCD_RS=0;//写地址  
//  LCD_CS=0; 
// DATAOUT(data); 
// LCD_WR=0; 
// LCD_WR=1; 
//  LCD_CS=1;   
//} 
//
////正常IO写 8位数据 函数
//void LCD_WR_DATA(u16 data)
//
//{
//LCD_RS=1;
//LCD_CS=0;
//DATAOUT(data);
//LCD_WR=0;
//LCD_WR=1;
//LCD_CS=1;
//} 
//写寄存器函数=>快
void LCD_WR_REG(u8 data)
LCD_RS_CLR;//写地址  
  LCD_CS_CLR; 
DATAOUT(data); 
LCD_WR_CLR; 
LCD_WR_SET; 
  LCD_CS_SET;   
}


//写寄存器
void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue)
{
LCD_WR_REG(LCD_Reg);  
LCD_WR_DATA(LCD_RegValue);       
}


//读寄存器
u16 LCD_ReadReg(u8 LCD_Reg)
{    
u16 t;
LCD_WR_REG(LCD_Reg);    //写入要读的寄存器号  
GPIOB->CRL=0X88888888;  //PB0-7  上拉输入
GPIOB->CRH=0X88888888;  //PB8-15 上拉输入
GPIOB->ODR=0XFFFF;      //全部输出高

LCD_RS=1;
LCD_CS=0;
//读取数据(读寄存器时,并不需要读2次)
LCD_RD=0;    
LCD_RD=1;
t=DATAIN;  
LCD_CS=1; 
 
GPIOB->CRL=0X33333333; //PB0-7  上拉输出
GPIOB->CRH=0X33333333; //PB8-15 上拉输出
GPIOB->ODR=0XFFFF;    //全部输出高
return t;  
}      



//返回值:此点的颜色
u16 LCD_ReadPoint(u16 x,u16 y)
{
u16 t;
LCD_WriteReg(0x0020,x);  //X
LCD_WriteReg(0x0021,y);  //Y

LCD_WR_REG(0x22);       //选择GRAM地址
 
GPIOB->CRL=0X88888888; //PB0-7  上拉输入
GPIOB->CRH=0X88888888; //PB8-15 上拉输入
GPIOB->ODR=0XFFFF;     //全部输出高

LCD_RS_SET;
LCD_CS_CLR;
//读取数据(读GRAM时,需要读2次)
LCD_RD_CLR;    
LCD_RD_SET;
delay_us(2);//FOR 9320,延时2us    
//dummy READ
LCD_RD_CLR;    
delay_us(2);//FOR 8989,延时2us    
LCD_RD_SET;
t=DATAIN;  
LCD_CS_SET;

 
GPIOB->CRL=0X33333333; //PB0-7  上拉输出
GPIOB->CRH=0X33333333; //PB8-15 上拉输出
GPIOB->ODR=0XFFFF;    //全部输出高  

return t;
 
}



void LCD_init()                       //  LCD ID: 0xB505
{
LCD_WriteReg(0x0000,0x0000);
LCD_WriteReg(0x0000,0x0000);
LCD_WriteReg(0x0000,0x0000);
LCD_WriteReg(0x0000,0x0000);
LCD_WriteReg(0x00a4,0x0001);
delay_ms(20);   
LCD_WriteReg(0x0060,0x2700);
LCD_WriteReg(0x0008,0x0202);
LCD_WriteReg(0x0030,0x0214);
LCD_WriteReg(0x0031,0x3715);
LCD_WriteReg(0x0032,0x0604);
LCD_WriteReg(0x0033,0x0e16);
LCD_WriteReg(0x0034,0x2211);
LCD_WriteReg(0x0035,0x1500);
LCD_WriteReg(0x0036,0x8507);
LCD_WriteReg(0x0037,0x1407);
LCD_WriteReg(0x0038,0x1403);
LCD_WriteReg(0x0039,0x0020);
LCD_WriteReg(0x0090,0x001a);
LCD_WriteReg(0x0010,0x0000);
LCD_WriteReg(0x0011,0x0007);
LCD_WriteReg(0x0012,0x0000);
LCD_WriteReg(0x0013,0x0000);
delay_ms(20);
LCD_WriteReg(0x0010,0x0730);
LCD_WriteReg(0x0011,0x0137);
delay_ms(20);
LCD_WriteReg(0x0012,0x01b8);
delay_ms(20);
LCD_WriteReg(0x0013,0x0f00);
LCD_WriteReg(0x002a,0x0080);
LCD_WriteReg(0x0029,0x0048);
delay_ms(20);
LCD_WriteReg(0x0001,0x0100);
LCD_WriteReg(0x0002,0x0700);
LCD_WriteReg(0x0003,0x1230);//LCD_WriteReg(0x0003,0x1230);
LCD_WriteReg(0x0008,0x0202);
LCD_WriteReg(0x000a,0x0000);
LCD_WriteReg(0x000c,0x0000);
LCD_WriteReg(0x000d,0x0000);
LCD_WriteReg(0x000e,0x0030);
LCD_WriteReg(0x0050,0x0000);
LCD_WriteReg(0x0051,0x00ef);
LCD_WriteReg(0x0052,0x0000);
LCD_WriteReg(0x0053,0x013f);
LCD_WriteReg(0x0060,0x2700);
LCD_WriteReg(0x0061,0x0001);
LCD_WriteReg(0x006a,0x0000);
//LCD_WriteReg(0x0080,0x0000);
//LCD_WriteReg(0x0081,0x0000);
LCD_WriteReg(0x0090,0X0011);
LCD_WriteReg(0x0092,0x0600);
LCD_WriteReg(0x0093,0x0402);
LCD_WriteReg(0x0094,0x0002);
delay_ms(20);
LCD_WriteReg(0x0007,0x0001);
delay_ms(20);
LCD_WriteReg(0x0007,0x0061);
LCD_WriteReg(0x0007,0x0173);
LCD_WriteReg(0x0020,0x0000);
LCD_WriteReg(0x0021,0x0000);   
LCD_WriteReg(0x00,0x22); 

LCD_LED=1;
}

//设置一种颜色************************************************************************************************
u16 color(u8 R,u8 G,u8 B)
{
u16  CRGB,RGB0,RGB1,RGB2,RGB3,RGB4;

RGB0=B;

RGB1=G;
RGB2=RGB1<<5;

RGB3=R;
RGB4=RGB3<<11;

CRGB =RGB0|RGB2|RGB4;

return CRGB;
}


//画一个点   ************************************************************************************************
void DrawPoint(u16 x,u16 y)
{
u8 i,j;

for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{
LCD_WriteReg(0x0020,x+i);  //X
LCD_WriteReg(0x0021,y+j);  //Y
LCD_WR_REG(0x22);
LCD_WR_DATA(F_COLOR);

LCD_WriteReg(0x0020,x-i);  //X
LCD_WriteReg(0x0021,y-j);  //Y
LCD_WR_REG(0x22);
LCD_WR_DATA(F_COLOR);
}
}
}



//以背景色清屏 ************************************************************************************************
void clear_lcd()
{
u16  i,j;

LCD_WriteReg(0x0020,0x00);  //X
LCD_WriteReg(0x0021,0x00);  //Y
LCD_WR_REG(0x22);

for (i=0;i<320;i++) 
{
for (j=0;j<240;j++)
{
LCD_WR_DATA(B_COLOR);
}
}
}

 //透明背景色的显示字符函数  ***********************************************************************************

void SHOW_char_NBC(u8 Page,u8 List,u8 onechar)
{
 u8 i,j;
 u16 temp1,temp2,temp3,temp4;

 temp1=onechar-' ';

 temp3=F_COLOR;

 for (i=0;i<16;i++)
{
temp4=asc2_1608[temp1];

for (j=0;j<8;j++)
{
temp2 = temp4;
temp2 &= 0x01;
temp4 >>=1;

if(temp2==0)
{
F_COLOR=LCD_ReadPoint(List*8+j,Page*16+i);
}
else
    {
    F_COLOR=temp3;
}


LCD_WriteReg(0x0020,List*8+j);  //X
LCD_WriteReg(0x0021,Page*16+i);  //Y
LCD_WR_REG(0x22);

LCD_WR_DATA(F_COLOR);
}
}

F_COLOR=temp3;  //返回颜色值
}

//固定前影色和背景色的显示字符函数  ************************************************************************************************
void SHOW_char(u8 Page,u8 List,u8 onechar)    

{
u8 i,j;
u16 temp1,temp2,temp3,temp4;

temp1=onechar-' ';

temp3=F_COLOR;

LCD_WriteReg(0x0050,List*8);
LCD_WriteReg(0x0051,(List*8)+7);

LCD_WriteReg(0x0052,Page*16);
LCD_WriteReg(0x0053,(Page*16)+15);

LCD_WriteReg(0x0020,List*8);  //X
LCD_WriteReg(0x0021,Page*16);  //Y

LCD_WR_REG(0x22);

for (i=0;i<16;i++)
{
temp4=asc2_1608[temp1];
for (j=0;j<8;j++)
{
temp2 = temp4;
temp2 &= 0x01;
temp4 >>=1;


if(temp2==0)
{
F_COLOR=B_COLOR;
}
else
    {
    F_COLOR=temp3;
}

LCD_WR_DATA(F_COLOR);
}
}
    F_COLOR=temp3;


LCD_WriteReg(0x0050,0);    //开放回窗口
LCD_WriteReg(0x0051,239);
LCD_WriteReg(0x0052,0);
LCD_WriteReg(0x0053,319);

}


//用背景色刷出N个字符位  *****************************************************************************************
void Clear_line(u8 page,u8 list,u8 N)

{
u8 i;

for (i=0;i<N;i++)
{
SHOW_char(page,list,' ');
list=list+1;
}

}

//显示一串字符函数  ************************************************************************************************
void linechar_1608t(u8 Page,u8 List,u8 *pd)
{
     u8 temp;

 while((*pd)!='\0')
  {
  temp=*pd;

  SHOW_char_NBC(Page,List,temp);

  pd++;
  List=List+1;
 }

}
// 显示数字串   *******************************************************************************************
void count_show(u8 Page,u8 List,u16 input)
{

u16 temp0,temp1,temp2,temp3,temp4,A,B;

  temp0=input/10000;  //将脉冲个数转换成字符由1602输出 
  
   
  A=input%10000;
  temp1=A/1000;

  B=A%1000;
  temp2=B/100;

  A=B%100;
  temp3=A/10;

  B=A%10;
  temp4=B;
  

  if (temp0!=0)
   {
SHOW_char_NBC(Page,List,'0'+temp0);
List=List+1;
}

  if ((temp1!=0)|(temp0!=0))
   {
SHOW_char_NBC(Page,List,'0'+temp1);
List=List+1;
}

  if ((temp2!=0)|(temp1!=0)|(temp0!=0))
   {
SHOW_char_NBC(Page,List,'0'+temp2);
List=List+1;
}
  if ((temp3!=0)|(temp2!=0)|(temp1!=0)|(temp0!=0))
   {
SHOW_char_NBC(Page,List,'0'+temp3);
List=List+1;
}

  SHOW_char_NBC(Page,List,'0'+temp4);

}

// SPI 启动   *******************************************************************************************
void ADS7843SPI_start() 
{
    DCLK=0;

    CS=1;
    DIN=1;

    DCLK=1;

    CS=0;
}


// 写一个命令到ADS7843   ********************************************************************************

void Write_Com_to_7843(u8 COM)
{
u8 i,temp;

DCLK=0;
// CS=0;

for (i=0;i<8;i++)
{
temp=COM & 0x80;  //从最高位取Bit 

if (temp==0)
{
DIN=0;
}
else
    {
DIN=1;
}

COM<<=1;
    DCLK=0;    //底电平放数上总线
    DCLK=1;   //上升沿后 ADS7843 读总线数据
}

//  CS=1;
}
// 读一个数据 到ADS7843   ********************************************************************************

u16  Read_data_form7843()

{
u8 i;
u16 data;

delay_us(6);   //ADS7846的转换时间最长为6us  看TI资料的第九页 ADS7843 BUSY 很忙 要给他时间
DCLK=1;        //给1个时钟,清除BUSY        
DCLK=0; 

for (i=0;i<16;i++)
{
data<<=1;

DCLK=1;
delay_us(1);
DCLK=0;  //SPI 读数据刚好和写数据相反, 是在时钟下降沿后 主机才能读数据
if (DOUT)data++;
}

  data>>=4;  //两个时钟周期中,后4位全是0没有用,要去掉.因为ADS7843只给出12位精度的数据

return (data);
}


// 主函数   ************************************************************************************************
int main(void)
{
  u16  i,zx,zy,x1,x2,y1,y2,datax[10],datay[10];
  Stm32_Clock_Init(9);
  delay_init(72);
  uart_init(72,9600);
  LCD_IO_Init();
  LCD_init();

  B_COLOR=color(7,14,7);
  clear_lcd();

  while (1) 
    {   
ADS7843SPI_start();

for(i=0;i<10;i++)
{
Write_Com_to_7843(CMD_RDX);
datax=Read_data_form7843();
}

for(i=0;i<10;i++)
{
Write_Com_to_7843(CMD_RDY);
datay=Read_data_form7843();
}

x1=datax[0]+datax[1]+datax[2]+datax[3]+datax[4];
x2=datax[5]+datax[6]+datax[7]+datax[8]+datax[9];

x1=x1/5;
x2=x2/5;

y1=datay[0]+datay[1]+datay[2]+datay[3]+datay[4];
y2=datay[5]+datay[6]+datay[7]+datay[8]+datay[9];

y1=y1/5;
y2=y2/5;

if(x1>=x2)
{
zx=x1-x2;
}
else
{
zx=x2-x1;
}

if(y1>=y2)
{
zy=y1-y2;
}
else
{
zy=y2-y1;
}

F_COLOR = color(30,60,0);
linechar_1608t(18,3," X data\0");
linechar_1608t(18,18," Y data\0");
if ((x1>210)&(x1<3300)&(zx<50))
{
F_COLOR = color(0,60,0);
count_show(19,1,x1);
count_show(19,6,x2);
count_show(19,11,zx);
 }


if ((y1>210)&(y1<3800)&(zy<50))
{
F_COLOR = color(30,60,30);
count_show(19,16,y1);
count_show(19,21,y2);
count_show(19,27,zy);
  }

if ((y1>210)&(y1<3800)&(zy<50)&(x1>210)&(x1<3300)&(zx<50))
{
DrawPoint(((y1+y2)/2)/17,((x1+x2)/2)/12);
}
delay_ms(50);
B_COLOR=color(7,14,7);
Clear_line(19,0,29);
Clear_line(19,0,29);
}
}


我的工作就是天天在玩
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

71

主题

467

帖子

0

精华

高级会员

Rank: 4

积分
800
金钱
800
注册时间
2011-11-18
在线时间
5 小时
 楼主| 发表于 2012-6-25 02:36:15 | 显示全部楼层
我写了CHINAFOX 上去,想将手机拍的相片帖上来,但不知如何贴图片,只好作罢.
我的工作就是天天在玩
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-6-25 10:55:07 | 显示全部楼层
回复【2楼】chinafox:
---------------------------------
贴图很简单啊,你发表帖子的时候左侧就有告诉你如何贴图的...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

187

主题

324

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1123
金钱
1123
注册时间
2012-6-4
在线时间
120 小时
发表于 2012-7-9 22:21:51 | 显示全部楼层
楼主,我支持你,继续写这种通俗易懂的教程吧。
回复 支持 反对

使用道具 举报

12

主题

432

帖子

0

精华

高级会员

Rank: 4

积分
729
金钱
729
注册时间
2012-6-21
在线时间
59 小时
发表于 2012-8-13 08:42:42 | 显示全部楼层
mark。
回复 支持 反对

使用道具 举报

145

主题

477

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1264
金钱
1264
注册时间
2012-4-2
在线时间
69 小时
发表于 2012-8-24 23:26:04 | 显示全部楼层
好贴,互需帖
回复 支持 反对

使用道具 举报

12

主题

216

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
313
金钱
313
注册时间
2011-4-7
在线时间
3 小时
发表于 2012-8-25 13:06:57 | 显示全部楼层
学习了!
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2012-8-25 14:10:31 | 显示全部楼层
楼主给力,还出季了。
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

145

主题

477

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1264
金钱
1264
注册时间
2012-4-2
在线时间
69 小时
发表于 2012-8-27 10:57:17 | 显示全部楼层
就不明楼主怎么学得这么快,
回复 支持 反对

使用道具 举报

71

主题

467

帖子

0

精华

高级会员

Rank: 4

积分
800
金钱
800
注册时间
2011-11-18
在线时间
5 小时
 楼主| 发表于 2012-9-26 09:08:12 | 显示全部楼层
近來項目滿滿的,搞完後咱們學點潮流的東東,好懷念剛開始入門的日子
我的工作就是天天在玩
回复 支持 反对

使用道具 举报

71

主题

467

帖子

0

精华

高级会员

Rank: 4

积分
800
金钱
800
注册时间
2011-11-18
在线时间
5 小时
 楼主| 发表于 2012-9-26 09:15:21 | 显示全部楼层
上個月有個項目沒時間做板子,叫mm买了一块原子的板直接写代码搞上去,还很好用嘛,直接跟客户说如怕主控板坏掉去原子的店多买几块,多便宜!
我的工作就是天天在玩
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-9-26 09:56:07 | 显示全部楼层
回复【11楼】chinafox:
---------------------------------
呵呵,好久没见了。忙去了原来...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

60

主题

225

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
483
金钱
483
注册时间
2013-7-27
在线时间
4 小时
发表于 2013-8-15 19:07:47 | 显示全部楼层
回复【楼主位】chinafox:
---------------------------------

太感谢了,学习学习!
回复 支持 反对

使用道具 举报

230

主题

1950

帖子

10

精华

论坛元老

Rank: 8Rank: 8

积分
4562
金钱
4562
注册时间
2010-12-14
在线时间
32 小时
发表于 2013-8-15 19:18:09 | 显示全部楼层
回复【11楼】chinafox:
---------------------------------
楼主是我们论坛的元老级了。发了很多资料,也帮网友解决不少问题,感谢对我们的支持。。。
我是开源电子网?网站管理员,对网站有任何问题,请与我联系!QQ:389063473Email:389063473@qq.com
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-15 00:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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