嵌入式软件设计第10次实验报告
嵌入式软件设计第10次实验报告
学号:142021234 姓名:王凯
组别:第4组 实验地点: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;
int i,j;
//
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);//·¢ËÍÎı¾
POINT_COLOR=YELLOW;
for(i=180;i<=300;i++)//bohao
for(j=690;j<=750;j++)
LCD_DrawPoint(i,j);
POINT_COLOR=BLUE;
Show_Str(215,710,300,150,"¹Ò¶Ï",24,1);
iscalling=1;
}
void hangup(){
char text[40]="ATH";
sendtext(text);
number[0]='\0';
POINT_COLOR=YELLOW;
for(i=180;i<=300;i++)//bohao
for(j=690;j<=750;j++)
LCD_DrawPoint(i,j);
POINT_COLOR=BLUE;
Show_Str(215,710,300,150,"²¦ºÅ",24,1);
iscalling=0;
POINT_COLOR=YELLOW;
for(i=200;i<=400;i++)
for(j=90;j<=140;j++)
LCD_DrawPoint(i,j);
}
int main(void)
{
int i,j;
delay_init(168); //³õʼ»¯ÑÓʱº¯Êý
uart_init(115200); //³õʼ»¯´®¿Ú²¨ÌØÂÊΪ115200
uart3_init(115200);
LCD_Init(); //LCD³õʼ»¯
tp_dev.init(); //´¥ÃþÆÁ³õʼ»¯
LCD_Clear(BLACK);
POINT_COLOR=YELLOW;//ÉèÖÃ×ÖÌåΪ»ÆÉ«
BACK_COLOR = BLACK;
POINT_COLOR=WHITE;
Show_Str(100,100,300,150,"ºÅÂëÇø£º",24,1);
//
POINT_COLOR=YELLOW;
for(i=200;i<=400;i++)
for(j=90;j<=140;j++)
LCD_DrawPoint(i,j);
//
for(i=210;i<=270;i++)//5
for(j=370;j<=430;j++)
LCD_DrawPoint(i,j);
for(i=210;i<=270;i++)//2
for(j=270;j<=330;j++)
LCD_DrawPoint(i,j);
for(i=210;i<=270;i++)//8
for(j=470;j<=530;j++)
LCD_DrawPoint(i,j);
for(i=110;i<=170;i++)//1
for(j=270;j<=330;j++)
LCD_DrawPoint(i,j);
for(i=310;i<=370;i++)//3
for(j=270;j<=330;j++)
LCD_DrawPoint(i,j);
for(i=110;i<=170;i++)//4
for(j=370;j<=430;j++)
LCD_DrawPoint(i,j);
for(i=310;i<=370;i++)//6
for(j=370;j<=430;j++)
LCD_DrawPoint(i,j);
for(i=110;i<=170;i++)//7
for(j=470;j<=530;j++)
LCD_DrawPoint(i,j);
for(i=310;i<=370;i++)//9
for(j=470;j<=530;j++)
LCD_DrawPoint(i,j);
for(i=110;i<=170;i++)//*
for(j=570;j<=630;j++)
LCD_DrawPoint(i,j);
for(i=210;i<=270;i++)//0
for(j=570;j<=630;j++)
LCD_DrawPoint(i,j);
for(i=310;i<=370;i++)//#
for(j=570;j<=630;j++)
LCD_DrawPoint(i,j);
for(i=180;i<=300;i++)//bohao
for(j=690;j<=750;j++)
LCD_DrawPoint(i,j);
POINT_COLOR=BLUE;
Show_Str(215,710,300,150,"²¦ºÅ",24,1);
BACK_COLOR = BLACK;
LCD_ShowString(135,290,200,100,24,"1");//1
LCD_ShowString(235,290,200,100,24,"2");//2
LCD_ShowString(335,290,200,100,24,"3");//3
LCD_ShowString(135,390,200,100,24,"4");//4
LCD_ShowString(235,390,200,100,24,"5");//5
LCD_ShowString(335,390,200,100,24,"6");//6
LCD_ShowString(135,490,200,100,24,"7");//7
LCD_ShowString(235,490,200,100,24,"8");//8
LCD_ShowString(335,490,200,100,24,"9");//9
LCD_ShowString(135,590,200,100,24,"*");//*
LCD_ShowString(235,590,200,100,24,"0");//0
LCD_ShowString(335,590,200,100,24,"#");//#
//ÊäºÅÂë
while(1){
POINT_COLOR=BLUE;
tp_dev.scan(0);//
if(tp_dev.x[0]>110&&tp_dev.y[0]>270&&tp_dev.x[0]<170&&tp_dev.y[0]<330){
while((tp_dev.sta & 0x80) == 0x80)
{tp_dev.scan(0);}
strcat(number,"1");//Ìí¼ÓºÅÂë
LCD_ShowString(200,100,336,24,24,number);//ÏÔʾºÅÂë
}
if(tp_dev.x[0]>210&&tp_dev.y[0]>270&&tp_dev.x[0]<270&&tp_dev.y[0]<330){
while((tp_dev.sta & 0x80) == 0x80)
{tp_dev.scan(0);}
strcat(number,"2");
LCD_ShowString(200,100,336,24,24,number);
}
if(tp_dev.x[0]>310&&tp_dev.y[0]>270&&tp_dev.x[0]<370&&tp_dev.y[0]<330){
while((tp_dev.sta & 0x80) == 0x80)
{tp_dev.scan(0);}
strcat(number,"3");
LCD_ShowString(200,100,336,24,24,number);
}
if(tp_dev.x[0]>110&&tp_dev.y[0]>370&&tp_dev.x[0]<170&&tp_dev.y[0]<430){
while((tp_dev.sta & 0x80) == 0x80)
{tp_dev.scan(0);}
strcat(number,"4");
LCD_ShowString(200,100,336,24,24,number);
}
if(tp_dev.x[0]>210&&tp_dev.y[0]>370&&tp_dev.x[0]<270&&tp_dev.y[0]<430){
while((tp_dev.sta & 0x80) == 0x80)
{tp_dev.scan(0);}
strcat(number,"5");
LCD_ShowString(200,100,336,24,24,number);
}
if(tp_dev.x[0]>310&&tp_dev.y[0]>370&&tp_dev.x[0]<370&&tp_dev.y[0]<430){
while((tp_dev.sta & 0x80) == 0x80)
{tp_dev.scan(0);}
strcat(number,"6");
LCD_ShowString(200,100,336,24,24,number);
}
if(tp_dev.x[0]>110&&tp_dev.y[0]>470&&tp_dev.x[0]<170&&tp_dev.y[0]<530){
while((tp_dev.sta & 0x80) == 0x80)
{tp_dev.scan(0);}
strcat(number,"7");
LCD_ShowString(200,100,336,24,24,number);
}
if(tp_dev.x[0]>210&&tp_dev.y[0]>470&&tp_dev.x[0]<270&&tp_dev.y[0]<530){
while((tp_dev.sta & 0x80) == 0x80)
{tp_dev.scan(0);}
strcat(number,"8");
LCD_ShowString(200,100,336,24,24,number);
}
if(tp_dev.x[0]>310&&tp_dev.y[0]>470&&tp_dev.x[0]<370&&tp_dev.y[0]<530){
while((tp_dev.sta & 0x80) == 0x80)
{tp_dev.scan(0);}
strcat(number,"9");
LCD_ShowString(200,100,336,24,24,number);
}
if(tp_dev.x[0]>110&&tp_dev.y[0]>570&&tp_dev.x[0]<170&&tp_dev.y[0]<630){
while((tp_dev.sta & 0x80) == 0x80)
{tp_dev.scan(0);}
strcat(number,"*");
LCD_ShowString(200,100,336,24,24,number);
}
if(tp_dev.x[0]>210&&tp_dev.y[0]>570&&tp_dev.x[0]<270&&tp_dev.y[0]<630){
while((tp_dev.sta & 0x80) == 0x80)
{tp_dev.scan(0);}
strcat(number,"0");
LCD_ShowString(200,100,336,24,24,number);
}
if(tp_dev.x[0]>310&&tp_dev.y[0]>570&&tp_dev.x[0]<370&&tp_dev.y[0]<630){
while((tp_dev.sta & 0x80) == 0x80)
{tp_dev.scan(0);}
strcat(number,"#");
LCD_ShowString(200,100,336,24,24,number);
}
if(tp_dev.x[0]>180&&tp_dev.y[0]>690&&tp_dev.x[0]<300&&tp_dev.y[0]<750){
if(iscalling){
hangup();
}else{
call();
}
while(tp_dev.x[0]!=65535){tp_dev.scan(0);}
}
delay_ms(5);
tp_dev.x[0] = 0xFFFF;
tp_dev.y[0] = 0xFFFF;
}
}
四、总结及实验心得:
本次课程是对GSM模块SIM900A的使用方法,作为一个完全不知道什么的我来说,又是一个全新的知识,实验前老师对实验的讲解非常的重要,我也是想往常一样认真地听着,生怕无法完成本次的实验,而使用串口发送AT命令驱动SIM900A的方法我也在这节课掌握了些许。在以后的课程中应该更加努力,争取学到更多的知识。
转载于:https://www.cnblogs.com/kaikaiwang/p/6623844.html
嵌入式软件设计第10次实验报告相关推荐
- 嵌入式软件设计第8次实验报告-140201235-陈宇
嵌入式软件设计第8次实验报告 学号:140201235 姓名:陈宇 组别:3 实验地点:D19 一.实验目的: 1.熟悉WWW技术中的 ...
- 嵌入式软件设计第12次实验报告-140201235-陈宇
嵌入式软件设计第12次实验报告 学号:140201235 姓名:陈宇 组别:第3组 实验地点:D19 一.实验目的: 1.掌握通过GSM短信远程与 ...
- 嵌入式软件设计第12次实验报告
嵌入式软件设计第12次实验报告 学号:140201126 姓名:杨鹏飞 组别:第2组 实验地点:D19 一.实验目的: 1.掌握通过GSM短信远程 ...
- 嵌入式软件设计第11次实验报告
嵌入式软件设计第11次实验报告 学号:140201101 姓名:刘子聪 组别:第7组 实验地点:D19 一.实验目的: ...
- 嵌入式软件设计第8次实验报告
嵌入式软件设计第8次实验报告 学号:140201112 姓名:孙佳文 组别:3 实验地点:D19 一.实验目的: 1.熟悉WWW技术中 ...
- 嵌入式软件设计第7次实验报告-140201235-陈宇
嵌入式软件设计第7次实验报告 学号:140201235 姓名:陈宇 组别:3 实验地点:D19 ...
- 数据结构最短路径例题_《数据结构课程设计》最短路径问题实验报告
<<数据结构课程设计>最短路径问题实验报告>由会员分享,可在线阅读,更多相关<<数据结构课程设计>最短路径问题实验报告(17页珍藏版)>请在人人文库网上 ...
- c语言程序设计报告表达式求值,数据结构 课程设计表达式求值 实验报告
<数据结构 课程设计表达式求值 实验报告>由会员分享,可在线阅读,更多相关<数据结构 课程设计表达式求值 实验报告(21页珍藏版)>请在人人文库网上搜索. 1.实验课程名称 级 ...
- 计算机辅助电路仿真技术实验报告,多级放大电路的设计与测试仿真实验报告.docx...
文档介绍: 多级放大电路的设计与测试仿真实验报告实验报告课程名称模拟电子技术实验项目多级放大电路分析仿真系别自动化学院专业班级/学号XX学生姓名实验日期成绩指导老师杨鸿波实验三多级放大电路分析仿真实验 ...
最新文章
- (花里胡哨)New Game!(牛客国庆集训派对Day1)
- RAID信息存放位置!
- 【iCore4 双核心板_uC/OS-II】例程一:认识 uC/OS-II
- 命令行打印二维码-pyqrcode
- VMWare Network Adapter设置错误也会导致 Determining IP information for eth0 failed
- 网络安全实验7 防火墙 Iptables应用
- 八位颜色代码查询_浪琴八位编码
- R750 H750 H755 阵列卡磁盘次序
- 我的故事登上了Android开发者的官网
- pytorch学习的一点小窍门(1)-数据转换
- Linux第7章Gdk及Cairo基础,源文件:Ubuntu中使用GLUT和GDK将图片文件加载到纹理单元...
- 为什么说C++太复杂(复杂到哪了?)
- python plt画图_【Python】 【绘图】plt.figure()的使用
- hbase数据库的一些基本操作(持续更新中)
- 解决Openwrt安装插件提示一下错误的办法
- 跳槽or裸辞?2022年真不建议···
- 2022年全球与中国条码标签打印机市场现状及未来发展趋势
- 泰坦x 和泰坦black 性能分析
- 如何找到 java 程序 CPU 使用率100%的原因
- 第一篇,开个好头,匠奥壁挂炉M,哈哈
热门文章
- matlab的和操作
- mysql 修改data目录后 无法使用脚本启动
- 用Aliyun E-MapReduce集群的sqoop工具和数据库同步数据如何配置网络
- 使用 .NET 平台,如何玩转 Universal Windows 应用? 1
- mysql binlog 增量备份
- NetTiers学习笔记09---RADGrid + EntityDataSource设置默认排序, 及表格自动排序,分页的方法...
- Python代码分析工具:PyChecker、Pylint
- redhat 登录不慢 传文件很慢
- php mysql pdo出错_PHP / MySQL / PDO – 结果为false但没有DB错误消...
- 【iOS开发】关于Xcode8后产生的viewForHeaderInSection、viewForFooterInSection设置不产生效果的问题