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

嵌入式軟件設計第10實驗報告網絡

 

學號:140201211                   姓名:張潤澤函數

 組別:第3組           實驗地點:D19測試

 

1、實驗目的:字體

一、瞭解GSM模塊SIM900A的使用方法。設計

二、掌握使用串口發送AT命令驅動SIM900A的方法。3d

2、實驗內容:調試

1.使用AT命令進行模塊測試,撥打固定電話。blog

2.編寫程序利用觸摸屏完成任意電話的呼叫。開發

3、實驗過程描述及結果展現:it

實驗器材:STM32F407開發板、LCD顯示屏

SIM900A跳線帽鏈接方式:

長按PWR_KEY鍵後網絡狀態指示燈對應的狀態:

 

經常使用AT指令_準備工做:

經常使用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"

 

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);

}

}

實驗結果展現:

4、總結及實驗心得:

  今天的任務是編寫程序利用觸摸屏完成任意電話的呼叫,簡單來講就是作一個簡易的手機,這使咱們以爲頗有趣,由於終於感到這節課的實用性了,咱們跟着老師在電腦上把代碼打好,而後又修改調試,最後等代碼所有成功後,就能夠在GSM模塊上插入手機卡了, 而後我取出了本身的移動SIM卡,在斷電的狀況下插入了卡槽(接通電源插入有可能會燒損SIM卡),接着接通電源,編譯完成後,在觸摸屏上出現了0-9十個數字,我用他撥打了同組同窗的電話號碼,而後激動地等待着,過一下子,只聽見一陣悅耳的鈴聲想起,恍惚了兩秒,我才意識到,實驗成功了!原來嵌入式這節課這麼神奇,均可以本身作手機了,因而我對這門課又有了一個新的認識。

相關文章
相關標籤/搜索