历史上的今天

今天是:2024年11月16日(星期六)

2019年11月16日 | ARM历程十一—(拨打电话)

发布者:美好的人生 来源: 51hei关键字:ARM  拨打电话  字符显示 手机看文章 扫描二维码
随时随地手机看文章

字符显示程序,拨打电话程序:


(程序有待完善)


void Displaytxt(int x0, int y0, int who, U16 color )// 显示数字(16*32)

{

     U16 txt = 0;

     U16 l = 0, h = 0, x = 0, y = 0, z = 0;

     

         

    

    for ( h = 0; h < 32; h++ )

     {

        x = (U16)gImage_number[who][h][z];

            

        y = (U16)gImage_number[who][h][z+1];

        

        txt = y<<8 | x;         

                 

      for ( l = 0; l < 16; l++ )//L=16的时候跳出

         {  


             if( (txt>>l)%2 == 1 )

            

    LCD_BUFFER[y0+h][x0+l] = color;    

                    

         }

     }

        


void Displaytxtbig(int x0, int y0, int who, U16 color )// 显示数字(32*64)

{

     U32 txt = 0;

     U16 l = 0, h = 0, a = 0, b = 0, c = 0, d = 0, z = 0;

     

     extern int X0;     

      

    if ( who == 0 )

         who = 10;

   

       who -= 1;       

        

    for ( h = 0; h < 64; h++ )

     {

        a = (U16)gImage_numberbig[who][h][z];

            

        b = (U16)gImage_numberbig[who][h][z+1];

        

        c = (U16)gImage_numberbig[who][h][z+2];

        

        d = (U16)gImage_numberbig[who][h][z+3];

        

        

        txt = d<<24 | c << 16 | b<<8 | a;         

                 

      for ( l = 0; l < 32; l++ )//L=16的时候跳出

         {  


             if( (txt>>l)%2 == 1 )

            

    LCD_BUFFER[y0+h][x0+l] = color;    

                    

         }

     }

    

      

    

          X0 += 32;

    

     if ( X0 >= 384 )

       

        X0 = 384 - 32; 

    

   

}


void Displaytxthz(int x0, int y0, int who, U16 color, unsigned char bmp[3][32][4])//显示汉字32*32

{

     U32 txt = 0;

     U16 l = 0, h = 0, a = 0, b = 0, c = 0, d = 0, z = 0;

     

    

         

        

    for ( h = 0; h < 32; h++ )

     {

        a = bmp[who][h][z];

            

        b = bmp[who][h][z+1];

        

        c = bmp[who][h][z+2];

        

        d = bmp[who][h][z+3];

        

        

        txt = d<<24 | c << 16 | b<<8 | a;         

                 

      for ( l = 0; l < 32; l++ )//L=16的时候跳出

         {  


             if( (txt>>l)%2 == 1 )

            

    LCD_BUFFER[y0+h][x0+l] = color;    

                    

         }

     }

           

}


void Displayhz( int x0, int y0, int gs, unsigned char bmp[3][32][4] )//连续显示"gs"个汉字

{

  

   int k;  

  

   for ( k = 0; k < gs; k++ )

     {

     

      Displaytxthz( x0, y0, k, 0x1f, bmp );

     

      x0 = x0 + 32;          //光标后移

     }

}



void Bank( int x0, int y0 ) //擦除显示

{

     

   int x, y, m, n;

  

   for ( y = 0, m = y + 54; y < m; y++ )

  

    for ( x = 0, (n = x + 32) && X0 >= 0; x < n; x++ )

   

        LCD_BUFFER[y0+y][x0+x] = 0xffff;

}      


void Del(void)//删除字符

{

extern int X0;


Bank(  X0, 12 );


X0 -= 32;


if( X0 < 0 )


  X0 = 0;


Bank(  X0, 12 );

}

void Delhz(void)//删除汉字//由于汉字和数字的完度不同,所以可以用两个函数分别实现

{

extern int X0; 


X0 -= 32;//光标后移


if( X0 < 0 )


  X0 = 0;


Bank(  X0, 12 );

}

void phone(void)//拨打电话功能函数

{

  extern volatile int xdata;

  extern volatile int ydata;

  //extern unsigned char Buffer[20];

  extern U16 fz; 

  extern int i;


  int e = 2400000; 

  int x = -1;




  Displayhz( 0, 34, 7, gImage_opengsm );//显示提示信息


  puts("ATr");                       //发送连机命令


  while ( e-- ){rGPBDAT &= 0xffff;}   //等待



  Paint_Bank( 0, 6, 480, 54 );

  Displayhz( 0, 34, 13, gImage_inputnumber ); //显示连机成功信息


  e = 9600000;

  while ( e-- ){rGPBDAT &= 0xffff;}



  Paint_Bank( 0, 6, 480, 54 );

  Displayhz( 382, 34, 3, gImage_input );//输入提示信息

  X0 = 0;


xdata = -1; ydata = -1; 



if( fz ==1 ) 


while( Flag == 2 )


  {





  if( xdata >= 68+12 && xdata <= 267-12 && ydata >= 545+12 && ydata <= 670-12 ) //判断按键位置,设置相应按键的功能

   {w = '1'; x = 1; delay();/*去抖*/ Displaytxtbig(X0, 12, 1, 0x6545 ); xdata = -1; ydata = -1;  }

   

  if( xdata >= 267+12 && xdata <= 456-12 && ydata >= 545+12 && ydata <= 670-12 )

{w = '2'; x = 1;delay(); Displaytxtbig(X0, 12, 2, 0x6545 ); xdata = -1;  ydata = -1;  }

  

  if( xdata >= 456+12 && xdata <= 637-12 && ydata >= 545+12 && ydata <= 670-12 )

    {w = '3'; x = 1;delay(); Displaytxtbig(X0, 12, 3, 0x6545 ); xdata = -1; ydata = -1;  }

   

  if( xdata >= 683+12 && xdata <= 935-12 && ydata >= 545+12 && ydata <= 670-12 )

    {x = 1; delay(); Del(); i=i-2; if(i<=0) i=0; xdata = -1; ydata = -1; }

   



  if( xdata >= 68+12 && xdata <= 267-12 && ydata >= 227+12 && ydata <= 401-12 )

    {w = '7'; x = 1; delay(); Displaytxtbig(X0, 12, 7, 0x6545 ); xdata = -1; ydata = -1;  }

   

  if( xdata >= 267+12 && xdata <= 456-12 && ydata >= 227+12 && ydata <= 401-12 )

    {w = '8'; x = 1; delay(); Displaytxtbig(X0, 12, 8, 0x6545 ); xdata = -1; ydata = -1;  }

   

  if( xdata >= 456+12 && xdata <= 637-12 && ydata >= 227+12 && ydata <= 401-12 )

    {w = '9'; x = 1; delay(); Displaytxtbig(X0, 12, 9, 0x6545 ); xdata = -1; ydata = -1;  }

   

  if( xdata >= 683+12 && xdata <= 935-12 && ydata >= 227+12 && ydata <= 401-12 )

    {w = ''; x = 0;number[i] = ''; delay(); Flag = 1000; X0 = 0; fz = 0; xdata = -1; ydata = -1;

    puts("ATHr");/*发送挂机命令*/delay();delay();delay();delay();delay();delay(); puts("AT^SMSOr");/*发送断开连接命令*/i = 0; }

   

   


  if( xdata >= 68+12 && xdata <= 267-12 && ydata >= 401+12 && ydata <= 545-12 )

   {w = '4';x = 1;delay();Displaytxtbig(X0, 12, 4, 0x6545 );xdata = -1; ydata = -1;  }

   

  if( xdata >= 267+12 && xdata <= 456-12 && ydata >= 401+12 && ydata <= 545-12 )

    {w = '5';x = 1;delay();Displaytxtbig(X0, 12, 5, 0x6545 );xdata = -1; ydata = -1;  }

   

  if( xdata >= 456+12 && xdata <= 637-12 && ydata >= 401+12 && ydata <= 545-12 )

    {w = '6';x = 1;delay();Displaytxtbig(X0, 12, 6, 0x6545 );xdata = -1; ydata = -1;  }

  

  if( xdata >= 683+12 && xdata <= 935-12 && ydata >= 401+12 && ydata <= 545-12 )


    { w = '';x = 0;number[i] = '';Paint_Bank( 0, 6, 480, 54 ); delay(); X0 = 480;puts("ATHr");i = 0;     

    

    Delhz(); Delhz(); Delhz(); Displayhz( 382, 34, 3, gImage_over); X0 = 0;xdata = -1; ydata = -1;  }

   

   

       

    

  if( xdata >= 68+12 && xdata <= 267-12 && ydata >= 158+12 && ydata <= 272-12 )

   {w = '*';x = 1;delay();Displaytxtbig(X0, 12, 11, 0x6545 ); xdata = -1; ydata = -1;  }


  if( xdata >= 267+12 && xdata <= 456-12 && ydata >= 158+12 && ydata <= 272-12 )

    {w = '0';x = 1;delay();Displaytxtbig(X0, 12, 0, 0x6545 );xdata = -1; ydata = -1;  }

   

  if( xdata >= 456+12 && xdata <= 637-12 && ydata >= 158+12 && ydata <= 272-12 )

[1] [2]
关键字:ARM  拨打电话  字符显示 引用地址:ARM历程十一—(拨打电话)

上一篇:ARM字节格式
下一篇:ARM历程十——毕业设计(钟表)

推荐阅读

2018年11月14日至18日,第二十届中国国际高新技术成果交易会在深圳会展中心举办,赛为智能携SIWILL四足除草机器人、赛鹰SY8000T系留旋翼、赛鹰SY450H大载荷无人、护理机器人等多款人工智能产品惊艳亮相。 其中,SIWILL是赛为智能今年刚刚推出的四足激光除草机器人,这次在高交会上是首次亮相。 据介绍,SIWILL采用驱动,具有噪音小、无等优点。作业过...
现在市场上,功率分析仪种类繁多,由于功率分析仪侧重方面的不同,起功能上也有着相对的出入,性能方面也是相差甚远,关于功率分析仪的选型,是一个值得讨论的问题,下面则对功率分析仪的选型进行一个分析。关于功率分析仪,我们都知道它一般情况下是以数字采样技术为核心,以高性能的微处理器、CPLD等为基本器件。在中国大陆销售的进口功率分析仪厂家主要...
在近些年来新能源汽车产业的发展热潮中,IGBT作为汽车系统核心也受到了产业界的广泛关注。株洲中车公司作为国内少数在集成电路行业具备完整系统生态链的公司,早早就开始结合其在IGBT上的技术优势进军汽车领域。据悉株洲中车的芯片生产线每年可新增24万片中低压IGBT产能,并预计可满足240万台新能源汽车的需求。IGBT(绝缘栅双极型晶体管)是一种新型电力电...
博主@数码闲聊站爆料,OPPO Find系列新品将于明年年初登场,这将是业界首批搭载高通骁龙898处理器的旗舰手机。今年上半年,OPPO发布了Find X3 Pro高端旗舰手机,它就采用了高通最新的骁龙888处理器,成为首批搭载骁龙888的手机厂商之一。在当时,OPPO Find X3 Pro凭借着骁龙888的强悍性能,“不可能的曲面”外观设计,双IMX766的主摄镜头等卖点引发关...

史海拾趣

问答坊 | AI 解惑

FIFO 和 导线

请教一个菜鸟问题。 当两个组件间进行信息传递的时候。 什么时候用FIFO, 什么时候用导线? 谢谢!…

查看全部问答∨

【藏书阁】高速PCB设计指南

随着系统设计复杂性和集成度的大规模提高,电子系统设计师们正在从事 100MHZ 以上的电路设计,总线的工作频率也已经达到或者超过 50MHZ,有的甚至超过 100MHZ。目前约 50%  的设计的时钟频率超过 50MHz,将近 20%  的设计主频 ...…

查看全部问答∨

数据结构算法与应用——错过后,你也许找不到更好的了

这是一本很不错的电子书,希望对您有所帮助 顺便赚点钱,嘿嘿......…

查看全部问答∨

求助, imageviewer与media player冲突

wince5.0 用media player听音乐时 打开imageviewer看图,音乐变成绝对的噪音。 有朋友遇过这个问题吗?是怎么解决的?…

查看全部问答∨

请教:WINCE里如何预设WIFI IP和WIFI的相关登录设置?

比如要预设IP、网关、DNS, 还有WIFI的加密方式、密码。 我想应该是修改注册表,但是我不知道在哪改,请指教。 全部的总数奉上!…

查看全部问答∨

有谁能提供USB鼠标键盘驱动,模拟鼠标键盘自动按键,以前用了wion.vxd,但是USB不可以

有谁能提供USB鼠标键盘驱动,模拟鼠标键盘自动按键,以前用了wion.vxd驱动,PS/2接口可以模拟按键盘, 但是USB接口不可以模拟按键 如果人能提供这样的驱动程序,本人不胜感激,大大给分,给分... …

查看全部问答∨

请教,EVC连不上2410开发板

Activesync可以成功连接,PM configuration中的test却过不了, Transport和Startup都选MS Activesync,test时一直 Establishing platform manager connection to device. 网上有些讨论,但是没看到怎么解决,哪位遇到过吗? 补充: 开发板的说明里说 ...…

查看全部问答∨

求一个可以 load nk.bin 的 loadcepc.exe 的可执行文件, 在线等!!!

这个文件编译太费事了, 找了个 msvc152 的编译器, 一堆编译错误。 有那位兄弟有  loadcepc.exe 的可执行文件, 最普通的就行了,我想在 cepc 上试一个东西。 mail: bamu1984 # 163.com …

查看全部问答∨

电磁场屏蔽的机理 续

与前面已讲述的电场屏蔽及磁场屏蔽的机理不同,电磁屏 蔽对于电磁波的衰减有三种不同的机理: x 当电磁波在到达屏蔽体表面时,由于空气与金属的交界面上 阻抗的不连续,对入射波产生的反射。这种反射不要求屏蔽 材料必须有一定厚度,只要求交界 ...…

查看全部问答∨

Linux与FreeBSD系统的十个本质区别

http://www.bsechr.com.cn/news.asp?anclassid=58&mnclassid=165Linux的标志是一只十分可爱的小企鹅,而FreeBSD的标志是一个拿着叉子的小恶魔。你是否经常会听到人们把 Linux及 BSD 系统混为一谈?是的,我有时会经常听到一些新手,甚至于媒体都这 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved