博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
嵌入式软件设计第10次实验报告
阅读量:6413 次
发布时间:2019-06-23

本文共 4904 字,大约阅读时间需要 16 分钟。

嵌入式软件设计第10次实验报告

 

学号:140201220         姓名:杨飞

组别:第2组                实验地点:D19

 

一、实验目的:

1、了解GSM模块SIM900A的使用方法。

2、掌握使用串口发送AT命令驱动SIM900A的

   方法。

二、实验内容:

1.使用AT命令进行模块测试,拨打固定电话。

2.编写程序利用触摸屏完成任意电话的呼叫。

三、实验过程描述及结果展示:

实验器材:STM32F407开发板、LCD显示屏

1、实验原理

SIM900A跳线帽连接方式:

 

长按PWR_KEY键后网络状态指示灯对应的状态:

 

2、常用AT指令_准备工作:

 

3、常用AT命令_拨打电话

 

4、程序代码

#include "sys.h"

#include "delay.h"

#include "usart.h"

#include "led.h"

#include "lcd.h"

#include "key.h"

#include "touch.h"

#include "text.h"

#include "w25qxx.h"

#include "malloc.h"

#include "ff.h"

#include "exfuns.h"

 

const u16 POINT_COLOR_TBL[OTT_MAX_TOUCH]={RED,GREEN,BLUE,BROWN,GRED}; 

 

unsigned char Dialling[12];

char number[20] = "";

u8 iscalling=0;

void addnumbutton(u16 x,u16 y,u8 *p){

   LCD_Fill(x,y,x+60,y+60,BROWN);

   POINT_COLOR=BLACK;

   BACK_COLOR = BROWN;

   LCD_ShowString(x+24,y+18,24,24,24,p);

}

 

void sendtext(char *p){

   while(*p!='\0'){

      USART_SendData(USART3,*p);

      delay_ms(50);

      p++;

   }

   USART_SendData(USART3,0x0D);

   delay_ms(50);

   USART_SendData(USART3,0x0A);

}

 

 

void call(){

   char text[40]="ATD";

   strcat(text,number);

   strcat(text,";");

   printf("%s",text);

   sendtext(text);

   LCD_Fill(120,40,460,66,BROWN);

   LCD_Fill(122,42,458,64,BLACK);

   //number="CALLING";

   LCD_ShowString(122,42,336,24,24,"CALLING");

   LCD_Fill(60,600,420,680,BROWN);

   POINT_COLOR=BLACK;

   BACK_COLOR = BROWN;

   LCD_ShowString(204,626,96,144,24,"HANGUP");

   iscalling=1;

}

 

void hangup(){

   char text[40]="ATH";

   sendtext(text);

   LCD_Fill(120,40,460,66,BROWN);

   LCD_Fill(122,42,458,64,BLACK);

   number[0]='\0';

   LCD_Fill(60,600,420,680,BROWN);

   POINT_COLOR=BLACK;

   BACK_COLOR = BROWN;

   LCD_ShowString(216,626,96,24,24,"CALL");

   iscalling=0;

}

 

int main(void)

{

   delay_init(168);  //初始化延时函数

   uart_init(115200);    //初始化串口波特率为115200

   uart3_init(115200);

   sendtext("AT+CPIN?");

   LCD_Init();           //LCD初始化

   tp_dev.init();        //触摸屏初始化

  

   LCD_Clear(BLACK);

   POINT_COLOR=YELLOW;//设置字体为黄色

   BACK_COLOR = BLACK;

  

   LCD_ShowString(30,40,210,24,24,"NUMBER:");

   LCD_Fill(120,40,460,66,BROWN);

   LCD_Fill(122,42,458,64,BLACK);

  

   addnumbutton(60,120,"1");

   addnumbutton(210,120,"2");

   addnumbutton(360,120,"3");

  

   addnumbutton(60,240,"4");

   addnumbutton(210,240,"5");

   addnumbutton(360,240,"6");

  

   addnumbutton(60,360,"7");

   addnumbutton(210,360,"8");

   addnumbutton(360,360,"9");

  

   addnumbutton(60,480,"*");

   addnumbutton(210,480,"0");

   addnumbutton(360,480,"#");

  

   LCD_Fill(60,600,420,680,BROWN);

   POINT_COLOR=BLACK;

   BACK_COLOR = BROWN;

   LCD_ShowString(216,626,96,24,24,"CALL");

 

   while(1){

      tp_dev.scan(0);

      if(tp_dev.x[0]>60&&tp_dev.y[0]>120&&tp_dev.x[0]<120&&tp_dev.y[0]<180){

        strcat(number,"1");

        LCD_ShowString(122,42,336,24,24,number);

        while(tp_dev.x[0]!=65535){tp_dev.scan(0);}

      }

      if(tp_dev.x[0]>210&&tp_dev.y[0]>120&&tp_dev.x[0]<270&&tp_dev.y[0]<180){

        strcat(number,"2");

        LCD_ShowString(122,42,336,24,24,number);

        while(tp_dev.x[0]!=65535){tp_dev.scan(0);}

      }

      if(tp_dev.x[0]>360&&tp_dev.y[0]>120&&tp_dev.x[0]<420&&tp_dev.y[0]<180){

        strcat(number,"3");

        LCD_ShowString(122,42,336,24,24,number);

        while(tp_dev.x[0]!=65535){tp_dev.scan(0);}

      }

      if(tp_dev.x[0]>60&&tp_dev.y[0]>240&&tp_dev.x[0]<120&&tp_dev.y[0]<300){

        strcat(number,"4");

        LCD_ShowString(122,42,336,24,24,number);

        while(tp_dev.x[0]!=65535){tp_dev.scan(0);}

      }

      if(tp_dev.x[0]>210&&tp_dev.y[0]>240&&tp_dev.x[0]<270&&tp_dev.y[0]<300){

        strcat(number,"5");

        LCD_ShowString(122,42,336,24,24,number);

        while(tp_dev.x[0]!=65535){tp_dev.scan(0);}

      }

      if(tp_dev.x[0]>360&&tp_dev.y[0]>240&&tp_dev.x[0]<420&&tp_dev.y[0]<300){

        strcat(number,"6");

        LCD_ShowString(122,42,336,24,24,number);

        while(tp_dev.x[0]!=65535){tp_dev.scan(0);}

      }

      if(tp_dev.x[0]>60&&tp_dev.y[0]>360&&tp_dev.x[0]<120&&tp_dev.y[0]<420){

        strcat(number,"7");

        LCD_ShowString(122,42,336,24,24,number);

        while(tp_dev.x[0]!=65535){tp_dev.scan(0);}

      }

      if(tp_dev.x[0]>210&&tp_dev.y[0]>360&&tp_dev.x[0]<270&&tp_dev.y[0]<420){

        strcat(number,"8");

        LCD_ShowString(122,42,336,24,24,number);

        while(tp_dev.x[0]!=65535){tp_dev.scan(0);}

      }

      if(tp_dev.x[0]>360&&tp_dev.y[0]>360&&tp_dev.x[0]<420&&tp_dev.y[0]<420){

        strcat(number,"9");

        LCD_ShowString(122,42,336,24,24,number);

         while(tp_dev.x[0]!=65535){tp_dev.scan(0);}

      }

      if(tp_dev.x[0]>60&&tp_dev.y[0]>480&&tp_dev.x[0]<120&&tp_dev.y[0]<540){

        strcat(number,"*");

        LCD_ShowString(122,42,336,24,24,number);

        while(tp_dev.x[0]!=65535){tp_dev.scan(0);}

      }

      if(tp_dev.x[0]>210&&tp_dev.y[0]>480&&tp_dev.x[0]<270&&tp_dev.y[0]<540){

        strcat(number,"0");

        LCD_ShowString(122,42,336,24,24,number);

        while(tp_dev.x[0]!=65535){tp_dev.scan(0);}

      }

      if(tp_dev.x[0]>360&&tp_dev.y[0]>480&&tp_dev.x[0]<420&&tp_dev.y[0]<540){

        strcat(number,"#");

        LCD_ShowString(122,42,336,24,24,number);

        while(tp_dev.x[0]!=65535){tp_dev.scan(0);}

      }

     

     

      if(tp_dev.x[0]>60&&tp_dev.y[0]>600&&tp_dev.x[0]<420&&tp_dev.y[0]<680){

        if(iscalling){

           hangup();

        }else{

           call();

        }

        while(tp_dev.x[0]!=65535){tp_dev.scan(0);}

      }

     

      delay_ms(5);

   }

}

实验结果展示:

 

 

 

四、总结及实验心得:

    本次实验第一个实验是简单地插入SIM卡进行拨打电话,第二个实验通过在触摸屏显示出拨号界面,可以进行触摸拨号。这个实验较为困难,一开始只会简单地在触摸屏上画出相应的按键,却无法进行拨号操作,还会出现一按数字键就出现一长串数字的情况,这个时反应频率的问题。但最终通过同学的帮助老师的指点,得以最终实现。

转载于:https://www.cnblogs.com/yf-140201220/p/6624048.html

你可能感兴趣的文章
HTML --块
查看>>
在DLL中获取主进程窗口句柄
查看>>
基于消息队列的双向通信
查看>>
一个不错的loading效果
查看>>
高中学渣逆袭入“大学”:如今月收入达五位数
查看>>
Debian允许root用户登录
查看>>
C++ - this指针
查看>>
Google Test and Google Mock Introduction
查看>>
linux的文件系统
查看>>
上云利器,K8S应用编排设计器之快到极致
查看>>
袋鼠云服务案例系列 | 从DB2到MySQL,某传统金融平台的互联网转型之路
查看>>
RealServer配置脚本
查看>>
九月份技术指标 华为交换机的简单配置
查看>>
马哥linux作业--第八周
查看>>
dubbo01
查看>>
python 写json格式字符串到文件
查看>>
QXORM 使用记录 ( 二 )
查看>>
分布式文件系统MogileFS
查看>>
电力线通信载波模块
查看>>
linux vim详解
查看>>