日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

嵌入式第11次实验

發布時間:2023/12/9 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 嵌入式第11次实验 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

嵌入式軟件設計第11次實驗報告?

學號:140201236 ? ? ? ? ? ? 姓名:沈樟偉

組別:第2組??????????????? 實驗地點:D19

一、實驗目的:

1、了解短信AT指令的使用方法。

2、掌握使用短信AT指令驅動SIM900A發送和接收短信的方法。

二、實驗內容:

1.使用AT命令進行模塊測試,發送和接收短信。

2.編寫程序利用觸摸屏完成固定號碼短信的發送和接收。(需要加上AT測試命令模塊、手機SIM卡檢測模塊、手機信號質量檢測模塊等等。)

三、實驗過程描述及結果展示:

短信常用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"? #include <string.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]; unsigned char cnt = 0; unsigned char *SMS = 0; u8 SMS_string[10]={"AT+CMGR="}; void LCD_Draw_Circle(u16 x0,u16 y0,u8 r); //串口3發送數據示例代碼 // USART_SendData(USART3,send_string[i]); // while(USART_GetFlagStatus(USART3,USART_FLAG_TC)!=SET);//等待發送結束 //串口3接收數據示例代碼 // while(USART_GetFlagStatus(USART3, USART_FLAG_RXNE) == RESET); // receive_string[i] = (USART_ReceiveData(USART3));

int main(void) {

// NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置系統中斷優先級分組2 delay_init(168); //初始化延時函數 uart_init(115200); //初始化串口波特率為115200 uart3_init(115200);?

LED_Init(); //初始化LED? LCD_Init(); //LCD初始化? tp_dev.init(); //觸摸屏初始化

LCD_Clear(BLACK); POINT_COLOR=YELLOW;//設置字體為黃色 BACK_COLOR = BLACK;

//初始化SIM900A //發AT測試命令 //設置短信的新消息提示AT+CNMI=2,1; { unsigned char temp; unsigned char send_string0[] = {"AT+CNMI=2,1\x0d\x0a"}; unsigned char send_string1[] = {"AT+CMGF=1\r\n"}; unsigned char 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+CMGP=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;

//以下代碼構建短信發送菜單 { Show_Str(30,30,200,24,"命令按鈕區",24,1); Show_Str(248,30,200,24,"文本區",24,1);?

LCD_DrawRectangle(30,70,174,118);//AT測試按鈕方程 Show_Str(42,82,200,24,"AT測試按鈕",24,1); LCD_DrawRectangle(248,70,452,118);//AT測試按鈕的顯示文字框

LCD_DrawRectangle(30,142,222,190);//SIM卡測試按鈕方程 Show_Str(42,154,204,24,"卡狀態測試按鈕",24,1); LCD_DrawRectangle(248,142,452,190);//

LCD_DrawRectangle(30,214,198,262); Show_Str(42,226,204,24,"信號測試按鈕",24,1); LCD_DrawRectangle(248,214,452,262);

LCD_DrawLine(0,282,479,282);

Show_Str(42,338,204,24,"發送按鈕",24,1); LCD_DrawRectangle(30,326,162,374);

Show_Str(168,310,204,16,"發送號碼",16,1); LCD_ShowString(256,310,88,16,16,"17801017974"); LCD_DrawRectangle(248,302,452,334);

Show_Str(168,358,204,16,"發送內容",16,1); LCD_ShowString(256,358,150,16,16,"this is test text"); LCD_DrawRectangle(248,350,452,382);

LCD_DrawLine(0,402,479,402);//畫分割線

Show_Str(42,458,204,24,"接收按鈕:",24,1); LCD_DrawRectangle(30,446,162,494);

Show_Str(168,430,204,16,"來信號碼:",24,1); LCD_DrawRectangle(248,422,452,454);

Show_Str(168,478,204,16,"提示燈",16,1);

Show_Str(42,510,204,16,"短信內容:",24,1); LCD_DrawRectangle(30,526,452,766);

//畫個圓框用來做短信提示 { int i; POINT_COLOR=YELLOW;//設置字體為黃色 for(i=20;i<22;i++) { LCD_Draw_Circle(272,486,i); } } }

//以下代碼掃描觸摸屏檢測按鍵 while(1) { tp_dev.scan(0); if(tp_dev.x[0]>30 && tp_dev.x[0]<174 && tp_dev.y[0]>70 &&tp_dev.y[0]<118)//AT測試按鈕的按鍵區域 { u8 i; u8 send_string[] = {"AT\r\n"}; u8 receive_string[20] = {0}; char *p_display; receive_string[19] = '\0';

while(tp_dev.sta & 0x80)//等待觸摸屏按鍵松開 tp_dev.scan(0); USART_ClearFlag(USART3,USART_FLAG_TC);//加上此句,串口發送的第一個字節就不會丟失 for(i=0;i<4;i++) { USART_SendData(USART3,send_string[i]); while(USART_GetFlagStatus(USART3,USART_FLAG_TC)!= SET);//等待發送結束 }

//清除觸摸值 tp_dev.x[0]=0xFFFF; tp_dev.y[0]=0xFFFF; }

if(tp_dev.x[0]>30 && tp_dev.x[0]<222 && tp_dev.y[0]>142 &&tp_dev.y[0]<190)//SIM卡狀態測試按鈕 { u8 i; u8 send_string[] = {"AT+CPIN?\r\n"}; u8 receive_string[32] = {0}; char *p_display; receive_string[31] = '\0';

while(tp_dev.sta & 0x80)//等待觸摸屏按鍵松開 tp_dev.scan(0); USART_ClearFlag(USART3,USART_FLAG_TC);//加上此句,串口發送的第一個字節就不會丟失 for(i=0;i<10;i++) { USART_SendData(USART3,send_string[i]); while(USART_GetFlagStatus(USART3,USART_FLAG_TC)!= SET);//等待發送結束 }

//清除觸摸值 tp_dev.x[0]=0xFFFF; tp_dev.y[0]=0xFFFF; }

if(tp_dev.x[0]>30 && tp_dev.x[0]<198 && tp_dev.y[0]>214 &&tp_dev.y[0]<262)//信號狀態測試按鈕 { u8 i; u8 send_string[] = {"AT+CSQ\r\n"}; u8 receive_string[32] = {0}; char *p_display; receive_string[31] = '\0';

while(tp_dev.sta & 0x80)//等待觸摸屏按鍵松開 tp_dev.scan(0); USART_ClearFlag(USART3,USART_FLAG_TC);//加上此句,串口發送的第一個字節就不會丟失 for(i=0;i<8;i++) { USART_SendData(USART3,send_string[i]); while(USART_GetFlagStatus(USART3,USART_FLAG_TC)!= SET);//等待發送結束 }

//清除觸摸值 tp_dev.x[0]=0xFFFF; tp_dev.y[0]=0xFFFF; }

if(tp_dev.x[0]>30 && tp_dev.x[0]<162 && tp_dev.y[0]>326 &&tp_dev.y[0]<374)//發送固定短信測試按鈕 { u8 i; u8 send_string1[] = {"AT+CMGS=\"13021257803\"\r\n"}; u8 send_string2[] = {"This is test text!\x1A"};

while(tp_dev.sta & 0x80)//等待觸摸屏按鍵松開 tp_dev.scan(0); USART_ClearFlag(USART3,USART_FLAG_TC);//加上此句,串口發送的第一個字節就不會丟失 for(i=0;i<23;i++) { USART_SendData(USART3,send_string1[i]); while(USART_GetFlagStatus(USART3,USART_FLAG_TC)!= SET);//等待發送結束 }

delay_ms(100);

for(i=0;i<19;i++) { USART_SendData(USART3,send_string2[i]); while(USART_GetFlagStatus(USART3,USART_FLAG_TC)!= SET);//等待發送結束 }

//清除觸摸值 tp_dev.x[0]=0xFFFF; tp_dev.y[0]=0xFFFF; } if(tp_dev.x[0]>30 && tp_dev.x[0]<162 && tp_dev.y[0]>446 &&tp_dev.y[0]<494)//有短信提示后,短信接受按鈕 { u8 i; u8 send_string[100] = {"AT+CMGR=\r\n"}; u8 data_r_n[] = {"\r\n\n"}; char *p_display;

while(tp_dev.sta & 0x80)//等待觸摸屏按鍵松開 tp_dev.scan(0); 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);//等待發送結束 }

//清除同心圓,表示短信已閱讀 { int i; POINT_COLOR = BLACK; for(i=1;i<20;i++) { LCD_Draw_Circle(272,486,i); } POINT_COLOR = YELLOW; }

//清除觸摸值 tp_dev.x[0]=0xFFFF; tp_dev.y[0]=0xFFFF; } //以下代碼根據串口3收到的信息作出相應的動作 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*)"AT\r\n"))//當收到AT的反饋時 { p_display = p_display+6; LCD_ShowString(260,82,240,24,24,(u8 *)p_display); }

if(p_display = strstr((const char*)USART3_RX_BUF,(const char*)"AT+CPIN?"))//當收到SIM卡狀態查詢命令的反饋時 { p_display = p_display+19; LCD_ShowString(260,154,240,24,24,(u8 *)p_display); }

if(p_display = strstr((const char*)USART3_RX_BUF,(const char*)"AT+CSQ"))//當收到信號強度測試命令的反饋時 { p_display = p_display+10; LCD_ShowString(260,226,240,24,24,(u8 *)p_display); }

if(p_display = strstr((const char*)USART3_RX_BUF,(const char*)"+CMTI:"))//當收到新消息提示符 { p_display = p_display+12; SMS = p_display; //畫同心圓表示來短信了 { int i; POINT_COLOR = RED; for(i=1;i<20;i++) { LCD_Draw_Circle(272,486,i); } POINT_COLOR = YELLOW; } }

if(p_display = strstr((const char*)USART3_RX_BUF,(const char*)"+32"))//當收到消息正文后 { p_display = p_display+6; LCD_ShowString(38,534,320,16,16," "); LCD_ShowString(38,534,320,16,16,p_display);

//給出短信號碼 { p_display = strstr((const char*)USART3_RX_BUF,(const char*)"+86"); p_display = p_display+3; LCD_ShowString(256,430,88,16,16," "); LCD_ShowString(256,430,88,16,16,p_display); } } USART_RX_STA=0; } } }

實驗結果:

?

總結:

???? ?本次實驗的任務是.使用AT命令進行模塊測試,發送和接收短信,并編寫程序利用觸摸屏完成固定號碼短信的發送和接收。經過我們的認真思考,總體上沒有太大的問題。開始時由于手機開信號的不穩定,造成了一些不必要的問題。其次是由于在程序中加了一句輸出語句,導致檢驗時多一次輸出語句。這次實踐加深了我對嵌入式的理解與興趣。

?

轉載于:https://www.cnblogs.com/shenzhangwei/p/6659328.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的嵌入式第11次实验的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美韩日 | 日韩精品视频在线看 | 日本一本在线视频 | 蜜桃av噜噜一区二区三区麻豆 | 日韩一区二区欧美 | 国产视频精品一区二区三区 | 中国免费毛片 | 国产免费高清 | 午夜精品久久99蜜桃的功能介绍 | 狠狠操狠狠操狠狠操 | 亚洲精品乱码久久久久久日本蜜臀 | 精品国产99久久久久久宅男i | 国产视频三级 | 四虎影院在线视频 | 最近中文字幕一区二区 | 女女h百合无遮羞羞漫画软件 | 国产午夜精品无码一区二区 | 国产一区,二区 | 一区二区三区入口 | 成年人视频网站 | 中文字幕在线观看视频免费 | 18岁毛片| 日韩二级片 | 日日撸视频 | 亚洲精品在线观看网站 | 欧美色图俺去了 | 美女被草视频在线观看 | 裸体女视频 | 少妇搡bbbb搡bbb搡打电话 | 大尺度做爰床戏呻吟舒畅 | 亚洲爱视频| 精品黑人一区二区三区观看时间 | 精品亚洲国产成人av制服丝袜 | 精品国产91久久久久久 | 麻豆精品国产传媒 | 瑟瑟视频在线观看 | 2019天天干| 亚洲一区在线电影 | 99久久久久| 欧美日韩在线视频一区二区三区 | 天天干天天爱天天操 | 亚av在线| 小蝌蚪av | 中文激情网| 超碰青青操 | 国产女人高潮时对白 | 国产情侣一区二区 | 裸体一区二区 | 伊人网成人网 | 中日韩精品视频 | 亚洲第七页 | 色97| 婷婷久草| 91高清在线免费观看 | 欧美日韩中文字幕一区 | 香蕉视频性 | 亚色在线视频 | 国产在线视频资源 | 一区二区三区四区免费视频 | 久久人妻少妇嫩草av蜜桃 | 亚洲不卡视频在线观看 | 国产视频成人 | 国产一区二区三区在线看 | 饥渴放荡受np公车奶牛 | 国产一区二区不卡在线 | 国产一级片a | 人人97| 麻豆精品视频 | youjizz亚洲女人 | 九九成人| 成人av专区 | 少妇久久久久久被弄到高潮 | 欧美丰满一区二区免费视频 | 欧美淫| 九九久久九九久久 | 欧美性猛交ⅹ乱大交3 | 四虎精品欧美一区二区免费 | av撸撸在线 | 韩国三级av | 日韩污视频在线观看 | 草草色 | 国产一区不卡 | 麻豆精品视频 | 99精品一区二区三区 | 欧美亚洲国产日韩 | 久久草国产 | 制服丝袜快播 | 碰碰久久 | 97热久久 | 欧美嫩草| 久久久久久久久久一级 | 特级大胆西西4444人体 | 日日射av| 美女在线国产 | 日日插夜夜爽 | 国产熟女精品视频 | 在线观看的av网址 | 欧美性猛交xx乱大交 | av网站导航|