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

学号:140201112          姓名:孙佳文

组别:第3组                  实验地点: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);
}
}

实验结果展示:

四、总结及实验心得:

  这节课做的东西比之前做的都有意思,也都有用得多。是在插入手机卡后,通过代码实现在电脑上输入手机号后,可以把号码拨出去。在老师带着我们实现了这个功能后,便又布置了新的任务,让拨打页面在屏幕上显示出来,并且通过点击屏幕来实现打电话功能。怎么说呢,虽然一起讨论了很久、研究了很久,但最后也没有实现拨打功能,虽然如此,我们倒是把拨号布局做得挺不错的。继续努力吧

时间: 2024-10-26 14:37:42

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

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

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

算法分析与设计——分治法实验报告

   算法导论  课程设计 成 绩 题    目:  算法导论课程设计实验报告 学院班级:        1613013         学    号:      16130130216       姓    名:        库 妍           主讲教师:        张立勇          日    期:       2019.6.3         录 分治法 一.Implement exercise 2.3-7................................

2019JAVA第十次实验报告

Java实验报告 班级 计科二班 学号 20188442 姓名 吴怡君 完成时间 2019.11.15 评分等级 实验代码 package Domon9; import java.awt.Font; import java.awt.event.*; import javax.swing.*; class Logininterface { private JFrame frame = new JFrame("声明一个窗体对象"); private JButton submit = new

算法分析与设计——贪心法实验报告

   算法导论  课程设计 成 绩 题    目:    贪心法 学院班级:        1613013         学    号:      16130130216       姓    名:        库 妍           主讲教师:        张立勇          日    期:       2019.5.9         一.Knapsack Problem 1.实验题目 下面有5个具有值和权重列表的项目,背包最多可以包含100磅.解决了分数背包和0/1背包问题

面向对象实验报告二

面向对象分析与设计第二次实验报告   一.类的不同类型的方法,属性的可见性 可见/访问性 在同一类中 同一包中 不同包中 同一包子类中 不同包子类中 public yes yes yes yes yes protected yes yes no yes yes package yes yes no yes no private yes no no no no public  class Student { public String home; protected int age; privat

嵌入式软件设计第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卡检测模块.手机信号质量检测模块等等.) 三.实验过程描述及结果展示: 短