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

学号:140201235          姓名:陈宇

组别:第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);
}
}

实验结果展示:

四、总结及实验心得:

这节课的实验很有趣,插入手机卡,使用AT命令进行模块测试,拨打固定电话,跟着老师一直配置下,我们完成了第一步,能够使用AT命令拨打固定电话,贼有趣。之后升级版,在嵌入版上设计一个拨打电话的界面并且实现功能,我们组只是编写出了框架,并且实现了触摸,但是不能够拨打出去,还需要继续努力完善。这次实验使我更加直观的看到嵌入式实验的功能与其强大的功能,对自己选择嵌入式为学习对感到十分骄傲和自豪,我一定会努力学习相关知识,在嵌入式方面获得更多地提高。

转载于:https://www.cnblogs.com/gdcy/p/6623816.html

嵌入式软件设计第十次实验报告-140201235-陈宇相关推荐

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

    嵌入式软件设计第九次实验报告 学号:140201235                 姓名:陈宇 组别:第3组                    实验地点:D19 一.实验目的: 1.熟悉WWW ...

  2. 嵌入式软件设计第09实验报告

    学号:140201133                   姓名:李宇昕 组别:第3组           实验地点:D19 一.实验目的: 1.熟悉WWW技术中的SSI(Server Side I ...

  3. 太原理工大学linux与python编程r实验报告_太原理工大学算法设计与分析实验报告...

    <太原理工大学算法设计与分析实验报告>由会员分享,可在线阅读,更多相关<太原理工大学算法设计与分析实验报告(12页珍藏版)>请在人人文库网上搜索. 1.本科实验报告课程名称: ...

  4. 计算机模型机设计实验报告,基本模型机设计与实现 实验报告

    <基本模型机设计与实现 实验报告>由会员分享,可在线阅读,更多相关<基本模型机设计与实现 实验报告(3页珍藏版)>请在人人文库网上搜索. 1.____学院____专业_____ ...

  5. 网页设计与开发-实验报告-4

    网页设计与开发-实验报告-4 网页设计与开发-实验报告-4 学生实验2 学生实验3 学生实验4 学生实验5 网页设计与开发-实验报告-4 学生实验2 利用list-style-image:url(图像 ...

  6. C/C++ 算法设计与分析实验报告

    算法设计与分析实验报告 算法实验整体框架的构建 菜单代码块 选择函数代码块 主函数代码块 实验模块Ⅰ:算法分析基础--Fibonacci序列问题 实验解析 Fibonacci序列问题代码块 实验模块Ⅱ ...

  7. 网页设计与开发-实验报告-2

    网页设计与开发-实验报告-2 网页设计与开发-实验报告-2 总结 学生实验 网页设计与开发-实验报告-2 总结 DOCTYPE声明代码是 <!DOCTYPE html> 该声明必须放在ht ...

  8. 网页设计与开发-实验报告-6和8

    网页设计与开发-实验报告-6和8 网页设计与开发-实验报告-6和8 学生实验3 网页设计与开发-实验报告-6和8 学生实验3 设计图书类网站 <!DOCTYPE html> <htm ...

  9. 计算机算法设计与分析 动态规划 实验报告,动态规划法解最长公共子序列(计算机算法设计与分析实验报告).doc...

    动态规划法解最长公共子序列(计算机算法设计与分析实验报告) 实报 告 实验名称:任课教师::姓 名:完成日期:二.主要实验内容及要求: 要求按动态规划法原理求解问题: 要求交互输入两个序列数据: 要求 ...

最新文章

  1. 服务器响应的生成:HTTP响应报头——HttpServletResponse接口的应用
  2. 修复mysql数据库供应商_修复MYSQL数据库
  3. 这款AI语音模型让派大星承认自己是钢铁侠,造假小扎对口型,火到挤爆服务器|在线可玩...
  4. linux的rc的几种解释
  5. centos配置occi环境变量_拓展学习-golang的下载、安装和环境配置教程
  6. Struts1.x的架构一个简图
  7. poj2624 4th Point
  8. [转载]Visual Studio 2010敏捷利剑:详解Scrum
  9. 矩阵论及其应用_群表示论笔记(一)
  10. 拿网站服务器的作用,谈在线网站服务器监控(二)之使用的基本功能要求
  11. Hexo 入门指南(二) - 安装、初始化和配置
  12. [mock]10月4日
  13. MySQL-第三篇SQL语句基础(2)数据库约束
  14. 计算机应用技术和it有什么区别,IT是程序员吗?IT究竟是什么意思?
  15. 资金账户、证券账户及银行账户
  16. HTML+CSS---进阶学习03
  17. Eclipse中的 项目编码设置
  18. matlab与python区别_python和matlab的区别
  19. Visio使用技巧——改变环形箭头的箭头方向
  20. 阿里巴巴达摩院发布2019十大科技趋势

热门文章

  1. Java分布式跟踪系统Zipkin(五):Brave源码分析-Brave和SpringMVC整合
  2. 华为员工利用Bug越权访问机密卖给第三方,获利1.6万元,被判有期徒刑一年
  3. python江红第五章答案_【原创】半江瑟瑟半江红【第五章】
  4. 逻辑回归LR模型简介
  5. taro3 支付宝小程序 -- 授权手机号和用户信息
  6. 信息系统项目管理-立项管理
  7. Oracle索引梳理系列(八)- 索引扫描类型及分析(高效索引必备知识)
  8. Uniapp自定义相机界面
  9. 后悔当初学php,中佛网-法师开示:当初为了家庭而丢了事业,现后悔不已,该怎么办?...
  10. Monty Hall Problem