日韩性视频-久久久蜜桃-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次实验的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产自产精品 | 日韩精品www| 亚洲色图网友自拍 | 秋霞av鲁丝片一区二区 | 天天干天天操天天摸 | 999热 | 国产三级免费观看 | 国产+高潮+白浆+无码 | 色哒哒影院 | 国产动漫av | 亚洲福利一区二区三区 | 奇米影视播放器 | 国产男人搡女人免费视频 | 特一级黄色片 | 亚洲成a人片77777精品 | www.成人在线视频 | 三年中文在线观看免费观看 | 91免费观看入口 | 9久久9毛片又大又硬又粗 | 欧美色视频在线 | 99re9| 亚洲黄av | 大奶一区 | 天堂中文字幕在线观看 | 人妻丰满熟妇无码区免费 | a天堂在线观看 | 欧美在线一级 | 操大爷影院| 日本伦理一区二区三区 | 99成人免费视频 | 少妇激情偷人爽爽91嫩草 | av免费在线网站 | 亚洲第一淫片 | 国产手机精品视频 | 日韩久久久久久 | 性猛交xxxx乱大交孕妇印度 | 国产亚洲av综合人人澡精品 | 午夜免费网站 | 91免费版黄| 少妇高潮一区二区三区 | 狠狠干av | 91官网视频 | 国产精品视频一区二区三区不卡 | 91夫妻视频 | 88av网 | 69免费 | 日韩在线一级 | 操人视频在线观看 | 99成人在线视频 | 久久国产精品免费看 | 午夜一本 | 毛片在线观看网站 | 天天爽夜夜 | 青青草久久久 | 午夜欧美成人 | av先锋资源网 | 91亚洲成人| 香蕉啪啪网| 亚洲一区播放 | 国产精品自拍一区 | 男人的影院 | 国产高潮国产高潮久久久 | 亚洲91色 | 波多野结衣不卡 | 男女插孔视频 | 饥渴的少妇和男按摩师 | 日韩在线免费av | 谁有av网址 | 日韩性色| 日韩一区二区免费播放 | 韩国一二三区 | 少妇精品高潮欲妇又嫩中文字幕 | 欧美性视频在线 | 欧美一区二区视频 | 黄页av | 成人动漫亚洲 | 性高潮久久久久久 | 在线观看色网站 | 操丝袜美女视频 | 久久综合高清 | 五月综合激情日本mⅴ | 国产主播精品在线 | 99资源在线 | 91久久精品国产91性色69 | 欧美色悠悠| 国产91精品久久久久久久网曝门 | 成人免费观看在线视频 | 激情福利 | 影音先锋丝袜美腿 | 中国一级片在线观看 | 人人爽人人香蕉 | 色姑娘av| 国产xx视频 | 国产伊人网 | 中文字幕五区 | 日本黄视频网站 | japanesehdxxxx | 五月综合在线 | 成年人的毛片 |