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

学号:140201135                  姓名:沈锦鑫

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

一、实验目的:

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

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

二、实验内容:

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

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

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

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

SIM900A跳线帽连接方式:

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

常用AT指令_准备工作:

常用AT命令_拨打电话

#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);

}

}

实验结果展示:

四、总结及实验心得:

了解了GSM模块SIM900A的使用方法,掌握了使用串口发送AT命令驱动SIM900A的方法。

时间: 2024-12-22 21:09:03

嵌入式软件设计第10次实验报告的相关文章

嵌入式软件设计第8次实验报告-140201236-沈樟伟

嵌入式软件设计第8次实验报告 学号:140201236                   姓名:沈樟伟 组别:第二组                实验地点:D19 一.实验目的: 1.熟悉WWW技术中的CGI(公共网关接口)技术. 2.学会使用CGI技术编写C语言代码驱动嵌入式开发板的LED灯和蜂鸣器. 二.实验内容: 1.编写代码完成Web服务器端蜂鸣器的驱动. 2.编写代码完成Web服务器端LED灯的驱动.三.实验过程描述及结果展示: 1.实验原理 CGI技术简介:公共网关接口CGI(C

嵌入式软件设计第11次实验报告-140201235-陈宇

嵌入式软件设计第11次实验报告 学号:140201235             姓名:陈宇 组别:第3组                实验地点:D19 一.实验目的: 1.了解短信AT指令的使用方法. 2.掌握使用短信AT指令驱动SIM900A发送和接收短信的方法. 二.实验内容: 1.使用AT命令进行模块测试,发送和接收短信. 2.编写程序利用触摸屏完成固定号码短信的发送和接收.(需要加上AT测试命令模块.手机SIM卡检测模块.手机信号质量检测模块等等.) 三.实验过程描述及结果展示: 短

嵌入式软件设计第12次实验报告-140201235-陈宇

嵌入式软件设计第12次实验报告 学号:140201235             姓名:陈宇 组别:第3组                实验地点:D19 一.实验目的: 1.掌握通过GSM短信远程与嵌入式设备进行交互的方法. 二.实验内容: 1.编写程序把嵌入式开发板采集到的温度信息通过GSM短信传送给指定号码.(每10秒发送1次) 2.编写程序,使手机可以通过短信指令的方式控制嵌入式开发板的蜂鸣器和LED灯.(比如手机编辑"BEEP_ON"和"BEEP_OFF"

嵌入式软件设计第11次实验报告-140201133-李宇昕

嵌入式软件设计第11次实验报告 学号:140201133            姓名:李宇昕 组别:第3组                实验地点:D19 一.实验目的: 1.了解短信AT指令的使用方法. 2.掌握使用短信AT指令驱动SIM900A发送和接收短信的方法. 二.实验内容: 1.使用AT命令进行模块测试,发送和接收短信. 2.编写程序利用触摸屏完成固定号码短信的发送和接收.(需要加上AT测试命令模块.手机SIM卡检测模块.手机信号质量检测模块等等.) 三.实验过程描述及结果展示: 短

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

学号:140201209      姓名:田博文 组别:第4组          实验地点:D19 一.实验目的: 1.熟悉WWW技术中的SSI(Server Side Include)技术. 2.学会使用SSI技术编写代码把当前开发板内RTC的时钟及日期数据送往PC机浏览器显示. 3.学会使用SSI技术把当前开发板的按键(KEY2.KEY1)次数信息送往PC机浏览器显示. 二.实验内容: 1.编写代码完成Web服务器端发送RTC实时时 钟信息的任务. 2.编写代码完成Web服务器端发送按键(K

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

学号:140201112                   姓名:孙佳文 组别:3                实验地点:D19 一.实验目的: 1.熟悉WWW技术中的CGI(公共网关接口)技术. 2.学会使用CGI技术编写C语言代码驱动嵌入式开发板的LED灯和蜂鸣器. 二.实验内容: 1.编写代码完成Web服务器端蜂鸣器的驱动. 2.编写代码完成Web服务器端LED灯的驱动. 三.实验过程描述: 1.实验原理 CGI技术简介:公共网关接口CGI(Common Gateway Interfa

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

学号:140201126             姓名:杨鹏飞 组别:第2组                实验地点:D19 一.实验目的: 1.了解短信AT指令的使用方法. 2.掌握使用短信AT指令驱动SIM900A发送和接收短信的方法. 二.实验内容: 1.使用AT命令进行模块测试,发送和接收短信. 2.编写程序利用触摸屏完成固定号码短信的发送和接收.(需要加上AT测试命令模块.手机SIM卡检测模块.手机信号质量检测模块等等.) 三.实验过程描述及结果展示: 短信常用AT指令 程序代码: #

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

学号:140201126             姓名:杨鹏飞 组别:第2组                实验地点:D19 一.实验目的: 1.掌握通过GSM短信远程与嵌入式设备进行交互的方法. 二.实验内容: 1.编写程序把嵌入式开发板采集到的温度信息通过GSM短信传送给指定号码.(每10秒发送1次) 2.编写程序,使手机可以通过短信指令的方式控制嵌入式开发板的蜂鸣器和LED灯.(比如手机编辑"BEEP_ON"和"BEEP_OFF"控制嵌入式开发板的蜂鸣器) 三

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

学号:140201112                    姓名:孙佳文 组别:3                                  实验地点:D19 一.实验目的: 1.熟悉网线的制作(T568B标准直连线) 2.学会使用HTML语言(超文本标记语言)进行网页的设计 3.学会使用makefsdata.exe制作嵌入式二进制网页文件. 二.实验内容: 1.制作T568B标准的直连线一根. 2.设计嵌入式Web服务器网页: 3.使用makefsdata.exe制作嵌入式二进制网