嵌入式第12次实验报告

学号:140201218             姓名:杨昌航

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

一、实验目的:

1.掌握通过GSM短信远程与嵌入式设备进行交互的方法。

二、实验内容:

1.编写程序把嵌入式开发板采集到的温度信息通过GSM短信传送给指定号码。(每10秒发送1次)

2.编写程序,使手机可以通过短信指令的方式控制嵌入式开发板的蜂鸣器和LED灯。(比如手机编辑“BEEP_ON”和“BEEP_OFF”控制嵌入式开发板的蜂鸣器)

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

#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"

#include <string.h>

#include "dht11.h"

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

extern u16 USART3_RX_STA;  extern u8 USART3_RX_BUF[400];

void LCD_Draw_Circle(u16 x0,u16 y0,u8 r); unsigned char cnt =0; u8 TimeCnt =0;

unsigned char *SMS = 0; u8 SMS_string[10]={"AT+CMGR="};

//定时器6中断服务器程序

void TIM6_DAC_IRQHandler(void)

{

if(TIM_GetITStatus(TIM6,TIM_IT_Update)!=RESET)//判断是否是更新中

{

TIM_ClearITPendingBit(TIM6,TIM_IT_Update);//清除TIM6更新中断标志 TimeCnt++;

}

} int main(void) { // NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2 delay_init(168); //初始化延时函数 uart_init(115200); //初始化串口波特率为115200 uart3_init(115200);  LED_Init(); //初始化LED  KEY_Init(); LCD_Init(); //LCD初始化  tp_dev.init(); //触摸屏初始化 LCD_Clear(BLACK); POINT_COLOR=YELLOW;//设置字体为黄色 BACK_COLOR = BLACK;

//以下代码初始化定时器 { NVIC_InitTypeDef NVIC_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6,ENABLE); //定时器初始化 TIM_TimeBaseStructure.TIM_Period = 1000-1; TIM_TimeBaseStructure.TIM_Prescaler = 8400-1; TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM6,&TIM_TimeBaseStructure); TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE);//使能指定的TIM6中断,允许更新中断 NVIC_InitStructure.NVIC_IRQChannel = TIM6_DAC_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//IRQ通道使能 NVIC_Init(&NVIC_InitStructure);//根据指定的参数初始化NVIC寄存器 } TIM_Cmd(TIM6,ENABLE);//启动定时器6 //以下代码初始化温湿度传感器 { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG,ENABLE); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType=GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP; GPIO_Init(GPIOG,&GPIO_InitStructure); DHT11_Rst(); while(DHT11_Check()); } //以下代码配置蜂鸣器 { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType=GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_DOWN; GPIO_Init(GPIOF,&GPIO_InitStructure); } //初始化SIM900A { unsigned char temp; unsigned char send_string0[] = {"AT+CNMI=2,1\x0d\x0a"}; u8 send_string1[] = {"AT+CMGF=1\r\n"}; u8 send_string2[] = {"AT+CSCS=\"GSM\"\r\n"}; for(temp=0;temp<2;temp++) { USART_SendData(USART3,‘A‘); while(USART_GetFlagStatus(USART3,USART_FLAG_TC)!=SET); USART_SendData(USART3,‘T‘); while(USART_GetFlagStatus(USART3,USART_FLAG_TC)!=SET); USART_SendData(USART3,‘0x0D‘); while(USART_GetFlagStatus(USART3,USART_FLAG_TC)!=SET); USART_SendData(USART3,‘0x0A‘); while(USART_GetFlagStatus(USART3,USART_FLAG_TC)!=SET); } delay_ms(100); for(temp=0;temp<13;temp++)//发送AT+CNMI=2,1\x0d\x0a { USART_SendData(USART3,send_string0[temp]); while(USART_GetFlagStatus(USART3,USART_FLAG_TC)!=SET); } delay_ms(100); for(temp=0;temp<11;temp++)//发送AT+CMGF=1\r\n { USART_SendData(USART3,send_string1[temp]); while(USART_GetFlagStatus(USART3,USART_FLAG_TC)!=SET); } delay_ms(100); for(temp=0;temp<15;temp++)//发送AT+CSCS=\"GSM\"\r\n { USART_SendData(USART3,send_string2[temp]); while(USART_GetFlagStatus(USART3,USART_FLAG_TC)!=SET); } delay_ms(100); } USART3_RX_STA = 0; while(1) { if(TimeCnt>=100) { TimeCnt=0; printf("Time is out!\r\n"); //以下代码把DHT11采集到的当前温度用短信的形式发送到固定号码 { u8 i; u8 send_string1[] = {"AT+CMGS=\"13021257803\"\r\n"}; u8 add_ascii[]={"\x1A"}; u8 sms_temperature[]={"current temperature:"}; u8 temper[2]; u8 temperature,humidity; DHT11_Read_Data(&temperature,&humidity);

temper[0]=(temperature/10)+0x30; temper[1]=(temperature%10)+0x30; strcat(sms_temperature,temper); strcat(sms_temperature,add_ascii); USART_ClearFlag(USART3,USART_FLAG_TC); printf("send_string1=%s\r\n",send_string1); for(i=0;i<23;i++) { USART_SendData(USART3,send_string1[i]); while(USART_GetFlagStatus(USART3,USART_FLAG_TC)!=SET); } delay_ms(100);

printf("sms_temperature=%s\r\n",sms_temperature);  for(i=0;i<23;i++) { USART_SendData(USART3,sms_temperature[i]); while(USART_GetFlagStatus(USART3,USART_FLAG_TC)!=SET); } delay_ms(100); } } //以下代码监控是否有驱动BEEP的短信指令 if(USART3_RX_STA & 0x8000) { char* p_display; USART3_RX_BUF[USART3_RX_STA & 0x7FFF]=0; if(p_display=strstr((const char*)USART3_RX_BUF,(const char*)"+CMTI:")) { p_display=p_display+12; SMS=p_display; { u8 i; u8 send_string[100] = {"AT+CMGR="}; u8 data_r_n[] = {"\r\n\n"}; char *p_display; USART_ClearFlag(USART3,USART_FLAG_TC); strcat(send_string,SMS); strcat(send_string,data_r_n); for(i=0;i<12;i++) { USART_SendData(USART3,send_string[i]); while(USART_GetFlagStatus(USART3,USART_FLAG_TC)!=SET); } } } if(p_display=strstr((const char*)USART3_RX_BUF,(const char*)"+32")) { if(strstr((const char*)USART3_RX_BUF,(const char*)"BEEP_ON")) { GPIO_SetBits(GPIOF,GPIO_Pin_8); } if(strstr((const char*)USART3_RX_BUF,(const char*)"BEEP_OFF")) { GPIO_ResetBits(GPIOF,GPIO_Pin_8); } } USART3_RX_STA=0; } } }

总结:

本次实验是嵌入式开发课程最后一次实验,本次实验,需要我们综合运用之前学过的知识,编写程序把嵌入式开发板采集到的温度信息通过GSM短信传送给指定号码,并完成使手机可以通过短信指令的方式控制嵌入式开发板的蜂鸣器和LED灯。由于这次试验难度比较大,所以老师给我们作了详细的讲解。

时间: 2024-10-22 14:33:04

嵌入式第12次实验报告的相关文章

嵌入式第12次实验

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

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

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

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

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

嵌入式第11次实验报告

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

实验5 简单嵌入式WEB服务器实验 实验报告 20135303 20135326

北京电子科技学院(BESTI) 实     验    报     告 课程:信息安全系统设计基础                班级:  1353 姓名:20135303 魏昊卿 学号:20135326 王亦可 成绩:             指导教师: 娄嘉鹏             实验日期:2015.12.03 实验密级:         预习程度:                     实验时间:15:30~18:00 仪器组次:          必修/选修:必修          

实验报告(2019年6月12日)

c程序实验报告 姓名:黄志乾????实验地点:教学楼514教室????实验时间:4月30日 实验项目: ???1.指针基础及指针运算 ???2.数据交换 ???3.输出指定行数的杨辉三角形 ???4.数组元素奇偶排列 一.实验目的与要求 1.指针基础及指针运算 ● 本实验旨在及爱情学生对指针数据类型的理解,熟悉指针的定义.通过指针间接访问变量 2.数据交换 ● 本实验旨在加强学生对指针类型作为函数参数传递的理解,通常将实参传递给形参时,有两种方式,即按值传递和按地址传递,其中指针类型参数即是按地

第四次实验报告

北京电子科技学院(BESTI) 实验报告 课程:信息安全系统设计基础   班级:1353 姓名:王剑桥.李雪琦           学号:20135316.20135309 成绩: 指导教师:娄嘉鹏  实验日期:2015.12.01 实验密级:   预习程度:  实验时间:15:30~18:00 仪器组次:  必修/选修:  实验序号:4 实验名称:外设驱动程序设计 实验目的与要求: 1.掌握实时系统应用和驱动程序的编写2.选择某个接口电路 实验仪器: 名称 型号 数量 嵌入式开发平台 UP-N

实验四实验报告

北京电子科技学院(BESTI) 实验报告 课程:信息安全系统设计基础             班级:201352 姓名:池彬宁 贺邦 学号:20135212 20135208 成绩:             指导教师:娄嘉鹏       实验日期:2015.12.1 实验密级:         预习程度:           实验时间:15:30-17:30 仪器组次:         必修/选修:必修          实验序号:3 实验名称:基于 S3C2410 的 linux 开发环境的配

嵌入式第11次实验

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