OpenEdv-开源电子网

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

触摸屏问题

[复制链接]

11

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2013-1-16
在线时间
0 小时
发表于 2014-3-6 12:21:54 | 显示全部楼层 |阅读模式
在触摸屏上写了个矩阵式的按键,想把输入的值,在屏幕上显示出来,可怎么就不对呢,求高手看看,逻辑哪里不对,while()循环里使showButton()函数,frequency_value[]存放输入的值
界面



void Detect_TP(void)
{
   
     if(Getpix()==1)
      {
       /*第一列3个按钮11,21,31,41*/
if((LCD_X>=xs(0))&& (LCD_X<=xe(0)))     //依据公式参考桌面绘制时的公式,main函数中,xs和xe,横坐标起点和终点
{
if((LCD_Y>=ys(0)) &&(LCD_Y<=ye(0)))  //依据公式,ys和ye,纵坐标起点和终点
{
                Button_11=1;
Button=1;
 GUIsquare2pix(xs(0),ys(0),xe(0),ye(0),Yellow);
 Delay(0x100000);
 Delay(0x100000);
 Delay(0x100000);
 while(PEN==0);
 GUIsquare2pix(xs(0),ys(0),xe(0),ye(0),Blue2);
}
else if((LCD_Y>=ys(1)) &&(LCD_Y<=ye(1)))
{
                Button_21=1;
 Button=4;
 GUIsquare2pix(xs(0),ys(1),xe(0),ye(1),Yellow);
 Delay(0x100000);
 Delay(0x100000);
 Delay(0x100000);
 while(PEN==0);
 GUIsquare2pix(xs(0),ys(1),xe(0),ye(1),Blue2);
}
else if((LCD_Y>=ys(2)) &&(LCD_Y<=ye(2)))
{
Button=7;
 Button_31=1;
 GUIsquare2pix(xs(0),ys(2),xe(0),ye(2),Yellow);
 Delay(0x100000);
 Delay(0x100000);
 Delay(0x100000);
 while(PEN==0);
 GUIsquare2pix(xs(0),ys(2),xe(0),ye(2),Blue2);
}
else if((LCD_Y>=ys(3)) &&(LCD_Y<=ye(3)))
{

 Button_41=1;
Button=0;
 GUIsquare2pix(xs(0),ys(3),xe(0),ye(3),Yellow);
 Delay(0x100000);
 Delay(0x100000);
 Delay(0x100000);
 while(PEN==0);
 GUIsquare2pix(xs(0),ys(3),xe(0),ye(3),Blue2);
}
}
      /*第二列4个按钮12,22,32,42*/
      if((LCD_X>=xs(1))&& (LCD_X<=xe(1)))     //依据公式参考桌面绘制时的公式,main函数中,xs和xe,横坐标起点和终点
{
if((LCD_Y>=ys(0)) &&(LCD_Y<=ye(0)))  //依据公式,ys和ye,纵坐标起点和终点
{
                Button_12=1;
Button=2;
 GUIsquare2pix(xs(1),ys(0),xe(1),ye(0),Yellow);
 Delay(0x100000);
 Delay(0x100000);
 Delay(0x100000);
 while(PEN==0);
 GUIsquare2pix(xs(1),ys(0),xe(1),ye(0),Blue2);
}
else if((LCD_Y>=ys(1)) &&(LCD_Y<=ye(1)))
{
                Button_22=1;
Button=5;
 GUIsquare2pix(xs(1),ys(1),xe(1),ye(1),Yellow);
 Delay(0x100000);
 Delay(0x100000);
 Delay(0x100000);
 while(PEN==0);
 GUIsquare2pix(xs(1),ys(1),xe(1),ye(1),Blue2);
}
else if((LCD_Y>=ys(2)) &&(LCD_Y<=ye(2)))
{

 Button_32=1;
Button=8;
 GUIsquare2pix(xs(1),ys(2),xe(1),ye(2),Yellow);
 Delay(0x100000);
 Delay(0x100000);
 Delay(0x100000);
 while(PEN==0);
 GUIsquare2pix(xs(1),ys(2),xe(1),ye(2),Blue2);
}
else if((LCD_Y>=ys(3)) &&(LCD_Y<=ye(3)))
{

 Button_42=1;
Button=10;
 GUIsquare2pix(xs(1),ys(3),xe(1),ye(3),Yellow);
 Delay(0x100000);
 Delay(0x100000);
 Delay(0x100000);
 while(PEN==0);
 GUIsquare2pix(xs(1),ys(3),xe(1),ye(3),Blue2);
}
}
/*第三列4个按钮13,23,33,43*/
      if((LCD_X>=xs(2))&& (LCD_X<=xe(2)))     //依据公式参考桌面绘制时的公式,main函数中,xs和xe,横坐标起点和终点
{
if((LCD_Y>=ys(0)) &&(LCD_Y<=ye(0)))  //依据公式,ys和ye,纵坐标起点和终点
{
                Button_13=1;
Button=3;
 GUIsquare2pix(xs(2),ys(0),xe(2),ye(0),Yellow);
 Delay(0x100000);
 Delay(0x100000);
 Delay(0x100000);
 while(PEN==0);
 GUIsquare2pix(xs(2),ys(0),xe(2),ye(0),Blue2);
}
else if((LCD_Y>=ys(1)) &&(LCD_Y<=ye(1)))
{
                Button_23=1;
Button=6;
 GUIsquare2pix(xs(2),ys(1),xe(2),ye(1),Yellow);
 Delay(0x100000);
 Delay(0x100000);
 Delay(0x100000);
 while(PEN==0);
 GUIsquare2pix(xs(2),ys(1),xe(2),ye(1),Blue2);
}
else if((LCD_Y>=ys(2)) &&(LCD_Y<=ye(2)))
{

 Button_33=1;
Button=9;
 GUIsquare2pix(xs(2),ys(2),xe(2),ye(2),Yellow);
 Delay(0x100000);
 Delay(0x100000);
 Delay(0x100000);
 while(PEN==0);
 GUIsquare2pix(xs(2),ys(2),xe(2),ye(2),Blue2);
}
else if((LCD_Y>=ys(3)) &&(LCD_Y<=ye(3)))
{

 Button_43=1;
Button=11;
 GUIsquare2pix(xs(2),ys(3),xe(2),ye(3),Yellow);
 Delay(0x100000);
 Delay(0x100000);
 Delay(0x100000);
 while(PEN==0);
 GUIsquare2pix(xs(2),ys(3),xe(2),ye(3),Blue2);
}
}

  
      }
}

void ShowBotton(void)
{

int var;
for(var=0;var<8;var++)
{
Detect_TP();
LCD_PutString(86,35,"8",White,Black);
  LCD_PutSingleChar(30,35,0x30+1,White,Black);

switch(Button)
{
case 1:
frequency_value[var]=1;
var++;
Button_11=0; 
break;
case 2:
frequency_value[var]=2;
var++;
Button_12=0;
break;
case 3:
frequency_value[var]=3;
var++;
Button_13=0;
break;
case 4:
frequency_value[var]=4;
var++;
Button_21=0;
break;
case 5:
frequency_value[var]=5;
var++;
Button_22=0;
break;
case 6:
frequency_value[var]=6;
var++;
Button_23=0;
break;
case 7:
frequency_value[var]=7;
var++;
Button_31=0;
break;
case 8:
frequency_value[var]=8;
var++;
Button_32=0;
break;
case 9:
frequency_value[var]=9;
var++;
Button_33=0;
break;
case 0:
frequency_value[var]=0;
var++;
Button_41=0;
break;
case 10:
showfrequency();
Button_42=0;
break;
// case 11:
// frequency_value=9;
// Button_43=0;
// break;
}
}
void showfrequency(void)
{
int i;
long int frequency=0;
for(i=0;i<8;i++)
{
// LCD_PutSingleChar(30+10*i,35,0x30+(frequency_value),White,Black);
frequency=frequency_value+frequency*10;
}
LCD_PutSingleChar(30,35,0x30+(frequency/10000000),White,Black);
// LCD_PutSingleChar(38,35,0x30+(frequency/10000000),White,Black);
LCD_PutSingleChar(38,35,0x30+((frequency/1000000)%10),White,Black);
LCD_PutSingleChar(46,35,0x30+((frequency/100000)%100),White,Black);
LCD_PutSingleChar(54,35,0x30+((frequency/10000)%1000),White,Black);
LCD_PutSingleChar(62,35,0x30+((frequency/1000)%10000),White,Black);
LCD_PutSingleChar(70,35,0x30+((frequency/100)%100000),White,Black);
LCD_PutSingleChar(78,35,0x30+((frequency/10)%1000000),White,Black);
LCD_PutSingleChar(86,35,0x30+((frequency/1)%10000000),White,Black);
// LCD_PutChar(10,100,frequency, Yellow,Black);
AD9851_Init();
  Write_AD9851_Serial(0x00,frequency);
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-3-6 14:15:07 | 显示全部楼层
这个,你可以仿真一下,就知道问题在哪里了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

30

主题

705

帖子

1

精华

新手上路

积分
21
金钱
21
注册时间
2013-3-14
在线时间
52 小时
发表于 2014-3-6 18:12:00 | 显示全部楼层
u8 keyboard_passwd(u8 page,u8 pos,u8 rtn)
{
u8 kk=0;
u8 ASSWD_FLAG=0;
u8 KEY_NUM=20;
u8 button_w=60;//kuan 
u8 button_h=50;//gao  
u8 button_F[12];
u8 ASSWD[6];
u32 ASSWD_tmp;
u8 BUZZ_EN=0;
u16 BUT_x[12]={
 350,420,490,
 350,420,490,
 350,420,490,
 350,420,490,};
u16 BUT_y[12]={
 130,130,130,
 190,190,190,
 250,250,250,
 310,310,310,
 };
u8 disp_pos=0;
LCD_Clear(BLACK);
// PASSWD[0]=AT24CXX_ReadLenByte(FM24C16_ADR[20],1);
// PASSWD[1]=AT24CXX_ReadLenByte(FM24C16_ADR[20]+1,1);
// PASSWD[2]=AT24CXX_ReadLenByte(FM24C16_ADR[20]+2,1);
// PASSWD[3]=AT24CXX_ReadLenByte(FM24C16_ADR[20]+3,1);
// PASSWD[4]=AT24CXX_ReadLenByte(FM24C16_ADR[20]+4,1);
// PASSWD[5]=AT24CXX_ReadLenByte(FM24C16_ADR[20]+5,1);
PASSWD[0]=6;//AT24CXX_ReadLenByte(FM24C16_ADR[20],1);
PASSWD[1]=6;//AT24CXX_ReadLenByte(FM24C16_ADR[20]+1,1);
PASSWD[2]=6;//AT24CXX_ReadLenByte(FM24C16_ADR[20]+2,1);
PASSWD[3]=6;//AT24CXX_ReadLenByte(FM24C16_ADR[20]+3,1);
PASSWD[4]=6;//AT24CXX_ReadLenByte(FM24C16_ADR[20]+4,1);
PASSWD[5]=6;//AT24CXX_ReadLenByte(FM24C16_ADR[20]+5,1);
//------------------------------------------
LCD_Fill_color(keyboard_X[0]-20,keyboard_Y[0]-10,keyboard_X[pos]+44,keyboard_Y[0]+34,WHITE);//显示底框
for(kk=0;kk<pos;kk++){
//keyboard_num[kk]=AT24CXX_ReadLenByte(FM24C16_ADR[eeprom_add]+kk,1);
keyboard_num[kk]=0;
//LCD_Show24Char(keyboard_X[kk],keyboard_Y[kk],keyboard_num[kk],BLACK,WHITE);
}
LCD_Show24Char(keyboard_X[0],keyboard_Y[0],'|',BLACK,WHITE);

for(kk=0;kk<12;kk++){
LCD_Draw_Rectangle(BUT_x[kk],BUT_y[kk],BUT_x[kk]+button_w,BUT_y[kk]+button_h,BLUE);
button_F[kk]=0;
}
//24=button_w/2-6
//13=button_h/2-12
//6=button_w/2-24
kk=0;LCD_Show24Char(BUT_x[kk]+24,BUT_y[kk]+13,'1',BLUE,BLACK);
kk=1;LCD_Show24Char(BUT_x[kk]+24,BUT_y[kk]+13,'2',BLUE,BLACK);
kk=2;LCD_Show24Char(BUT_x[kk]+24,BUT_y[kk]+13,'3',BLUE,BLACK);
kk=3;LCD_Show24Char(BUT_x[kk]+24,BUT_y[kk]+13,'4',BLUE,BLACK);
kk=4;LCD_Show24Char(BUT_x[kk]+24,BUT_y[kk]+13,'5',BLUE,BLACK);
kk=5;LCD_Show24Char(BUT_x[kk]+24,BUT_y[kk]+13,'6',BLUE,BLACK);
kk=6;LCD_Show24Char(BUT_x[kk]+24,BUT_y[kk]+13,'7',BLUE,BLACK);
kk=7;LCD_Show24Char(BUT_x[kk]+24,BUT_y[kk]+13,'8',BLUE,BLACK);
kk=8;LCD_Show24Char(BUT_x[kk]+24,BUT_y[kk]+13,'9',BLUE,BLACK);
kk=9;LCD_Show24String(BUT_x[kk]+6,BUT_y[kk]+13,"删除",BLUE,BLACK);
kk=10;LCD_Show24Char(BUT_x[kk]+24,BUT_y[kk]+13,'0',BLUE,BLACK);
kk=11;LCD_Show24String(BUT_x[kk]+6,BUT_y[kk]+13,"确定",BLUE,BLACK);
//for(kk=0;kk<pos;kk++)keyboard_num[kk]=0;
LCD_Show24String(10,keyboard_Y[0],"请输入密码:",RED,BLACK);
//kk=0;
while(1)
{
LED_show();
BUZZ_show();
Touch_Scan(0);//触摸扫描
if(Pen_Point.sta&0x80)
{
if((Pen_Point.X0>BUT_x[0])&&(Pen_Point.X0<BUT_x[0]+button_w))
{
if((Pen_Point.Y0>BUT_y[0])&&(Pen_Point.Y0<BUT_y[0]+button_h))
{
      KEY_NUM=KEY_1;//1
kk=0;
if(button_F[kk]==0)
{
button_F[kk]=1;
LCD_Fill_color(BUT_x[kk],BUT_y[kk],BUT_x[kk]+button_w,BUT_y[kk]+button_h,BLUE);
LCD_Show24Char(BUT_x[kk]+24,BUT_y[kk]+13,'1',RED,BLUE);

}
if(BUZZ_EN==0)
{
BUZZ_ON();
delay_time1=BUZZ_TIME;
BUZZ_EN=1;
}
}
else if((Pen_Point.Y0>BUT_y[3])&&(Pen_Point.Y0<BUT_y[3]+button_h))
{
      KEY_NUM=KEY_4;//4
kk=3;
if(button_F[kk]==0)
{
button_F[kk]=1;
LCD_Fill_color(BUT_x[kk],BUT_y[kk],BUT_x[kk]+button_w,BUT_y[kk]+button_h,BLUE);
LCD_Show24Char(BUT_x[kk]+24,BUT_y[kk]+13,'4',RED,BLUE);

}
if(BUZZ_EN==0)
{
BUZZ_ON();
delay_time1=BUZZ_TIME;
BUZZ_EN=1;
}
}
else if((Pen_Point.Y0>BUT_y[6])&&(Pen_Point.Y0<BUT_y[6]+button_h))
{
      KEY_NUM=KEY_7;//7
kk=6;
if(button_F[kk]==0)
{
button_F[kk]=1;
LCD_Fill_color(BUT_x[kk],BUT_y[kk],BUT_x[kk]+button_w,BUT_y[kk]+button_h,BLUE);
LCD_Show24Char(BUT_x[kk]+24,BUT_y[kk]+13,'7',RED,BLUE);

}
if(BUZZ_EN==0)
{
BUZZ_ON();
delay_time1=BUZZ_TIME;
BUZZ_EN=1;
}
}
else if((Pen_Point.Y0>BUT_y[9])&&(Pen_Point.Y0<BUT_y[9]+button_h))
{
      KEY_NUM=KEY_DEL;
kk=9;
if(button_F[kk]==0)
{
button_F[kk]=1;
LCD_Fill_color(BUT_x[kk],BUT_y[kk],BUT_x[kk]+button_w,BUT_y[kk]+button_h,BLUE);
LCD_Show24String(BUT_x[kk]+6,BUT_y[kk]+13,"删除",RED,BLUE);
}
if(BUZZ_EN==0)
{
BUZZ_ON();
delay_time1=BUZZ_TIME;
BUZZ_EN=1;
}
}

}
else if((Pen_Point.X0>BUT_x[1])&&(Pen_Point.X0<BUT_x[1]+button_w))
{
if((Pen_Point.Y0>BUT_y[1])&&(Pen_Point.Y0<BUT_y[1]+button_h))
{
      KEY_NUM=KEY_2;
kk=1;
if(button_F[kk]==0)
{
button_F[kk]=1;
LCD_Fill_color(BUT_x[kk],BUT_y[kk],BUT_x[kk]+button_w,BUT_y[kk]+button_h,BLUE);
LCD_Show24Char(BUT_x[kk]+24,BUT_y[kk]+13,'2',RED,BLUE);
}
if(BUZZ_EN==0)
{
BUZZ_ON();
delay_time1=BUZZ_TIME;
BUZZ_EN=1;
}
}
else if((Pen_Point.Y0>BUT_y[4])&&(Pen_Point.Y0<BUT_y[4]+button_h))
{
      KEY_NUM=KEY_5;
kk=4;
if(button_F[kk]==0)
{
button_F[kk]=1;
LCD_Fill_color(BUT_x[kk],BUT_y[kk],BUT_x[kk]+button_w,BUT_y[kk]+button_h,BLUE);
LCD_Show24Char(BUT_x[kk]+24,BUT_y[kk]+13,'5',RED,BLUE);
}
if(BUZZ_EN==0)
{
BUZZ_ON();
delay_time1=BUZZ_TIME;
BUZZ_EN=1;
}
}
else if((Pen_Point.Y0>BUT_y[7])&&(Pen_Point.Y0<BUT_y[7]+button_h))
{
      KEY_NUM=KEY_8;
kk=7;
if(button_F[kk]==0)
{
button_F[kk]=1;
LCD_Fill_color(BUT_x[kk],BUT_y[kk],BUT_x[kk]+button_w,BUT_y[kk]+button_h,BLUE);
LCD_Show24Char(BUT_x[kk]+24,BUT_y[kk]+13,'8',RED,BLUE);
}
if(BUZZ_EN==0)
{
BUZZ_ON();
delay_time1=BUZZ_TIME;
BUZZ_EN=1;
}
}
else if((Pen_Point.Y0>BUT_y[10])&&(Pen_Point.Y0<BUT_y[10]+button_h))
{
      KEY_NUM=KEY_0;
kk=10;
if(button_F[kk]==0)
{
button_F[kk]=1;
LCD_Fill_color(BUT_x[kk],BUT_y[kk],BUT_x[kk]+button_w,BUT_y[kk]+button_h,BLUE);
LCD_Show24Char(BUT_x[kk]+24,BUT_y[kk]+13,'0',RED,BLUE);
}
if(BUZZ_EN==0)
{
BUZZ_ON();
delay_time1=BUZZ_TIME;
BUZZ_EN=1;
}
}

}
else if((Pen_Point.X0>BUT_x[2])&&(Pen_Point.X0<BUT_x[2]+button_w))
{
if((Pen_Point.Y0>BUT_y[2])&&(Pen_Point.Y0<BUT_y[2]+button_h))
{
      KEY_NUM=KEY_3;
kk=2;
if(button_F[kk]==0)
{
button_F[kk]=1;
LCD_Fill_color(BUT_x[kk],BUT_y[kk],BUT_x[kk]+button_w,BUT_y[kk]+button_h,BLUE);
LCD_Show24Char(BUT_x[kk]+24,BUT_y[kk]+13,'3',RED,BLUE);
}
if(BUZZ_EN==0)
{
BUZZ_ON();
delay_time1=BUZZ_TIME;
BUZZ_EN=1;
}
}
else if((Pen_Point.Y0>BUT_y[5])&&(Pen_Point.Y0<BUT_y[5]+button_h))
{
      KEY_NUM=KEY_6;
kk=5;
if(button_F[kk]==0)
{
button_F[kk]=1;
LCD_Fill_color(BUT_x[kk],BUT_y[kk],BUT_x[kk]+button_w,BUT_y[kk]+button_h,BLUE);
LCD_Show24Char(BUT_x[kk]+24,BUT_y[kk]+13,'6',RED,BLUE);
}
if(BUZZ_EN==0)
{
BUZZ_ON();
delay_time1=BUZZ_TIME;
BUZZ_EN=1;
}
}
else if((Pen_Point.Y0>BUT_y[8])&&(Pen_Point.Y0<BUT_y[8]+button_h))
{
      KEY_NUM=KEY_9;
kk=8;
if(button_F[kk]==0)
{
button_F[kk]=1;
LCD_Fill_color(BUT_x[kk],BUT_y[kk],BUT_x[kk]+button_w,BUT_y[kk]+button_h,BLUE);
LCD_Show24Char(BUT_x[kk]+24,BUT_y[kk]+13,'9',RED,BLUE);
}
if(BUZZ_EN==0)
{
BUZZ_ON();
delay_time1=BUZZ_TIME;
BUZZ_EN=1;
}
}
else if((Pen_Point.Y0>BUT_y[11])&&(Pen_Point.Y0<BUT_y[11]+button_h))
{
      KEY_NUM=KEY_ENT;
kk=11;
if(button_F[kk]==0)
{
button_F[kk]=1;
LCD_Fill_color(BUT_x[kk],BUT_y[kk],BUT_x[kk]+button_w,BUT_y[kk]+button_h,BLUE);
LCD_Show24String(BUT_x[kk]+6,BUT_y[kk]+13,"确定",RED,BLUE);
}
if(BUZZ_EN==0)
{
BUZZ_ON();
delay_time1=BUZZ_TIME;
BUZZ_EN=1;
}
}
}
if(delay_time1==0&&BUZZ_EN==1)
{
    BUZZ_OFF();
}
}
else
{
if(delay_time1==0&&BUZZ_EN==1)
{
BUZZ_EN=0;
BUZZ_OFF();
}
for(kk=0;kk<12;kk++){
if(button_F[kk]!=0)
{
button_F[kk]=0;
LCD_Fill_color(BUT_x[kk]+1,BUT_y[kk]+1,BUT_x[kk]+button_w-1,BUT_y[kk]+button_h-1,BLACK);
if(kk==0)LCD_Show24Char(BUT_x[kk]+24,BUT_y[kk]+13,'1',BLUE,BLACK);
else if(kk==1)LCD_Show24Char(BUT_x[kk]+24,BUT_y[kk]+13,'2',BLUE,BLACK);
else if(kk==2)LCD_Show24Char(BUT_x[kk]+24,BUT_y[kk]+13,'3',BLUE,BLACK);
else if(kk==3)LCD_Show24Char(BUT_x[kk]+24,BUT_y[kk]+13,'4',BLUE,BLACK);
else if(kk==4)LCD_Show24Char(BUT_x[kk]+24,BUT_y[kk]+13,'5',BLUE,BLACK);
else if(kk==5)LCD_Show24Char(BUT_x[kk]+24,BUT_y[kk]+13,'6',BLUE,BLACK);
else if(kk==6)LCD_Show24Char(BUT_x[kk]+24,BUT_y[kk]+13,'7',BLUE,BLACK);
else if(kk==7)LCD_Show24Char(BUT_x[kk]+24,BUT_y[kk]+13,'8',BLUE,BLACK);
else if(kk==8)LCD_Show24Char(BUT_x[kk]+24,BUT_y[kk]+13,'9',BLUE,BLACK);
else if(kk==9)LCD_Show24String(BUT_x[kk]+6,BUT_y[kk]+13,"删除",BLUE,BLACK);
else if(kk==10)LCD_Show24Char(BUT_x[kk]+24,BUT_y[kk]+13,'0',BLUE,BLACK);
else if(kk==11)LCD_Show24String(BUT_x[kk]+6,BUT_y[kk]+13,"确定",BLUE,BLACK);

}

}
if(KEY_NUM><=9)
{
if(disp_pos<pos){
keyboard_num[disp_pos]=KEY_NUM;
LCD_Show24Char(keyboard_X[disp_pos],keyboard_Y[disp_pos],'*',BLACK,WHITE);
disp_pos++;
LCD_Show24Char(keyboard_X[disp_pos],keyboard_Y[disp_pos],'|',BLACK,WHITE);
}
}
else if(KEY_NUM==KEY_DEL){//DEL
if(disp_pos!=0){
LCD_Show24Char(keyboard_X[disp_pos],keyboard_Y[disp_pos],' ',BLACK,WHITE);
//keyboard_num[disp_pos]=0;
disp_pos--;
LCD_Show24Char(keyboard_X[disp_pos],keyboard_Y[disp_pos],'|',BLACK,WHITE);
}
else
{
BUZZ_OFF();
return 1;
}
}
else if(KEY_NUM==KEY_ENT)
{
//LCD_Show24Char(keyboard_X[disp_pos],keyboard_Y[disp_pos],'*',BLACK,WHITE);

for(kk=0;kk<pos;kk++)
{
if(keyboard_num[kk]==PASSWD[kk]){
PASSWD_FLAG=0;
}
else
{
PASSWD_FLAG=1;
break;
}
}
if(PASSWD_FLAG==0)
{
//LCD_Show24String(keyboard_X[page+1][pos]+50,keyboard_Y[0],"密码输入正确",RED,BLACK);
//delay_ms(500);
//delay_ms(500);
BUZZ_OFF();
return rtn;
}
else
{
PASSWD_tmp=(u32)keyboard_num[0]*100000+ (u32)keyboard_num[1]*10000+
           (u32)keyboard_num[2]*1000+(u32)keyboard_num[3]*100+
   (u32)keyboard_num[4]*10+keyboard_num[5];
if(PASSWD_tmp==611955)
{
BUZZ_OFF();
return rtn;
}
else
{
//LCD_Show24Char(keyboard_X[disp_pos],keyboard_Y[disp_pos],' ',BLACK,WHITE);
LCD_Show24String(keyboard_X[page+1][pos]+50,keyboard_Y[0],"密码输入错误",RED,BLACK);
disp_pos=0;//方便“删除”按键返回
BUZZ_OFF();
delay_ms(500);
delay_ms(500);
delay_ms(500);
LCD_Show24String(keyboard_X[0],keyboard_Y[0],"|      ",BLACK,WHITE);
//LCD_Show24Char(keyboard_X[disp_pos],keyboard_Y[disp_pos],'*',WHITE,BLACK);
LCD_Show24String(keyboard_X[page+1][pos]+50,keyboard_Y[0],"请再一次输入",RED,BLACK);
}
}

}
if(KEY_NUM!=20)
{
KEY_NUM=20;
}

}

}
}>
原子哥是不是又要出黑科技了呀。^_^...
回复 支持 反对

使用道具 举报

30

主题

705

帖子

1

精华

新手上路

积分
21
金钱
21
注册时间
2013-3-14
在线时间
52 小时
发表于 2014-3-6 18:12:30 | 显示全部楼层
#ifndef _KEYBORAD_H_
#define _KEYBORAD_H_

#define KEY_0     0
#define KEY_1     1
#define KEY_2     2
#define KEY_3     3
#define KEY_4     4
#define KEY_5     5
#define KEY_6     6
#define KEY_7     7
#define KEY_8     8
#define KEY_9     9
#define KEY_DEL   10
#define KEY_ENT   11

u8 keyboard_num[20];

u16 keyboard_X[3][10]={
{200,212,224,236,248,260,272,284,296,308},
{200,212,224,236,248,260,272,284,296,308},
{200,212,224,236,248,260,272,284,296,308}
     };
u16 keyboard_Y[3][10]={
{100,100,100,100,100,100,100,100,100,100},
{160,160,160,160,160,160,160,160,160,160},
{220,220,220,220,220,220,220,220,220,220}
     };
void keyboard_magament(void);
u8 keyboard_input(u8 page,u8 pos,u8 eeprom_add,u8 rtn);
u8 keyboard_passwd(u8 page,u8 pos,u8 rtn);
#endif
原子哥是不是又要出黑科技了呀。^_^...
回复 支持 反对

使用道具 举报

30

主题

705

帖子

1

精华

新手上路

积分
21
金钱
21
注册时间
2013-3-14
在线时间
52 小时
发表于 2014-3-6 18:13:21 | 显示全部楼层
我这个成功了,参考下我写的吧。
原子哥是不是又要出黑科技了呀。^_^...
回复 支持 反对

使用道具 举报

11

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2013-1-16
在线时间
0 小时
 楼主| 发表于 2014-3-6 19:35:08 | 显示全部楼层
回复【5楼】fanghuiopenedv:
---------------------------------
可否发来整个程序,学习一下,qq:1551957339
回复 支持 反对

使用道具 举报

11

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2013-1-16
在线时间
0 小时
 楼主| 发表于 2014-3-6 20:50:17 | 显示全部楼层
回复【2楼】正点原子:
--------------------------------我调试时,不能从屏幕按键输入数字,界面卡死了
回复 支持 反对

使用道具 举报

11

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2013-1-16
在线时间
0 小时
 楼主| 发表于 2014-3-8 15:41:54 | 显示全部楼层
回复【5楼】fanghuiopenedv:
---------------------------------
你好,看了你的程序遍,不是怎么懂,再请教一下。BUT_x[12],BUT_y[12]是各个键盘的摆放位置,在While循环以前对各个按键的数值初始化,进入while循环的大if判断按键是否按键如果那个按键被按下,显示红字蓝底并且KEY_NUM被赋值 ,在大if 下没有显示你按下数字的按键,只是KEY_NUM被赋值。keyboard_num是存下你按下的数值的吧?,可是它为什么在大else语句下呢?它跟大If不向矛盾吗?而且大else下,你有对各个按键初始化,实在有点看不懂,还有keyboard_X,keyboard_Y是显示位置的坐标数组,这些都在大else 下被使用,如果打if条件成立,那else岂不是不执行了
回复 支持 反对

使用道具 举报

30

主题

705

帖子

1

精华

新手上路

积分
21
金钱
21
注册时间
2013-3-14
在线时间
52 小时
发表于 2014-3-17 09:03:18 | 显示全部楼层
大if是判断按键有无按下,按下了键盘要变色的。大else是没有按下的时候,没有按下就是松手了,松手了键盘恢复原来的颜色。keyboard_X,keyboard_Y是键盘的坐标数组。修改这些可以改变键盘的位置(整体修改)。每次按下蜂鸣器都会响50ms,一直按下也不会一直响的(有锁定标志位,松手后解除锁定标志位)。
原子哥是不是又要出黑科技了呀。^_^...
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-13 17:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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