SIM900+STM32+MP3+3.2寸LCD原理图SCH

2019-12-09 19:15发布

本帖最后由 快乐的小娃 于 2012-5-2 09:54 编辑
  1. 下面是我打电话的程序

  2. #include "gprs.h"
  3. #include "LCD_Drive.h"
  4. #include "usart.h"
  5. #include "Touch.h"


  6. extern void Delay_Ms(uint16_t time);  
  7. extern void Delay_Us(uint16_t time);
  8. extern void Refreshes_Screen(void);
  9. void gprs_delay(void)
  10. {
  11.         unsigned int x,y;
  12.         for(x = 0;x<100;x++)
  13.         for(y = 500; y>0;y--);

  14. }
  15. void GPRS_init(void)
  16. {       
  17.         unsigned char buf[256];
  18.         printf("AT ");
  19.         GSM_getstr(buf);        
  20.         gprs_delay();
  21.         printf("ATE0 ");       
  22.     GSM_getstr(buf);        
  23.         gprs_delay();
  24.         printf("AT+CGMI ");         //厂家信
  25.         GSM_getstr(buf);        
  26.         gprs_delay();       
  27.         printf("AT+CGMM ");         //获得模块标识
  28.         GSM_getstr(buf);        
  29.         gprs_delay();
  30.         printf("AT+CGMR ");        //获得改订的软件版
  31.         GSM_getstr(buf);
  32.         gprs_delay();
  33.         printf("AT+CGSN ");//获得GSM模块的IMEI(国际移动设备标识)序列号       
  34.         GSM_getstr(buf);
  35.         gprs_delay();
  36.         printf("AT+CIMI ");//获得IMSI
  37.         GSM_getstr(buf);           
  38.         Disp_LCDString((240-sizeof("GPRS_INIT->OK")*8)/2,0,"GPRS_INIT->OK");
  39.         if(buf[0] == 'O')       
  40.         gprs_delay();
  41. }
  42. unsigned char GPRS_GETNUM(void)
  43. {       
  44.         unsigned char buf[256],num = 0;       
  45.         printf("拨号开始!!!");//获得IMSI
  46.                 while(1)
  47.                 {
  48.                         if(Pen_Point.Key_Sta==Key_Down)//触摸屏被按下
  49.                         {
  50.                                 Pen_Int_Set(0);                                //关闭中断
  51.                                 do
  52.                                 {
  53.                                 Convert_Pos();          
  54.                                 Pen_Point.Key_Sta=Key_Up;
  55.                                         if((Pen_Point.X0>=11) && (Pen_Point.X0 <= 73) && (Pen_Point.Y0>=53)&&(Pen_Point.Y0<=91))
  56.                                         {
  57.                                                   buf[num] = '1';
  58.                                                   buf[num + 1]='';
  59.                                                   Disp_LCDString((240-(num*8))/2,25,"                    ");
  60.                                                   Disp_LCDString((240-(num*8))/2,25,buf);
  61.                                                   num++;
  62.                                         }
  63.                                         else if((Pen_Point.X0>=89) && (Pen_Point.X0 <= 154) && (Pen_Point.Y0>=53)&&(Pen_Point.Y0<=91))
  64.                                         {
  65.                                                   buf[num] = '2';
  66.                                                   buf[num + 1]='';                                   
  67.                                                   Disp_LCDString((240-(num*8))/2,25,"                    ");
  68.                                                   Disp_LCDString((240-(num*8))/2,25,buf);
  69.                                                   num++;
  70.                                         }
  71.                                         else if((Pen_Point.X0>=170) && (Pen_Point.X0 <= 231) && (Pen_Point.Y0>=53)&&(Pen_Point.Y0<=91))
  72.                                         {
  73.                                                   buf[num] = '3';
  74.                                                   buf[num + 1]='';                                   
  75.                                                   Disp_LCDString((240-(num*8))/2,25,"                    ");
  76.                                                   Disp_LCDString((240-(num*8))/2,25,buf);
  77.                                                   num++;
  78.                                         }
  79.                                         else if((Pen_Point.X0>=11) && (Pen_Point.X0 <= 73) && (Pen_Point.Y0>=102)&&(Pen_Point.Y0<=140))
  80.                                         {
  81.                                                   buf[num] = '4';
  82.                                                   buf[num + 1]='';                                
  83.                                                   Disp_LCDString((240-(num*8))/2,25,"                    ");
  84.                                                   Disp_LCDString((240-(num*8))/2,25,buf);
  85.                                                   num++;
  86.                                         }
  87.                                         else if((Pen_Point.X0>=89) && (Pen_Point.X0 <= 154) && (Pen_Point.Y0>=102)&&(Pen_Point.Y0<=140))
  88.                                         {
  89.                                                   buf[num] = '5';
  90.                                                   buf[num + 1]='';                                
  91.                                                   Disp_LCDString((240-(num*8))/2,25,"                    ");
  92.                                                   Disp_LCDString((240-(num*8))/2,25,buf);
  93.                                                   num++;
  94.                                         }
  95.                                         else if((Pen_Point.X0>=170) && (Pen_Point.X0 <= 231) && (Pen_Point.Y0>=102)&&(Pen_Point.Y0<=140))
  96.                                         {
  97.                                                   buf[num] = '6';
  98.                                                   buf[num + 1]='';                                 
  99.                                                   Disp_LCDString((240-(num*8))/2,25,"                    ");
  100.                                                   Disp_LCDString((240-(num*8))/2,25,buf);
  101.                                                   num++;
  102.                                         }
  103.                                         else if((Pen_Point.X0>=11) && (Pen_Point.X0 <= 73) && (Pen_Point.Y0>=151)&&(Pen_Point.Y0<=188))
  104.                                         {
  105.                                                   buf[num] = '7';
  106.                                                   buf[num + 1]='';                                
  107.                                                   Disp_LCDString((240-(num*8))/2,25,"                    ");
  108.                                                   Disp_LCDString((240-(num*8))/2,25,buf);
  109.                                                   num++;
  110.                                         }
  111.                                         else if((Pen_Point.X0>=89) && (Pen_Point.X0 <= 154) && (Pen_Point.Y0>=102)&&(Pen_Point.Y0<=188))
  112.                                         {
  113.                                                   buf[num] = '8';
  114.                                                   buf[num + 1]='';                            
  115.                                                   Disp_LCDString((240-(num*8))/2,25,"                    ");
  116.                                                   Disp_LCDString((240-(num*8))/2,25,buf);
  117.                                                   num++;
  118.                                         }
  119.                                         else if((Pen_Point.X0>=170) && (Pen_Point.X0 <= 231) && (Pen_Point.Y0>=102)&&(Pen_Point.Y0<=188))
  120.                                         {
  121.                                                   buf[num] = '9';
  122.                                                   buf[num + 1]='';                           
  123.                                                   Disp_LCDString((240-(num*8))/2,25,"                    ");
  124.                                                   Disp_LCDString((240-(num*8))/2,25,buf);
  125.                                                   num++;
  126.                                         }
  127.                                         else if((Pen_Point.X0>=11) && (Pen_Point.X0 <= 73) && (Pen_Point.Y0>=201)&&(Pen_Point.Y0<=239))
  128.                                         {
  129.                                                   buf[num] = '*';
  130.                                                   buf[num + 1]='';                           
  131.                                                   Disp_LCDString((240-(num*8))/2,25,"                    ");
  132.                                                   Disp_LCDString((240-(num*8))/2,25,buf);
  133.                                                   num++;
  134.                                         }
  135.                                         else if((Pen_Point.X0>=89) && (Pen_Point.X0 <= 154) && (Pen_Point.Y0>=201)&&(Pen_Point.Y0<=239))
  136.                                         {
  137.                                                   buf[num] = '0';
  138.                                                   buf[num + 1]='';                       
  139.                                                   Disp_LCDString((240-(num*8))/2,25,"                    ");
  140.                                                   Disp_LCDString((240-(num*8))/2,25,buf);
  141.                                                   num++;
  142.                                         }
  143.                                         else if((Pen_Point.X0>=170) && (Pen_Point.X0 <= 231) && (Pen_Point.Y0>=201)&&(Pen_Point.Y0<=239))
  144.                                         {
  145.                                                   buf[num] = '#';
  146.                                                   buf[num + 1]='';                  
  147.                                                   Disp_LCDString((240-(num*8))/2,25,"                    ");
  148.                                                   Disp_LCDString((240-(num*8))/2,25,buf);
  149.                                                   num++;
  150.                                         }
  151.                                         else if((Pen_Point.X0>=11) && (Pen_Point.X0 <= 73) && (Pen_Point.Y0>=249)&&(Pen_Point.Y0<=287))
  152.                                         {
  153.                                                   printf("ATH ");
  154.                                                   num = 0;                                         
  155.                                                   Disp_LCDString((240-(num*8))/2,25,"                    ");
  156.                                                   Disp_LCDString((240-(6*8))/2,25,"nocall");
  157.                                         }
  158.                                         else if((Pen_Point.X0>=89) && (Pen_Point.X0 <= 154) && (Pen_Point.Y0>=249)&&(Pen_Point.Y0<=287))
  159.                                         {       
  160.                                                   printf("ATD%s; ",buf);          
  161.                                                   Disp_LCDString((240-(num*8))/2,25,"                    ");
  162.                                                   Disp_LCDString((240-(4*8))/2,25,"call");
  163.                                                   buf[0]='';
  164.                                                   num = 0;
  165.                                         }
  166.                                         else if((Pen_Point.X0>=170) && (Pen_Point.X0 <= 231) && (Pen_Point.Y0>=249)&&(Pen_Point.Y0<=287))
  167.                                         {
  168.                                                   num--;
  169.                                                   buf[num]='';           
  170.                                                   Disp_LCDString((240-(num*8))/2,25,"                    ");
  171.                                                   Disp_LCDString((240-(num*8))/2,25,buf);
  172.                                         }
  173.                                         Delay_Ms(400);            
  174.                                         GPIOC->ODR|=1<<5;    //PC5 上拉          
  175.                         }while(PEN==0);//如果PEN一直有效,则一直执行
  176.                         Pen_Int_Set(1);//开启中断
  177.                 }
  178.                 else Delay_Ms(1);
  179. //                if(Key==USER)//USER按下,则执行校准程序
  180. //                {
  181. //                        Clear_LCD(BlackColor);//清屏
  182. //                    Touch_Adjust();  //屏幕校准
  183. //                        Save_Adjdata();         
  184. //                        Refreshes_Screen();
  185. //                }
  186.         }
  187. }
复制代码做了一套基于stm32的类似手机的小耍耍,大家如果感兴趣可以看看,本来想弄个ucos上跑个系统但是一直没有空去弄如果感兴趣可以玩玩;
给大家上点图
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。