OpenEdv-开源电子网

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

显示屏输入+显示键盘 现在问题是只显示键盘界面 但触摸屏没反应

[复制链接]

10

主题

43

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2018-10-17
在线时间
29 小时
发表于 2019-5-30 22:06:10 | 显示全部楼层 |阅读模式
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

43

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2018-10-17
在线时间
29 小时
 楼主| 发表于 2019-5-30 22:07:22 | 显示全部楼层
[mw_shl_code=c,true]#include "sim900a.h"
#include "usart.h"               
#include "delay.h"                 
                                    
#include "lcd.h"
         
#include "touch.h"          


       
        void Get_HzMat(unsigned char *code,unsigned char *mat,u8 size)
{                    
        unsigned char qh,ql;
        unsigned char i;                                          
        unsigned long foffset;
        u8 csize=(size/8+((size%8)?1:0))*(size);//μÃμ½×Öìåò»¸ö×Ö·û¶Ôó|μãÕó¼ˉËùÕ¼μÄ×Ö½úêy         
        qh=*code;
        ql=*(++code);
        if(qh<0x81||ql<0x40||ql==0xff||qh==0xff)//·&#199; 3£ó&#195;oo×&#214;
        {                       
            for(i=0;i<csize;i++)*mat++=0x00;//ì&#238;3&#228;&#194;ú&#184;&#241;
            return; //&#189;áê&#248;·&#195;&#206;ê
        }         
        if(ql<0x7f)ql-=0x40;//×¢òa!
        else ql-=0x41;
        qh-=0x81;   
                                                                                                        
}  
        void Show_Font(u16 x,u16 y,u8 *font,u8 size,u8 mode)
{
        u8 temp,t,t1;
        u16 y0=y;
        u8 dzk[72];   
        u8 csize=(size/8+((size%8)?1:0))*(size);//μ&#195;μ&#189;×&#214;ì&#229;ò&#187;&#184;&#246;×&#214;·&#251;&#182;&#212;ó|μ&#227;&#213;ó&#188;ˉ&#203;ù&#213;&#188;μ&#196;×&#214;&#189;úêy         
        if(size!=12&&size!=16&&size!=24)return;        //2&#187;&#214;§3&#214;μ&#196;size
        Get_HzMat(font,dzk,size);        //μ&#195;μ&#189;&#207;àó|′óD&#161;μ&#196;μ&#227;&#213;óêy&#190;Y
        for(t=0;t<csize;t++)
        {                                                                                                     
                temp=dzk[t];                        //μ&#195;μ&#189;μ&#227;&#213;óêy&#190;Y                          
                for(t1=0;t1<8;t1++)
                {
                        if(temp&0x80)LCD_Fast_DrawPoint(x,y,POINT_COLOR);
                        else if(mode==0)LCD_Fast_DrawPoint(x,y,BACK_COLOR);
                        temp<<=1;
                        y++;
                        if((y-y0)==size)
                        {
                                y=y0;
                                x++;
                                break;
                        }
                }           
        }  
}
       
       
       
void Show_Str(u16 x,u16 y,u16 width,u16 height,u8*str,u8 size,u8 mode)
{                                       
        u16 x0=x;
        u16 y0=y;                                                                    
    u8 bHz=0;     //×&#214;·&#251;&#187;ò&#213;&#223;&#214;D&#206;&#196;                                                                                              
    while(*str!=0)//êy&#190;Y&#206;′&#189;áê&#248;
    {
        if(!bHz)
        {
                if(*str>0x80)bHz=1;//&#214;D&#206;&#196;
                else              //×&#214;·&#251;
                {      
                if(x>(x0+width-size/2))//&#187;&#187;DD
                                {                                  
                                        y+=size;
                                        x=x0;          
                                }                                                            
                        if(y>(y0+height-size))break;//&#212;&#189;&#189;&#231;·μ&#187;&#216;      
                        if(*str==13)//&#187;&#187;DD·&#251;o&#197;
                        {         
                            y+=size;
                                        x=x0;
                            str++;
                        }  
                        else LCD_ShowChar(x,y,*str,size,mode);//óDD§2&#191;·&#214;D′è&#235;
                                str++;
                        x+=size/2; //×&#214;·&#251;,&#206;aè&#171;×&#214;μ&#196;ò&#187;°&#235;
                }
        }else//&#214;D&#206;&#196;
        {     
            bHz=0;//óDoo×&#214;&#191;a   
            if(x>(x0+width-size))//&#187;&#187;DD
                        {            
                                y+=size;
                                x=x0;                  
                        }
                if(y>(y0+height-size))break;//&#212;&#189;&#189;&#231;·μ&#187;&#216;                                                       
                Show_Font(x,y,str,size,mode); //&#207;&#212;ê&#190;&#213;a&#184;&#246;oo×&#214;,&#191;&#213;D&#196;&#207;&#212;ê&#190;
                str+=2;
                x+=size;//&#207;&#194;ò&#187;&#184;&#246;oo×&#214;&#198;&#171;ò&#198;            
        }                                                 
    }   
}                                            
//&#212;ú&#214;&#184;&#182;¨&#191;í&#182;èμ&#196;&#214;D&#188;&#228;&#207;&#212;ê&#190;×&#214;·&#251;′&#174;
//è&#231;1&#251;×&#214;·&#251;3¤&#182;è3&#172;1yá&#203;len,&#212;òó&#195;Show_Str&#207;&#212;ê&#190;
//len:&#214;&#184;&#182;¨òa&#207;&#212;ê&#190;μ&#196;&#191;í&#182;è                          
void Show_Str_Mid(u16 x,u16 y,u8*str,u8 size,u8 len)
{
        u16 strlenth=0;
           strlenth=strlen((const char*)str);
        strlenth*=size/2;
        if(strlenth>len)Show_Str(x,y,lcddev.width,lcddev.height,str,size,1);
        else
        {
                strlenth=(len-strlenth)/2;
            Show_Str(strlenth+x,y,lcddev.width,lcddev.height,str,size,1);
        }
}   



//////////////////////////////////////////////////////////////////////////////////          

u16 time=0;

//&#188;ü&#197;ì&#194;&#235;±í
const u8* kbd_tbl1[13]={"1","2","3","4","5","6","7","8","9","*","0","#","DEL"};
u8** kbd_tbl;
u8* kbd_fn_tbl[2];
//&#188;ó&#212;&#216;&#188;ü&#197;ì&#189;&#231;&#195;&#230;£¨3&#223;′&#231;&#206;a240*140£&#169;
//x,y:&#189;&#231;&#195;&#230;&#198;eê&#188;×&#248;±ê£¨320*240·&#214;±&#230;&#194;êμ&#196;ê±oò£&#172;x±&#216;D&#235;&#206;a0£&#169;
void sim900a_load_keyboard(u16 x,u16 y,u8 **kbtbl)
{
        u16 i;
        POINT_COLOR=RED;
        kbd_tbl=kbtbl;
        LCD_Fill(x,y,x+240,y+140,WHITE);
        LCD_DrawRectangle(x,y,x+240,y+140);                                                  
        LCD_DrawRectangle(x+80,y,x+160,y+140);         
        LCD_DrawRectangle(x,y+28,x+240,y+56);
        LCD_DrawRectangle(x,y+84,x+240,y+112);
        POINT_COLOR=BLUE;
        for(i=0;i<15;i++)
        {
        if(i<13)Show_Str_Mid(x+(i%3)*80,y+6+28*(i/3),(u8*)kbd_tbl,16,80);
                else Show_Str_Mid(x+(i%3)*80,y+6+28*(i/3),kbd_fn_tbl[i-13],16,80);
        }                                                             
}
//°′&#188;ü×′ì&#172;éè&#214;&#195;
//x,y:&#188;ü&#197;ì×&#248;±ê
//key:&#188;ü&#214;죨0~8£&#169;
//sta:×′ì&#172;£&#172;0£&#172;&#203;é&#191;a£&#187;1£&#172;°′&#207;&#194;£&#187;
void sim900a_key_staset(u16 x,u16 y,u8 keyx,u8 sta)
{                  
        u16 i=keyx/3,j=keyx%3;time=time+1;

        if(keyx>15)return;                          
}
//μ&#195;μ&#189;′¥&#195;t&#198;áμ&#196;ê&#228;è&#235;
//x,y:&#188;ü&#197;ì×&#248;±ê
//·μ&#187;&#216;&#214;μ£o°′&#188;ü&#188;ü&#214;죨1~15óDD§£&#187;0,&#206;TD§£&#169;
u8 sim900a_get_keynum(u16 x,u16 y)
{
        u16 i,j;
        static u8 key_x=0;//0,&#195;&#187;óDè&#206;o&#206;°′&#188;ü°′&#207;&#194;£&#187;1~15£&#172;1~15o&#197;°′&#188;ü°′&#207;&#194;
        u8 key=0;
        tp_dev.scan(0);                  
        if(tp_dev.sta&TP_PRES_DOWN)                        //′¥&#195;t&#198;á±&#187;°′&#207;&#194;
        {       
                for(i=0;i<5;i++)
                {
                        for(j=0;j<3;j++)
                        {
                                 if(tp_dev.x[0]<(x+j*80+80)&&tp_dev.x[0]>(x+j*80)&&tp_dev.y[0]<(y+i*28+28)&&tp_dev.y[0]>(y+i*28))
                                {               
                                        key=i*3+j+1;
                               
                                        break;                           
                                }
                        }                                       
                        if(key)
                        {          
                                if(key_x==key)key=0;
                                else
                                {
                                        sim900a_key_staset(x,y,key_x-1,0);
                                        key_x=key;
                                        sim900a_key_staset(x,y,key_x-1,1);
                                }
                                break;
                        }
                }  
        }
       
       
       
        else if(key_x)
        {
                sim900a_key_staset(x,y,key_x-1,0);
                key_x=0;
        }
        return key;
}




//SIM900A·¢&#182;ìD&#197;2aê&#212;
void sim900a_sms_send_test(void)
{
//        u8 *p,*p1,*p2,*s0,*s1,*s2,*s3,*s4,*s5,*s6,*s7,*s8,*s9;
        u8 phonebuf[20];                 //o&#197;&#194;&#235;&#187;o′&#230;
        u8 pohnenumlen=0;                //o&#197;&#194;&#235;3¤&#182;è,×&#238;′ó15&#184;&#246;êy
        u8 timex=0;
        u8 key=0;
        u8 smssendsta=0;                //&#182;ìD&#197;·¢&#203;í×′ì&#172;,0,μè′y·¢&#203;í;1,·¢&#203;íê§°ü;2,·¢&#203;í3é1|

        LCD_Clear(WHITE);  
        POINT_COLOR=RED;
                                     



        POINT_COLOR=BLUE;


        sim900a_load_keyboard(0,180,(u8**)kbd_tbl1);//&#207;&#212;ê&#190;&#188;ü&#197;ì
                       
        while(1)
        {
                       
       
                                                       
                        key=sim900a_get_keynum(0,180);
                                if(key)
                {   
                        if(smssendsta)
                        {
                                smssendsta=0;
                        }
                        if(key<10||key==11)
                        {
                                if(pohnenumlen<15)
                                {
                                        phonebuf[pohnenumlen++]=kbd_tbl[key-1][0];
                               
                                }
                        }else
                        {
                                if(key==13)if(pohnenumlen)pohnenumlen--;LCD_Fill(30+54,20,256,50,WHITE);//é&#190;3y  
                                if(key==14&&pohnenumlen)                       
                                {  

                                }
                                if(key==15) {}
                        }
                        phonebuf[pohnenumlen]=0;
                        LCD_Fill(30+54,20,156,24,RED);
                        Show_Str(30+54,20,156,24,phonebuf,24,0);        
                               
                }
               
               
                if((timex%20)==0)
                timex++;
                delay_ms(10);


}


}













[/mw_shl_code]
回复

使用道具 举报

10

主题

43

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2018-10-17
在线时间
29 小时
 楼主| 发表于 2019-5-30 22:09:01 | 显示全部楼层
#include "led.h"
#include "sim900a.h"
#include "lcd.h"
#include "ott2001a.h"
#include "touch.h"
/************************************************
ALIENTEK&#213;&#189;&#189;¢STM32&#191;a·¢°&#229;êμ&#209;é1
&#197;ü&#194;íμ&#198;êμ&#209;é
&#188;&#188;ê&#245;&#214;§3&#214;£owww.openedv.com
ì&#212;±|μê&#198;ì£ohttp://eboard.taobao.com
1&#216;×¢&#206;¢D&#197;1&#171;&#214;ú&#198;&#189;ì¨&#206;¢D&#197;o&#197;£o"&#213;yμ&#227;&#212;-×ó"£&#172;&#195;a·&#209;&#187;&#241;è&#161;STM32×êá&#207;&#161;£
1&#227;&#214;YêDD&#199;òíμ&#231;×ó&#191;&#198;&#188;&#188;óD&#207;T1&#171;&#203;&#190;  
×÷&#213;&#223;£o&#213;yμ&#227;&#212;-×ó @ALIENTEK
************************************************/


int main(void)
{       
               
        delay_init();                   
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        uart_init(9600);                          
        LCD_Init();                                                                                                    
        tp_dev.init();                       

         while(1)
         {       
                 sim900a_sms_send_test();
         }
}

回复

使用道具 举报

10

主题

43

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2018-10-17
在线时间
29 小时
 楼主| 发表于 2019-5-30 22:09:45 | 显示全部楼层
现在问题是显示屏上显示键盘 但触摸没反应 都是从例程里摘出来的 不懂为啥不行
回复

使用道具 举报

10

主题

43

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2018-10-17
在线时间
29 小时
 楼主| 发表于 2019-5-30 22:12:08 | 显示全部楼层
回复

使用道具 举报

6

主题

359

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1604
金钱
1604
注册时间
2017-12-18
在线时间
173 小时
发表于 2019-5-31 09:07:05 | 显示全部楼层
用例程好使吗?首先排除是不是硬件问题
回复

使用道具 举报

10

主题

43

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2018-10-17
在线时间
29 小时
 楼主| 发表于 2019-5-31 18:53:36 | 显示全部楼层
高山仰止 发表于 2019-5-31 09:07
用例程好使吗?首先排除是不是硬件问题

用例程可以的 我没有gsm模块用的8266那个 键盘触摸输入可以的
回复

使用道具 举报

10

主题

43

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2018-10-17
在线时间
29 小时
 楼主| 发表于 2019-5-31 18:57:04 | 显示全部楼层
或者大哥们有没有现成的那种类似触摸返回值的例程啊  有偿啊
回复

使用道具 举报

10

主题

43

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2018-10-17
在线时间
29 小时
 楼主| 发表于 2019-6-2 20:08:33 | 显示全部楼层
回复

使用道具 举报

10

主题

43

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2018-10-17
在线时间
29 小时
 楼主| 发表于 2019-6-2 20:52:14 | 显示全部楼层
救命啊
回复

使用道具 举报

10

主题

43

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2018-10-17
在线时间
29 小时
 楼主| 发表于 2019-6-3 10:01:54 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 05:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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